/**
 * Shared types for course display blocks
 */
import type { BlockBookingPaymentTerms } from '../../shared/bookingPaymentTerms';
import type { PublicTeamMemberSummary } from '../../shared/teamMembers';
/**
 * Course status values
 */
export type CourseStatus = 'active' | 'draft' | 'cancelled';
/**
 * Venue information for courses
 */
export type CourseVenue = {
    id: string;
    name: string;
    address: string | null;
};
/**
 * Session (occurrence) information for a course
 */
export type CourseSession = {
    id: string;
    startsAt: string;
    endsAt: string;
    timeZone: string;
    capacityOverride?: number | null;
    overrides?: Record<string, unknown> | null;
};
export type CoursePricingOption = {
    id: string;
    name: string;
    description: string | null;
    priceAmount: number;
    isActive: boolean;
    sortOrder: number;
    capacityLimit: number | null;
    saleStartsAt: string | null;
    saleEndsAt: string | null;
    attendanceScope?: 'in_person' | 'online' | 'both' | null;
};
export type CoursePricing = {
    bookingRequirement: 'none' | 'required';
    pricingStrategy: 'free' | 'single' | 'tiered';
    currency: string;
    singlePriceAmount: number | null;
    paymentTerms: BlockBookingPaymentTerms;
    options: readonly CoursePricingOption[];
};
/**
 * Public course data from the API
 * Used by Course Registration block
 */
export type PublicCourse = {
    id: string;
    title: string;
    slug: string;
    /** Rich text description (ProseMirror/TipTap JSON format) */
    description: unknown | null;
    teamMembers?: PublicTeamMemberSummary[];
    /** Enrollment is open if the course has not started yet */
    enrollmentOpen: boolean;
    /** Shared pricing model for free / single / tiered course pricing. */
    pricing?: CoursePricing;
    /** Price in cents for the full course */
    priceCents: number | null;
    /** Currency code (ISO 4217) */
    currency: string;
    /** Shared booking payment-terms model for appointments/events/courses. */
    paymentTerms: BlockBookingPaymentTerms;
    /** Maximum enrollment capacity (null = unlimited) */
    enrollmentCapacity: number | null;
    /** Whether memberships can be used for free enrollment */
    acceptsMemberships: boolean;
    /** Course status */
    status: CourseStatus;
    /** Total number of sessions in the course */
    sessionsCount: number;
    /** Number of enrolled students */
    enrolledCount: number;
    /** Available spots (null if unlimited) */
    availableSpots: number | null;
    /** All sessions in the course */
    sessions: CourseSession[];
    /** Venue information */
    venue: CourseVenue | null;
    /** Linked content entry ID for SEO pages */
    contentEntryId: string | null;
};
/**
 * Button variant options for course actions
 */
export type ButtonVariant = 'primary' | 'secondary' | 'outline';
