import * as react from 'react'; import { CSSProperties } from 'react'; import { SeatManagerOptions, SeatManagerMode, EventScopedManageToken, ControlRoomSnapshot, EventTableBookingMode, ExpandedSeat, SeatManagerSelectionValidity, SeatManagerFilteredSection, ReportResult, LogEntry, SeatManagerConnection } from '@seatlayer/js/manager'; export { ControlRoomActivityEntry, ControlRoomSectionMetric, ControlRoomSnapshot, EventScopedManageToken, SeatManagerActionResult, SeatManagerActivity, SeatManagerConnection, SeatManagerMode, SeatManagerOptions, SeatManagerTallies } from '@seatlayer/js/manager'; /** Imperative handle for the organizer manage board. */ interface SeatManagerHandle { setMode(mode: SeatManagerMode): void; setToken(token: EventScopedManageToken, expiresAt?: number): void; setHeatOverlay(enabled: boolean): void; setFollowLive(enabled: boolean): void; setTrendWindow(windowMinutes: number): Promise; enterFullscreen(): Promise; exitFullscreen(): Promise; isFullscreen(): boolean; block(labels?: string[], opts?: { releaseAt?: number; reason?: string; }): Promise; unblock(labels?: string[]): Promise; unblockAll(): Promise; cancelBooking(labels: string[], bookingRef: string): Promise; setCategory(categoryKey: string, labels?: string[]): Promise; setTableBooking(tableIds: string[], mode: EventTableBookingMode, bounds?: { minOccupancy?: number; maxOccupancy?: number; }): Promise; selectAll(): ExpandedSeat[]; selectSection(sectionId: string): ExpandedSeat[]; selectByLabels(labels: string[]): ExpandedSeat[]; selectObjects(labels: string[]): ExpandedSeat[]; deselectObjects(labels: string[]): ExpandedSeat[]; selectCategories(keys: string[]): ExpandedSeat[]; deselectCategories(keys: string[]): ExpandedSeat[]; setSelectableObjects(labels: string[]): void; setUnavailableObjectsSelectable(enabled: boolean): void; setObjectSelectable(predicate: SeatManagerOptions['isObjectSelectable']): void; setMaxSelectedObjects(max: number | undefined): void; setNumberOfPlacesToSelect(required: number | undefined): void; getSelectionValidity(): SeatManagerSelectionValidity | null; setFilteredSection(label: string): SeatManagerFilteredSection[]; clearFilteredSection(): void; getFilteredSections(): SeatManagerFilteredSection[]; clearSelection(): void; getSelection(): ExpandedSeat[]; getReport(): Promise; getControlRoomSnapshot(windowMinutes?: number): Promise; getLog(opts?: { limit?: number; before?: number; }): Promise<{ entries: LogEntry[]; nextBefore: number | null; }>; setHoldTtl(ms: number | null): Promise; /** * Realtime link state plus the "as of" behind the numbers on screen. * * Null only before the manager has mounted. Pair with the `onConnectionChange` * prop: the callback gives the edges, this gives the answer on demand — which * is what a host needs on tab focus, when no transition is coming. */ getConnection(): SeatManagerConnection | null; zoomToFit(): void; } interface SeatManagerProps extends Omit { className?: string; style?: CSSProperties; } /** * React wrapper around the framework-agnostic {@link CoreSeatManager}. Give the * wrapping div a size (it fills its box — a war-room board wants a big one) and * the manager lays out the live map + KPI bar + rails inside it. Rebuilt only * when the event identity / apiBase changes. Tokens, declared capabilities, * theme, fallback currency, background liveness, and callbacks are updated in * place without tearing the board down. */ declare const SeatManager: react.ForwardRefExoticComponent>; export { SeatManager, type SeatManagerHandle, type SeatManagerProps };