type StarwindTheme = "dark" | "light" | "system"; type StarwindResolvedTheme = "dark" | "light"; type StarwindThemeChangeReason = "control-change" | "imperative-action" | "initial" | "storage-change" | "system-change"; type StarwindThemeChangeDetails = { previousResolvedTheme: StarwindResolvedTheme; previousTheme: StarwindTheme; reason: StarwindThemeChangeReason; resolvedTheme: StarwindResolvedTheme; theme: StarwindTheme; }; type ThemeControllerOptions = { className?: string; defaultTheme?: StarwindTheme; documentElement?: HTMLElement; onThemeChange?: (theme: StarwindTheme, details: StarwindThemeChangeDetails) => void; root?: ParentNode; storage?: Storage | false; storageKey?: string; }; type ThemeInitScriptOptions = { className?: string; defaultTheme?: StarwindTheme; storageKey?: string; }; type ThemeControllerSetThemeOptions = { emit?: boolean; persist?: boolean; reason?: StarwindThemeChangeReason; }; type ThemeControllerInstance = { destroy(): void; getResolvedTheme(): StarwindResolvedTheme; getTheme(): StarwindTheme; setTheme(theme: StarwindTheme, options?: ThemeControllerSetThemeOptions): void; subscribe(event: "themeChange", callback: (details: StarwindThemeChangeDetails) => void): () => void; syncControls(): void; }; declare function createThemeController(options?: ThemeControllerOptions): ThemeControllerInstance; declare function initThemeController(root?: ParentNode, options?: Omit): ThemeControllerInstance; declare function getThemeInitScript(options?: ThemeInitScriptOptions): string; export { type StarwindResolvedTheme, type StarwindTheme, type StarwindThemeChangeDetails, type StarwindThemeChangeReason, type ThemeControllerInstance, type ThemeControllerOptions, type ThemeControllerSetThemeOptions, type ThemeInitScriptOptions, createThemeController, getThemeInitScript, initThemeController };