import * as i0 from '@angular/core'; import { OnChanges, EventEmitter, SimpleChanges } from '@angular/core'; import { EventScopedManageToken, SeatManagerOptions, SeatManagerMode, SeatManagerCategoryPrice, SeatManagerTallies, SeatManagerActivity, ControlRoomSnapshot, ExpandedSeat, SeatManagerSelectionValidity, SeatManagerFilteredSection, SeatManagerArea, SeatManagerActionResult, SeatManagerConnection, SeatManagerRoomState, EventTableBookingMode, ReportResult, LogEntry } from '@seatlayer/js/manager'; export { ControlRoomActivityEntry, ControlRoomSectionMetric, ControlRoomSnapshot, EventScopedManageToken, EventTableBookingMode, SeatManagerActionResult, SeatManagerActivity, SeatManagerCategoryPrice, SeatManagerConnection, SeatManagerFilteredSection, SeatManagerMode, SeatManagerOptions, SeatManagerRoomState, SeatManagerSale, SeatManagerSelectionValidity, SeatManagerTallies } from '@seatlayer/js/manager'; type Opt = SeatManagerOptions[K]; /** What the room passes when the operator opens one of your orders. */ interface SeatManagerOpenOrder { id: string; displayRef: string; } /** What the room passes when the operator opens your trend view for a number. */ interface SeatManagerOpenTrend { kpi: string; sectionId?: string; } /** * Angular wrapper around the organizer control room from `@seatlayer/js/manager`. * * Standalone, so it is imported directly rather than through an NgModule. Give * the element a size (it fills its box). The board is rebuilt only when * `eventKey` or `apiBase` changes. The inputs `@seatlayer/react` updates in * place reach the running board through its setters, so camera, selection, * live connection and DOM survive; every other input is read once when the * board is built. * * @example * ```html * * * ``` */ declare class SeatLayerSeatManagerComponent implements OnChanges { /** Event to manage. Changing it rebuilds the board. */ eventKey: string; /** API base URL. Changing it rebuilds the board. */ apiBase?: string; /** Short-lived, event-scoped `mse_` grant from your backend. Live. */ token: EventScopedManageToken; /** When `token` expires, epoch ms. Live. */ tokenExpiresAt?: number; /** * Mint a fresh grant before the current one expires. Live. A function input, * like `buyerAccessTokenProvider` on the seating chart, because the room * needs the new token back. */ onTokenRefresh?: Opt<'onTokenRefresh'>; /** The tool the board shows. Live; pairs with `modeChange` for `[(mode)]`. */ mode?: SeatManagerMode; /** Which tools the board offers. Read once. */ tools?: SeatManagerMode[]; /** `minimal` shows just the map. Read once. */ chrome?: Opt<'chrome'>; /** What the token may do. Live. */ capabilities?: Opt<'capabilities'>; /** Fallback currency for money. Live. */ currency?: string; /** Colour overrides. Live. */ theme?: Opt<'theme'>; /** `light`, `dark` or `auto`. Applied before first paint, then live. */ themeMode?: Opt<'themeMode'>; /** Keep the realtime link open while the tab is hidden. Live. */ keepLiveWhileHidden?: boolean; /** Follow new bookings on the map. Live; pairs with `followLiveChange`. */ followLive?: boolean; /** Seats selected once the board loads. Read once. */ selectedObjects?: string[]; /** Seats the operator may select. Live. */ selectableObjects?: string[]; /** Whether unavailable seats can be selected. Live. */ unavailableObjectsSelectable?: boolean; /** Seats shown as unavailable. Live. */ unavailableObjects?: readonly string[]; /** The hover word for `unavailableObjects`. Live. */ unavailableObjectsReason?: string; /** Prices the map's hover shows: a map overrides, null hides. Live. */ categoryPrices?: Record | null; /** Cap on the selection. Live. */ maxSelectedObjects?: number; /** Exact count a valid selection needs. Live. */ numberOfPlacesToSelect?: number; /** Per-seat selectability rule. Live. */ isObjectSelectable?: Opt<'isObjectSelectable'>; /** False when your own header shows the numbers. Read once. */ kpis?: boolean; /** The event's clock for every time the room shows. Read once. */ timeZone?: string; /** Shown in "Ask an admin of …". Read once. */ organizationName?: string; /** What you know about the sale. Live, compared by value. */ sale?: Opt<'sale'>; /** Room your own overlays take over the map, in px. Live, compared by value. */ mapInsets?: Opt<'mapInsets'>; /** What the map's colours mean when the room opens. Read once. */ colourBy?: Opt<'colourBy'>; /** * Open on this section. Read once. Bound as `[focusSection]`; the class * field has another name because `focusSection()` is the handle method that * frames a section later, as on React's handle. */ focusSectionOnOpen?: string; /** Open on this seat. Read once. */ focusSeat?: string; /** Open on these seats (an order's seats). Read once. */ focusSeats?: string[]; /** Open on this category. Read once. */ focusCategory?: string; /** Where the operator came from, for the way back. Read once. */ arrivedFrom?: Opt<'arrivedFrom'>; /** The board has loaded. */ readonly ready: EventEmitter; /** Live numbers changed. */ readonly tallies: EventEmitter; /** Something happened on the event. */ readonly activity: EventEmitter; /** A fresh control room snapshot. */ readonly controlRoom: EventEmitter; /** The operator switched tools. */ readonly modeChange: EventEmitter; /** Follow-live was switched on or off. */ readonly followLiveChange: EventEmitter; /** The selection changed. */ readonly selectionChange: EventEmitter; /** One seat was selected. */ readonly objectSelected: EventEmitter; /** One seat was deselected. */ readonly objectDeselected: EventEmitter; /** Exact-count state changed. */ readonly selectionValidityChange: EventEmitter; /** The selection became valid. */ readonly selectionValid: EventEmitter; /** The selection became invalid. */ readonly selectionInvalid: EventEmitter; /** The selection cap was reached. */ readonly selectionLimit: EventEmitter; /** The filtered sections changed. */ readonly filteredSectionChange: EventEmitter; /** A general-admission area was clicked. */ readonly areaClick: EventEmitter; /** A block, unblock or other action finished. */ readonly actionComplete: EventEmitter; /** The realtime link changed state. */ readonly connectionChange: EventEmitter; /** The room changed state: connecting, live, paused, offline or ended. */ readonly roomStateChange: EventEmitter; /** Something failed. */ readonly errored: EventEmitter; /** * The operator opened one of your orders. Only when this is bound does the * room offer "Open order", so it never shows a dead link. */ readonly openOrder: EventEmitter; /** The operator opened your trend view for a number. Only offered when bound. */ readonly openTrend: EventEmitter; /** Sections on a chart without any offers "Open the designer". Only offered when bound. */ readonly openDesigner: EventEmitter; private readonly container; private readonly zone; private manager; constructor(); ngOnChanges(changes: SimpleChanges): void; 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; /** Replace the labels shown as unavailable (and their hover word) without remounting. */ setUnavailableObjects(labels: readonly string[], reason?: string): void; /** Replace the prices the map's hover shows: a map overrides, null hides, undefined uses the chart's. */ setCategoryPrices(prices: Record | null | undefined): void; setObjectSelectable(predicate: Opt<'isObjectSelectable'>): void; setMaxSelectedObjects(max: number | undefined): void; setNumberOfPlacesToSelect(required: number | undefined): void; getSelectionValidity(): SeatManagerSelectionValidity | null; setFilteredSection(label: string): SeatManagerFilteredSection[]; clearFilteredSection(): void; /** Frame matching sections in any mode, without filtering or touching the selection. */ focusSection(label: string): SeatManagerFilteredSection[]; 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 board exists. `connectionChange` gives the edges; this * gives the answer on demand. */ getConnection(): SeatManagerConnection | null; zoomToFit(): void; /** Light these seats and frame them, named in the legend; null clears. */ showObjects(labels: readonly string[] | null, name?: string): void; /** Reads the current input on every call, so a swapped handler needs no setter. */ private tokenRefresh; private build; private destroy; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export { SeatLayerSeatManagerComponent }; export type { SeatManagerOpenOrder, SeatManagerOpenTrend };