import * as i0 from '@angular/core';
import { OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
import { PickerSelectionValidator, RendererViewMode, SeatingChartOptions, BuyerAccessTokenProvider, BuyerAccessToken, SelectedSeat, PickerSelectionValidity, HoldResult, GAAreaAvailability, SeatHoverDetails, BuyerAccessExpiredEvent, BuyerAccessUnavailableEvent, SelectedObjectUnavailableEvent, BestAvailableResult, SeasonPickerOptions, SeasonCheckoutHandoff, SeasonRenewalIntent, SeasonStatusEvent, SeasonDescriptor, SeasonAvailability } from '@seatlayer/js';
export { AttachPickerFrameOptions, BestAvailableResult, BuyerAccessExpiredEvent, BuyerAccessRefreshReason, BuyerAccessToken, BuyerAccessTokenProvider, BuyerAccessUnavailableEvent, BuyerAccessUnavailableReason, GAAreaAvailability, HoldLineItem, HoldResult, SeasonAvailability, SeasonCheckoutHandoff, SeasonDescriptor, SeasonOperation, SeasonOperationState, SeasonPickerOptions, SeasonRenewalIntent, SeasonStatusEvent, SeatHoverDetails, SeatPicker as SeatPickerWidget, SelectedObjectUnavailableEvent, SelectedSeat, attachPickerFrame } from '@seatlayer/js';
/**
* Angular wrapper around the framework-agnostic `@seatlayer/js` SDK.
*
* Standalone, so it is imported directly rather than through an NgModule.
*
* The canvas is created once and torn down on destroy. Only the inputs that
* change the chart's identity (`SEATING_CHART_IDENTITY_PROPS`: `event`,
* `apiBase`, `maxSelection`, `numberOfPlacesToSelect`, `publicKey`, `locale`, `currency`,
* `colorblindSafe`, `initialView`, `errorDisplay`) trigger a rebuild, so an
* unrelated change-detection pass never destroys the canvas mid-selection.
*
* @example
* ```html
*
*
* ```
*/
declare class SeatLayerSeatingChartComponent implements OnChanges {
/** Event key to render. Changing it rebuilds the chart. */
event: string;
/** API base URL. Defaults to the public API. */
apiBase?: string;
/** Cap on how many seats a buyer may select. */
maxSelection?: number;
/** Object ids or public labels selected after availability loads. */
selectedObjects?: string[];
/** Object ids or public labels the buyer may select. */
selectableObjects?: string[] | null;
/** Exact ticket count required for a valid selection. */
numberOfPlacesToSelect?: number;
/** Local buyer selection guards. Changing them rebuilds the chart. */
selectionValidators?: PickerSelectionValidator[];
/** Publishable key, when your integration uses one. */
publicKey?: string;
/** BCP-47 locale for built-in copy. */
locale?: string;
/** ISO currency for price formatting. */
currency?: string;
/** Render with colorblind-safe seat glyphs. */
colorblindSafe?: boolean;
/**
* Initial canvas projection. Read once when the chart is built, so changing
* it rebuilds.
* @deprecated `'isometric'` and `'perspective'` are retired in favour of the
* real 3D venue view; use `'flat'`.
*/
initialView?: RendererViewMode;
/**
* What the BUYER sees when the chart cannot load: `'message'` (default) is a
* styleable notice with a Try again button, `'none'` is silent for hosts that
* render their own failure UI from `errored`.
*/
errorDisplay?: 'message' | 'none';
/** Show the built-in seat tooltip. Set false to draw your own from `seatHover`. */
seatTooltip?: boolean;
/** Copy overrides, read once per rebuild. */
messages?: SeatingChartOptions['messages'];
/**
* Sales Channels: mint a buyer access session on demand. Called with a
* `reason`; returns `{ token, expiresAt }` from YOUR backend. The token is
* held in memory only — never storage, never a URL, never a log.
*/
buyerAccessTokenProvider?: BuyerAccessTokenProvider;
/** One-shot session for hosts that own the lifecycle. Cannot be renewed. */
buyerAccessToken?: string | BuyerAccessToken;
/** The buyer's selection changed. */
readonly selectionChange: EventEmitter;
/** Exact-count state changed. */
readonly selectionValidityChange: EventEmitter;
/** The exact count was reached. */
readonly selectionValid: EventEmitter;
/** The selection is not at the exact count. */
readonly selectionInvalid: EventEmitter;
/** The active selection cap was reached. */
readonly selectionLimit: EventEmitter;
/** A hold succeeded. */
readonly hold: EventEmitter;
/** A previous hold was restored on mount. */
readonly holdRestored: EventEmitter;
/** The active hold lapsed. */
readonly holdExpired: EventEmitter;
/** A GA area was clicked. */
readonly gaClick: EventEmitter;
/** Something failed — a network error, a rejected hold. */
readonly errored: EventEmitter;
/** A floor deck was tapped in the 3D view. */
readonly deckTap: EventEmitter;
/** A transient hint worth showing the buyer, or `null` to clear it. */
readonly hint: EventEmitter;
/** The pointer moved onto a seat, or off one (`null`). */
readonly seatHover: EventEmitter;
/** The buyer access session lapsed; `refreshed` says whether it recovered. */
readonly accessExpired: EventEmitter;
/** Private inventory is unavailable and refreshing will not fix it. */
readonly accessUnavailable: EventEmitter;
/** Selected-but-unheld units stopped being selectable. */
readonly selectedObjectUnavailable: EventEmitter;
private readonly container;
private readonly zone;
private chart;
/**
* Inputs that require tearing the canvas down and rebuilding it. The shared
* list from `@seatlayer/js`, not a hand-copied one — this is exactly the place
* Angular fell two inputs behind React.
*/
private static readonly REBUILD_INPUTS;
/**
* The canonical forwarding object. Every imperative method below is a
* one-line delegate to it, so the component cannot forward a method the other
* wrappers do not, or miss one they do.
*/
private readonly handle;
constructor();
ngOnChanges(changes: SimpleChanges): void;
/** Hold the current selection. Resolves the hold, or `null` on a 409 conflict. */
holdSelection(options?: {
ttlMs?: number;
}): Promise;
/** Restore an active hold by its opaque id. */
resumeHold(holdId: string): Promise;
/** Current active hold known to the chart. */
getCurrentHold(): HoldResult | null;
/** GA areas with live remaining capacity. */
getGAAreas(): GAAreaAvailability[];
/** Atomically hold a quantity from one GA area. */
holdGA(areaId: string, qty: number, options?: {
tierId?: string | null;
ttlMs?: number;
}): Promise;
/** Ask the server for the `qty` best free seats and hold them atomically. */
bestAvailable(qty: number, categoryKey?: string): Promise;
/** Release the current hold (if any). */
release(): Promise;
/** Release some held labels while keeping the remainder active. */
releaseLabels(labels: string[]): Promise;
/** The current selection, with prices resolved from the chart categories. */
getSelection(): SelectedSeat[];
selectObjects(objects: string[]): SelectedSeat[];
deselectObjects(objects: string[]): void;
clearSelection(): void;
selectCategories(categoryKeys: string[]): SelectedSeat[];
deselectCategories(categoryKeys: string[]): void;
setSelectableObjects(objects: string[] | null): void;
setMaxSelection(maxSelection: number): void;
getSelectionValidity(): PickerSelectionValidity | null;
/** Choose a ticket tier for a selected seat; `null` reverts to the default. */
setSeatTier(seatId: string, tierId: string | null): void;
/** Floors of a multi-floor chart. Empty before the first render. */
getFloors(): {
id: string;
name: string;
}[];
/** Switch the shown floor (2D). No-ops on single-floor charts. */
setFloor(floorId: string): void;
/** Toggle colorblind-safe rendering at runtime. */
setColorblindSafe(on: boolean): void;
/** Zoom in one step (same increment as the wheel/pinch gesture). */
zoomIn(): void;
/** Zoom out one step. */
zoomOut(): void;
/** Reset the camera so the whole chart fits the container. */
zoomToFit(): void;
/**
* Re-acquire the buyer access session after your app re-authorizes the buyer
* (Sales Channels). Resolves false when the chart is not access-scoped.
*/
refreshAccess(): Promise;
private build;
private destroy;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
/** Standalone Angular adapter for the distinct fixed-inclusion Season buyer flow. */
declare class SeatLayerSeasonPickerComponent implements OnChanges {
/** Season key to render. */
season: string;
/** Public API base override. */
apiBase?: string;
/** Publishable account key, accepted for snippet parity. Never sent. */
publicKey?: string;
/** Who takes the money once the package is held. Default `'handoff'`. */
checkout?: SeasonPickerOptions['checkout'];
/** Where a redirecting gateway returns the buyer, for hosted checkout. */
returnUrl?: string;
/** Refreshable one-time browser bearer provider. */
buyerAccessTokenProvider?: SeasonPickerOptions['buyerAccessTokenProvider'];
/** One-time Season browser bearer. */
buyerAccessToken?: SeasonPickerOptions['buyerAccessToken'];
/** Operation restored after an uncertain create response. */
initialOperationId?: string;
/** Maximum recovery polling time. */
recoveryTimeoutMs?: number;
/** Test or host fetch implementation. */
fetch?: typeof fetch;
/** A same-seat hold reached a safe handoff. */
readonly hold: EventEmitter;
/** The active handoff changed or was released. */
readonly holdChange: EventEmitter;
/** The buyer continued with an opaque handoff. */
readonly continued: EventEmitter;
/** A returning holder recorded browser intent only. */
readonly renewalIntent: EventEmitter;
/** Buyer access expired. */
readonly accessExpired: EventEmitter;
/** Buyer access cannot be recovered. */
readonly accessUnavailable: EventEmitter;
/** Hosted checkout only: the gateway webhook landed and the order is paid. */
readonly orderConfirmed: EventEmitter;
/** Buyer-visible operation status changed. */
readonly statusChange: EventEmitter;
/** The Season buyer flow failed. */
readonly errored: EventEmitter;
private readonly container;
private static readonly REBUILD_INPUTS;
private readonly zone;
private picker;
constructor();
ngOnChanges(changes: SimpleChanges): void;
/** Holds the same labels across every included occurrence. */
holdSameSeat(labels: readonly string[], operationId: string): Promise;
/** Restores a caller-stable Season operation after uncertainty. */
restoreOperation(operationId: string): Promise;
/** Releases the active selection with a caller-stable action id. */
release(releaseActionId: string): Promise;
/** Records renewal intent; trusted server code still inspects and commits it. */
createRenewalIntent(offerId: string): Promise;
/** Current immutable Season descriptor. */
getDescriptor(): SeasonDescriptor | null;
/** Current same-seat aggregate availability. */
getAvailability(): SeasonAvailability | null;
/** Current opaque checkout handoff. */
getHandoff(): SeasonCheckoutHandoff | null;
private build;
private current;
private destroy;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
export { SeatLayerSeasonPickerComponent, SeatLayerSeatingChartComponent };