import type { PublicEvent } from '../../blocks/events/shared/types';
import type { OccurrenceContext } from '../../blocks/event-registration.shared';
import type { EventRegistrationClientProps as InternalEventRegistrationClientProps } from './event-registration/types';
import { type InteractiveIslandProps } from '../../../contracts/islands';
export type EventRegistrationContentEntry = Readonly<{
    id: string;
    slug: string;
    contentTypeSlug: string;
}>;
export type EventRegistrationSourceProps = Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
    portalToken?: string | null;
    occurrenceContext?: OccurrenceContext | null;
    contentEntry?: EventRegistrationContentEntry | null;
    events?: PublicEvent[] | null;
    className?: string | null;
    buttonText?: string | null;
    maxTickets?: string | null;
    showVenue?: boolean;
    showCapacity?: boolean;
    successMessage?: string;
    waitlistMessage?: string;
    buttonVariant?: 'primary' | 'secondary' | 'outline';
    spamProtectionEnabled?: boolean;
    stage?: 'preview' | 'published';
    supportEmail?: string;
}>;
export type EventRegistrationDisplay = Readonly<{
    kind: 'event-registration';
    state: 'shell';
    className: string | null;
    summaryButtonText: string;
}>;
export type EventRegistrationHydration = Readonly<Omit<InternalEventRegistrationClientProps, 'siteId' | 'stage' | 'registrationEndpoint' | 'eligibilityEndpoint' | 'checkoutEndpoint' | 'buttonText' | 'className'>>;
type EventRegistrationIslandMeta = Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
    portalToken?: string | null;
    stage?: 'preview' | 'published';
}>;
export declare function buildEventRegistrationDisplay(source: EventRegistrationSourceProps): EventRegistrationDisplay;
export type EventRegistrationInteractiveIslandProps = InteractiveIslandProps<EventRegistrationIslandMeta, 'event-registration', typeof eventRegistrationBlockRuntime>;
export declare const eventRegistrationBlockRuntime: Readonly<{
    kind: "client-owned";
    buildRender: (source: Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
        portalToken?: string | null;
        occurrenceContext?: OccurrenceContext | null;
        contentEntry?: Readonly<{
            id: string;
            slug: string;
            contentTypeSlug: string;
        }> | null;
        events?: PublicEvent[] | null;
        className?: string | null;
        buttonText?: string | null;
        maxTickets?: string | null;
        showVenue?: boolean;
        showCapacity?: boolean;
        successMessage?: string;
        waitlistMessage?: string;
        buttonVariant?: "primary" | "secondary" | "outline";
        spamProtectionEnabled?: boolean;
        stage?: "preview" | "published";
        supportEmail?: string;
    }>) => Readonly<{
        display: Readonly<{
            kind: "event-registration";
            state: "shell";
            className: string | null;
            summaryButtonText: string;
        }>;
        hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
    }>;
    contracts: Readonly<{
        source: Readonly<{
            encode: (value: Readonly<{
                siteId?: string;
                apiBaseUrl?: string;
                portalToken?: string | null;
                occurrenceContext?: OccurrenceContext | null;
                contentEntry?: Readonly<{
                    id: string;
                    slug: string;
                    contentTypeSlug: string;
                }> | null;
                events?: PublicEvent[] | null;
                className?: string | null;
                buttonText?: string | null;
                maxTickets?: string | null;
                showVenue?: boolean;
                showCapacity?: boolean;
                successMessage?: string;
                waitlistMessage?: string;
                buttonVariant?: "primary" | "secondary" | "outline";
                spamProtectionEnabled?: boolean;
                stage?: "preview" | "published";
                supportEmail?: string;
            }>) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
                siteId?: string;
                apiBaseUrl?: string;
                portalToken?: string | null;
                occurrenceContext?: OccurrenceContext | null;
                contentEntry?: Readonly<{
                    id: string;
                    slug: string;
                    contentTypeSlug: string;
                }> | null;
                events?: PublicEvent[] | null;
                className?: string | null;
                buttonText?: string | null;
                maxTickets?: string | null;
                showVenue?: boolean;
                showCapacity?: boolean;
                successMessage?: string;
                waitlistMessage?: string;
                buttonVariant?: "primary" | "secondary" | "outline";
                spamProtectionEnabled?: boolean;
                stage?: "preview" | "published";
                supportEmail?: string;
            }>>;
        }>;
        render: Readonly<{
            encode: (value: Readonly<{
                display: Readonly<{
                    kind: "event-registration";
                    state: "shell";
                    className: string | null;
                    summaryButtonText: string;
                }>;
                hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
            }>) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
                display: Readonly<{
                    kind: "event-registration";
                    state: "shell";
                    className: string | null;
                    summaryButtonText: string;
                }>;
                hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
            }>>;
        }>;
    }>;
}>;
export declare const eventRegistrationInteractiveIslandPropsCodec: Readonly<{
    encode: (value: Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
        portalToken?: string | null;
        stage?: "preview" | "published";
    }> & {
        renderKind: "client-owned";
        render: Readonly<{
            mode: "event-registration";
        } & Readonly<{
            display: Readonly<{
                kind: "event-registration";
                state: "shell";
                className: string | null;
                summaryButtonText: string;
            }>;
            hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
        }>>;
    }>) => unknown;
    decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
        portalToken?: string | null;
        stage?: "preview" | "published";
    }> & {
        renderKind: "client-owned";
        render: Readonly<{
            mode: "event-registration";
        } & Readonly<{
            display: Readonly<{
                kind: "event-registration";
                state: "shell";
                className: string | null;
                summaryButtonText: string;
            }>;
            hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
        }>>;
    }>>;
}>;
export declare function buildEventRegistrationInteractiveIslandProps(props: EventRegistrationSourceProps): EventRegistrationInteractiveIslandProps;
export {};
