import type { Snippet } from 'svelte'; import type { SidebarGroup } from '../Sidebar/Sidebar.svelte'; export interface AppShellContextual { groups: SidebarGroup[]; value: string; brand?: string; description?: string; status?: string; parentHref?: string; parentLabel?: string; header?: Snippet; onchange?: (id: string) => void; } export type AppChromeClear = () => void; export declare function getAppChromeEpoch(): number; export declare class AppChrome { #private; /** Live reader so nested layouts stay reactive when `[id]` is reused. */ source: (() => AppShellContextual | null) | null; get contextual(): AppShellContextual | null; /** * Register contextual sidebar. Returns a disposer that only clears if this * registration is still active (safe across layout navigation races). */ setContextual(nav: AppShellContextual | (() => AppShellContextual | null) | null): AppChromeClear; } export declare function getSharedAppChrome(): AppChrome; export declare function getAppChrome(): AppChrome; /** Sets Svelte context and keeps `globalThis` in sync for duplicate module graphs. */ export declare function setAppChrome(chrome: AppChrome): void;