import type { PublicEvent } from '../../blocks/events/shared/types';
import type { EventScheduleScope, EventSurfaceScope } from '../../blocks/events/shared/filtering';
type UseCalendarEventsOptions = {
    /** @deprecated Site ID is now provided by BlockApiProvider context */
    siteId?: string;
    /** Initial events from server-side render */
    initialEvents?: PublicEvent[];
    /** Number of months to pre-fetch in each direction (default: 1) */
    preloadMonths?: number;
    /** Block-level filters to apply to all calendar fetches */
    filters?: EventRuntimeFilters;
    /** 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 CalendarEventsState = {
    /** Events visible in the current view */
    events: PublicEvent[];
    /** Current view date (center of the calendar) */
    viewDate: Date;
    /** Whether events are being loaded */
    loading: boolean;
    /** Error from last fetch */
    error: Error | null;
    /** Set the view date */
    setViewDate: (date: Date) => void;
    /** Navigate to previous month */
    goToPrevious: () => void;
    /** Navigate to next month */
    goToNext: () => void;
    /** Navigate to today */
    goToToday: () => void;
};
/**
 * Hook for calendar event management with month-based caching.
 *
 * Pre-fetches 3 months (previous, current, next) and caches by month.
 * Navigation within cached range is instant; fetches at boundaries.
 *
 * @example
 * ```tsx
 * const { events, viewDate, loading, goToPrevious, goToNext } = useCalendarEvents({
 *   siteId: 'site-123',
 *   initialEvents: serverEvents,
 * });
 * ```
 */
export declare function useCalendarEvents({ siteId: _siteId, // Deprecated: siteId now comes from BlockApiProvider context
initialEvents, preloadMonths, filters, stage, }: UseCalendarEventsOptions): CalendarEventsState;
export default useCalendarEvents;
