import type { ButtonVariant, CardOrientation, CardVariant, ColumnOption, EventBlockKind, EventLayout, EventScheduleScope, EventSurfaceScope, FilterAutoShow, PublicEvent } from "../../../blocks/events/shared/types";
import { type InteractiveIslandProps } from "../../../../contracts/islands";
export type EventListingSourceProps = Readonly<{
    events?: PublicEvent[] | null;
    siteId: string;
    apiBaseUrl?: string;
    stage?: "preview" | "published";
    layout?: EventLayout;
    columns?: ColumnOption;
    eventsPerPage?: string;
    paginationMode?: "loadMore" | "seeAllLink";
    seeAllUrl?: string;
    loadMoreText?: string;
    cardVariant?: CardVariant;
    buttonVariant?: ButtonVariant;
    buttonText?: string;
    showVenue?: boolean;
    showMap?: boolean;
    showCapacity?: boolean;
    emptyMessage?: string;
    className?: string;
    showFilters?: boolean | null;
    showCategoryFilter?: FilterAutoShow;
    showVenueFilter?: boolean | null;
    showStaffFilter?: boolean | null;
    eventKind?: EventBlockKind | null;
    eventSurface?: EventSurfaceScope | null;
    filterEventPresets?: readonly string[] | string | null;
    scheduleScope?: EventScheduleScope | null;
    filterCategoryIds?: string | null;
    filterStaffMemberId?: string | null;
    filterVenueId?: string | null;
}>;
export type EventListingDisplay = Readonly<{
    kind: "event-listing";
    state: "loading" | "empty" | "ready";
    listLayout: EventLayout;
    className: string | null;
    emptyMessage: string;
    loadingMessage: string;
    containerClass: string;
    cardVariant: CardVariant;
    buttonVariant: ButtonVariant;
    buttonText: string;
    showVenue: boolean;
    showMap: boolean;
    showCapacity: boolean;
    orientation: CardOrientation;
    events: readonly PublicEvent[];
}>;
export type EventListingHydration = Readonly<{
    siteId: string;
    stage?: "preview" | "published";
    eventsPerPage: string;
    paginationMode: "loadMore" | "seeAllLink";
    seeAllUrl?: string;
    loadMoreText: string;
    showFilters: boolean;
    showCategoryFilter: FilterAutoShow;
    showVenueFilter: boolean;
    showStaffFilter: boolean;
    eventKind: EventBlockKind;
    eventSurface: EventSurfaceScope;
    filterEventPresets: string | null;
    scheduleScope: EventScheduleScope;
    filterCategoryIds?: string | null;
    filterStaffMemberId?: string | null;
    filterVenueId?: string | null;
    fetchInitialEventsOnMount: boolean;
}>;
type EventListingIslandMeta = Readonly<{
    siteId: string;
    apiBaseUrl?: string;
    stage?: "preview" | "published";
}>;
export type EventListingInteractiveIslandProps = InteractiveIslandProps<EventListingIslandMeta, "event-listing", typeof eventListingBlockRuntime>;
export declare const eventListingBlockRuntime: Readonly<{
    kind: "progressive";
    buildRender: (source: Readonly<{
        events?: PublicEvent[] | null;
        siteId: string;
        apiBaseUrl?: string;
        stage?: "preview" | "published";
        layout?: EventLayout;
        columns?: ColumnOption;
        eventsPerPage?: string;
        paginationMode?: "loadMore" | "seeAllLink";
        seeAllUrl?: string;
        loadMoreText?: string;
        cardVariant?: CardVariant;
        buttonVariant?: ButtonVariant;
        buttonText?: string;
        showVenue?: boolean;
        showMap?: boolean;
        showCapacity?: boolean;
        emptyMessage?: string;
        className?: string;
        showFilters?: boolean | null;
        showCategoryFilter?: FilterAutoShow;
        showVenueFilter?: boolean | null;
        showStaffFilter?: boolean | null;
        eventKind?: EventBlockKind | null;
        eventSurface?: EventSurfaceScope | null;
        filterEventPresets?: readonly string[] | string | null;
        scheduleScope?: EventScheduleScope | null;
        filterCategoryIds?: string | null;
        filterStaffMemberId?: string | null;
        filterVenueId?: string | null;
    }>) => Readonly<{
        display: Readonly<{
            kind: "event-listing";
            state: "loading" | "empty" | "ready";
            listLayout: EventLayout;
            className: string | null;
            emptyMessage: string;
            loadingMessage: string;
            containerClass: string;
            cardVariant: CardVariant;
            buttonVariant: ButtonVariant;
            buttonText: string;
            showVenue: boolean;
            showMap: boolean;
            showCapacity: boolean;
            orientation: CardOrientation;
            events: readonly PublicEvent[];
        }>;
        hydration: Readonly<{
            siteId: string;
            stage?: "preview" | "published";
            eventsPerPage: string;
            paginationMode: "loadMore" | "seeAllLink";
            seeAllUrl?: string;
            loadMoreText: string;
            showFilters: boolean;
            showCategoryFilter: FilterAutoShow;
            showVenueFilter: boolean;
            showStaffFilter: boolean;
            eventKind: EventBlockKind;
            eventSurface: EventSurfaceScope;
            filterEventPresets: string | null;
            scheduleScope: EventScheduleScope;
            filterCategoryIds?: string | null;
            filterStaffMemberId?: string | null;
            filterVenueId?: string | null;
            fetchInitialEventsOnMount: boolean;
        }>;
    }>;
    contracts: Readonly<{
        source: Readonly<{
            encode: (value: Readonly<{
                events?: PublicEvent[] | null;
                siteId: string;
                apiBaseUrl?: string;
                stage?: "preview" | "published";
                layout?: EventLayout;
                columns?: ColumnOption;
                eventsPerPage?: string;
                paginationMode?: "loadMore" | "seeAllLink";
                seeAllUrl?: string;
                loadMoreText?: string;
                cardVariant?: CardVariant;
                buttonVariant?: ButtonVariant;
                buttonText?: string;
                showVenue?: boolean;
                showMap?: boolean;
                showCapacity?: boolean;
                emptyMessage?: string;
                className?: string;
                showFilters?: boolean | null;
                showCategoryFilter?: FilterAutoShow;
                showVenueFilter?: boolean | null;
                showStaffFilter?: boolean | null;
                eventKind?: EventBlockKind | null;
                eventSurface?: EventSurfaceScope | null;
                filterEventPresets?: readonly string[] | string | null;
                scheduleScope?: EventScheduleScope | null;
                filterCategoryIds?: string | null;
                filterStaffMemberId?: string | null;
                filterVenueId?: string | null;
            }>) => unknown;
            decode: (input: unknown) => import("../../../../contracts").DecodeResult<Readonly<{
                events?: PublicEvent[] | null;
                siteId: string;
                apiBaseUrl?: string;
                stage?: "preview" | "published";
                layout?: EventLayout;
                columns?: ColumnOption;
                eventsPerPage?: string;
                paginationMode?: "loadMore" | "seeAllLink";
                seeAllUrl?: string;
                loadMoreText?: string;
                cardVariant?: CardVariant;
                buttonVariant?: ButtonVariant;
                buttonText?: string;
                showVenue?: boolean;
                showMap?: boolean;
                showCapacity?: boolean;
                emptyMessage?: string;
                className?: string;
                showFilters?: boolean | null;
                showCategoryFilter?: FilterAutoShow;
                showVenueFilter?: boolean | null;
                showStaffFilter?: boolean | null;
                eventKind?: EventBlockKind | null;
                eventSurface?: EventSurfaceScope | null;
                filterEventPresets?: readonly string[] | string | null;
                scheduleScope?: EventScheduleScope | null;
                filterCategoryIds?: string | null;
                filterStaffMemberId?: string | null;
                filterVenueId?: string | null;
            }>>;
        }>;
        render: Readonly<{
            encode: (value: Readonly<{
                display: Readonly<{
                    kind: "event-listing";
                    state: "loading" | "empty" | "ready";
                    listLayout: EventLayout;
                    className: string | null;
                    emptyMessage: string;
                    loadingMessage: string;
                    containerClass: string;
                    cardVariant: CardVariant;
                    buttonVariant: ButtonVariant;
                    buttonText: string;
                    showVenue: boolean;
                    showMap: boolean;
                    showCapacity: boolean;
                    orientation: CardOrientation;
                    events: readonly PublicEvent[];
                }>;
                hydration: Readonly<{
                    siteId: string;
                    stage?: "preview" | "published";
                    eventsPerPage: string;
                    paginationMode: "loadMore" | "seeAllLink";
                    seeAllUrl?: string;
                    loadMoreText: string;
                    showFilters: boolean;
                    showCategoryFilter: FilterAutoShow;
                    showVenueFilter: boolean;
                    showStaffFilter: boolean;
                    eventKind: EventBlockKind;
                    eventSurface: EventSurfaceScope;
                    filterEventPresets: string | null;
                    scheduleScope: EventScheduleScope;
                    filterCategoryIds?: string | null;
                    filterStaffMemberId?: string | null;
                    filterVenueId?: string | null;
                    fetchInitialEventsOnMount: boolean;
                }>;
            }>) => unknown;
            decode: (input: unknown) => import("../../../../contracts").DecodeResult<Readonly<{
                display: Readonly<{
                    kind: "event-listing";
                    state: "loading" | "empty" | "ready";
                    listLayout: EventLayout;
                    className: string | null;
                    emptyMessage: string;
                    loadingMessage: string;
                    containerClass: string;
                    cardVariant: CardVariant;
                    buttonVariant: ButtonVariant;
                    buttonText: string;
                    showVenue: boolean;
                    showMap: boolean;
                    showCapacity: boolean;
                    orientation: CardOrientation;
                    events: readonly PublicEvent[];
                }>;
                hydration: Readonly<{
                    siteId: string;
                    stage?: "preview" | "published";
                    eventsPerPage: string;
                    paginationMode: "loadMore" | "seeAllLink";
                    seeAllUrl?: string;
                    loadMoreText: string;
                    showFilters: boolean;
                    showCategoryFilter: FilterAutoShow;
                    showVenueFilter: boolean;
                    showStaffFilter: boolean;
                    eventKind: EventBlockKind;
                    eventSurface: EventSurfaceScope;
                    filterEventPresets: string | null;
                    scheduleScope: EventScheduleScope;
                    filterCategoryIds?: string | null;
                    filterStaffMemberId?: string | null;
                    filterVenueId?: string | null;
                    fetchInitialEventsOnMount: boolean;
                }>;
            }>>;
        }>;
    }>;
}>;
export declare const eventListingInteractiveIslandPropsCodec: Readonly<{
    encode: (value: Readonly<Readonly<{
        siteId: string;
        apiBaseUrl?: string;
        stage?: "preview" | "published";
    }> & {
        renderKind: "progressive";
        render: Readonly<{
            mode: "event-listing";
        } & Readonly<{
            display: Readonly<{
                kind: "event-listing";
                state: "loading" | "empty" | "ready";
                listLayout: EventLayout;
                className: string | null;
                emptyMessage: string;
                loadingMessage: string;
                containerClass: string;
                cardVariant: CardVariant;
                buttonVariant: ButtonVariant;
                buttonText: string;
                showVenue: boolean;
                showMap: boolean;
                showCapacity: boolean;
                orientation: CardOrientation;
                events: readonly PublicEvent[];
            }>;
            hydration: Readonly<{
                siteId: string;
                stage?: "preview" | "published";
                eventsPerPage: string;
                paginationMode: "loadMore" | "seeAllLink";
                seeAllUrl?: string;
                loadMoreText: string;
                showFilters: boolean;
                showCategoryFilter: FilterAutoShow;
                showVenueFilter: boolean;
                showStaffFilter: boolean;
                eventKind: EventBlockKind;
                eventSurface: EventSurfaceScope;
                filterEventPresets: string | null;
                scheduleScope: EventScheduleScope;
                filterCategoryIds?: string | null;
                filterStaffMemberId?: string | null;
                filterVenueId?: string | null;
                fetchInitialEventsOnMount: boolean;
            }>;
        }>>;
    }>) => unknown;
    decode: (input: unknown) => import("../../../../contracts").DecodeResult<Readonly<Readonly<{
        siteId: string;
        apiBaseUrl?: string;
        stage?: "preview" | "published";
    }> & {
        renderKind: "progressive";
        render: Readonly<{
            mode: "event-listing";
        } & Readonly<{
            display: Readonly<{
                kind: "event-listing";
                state: "loading" | "empty" | "ready";
                listLayout: EventLayout;
                className: string | null;
                emptyMessage: string;
                loadingMessage: string;
                containerClass: string;
                cardVariant: CardVariant;
                buttonVariant: ButtonVariant;
                buttonText: string;
                showVenue: boolean;
                showMap: boolean;
                showCapacity: boolean;
                orientation: CardOrientation;
                events: readonly PublicEvent[];
            }>;
            hydration: Readonly<{
                siteId: string;
                stage?: "preview" | "published";
                eventsPerPage: string;
                paginationMode: "loadMore" | "seeAllLink";
                seeAllUrl?: string;
                loadMoreText: string;
                showFilters: boolean;
                showCategoryFilter: FilterAutoShow;
                showVenueFilter: boolean;
                showStaffFilter: boolean;
                eventKind: EventBlockKind;
                eventSurface: EventSurfaceScope;
                filterEventPresets: string | null;
                scheduleScope: EventScheduleScope;
                filterCategoryIds?: string | null;
                filterStaffMemberId?: string | null;
                filterVenueId?: string | null;
                fetchInitialEventsOnMount: boolean;
            }>;
        }>>;
    }>>;
}>;
export declare function buildEventListingInteractiveIslandProps(props: EventListingSourceProps): EventListingInteractiveIslandProps;
export {};
