import { type ColorMode, type SidebarDensity } from '@actuate-media/cms-core/appearance';
import { type ReactNode } from 'react';
/**
 * Admin appearance engine.
 *
 * Owns the live, DOM-applied admin theme: color mode (light/dark/system),
 * accent color, sidebar density, content font, reduced motion, and the
 * resolved admin brand logos used by the sidebar. State is mirrored to
 * localStorage so a reload paints instantly without a render-blocking fetch;
 * the Appearance tab pushes the DB-backed values in via `applyAppearance` on
 * load and save, making the database the source of truth and localStorage the
 * warm cache.
 *
 * Backward compatible: `useTheme()` still exposes `{ theme, resolvedTheme,
 * setTheme }`; the extra fields are additive.
 */
/** Resolved admin logo URLs (cached for the sidebar to paint without a fetch). */
export interface AdminBrandCache {
    primaryUrl: string | null;
    markUrl: string | null;
    darkUrl: string | null;
    initials: string;
}
interface ThemeContextValue {
    theme: ColorMode;
    resolvedTheme: 'light' | 'dark';
    setTheme: (theme: ColorMode) => void;
    accent: string;
    setAccent: (accent: string) => void;
    density: SidebarDensity;
    setDensity: (density: SidebarDensity) => void;
    font: string;
    setFont: (font: string) => void;
    reduceMotion: boolean;
    setReduceMotion: (value: boolean) => void;
    adminBrand: AdminBrandCache;
    setAdminBrand: (brand: AdminBrandCache) => void;
    /** Push a full settings snapshot live (used by the Appearance tab). */
    applyAppearance: (snapshot: AppearanceSnapshot) => void;
}
export interface AppearanceSnapshot {
    theme?: ColorMode;
    accent?: string;
    density?: SidebarDensity;
    font?: string;
    reduceMotion?: boolean;
    adminBrand?: AdminBrandCache;
}
/** Curated content-font options. Applied as family strings (no web-font load). */
export declare const AVAILABLE_FONTS: readonly ["DM Sans", "Inter", "Geist", "System UI"];
export declare function useTheme(): ThemeContextValue;
interface ThemeProviderProps {
    children: ReactNode;
    /** When true, default to dark mode if the user hasn't explicitly chosen one. */
    defaultDarkMode?: boolean;
}
export declare function ThemeProvider({ children, defaultDarkMode }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=ThemeProvider.d.ts.map