export interface paths {
    "/healthz": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getHealth"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/billing/checkout": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["createBillingCheckout"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/billing/portal": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["createBillingPortalSession"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/billing/refresh": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["refreshSubscriptionSnapshot"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/billing/subscription": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getSubscriptionSnapshot"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/dashboard/summary": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getDashboardSummary"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/internal/jobs/reminders/dispatch": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["dispatchReminderJobs"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/meta/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getPublicConfig"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/public/bookings": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["createBooking"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/public/tenants/{tenantSlug}/availability": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getPublicAvailability"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/tenants/bootstrap": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get: operations["getTenantBootstrap"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/tenants/onboard": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["onboardTenant"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/v1/webhooks/paddle": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post: operations["handlePaddleWebhook"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
}
export type webhooks = Record<string, never>;
export interface components {
    schemas: {
        AvailabilityBlockRequest: {
            busy?: boolean;
            dayOfWeek: number;
            /** @example 17:00 */
            endsLocal: string;
            /** @example 09:00 */
            startsLocal: string;
        };
        BookingDefaultsRequest: {
            bufferAfterMinutes?: number;
            bufferBeforeMinutes?: number;
            cancelWindowHours?: number;
            durationMinutes?: number;
            serviceName?: string;
        };
        BrandProfile: {
            logoUrl?: string;
            name?: string;
            primaryColor?: string;
            siteUrl?: string;
        };
        /**
         * @description Checkout launch response supporting both Stripe and Paddle providers.
         *     For Stripe: checkoutUrl is returned (redirect-based checkout).
         *     For Paddle: priceId, customerId, customerEmail, customData are returned (client-side checkout).
         */
        CheckoutLaunchResponse: {
            /**
             * Format: uri
             * @description URL to redirect after cancelled checkout
             */
            cancelRedirectUrl?: string;
            /**
             * Format: uri
             * @description Stripe checkout URL (redirect the user to this URL)
             */
            checkoutUrl?: string;
            /** @description Custom metadata for Paddle checkout */
            customData?: {
                [key: string]: string;
            };
            /**
             * Format: email
             * @description Customer email for Paddle checkout
             */
            customerEmail?: string;
            /** @description Paddle customer ID */
            customerId?: string;
            /** @description Paddle price ID for client-side checkout */
            priceId?: string;
            /**
             * Format: uri
             * @description URL to redirect after successful checkout
             */
            successRedirectUrl?: string;
        };
        CheckoutSessionRequest: {
            /**
             * @description Billing interval. Yearly gets 17% discount.
             * @default monthly
             * @enum {string}
             */
            billingInterval: "monthly" | "yearly";
            /**
             * @description Currency for the subscription
             * @enum {string}
             */
            currency?: "czk" | "usd";
            /**
             * @description The plan to subscribe to
             * @enum {string}
             */
            planCode: "starter" | "pro" | "business";
        };
        CreateBookingRequest: {
            /** @enum {string} */
            bookingMode: "appointment" | "class";
            /** Format: uuid */
            classSessionId?: string;
            /** Format: email */
            customerEmail: string;
            customerName: string;
            /** Format: date-time */
            endsAt: string;
            /** Format: uuid */
            locationId?: string;
            notes?: string;
            /** Format: uuid */
            serviceId?: string;
            /** Format: uuid */
            staffId?: string;
            /** Format: date-time */
            startsAt: string;
            tenantSlug: string;
        };
        CreateBookingResponse: {
            /** Format: uuid */
            bookingId: string;
            reference: string;
            /** @enum {string} */
            status: "confirmed" | "waitlisted";
        };
        DashboardKPI: {
            code: string;
            label: string;
            value: string;
        };
        DashboardSummary: {
            kpis: components["schemas"]["DashboardKPI"][];
            locale: string;
            planCode: string;
            publicBookingUrl: string;
            setupCompletion: number;
            tenantName: string;
            tenantSlug: string;
            timezone: string;
            tracking?: components["schemas"]["TrackingStatus"];
            upcomingBookings?: components["schemas"]["UpcomingBooking"][];
            widgetSnippets?: components["schemas"]["WidgetSnippet"][];
        };
        DispatchReminderJobsRequest: {
            limit?: number;
        };
        DispatchReminderJobsResponse: {
            failedCount: number;
            processedCount: number;
            sentCount: number;
        };
        HealthResponse: {
            databaseConfigured?: boolean;
            /** @example staging */
            environment: string;
            /** @example ok */
            status: string;
        };
        OnboardTenantRequest: {
            availabilityBlocks?: components["schemas"]["AvailabilityBlockRequest"][];
            bookingDefaults?: components["schemas"]["BookingDefaultsRequest"];
            brand?: components["schemas"]["BrandProfile"];
            /** @enum {string} */
            locale: "cs" | "en";
            locationName?: string;
            name: string;
            /** @enum {string} */
            preset: "salon" | "clinic" | "massage" | "repair" | "studio";
            slug: string;
            teamInvites?: components["schemas"]["TeamInviteRequest"][];
            timezone: string;
        };
        PlanDisplayPrice: {
            /** @description Monthly price in cents */
            amountCents: number;
            /** @enum {string} */
            currency: "czk" | "usd";
            /** @description Formatted monthly price string */
            formatted: string;
            /** @description Yearly price in cents (17% discount) */
            yearlyAmountCents?: number;
            /** @description Formatted yearly price string */
            yearlyFormatted?: string;
            /** @description Description of yearly savings */
            yearlySavings?: string;
            /** @description Percentage saved with yearly billing */
            yearlySavingsPercent?: number;
        };
        PlanEntitlements: {
            advancedReporting: boolean;
            emailReminders: boolean;
            maxLocations: number;
            maxStaff: number;
            umamiTracking: boolean;
            widgetEmbedding: boolean;
        };
        PortalSessionResponse: {
            /** Format: uri */
            url: string;
        };
        PublicAvailabilityResponse: {
            /** @enum {string} */
            locale: "cs" | "en";
            slots: components["schemas"]["TimeSlot"][];
            tenantSlug: string;
            timezone: string;
        };
        PublicConfig: {
            /** Format: uri */
            apiUrl: string;
            demoMode: boolean;
            environment: string;
            neonAuthEnabled: boolean;
        };
        SubscriptionSnapshot: {
            cancelAtPeriodEnd: boolean;
            checkoutUrlAvailable: boolean;
            /** @enum {string} */
            currency: "czk" | "usd" | "eur";
            /** Format: date-time */
            currentPeriodEnd?: string | null;
            /** Format: date-time */
            currentPeriodStart?: string | null;
            customerId: string;
            displayPrices: components["schemas"]["PlanDisplayPrice"][];
            entitlements: components["schemas"]["PlanEntitlements"];
            /** Format: date-time */
            lastSyncedAt?: string | null;
            paymentMethodBrand?: string;
            paymentMethodLast4?: string;
            planCode: string;
            portalAvailable: boolean;
            priceId: string;
            /** @example paddle */
            provider: string;
            status: string;
            subscriptionId: string;
            syncAvailable: boolean;
            /** Format: uuid */
            tenantId: string;
            trialDays: number;
        };
        TeamInviteRequest: {
            /** Format: email */
            email: string;
            role?: string;
        };
        TenantBootstrap: {
            brand?: components["schemas"]["BrandProfile"];
            currentUser: {
                /** Format: email */
                email?: string;
                name?: string;
                role: string;
                subject: string;
            };
            locale: string;
            onboardingCompleted?: boolean;
            planCode?: string;
            preset: string;
            /** Format: uuid */
            tenantId: string;
            tenantName: string;
            tenantSlug?: string;
            timezone: string;
        };
        TimeSlot: {
            /** Format: uuid */
            classSessionId?: string | null;
            /** Format: date-time */
            endsAt: string;
            label?: string;
            /** Format: uuid */
            locationId?: string | null;
            /** @enum {string} */
            mode: "appointment" | "class";
            remainingCapacity?: number | null;
            /** Format: uuid */
            serviceId?: string | null;
            /** Format: uuid */
            staffId?: string | null;
            /** Format: date-time */
            startsAt: string;
        };
        TrackingStatus: {
            connected?: boolean;
            message?: string;
            provider?: string;
            siteId?: string;
        };
        UpcomingBooking: {
            customerEmail?: string;
            customerName?: string;
            /** Format: date-time */
            endsAt?: string;
            label?: string;
            reference?: string;
            /** Format: date-time */
            startsAt?: string;
            status?: string;
        };
        WidgetSnippet: {
            code?: string;
            kind?: string;
        };
    };
    responses: never;
    parameters: never;
    requestBodies: never;
    headers: never;
    pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
    getHealth: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Service health */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HealthResponse"];
                };
            };
        };
    };
    createBillingCheckout: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CheckoutSessionRequest"];
            };
        };
        responses: {
            /** @description Paddle checkout launch payload */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CheckoutLaunchResponse"];
                };
            };
            /** @description Invalid request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Billing provider unavailable */
            503: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    createBillingPortalSession: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Paddle customer portal session */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PortalSessionResponse"];
                };
            };
            /** @description Billing customer missing */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Billing provider unavailable */
            503: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    refreshSubscriptionSnapshot: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Refreshed snapshot */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["SubscriptionSnapshot"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Billing provider unavailable */
            503: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    getSubscriptionSnapshot: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Current subscription snapshot and entitlements */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["SubscriptionSnapshot"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    getDashboardSummary: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Tenant dashboard summary */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DashboardSummary"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    dispatchReminderJobs: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: {
            content: {
                "application/json": components["schemas"]["DispatchReminderJobsRequest"];
            };
        };
        responses: {
            /** @description Reminder jobs dispatched */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DispatchReminderJobsResponse"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    getPublicConfig: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Public runtime configuration */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PublicConfig"];
                };
            };
        };
    };
    createBooking: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CreateBookingRequest"];
            };
        };
        responses: {
            /** @description Booking created */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CreateBookingResponse"];
                };
            };
        };
    };
    getPublicAvailability: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                tenantSlug: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Availability for a tenant booking page */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["PublicAvailabilityResponse"];
                };
            };
        };
    };
    getTenantBootstrap: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Tenant bootstrap payload for the authenticated user */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["TenantBootstrap"];
                };
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    onboardTenant: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["OnboardTenantRequest"];
            };
        };
        responses: {
            /** @description Tenant created for authenticated user */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["TenantBootstrap"];
                };
            };
            /** @description Invalid request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Unauthorized */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Conflict */
            409: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    handlePaddleWebhook: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": Record<string, never>;
            };
        };
        responses: {
            /** @description Webhook accepted */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
}

