import type { ContentSlotConfig, DetailsSlotConfig, HeaderSlotConfig, SidebarSlotConfig } from './slot-config.js'; import type { DetailsLayoutContextValue } from '../details-layout/DetailsLayoutContext.js'; /** @internal */ export interface SlotRegistryState { header: HeaderSlotConfig | null; sidebar: SidebarSlotConfig | null; content: ContentSlotConfig | null; details: DetailsSlotConfig | null; /** * Bridge: `DetailsLayoutInner` publishes its context value here so * `PageLayoutDetails` can re-provide it around its portal. The provider * placed by `DetailsLayoutInner` only covers the split/overlay DOM it * renders, not the portaled `PageLayout.Details` children which live in a * different React subtree. This is a context value, not a slot config; it * piggybacks on the registry's pub/sub to avoid a second primitive. */ detailsLayoutContext: DetailsLayoutContextValue | null; } /** @internal */ export interface SlotRegistry { subscribe: (listener: () => void) => () => void; getSnapshot: () => SlotRegistryState; register: (slot: K, config: NonNullable) => void; unregister: (slot: keyof SlotRegistryState) => void; } /** @internal */ export declare function createSlotRegistry(): SlotRegistry;