type FarmThemePreference = "light" | "dark" | "system"; type FarmResolvedTheme = Exclude; interface FarmThemeConfig { /** Initial preference when the visitor has not selected one. @default "system" */ default?: FarmThemePreference; /** Cookie and cross-tab storage key. @default "farm-theme" */ storageKey?: string; } interface ResolvedFarmThemeConfig { enabled: boolean; default: FarmThemePreference; storageKey: string; cookiePath: string; } interface FarmThemeSnapshot { /** Saved visitor preference. */ theme: FarmThemePreference; /** Active browser color mode. Undefined during SSR when the preference is `system`. */ resolvedTheme: FarmResolvedTheme | undefined; /** Whether the browser runtime has resolved the theme. */ mounted: boolean; } interface FarmThemeRuntime { config: ResolvedFarmThemeConfig; serverSnapshot: FarmThemeSnapshot; snapshot: FarmThemeSnapshot; setTheme(theme: FarmThemePreference): void; } export type { FarmThemeSnapshot as F, ResolvedFarmThemeConfig as R, FarmThemePreference as a, FarmResolvedTheme as b, FarmThemeRuntime as c, FarmThemeConfig as d };