import type { PublicEvent } from '../../blocks/events/shared/types';
import type { EventScheduleScope, EventSurfaceScope } from '../../blocks/events/shared/filtering';
type UseEventPaginationOptions = {
    /** @deprecated Site ID is now provided by BlockApiProvider context */
    siteId?: string;
    /** Initial events from server-side render */
    initialEvents?: PublicEvent[];
    /**
     * When true, fetch the first page on mount if the SSR initial events are missing.
     *
     * This is useful when SSR data loaders are best-effort and may fail (e.g. missing server env),
     * but client-side fetching can still succeed via the public API.
     */
    fetchInitialOnMount?: boolean;
    /** Filters that the initial events were fetched with (if any) */
    initialFilters?: EventRuntimeFilters;
    /** Active filters for fetching/pagination */
    filters?: EventRuntimeFilters;
    /** Number of events per page */
    pageSize?: number;
    /** Fetch stage (preview vs published) */
    stage?: 'preview' | 'published';
};
type EventRuntimeFilters = {
    categoryIds?: string;
    staffMemberId?: string;
    venueId?: string;
    kind?: 'courses' | 'events';
    eventSurface?: EventSurfaceScope;
    eventPresets?: string;
    scheduleScope?: EventScheduleScope;
};
type EventPaginationState = {
    /** All loaded events */
    events: PublicEvent[];
    /** Whether a load operation is in progress */
    loading: boolean;
    /** Error from last load attempt */
    error: Error | null;
    /** Whether more events are available */
    hasMore: boolean;
    /** Load the next page of events */
    loadMore: () => void;
};
/**
 * Hook for paginated event loading with "load more" functionality.
 *
 * Uses cursor-based pagination by tracking the last event's (startsAt, id)
 * to fetch subsequent pages.
 *
 * @example
 * ```tsx
 * const { events, loading, hasMore, loadMore } = useEventPagination({
 *   siteId: 'site-123',
 *   initialEvents: serverEvents,
 *   pageSize: 12,
 * });
 * ```
 */
export declare function useEventPagination({ siteId: _siteId, // Deprecated: siteId now comes from BlockApiProvider context
initialEvents, fetchInitialOnMount, initialFilters, filters, pageSize, stage, }: UseEventPaginationOptions): EventPaginationState;
export default useEventPagination;
