type PortalBindingPendingSnapshot = Readonly<{ status: "pending"; }>; type PortalBindingReadySnapshot = Readonly<{ parts: RuntimePartScope; status: "ready"; }>; type PortalBindingSnapshot = PortalBindingPendingSnapshot | PortalBindingReadySnapshot; type PortalBinding = { destroy(): void; getSnapshot(): PortalBindingSnapshot; publish(snapshot: PortalBindingSnapshot): void; subscribe(callback: (snapshot: PortalBindingSnapshot) => void): () => void; }; type RuntimePartScope = Readonly<{ portals: readonly RuntimePortalPart[]; root: HTMLElement; wrappers: readonly HTMLElement[]; }>; type RuntimePortalPart = Readonly<{ authoredParent: HTMLElement; wrapper: HTMLElement; }>; type ReportPortalPlacementOptions = { ready: boolean; target: HTMLElement; }; declare function createPortalBinding(root: HTMLElement): PortalBinding; declare function pendingPortalBindingSnapshot(): PortalBindingPendingSnapshot; declare function readyPortalBindingSnapshot(root: HTMLElement, portals: readonly RuntimePortalPart[]): PortalBindingReadySnapshot; declare function reportPortalPlacement(wrapper: HTMLElement, placement: ReportPortalPlacementOptions | null): void; type PortalPlacementMode = "framework" | "runtime"; type PortalPlacementFacts = { disabled: boolean; mode: PortalPlacementMode; ready: boolean; target: HTMLElement; wrapper: HTMLElement; }; type ResolvePortalPlacementOptions = { container?: Element | string | null; disabled?: boolean; fallbackTarget?: HTMLElement; mode?: PortalPlacementMode; reference?: Element | null; }; declare function resolvePortalPlacement(wrapper: HTMLElement, options?: ResolvePortalPlacementOptions): PortalPlacementFacts; export { type PortalBinding as P, type ReportPortalPlacementOptions as R, type PortalBindingSnapshot as a, type PortalPlacementFacts as b, type PortalPlacementMode as c, type ResolvePortalPlacementOptions as d, type RuntimePartScope as e, createPortalBinding as f, reportPortalPlacement as g, resolvePortalPlacement as h, pendingPortalBindingSnapshot as p, readyPortalBindingSnapshot as r };