import type { AccentColorName, AppearanceSettings } from './types.js';
export interface AccentTokens {
    brand: string;
    brandForeground: string;
    primary: string;
    primaryForeground: string;
    sidebarPrimary: string;
    ring: string;
}
export interface AccentPreset {
    name: AccentColorName;
    label: string;
    /** Swatch color for the picker (the light-mode brand value). */
    swatch: string;
    light: AccentTokens;
    dark: AccentTokens;
}
/**
 * Curated accent presets. Light/dark brand values mirror the existing
 * `theme.css` violet so "purple" is a visual no-op; the others are tuned to the
 * same lightness/chroma envelope so they read as text on cards and as solid
 * fills, and pass the >=3:1 UI-contrast bar against their foreground.
 */
export declare const ACCENT_PRESETS: Record<AccentColorName, AccentPreset>;
export declare const ACCENT_PRESET_LIST: AccentPreset[];
/** Minimum WCAG contrast for a primary fill vs its foreground (UI/large text). */
export declare const MIN_ACCENT_CONTRAST = 3;
export declare function isAccentPreset(value: string): value is AccentColorName;
export interface AccentValidation {
    valid: boolean;
    /** Computed contrast of the accent fill against white (light mode). */
    contrast: number;
    reason?: string;
}
/**
 * Validate an accent value. Presets are always valid (pre-vetted). A custom
 * string must parse AND clear {@link MIN_ACCENT_CONTRAST} against white so
 * white text on the primary button stays legible.
 */
export declare function validateAccentColor(value: string): AccentValidation;
/**
 * Resolve the accent tokens for a settings value + resolved color mode.
 * Falls back to the purple preset when the stored value is a custom color
 * (custom colors only set `--brand`/`--primary` directly; we keep purple's
 * foreground/ring envelope). Unknown names fall back to purple.
 */
export declare function generateAdminThemeTokens(settings: Pick<AppearanceSettings, 'adminAccentColor'>, resolvedMode: 'light' | 'dark'): AccentTokens;
/** Map accent tokens to the CSS custom properties the theme consumes. */
export declare function accentTokensToCssVars(tokens: AccentTokens): Record<string, string>;
//# sourceMappingURL=theme-tokens.d.ts.map