import { Transition } from 'framer-motion';
import { default as React } from 'react';
import { ThemeColorKey, ThemeOverrides } from '../utils/theme-generator';
type Theme = "dark" | "light" | "system";
type Contrast = "standard" | "medium" | "high";
type AnimationStyle = "expressive" | "standard";
export interface FontSettings {
    brand: string;
    plain: string;
}
export type ThemePalette = Record<ThemeColorKey, string>;
interface ThemeProviderState {
    theme: Theme;
    setTheme: (theme: Theme) => void;
    contrast: Contrast;
    setContrast: (contrast: Contrast) => void;
    resolvedTheme: "light" | "dark";
    fonts: FontSettings;
    setFonts: (fonts: Partial<FontSettings>) => void;
    animationStyle: AnimationStyle;
    setAnimationStyle: (style: AnimationStyle) => void;
    seedColor: string | null;
    setSeedColor: (color: string | null) => void;
    overrides: ThemeOverrides;
    setOverride: (key: ThemeColorKey, value: string | null) => void;
    resetOverrides: () => void;
    palette: ThemePalette;
    getComputedColor: (key: ThemeColorKey) => string;
}
interface ThemeProviderProps {
    children: React.ReactNode;
    defaultTheme?: Theme;
    defaultContrast?: Contrast;
    defaultFonts?: FontSettings;
    defaultAnimationStyle?: AnimationStyle;
    defaultSeedColor?: string | null;
    defaultOverrides?: ThemeOverrides;
    storageKey?: string;
    contrastStorageKey?: string;
    fontStorageKey?: string;
    animationStorageKey?: string;
    seedColorStorageKey?: string;
    overridesStorageKey?: string;
}
export declare function ThemeProvider({ children, defaultTheme, defaultContrast, defaultFonts, defaultAnimationStyle, defaultSeedColor, defaultOverrides, storageKey, contrastStorageKey, fontStorageKey, animationStorageKey, seedColorStorageKey, overridesStorageKey, ...props }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
export declare const useTheme: () => ThemeProviderState;
export declare const useThemeTransition: (expressiveTransition?: Transition, standardTransition?: Transition) => Transition;
export {};
