import { z } from 'zod';
/**
 * Zod schema for course venue data
 */
export declare const courseVenueSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    address: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
/**
 * Zod schema for course session (occurrence) data
 */
export declare const courseSessionSchema: z.ZodObject<{
    id: z.ZodString;
    startsAt: z.ZodString;
    endsAt: z.ZodString;
    timeZone: z.ZodString;
    capacityOverride: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
    overrides: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
}, z.core.$strip>;
export declare const courseTeamMemberSummarySchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    roleLabel: z.ZodNullable<z.ZodString>;
    summary: z.ZodNullable<z.ZodString>;
    profilePath: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
export declare const coursePricingOptionSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    description: z.ZodNullable<z.ZodString>;
    priceAmount: z.ZodNumber;
    isActive: z.ZodBoolean;
    sortOrder: z.ZodNumber;
    capacityLimit: z.ZodNullable<z.ZodNumber>;
    saleStartsAt: z.ZodNullable<z.ZodString>;
    saleEndsAt: z.ZodNullable<z.ZodString>;
    attendanceScope: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
        both: "both";
        in_person: "in_person";
        online: "online";
    }>>>;
}, z.core.$strip>;
export declare const coursePricingSchema: z.ZodObject<{
    bookingRequirement: z.ZodEnum<{
        none: "none";
        required: "required";
    }>;
    pricingStrategy: z.ZodEnum<{
        single: "single";
        free: "free";
        tiered: "tiered";
    }>;
    currency: z.ZodString;
    singlePriceAmount: z.ZodNullable<z.ZodNumber>;
    paymentTerms: z.ZodObject<{
        allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            kind: z.ZodLiteral<"upfront">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"deferred_manual">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"instalment_plan">;
            plan: z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_one_remainder">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                remainderDueCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_scheduled_instalments">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"equal_scheduled_instalments">;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>]>;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"flexible_balance">;
            config: z.ZodObject<{
                upfrontAmountCents: z.ZodNumber;
                dueDateRule: z.ZodUnion<readonly [z.ZodObject<{
                    kind: z.ZodLiteral<"relative_to_start_date">;
                    daysBeforeStart: z.ZodNumber;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"fixed_calendar_date">;
                    dueAt: z.ZodString;
                }, z.core.$strip>]>;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
            }, z.core.$strip>;
        }, z.core.$strip>]>>;
    }, z.core.$strip>;
    options: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        description: z.ZodNullable<z.ZodString>;
        priceAmount: z.ZodNumber;
        isActive: z.ZodBoolean;
        sortOrder: z.ZodNumber;
        capacityLimit: z.ZodNullable<z.ZodNumber>;
        saleStartsAt: z.ZodNullable<z.ZodString>;
        saleEndsAt: z.ZodNullable<z.ZodString>;
        attendanceScope: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
            both: "both";
            in_person: "in_person";
            online: "online";
        }>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Zod schema for public course data
 */
export declare const publicCourseSchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    slug: z.ZodString;
    description: z.ZodNullable<z.ZodUnknown>;
    teamMembers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        roleLabel: z.ZodNullable<z.ZodString>;
        summary: z.ZodNullable<z.ZodString>;
        profilePath: z.ZodNullable<z.ZodString>;
    }, z.core.$strip>>>;
    enrollmentOpen: z.ZodBoolean;
    pricing: z.ZodOptional<z.ZodObject<{
        bookingRequirement: z.ZodEnum<{
            none: "none";
            required: "required";
        }>;
        pricingStrategy: z.ZodEnum<{
            single: "single";
            free: "free";
            tiered: "tiered";
        }>;
        currency: z.ZodString;
        singlePriceAmount: z.ZodNullable<z.ZodNumber>;
        paymentTerms: z.ZodObject<{
            allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"upfront">;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"deferred_manual">;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"instalment_plan">;
                plan: z.ZodUnion<readonly [z.ZodObject<{
                    kind: z.ZodLiteral<"deposit_plus_one_remainder">;
                    depositAmountCents: z.ZodNumber;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                    remainderDueCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"deposit_plus_scheduled_instalments">;
                    depositAmountCents: z.ZodNumber;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                    instalmentCount: z.ZodNumber;
                    intervalCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"equal_scheduled_instalments">;
                    instalmentCount: z.ZodNumber;
                    intervalCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>]>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"flexible_balance">;
                config: z.ZodObject<{
                    upfrontAmountCents: z.ZodNumber;
                    dueDateRule: z.ZodUnion<readonly [z.ZodObject<{
                        kind: z.ZodLiteral<"relative_to_start_date">;
                        daysBeforeStart: z.ZodNumber;
                    }, z.core.$strip>, z.ZodObject<{
                        kind: z.ZodLiteral<"fixed_calendar_date">;
                        dueAt: z.ZodString;
                    }, z.core.$strip>]>;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                }, z.core.$strip>;
            }, z.core.$strip>]>>;
        }, z.core.$strip>;
        options: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            description: z.ZodNullable<z.ZodString>;
            priceAmount: z.ZodNumber;
            isActive: z.ZodBoolean;
            sortOrder: z.ZodNumber;
            capacityLimit: z.ZodNullable<z.ZodNumber>;
            saleStartsAt: z.ZodNullable<z.ZodString>;
            saleEndsAt: z.ZodNullable<z.ZodString>;
            attendanceScope: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
                both: "both";
                in_person: "in_person";
                online: "online";
            }>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    priceCents: z.ZodNullable<z.ZodNumber>;
    currency: z.ZodString;
    paymentTerms: z.ZodObject<{
        allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            kind: z.ZodLiteral<"upfront">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"deferred_manual">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"instalment_plan">;
            plan: z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_one_remainder">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                remainderDueCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_scheduled_instalments">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"equal_scheduled_instalments">;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>]>;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"flexible_balance">;
            config: z.ZodObject<{
                upfrontAmountCents: z.ZodNumber;
                dueDateRule: z.ZodUnion<readonly [z.ZodObject<{
                    kind: z.ZodLiteral<"relative_to_start_date">;
                    daysBeforeStart: z.ZodNumber;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"fixed_calendar_date">;
                    dueAt: z.ZodString;
                }, z.core.$strip>]>;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
            }, z.core.$strip>;
        }, z.core.$strip>]>>;
    }, z.core.$strip>;
    enrollmentCapacity: z.ZodNullable<z.ZodNumber>;
    acceptsMemberships: z.ZodBoolean;
    status: z.ZodEnum<{
        active: "active";
        cancelled: "cancelled";
        draft: "draft";
    }>;
    sessionsCount: z.ZodNumber;
    enrolledCount: z.ZodNumber;
    availableSpots: z.ZodNullable<z.ZodNumber>;
    sessions: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        startsAt: z.ZodString;
        endsAt: z.ZodString;
        timeZone: z.ZodString;
        capacityOverride: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
        overrides: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
    }, z.core.$strip>>;
    venue: z.ZodNullable<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        address: z.ZodNullable<z.ZodString>;
    }, z.core.$strip>>;
    contentEntryId: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
/**
 * Schema for an array of public courses
 */
export declare const publicCoursesArraySchema: z.ZodArray<z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    slug: z.ZodString;
    description: z.ZodNullable<z.ZodUnknown>;
    teamMembers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        roleLabel: z.ZodNullable<z.ZodString>;
        summary: z.ZodNullable<z.ZodString>;
        profilePath: z.ZodNullable<z.ZodString>;
    }, z.core.$strip>>>;
    enrollmentOpen: z.ZodBoolean;
    pricing: z.ZodOptional<z.ZodObject<{
        bookingRequirement: z.ZodEnum<{
            none: "none";
            required: "required";
        }>;
        pricingStrategy: z.ZodEnum<{
            single: "single";
            free: "free";
            tiered: "tiered";
        }>;
        currency: z.ZodString;
        singlePriceAmount: z.ZodNullable<z.ZodNumber>;
        paymentTerms: z.ZodObject<{
            allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"upfront">;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"deferred_manual">;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"instalment_plan">;
                plan: z.ZodUnion<readonly [z.ZodObject<{
                    kind: z.ZodLiteral<"deposit_plus_one_remainder">;
                    depositAmountCents: z.ZodNumber;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                    remainderDueCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"deposit_plus_scheduled_instalments">;
                    depositAmountCents: z.ZodNumber;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                    instalmentCount: z.ZodNumber;
                    intervalCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"equal_scheduled_instalments">;
                    instalmentCount: z.ZodNumber;
                    intervalCount: z.ZodNumber;
                    intervalUnit: z.ZodEnum<{
                        day: "day";
                        week: "week";
                        month: "month";
                    }>;
                }, z.core.$strip>]>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"flexible_balance">;
                config: z.ZodObject<{
                    upfrontAmountCents: z.ZodNumber;
                    dueDateRule: z.ZodUnion<readonly [z.ZodObject<{
                        kind: z.ZodLiteral<"relative_to_start_date">;
                        daysBeforeStart: z.ZodNumber;
                    }, z.core.$strip>, z.ZodObject<{
                        kind: z.ZodLiteral<"fixed_calendar_date">;
                        dueAt: z.ZodString;
                    }, z.core.$strip>]>;
                    depositRefundability: z.ZodEnum<{
                        refundable: "refundable";
                        non_refundable: "non_refundable";
                    }>;
                }, z.core.$strip>;
            }, z.core.$strip>]>>;
        }, z.core.$strip>;
        options: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            description: z.ZodNullable<z.ZodString>;
            priceAmount: z.ZodNumber;
            isActive: z.ZodBoolean;
            sortOrder: z.ZodNumber;
            capacityLimit: z.ZodNullable<z.ZodNumber>;
            saleStartsAt: z.ZodNullable<z.ZodString>;
            saleEndsAt: z.ZodNullable<z.ZodString>;
            attendanceScope: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
                both: "both";
                in_person: "in_person";
                online: "online";
            }>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    priceCents: z.ZodNullable<z.ZodNumber>;
    currency: z.ZodString;
    paymentTerms: z.ZodObject<{
        allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            kind: z.ZodLiteral<"upfront">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"deferred_manual">;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"instalment_plan">;
            plan: z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_one_remainder">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                remainderDueCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"deposit_plus_scheduled_instalments">;
                depositAmountCents: z.ZodNumber;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"equal_scheduled_instalments">;
                instalmentCount: z.ZodNumber;
                intervalCount: z.ZodNumber;
                intervalUnit: z.ZodEnum<{
                    day: "day";
                    week: "week";
                    month: "month";
                }>;
            }, z.core.$strip>]>;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"flexible_balance">;
            config: z.ZodObject<{
                upfrontAmountCents: z.ZodNumber;
                dueDateRule: z.ZodUnion<readonly [z.ZodObject<{
                    kind: z.ZodLiteral<"relative_to_start_date">;
                    daysBeforeStart: z.ZodNumber;
                }, z.core.$strip>, z.ZodObject<{
                    kind: z.ZodLiteral<"fixed_calendar_date">;
                    dueAt: z.ZodString;
                }, z.core.$strip>]>;
                depositRefundability: z.ZodEnum<{
                    refundable: "refundable";
                    non_refundable: "non_refundable";
                }>;
            }, z.core.$strip>;
        }, z.core.$strip>]>>;
    }, z.core.$strip>;
    enrollmentCapacity: z.ZodNullable<z.ZodNumber>;
    acceptsMemberships: z.ZodBoolean;
    status: z.ZodEnum<{
        active: "active";
        cancelled: "cancelled";
        draft: "draft";
    }>;
    sessionsCount: z.ZodNumber;
    enrolledCount: z.ZodNumber;
    availableSpots: z.ZodNullable<z.ZodNumber>;
    sessions: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        startsAt: z.ZodString;
        endsAt: z.ZodString;
        timeZone: z.ZodString;
        capacityOverride: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
        overrides: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
    }, z.core.$strip>>;
    venue: z.ZodNullable<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        address: z.ZodNullable<z.ZodString>;
    }, z.core.$strip>>;
    contentEntryId: z.ZodNullable<z.ZodString>;
}, z.core.$strip>>;
