type SidebarOpenState = "collapsed" | "expanded"; type SidebarOpenChangeReason = "imperative-action" | "imperative-event" | "keyboard-shortcut" | "rail-click" | "trigger-click"; type SidebarMobileOpenChangeReason = SidebarOpenChangeReason | "mobile-sheet" | "resize"; type SidebarOpenChangeDetails = { open: boolean; previousOpen: boolean; reason: SidebarOpenChangeReason; state: SidebarOpenState; trigger?: Element; }; type SidebarMobileOpenChangeDetails = { open: boolean; previousOpen: boolean; reason: SidebarMobileOpenChangeReason; trigger?: Element; }; type SidebarPersistenceStorage = "cookie" | "localStorage" | Storage | false; type SidebarSetOpenOptions = { emit?: boolean; reason?: SidebarOpenChangeReason; trigger?: Element; }; type SidebarSetMobileOpenOptions = Omit & { reason?: SidebarMobileOpenChangeReason; }; type SidebarControllerOptions = { defaultMobileOpen?: boolean; defaultOpen?: boolean; keyboardShortcut?: string; mobileOpen?: boolean; mobileQuery?: string; onMobileOpenChange?: (open: boolean, details: SidebarMobileOpenChangeDetails) => void; onOpenChange?: (open: boolean, details: SidebarOpenChangeDetails) => void; open?: boolean; persistOpen?: boolean; persistenceKey?: string; persistenceMaxAge?: number; persistenceStorage?: SidebarPersistenceStorage; }; type SidebarControllerInstance = { readonly provider: HTMLElement; destroy(): void; getMobileOpen(): boolean; getOpen(): boolean; getState(): SidebarOpenState; isMobile(): boolean; isMobileOpen(): boolean; isOpen(): boolean; setMobileOpen(open: boolean, options?: SidebarSetMobileOpenOptions): void; setOpen(open: boolean, options?: SidebarSetOpenOptions): void; subscribe(event: "mobileOpenChange", callback: (details: SidebarMobileOpenChangeDetails) => void): () => void; subscribe(event: "openChange", callback: (details: SidebarOpenChangeDetails) => void): () => void; toggle(options?: SidebarSetOpenOptions): void; toggleMobile(options?: SidebarSetMobileOpenOptions): void; }; type SidebarControllerCleanup = { destroy(): void; }; declare function createSidebarController(provider: HTMLElement, options?: SidebarControllerOptions): SidebarControllerInstance; declare function initSidebarController(root?: ParentNode): SidebarControllerCleanup; export { type SidebarControllerCleanup, type SidebarControllerInstance, type SidebarControllerOptions, type SidebarMobileOpenChangeDetails, type SidebarMobileOpenChangeReason, type SidebarOpenChangeDetails, type SidebarOpenChangeReason, type SidebarOpenState, type SidebarPersistenceStorage, type SidebarSetMobileOpenOptions, type SidebarSetOpenOptions, createSidebarController, initSidebarController };