import { CSSProperties } from 'react';
import { JSONObject } from './index';
export type ThemeMode = 'light' | 'dark' | 'system';
export interface ColorPalette {
    50: string;
    100: string;
    200: string;
    300: string;
    400: string;
    500: string;
    600: string;
    700: string;
    800: string;
    900: string;
    950: string;
    DEFAULT: string;
    foreground: string;
}
export interface ColorPalettes {
    primary: ColorPalette;
    secondary: ColorPalette;
    neutral: ColorPalette;
    success: ColorPalette;
    warning: ColorPalette;
    danger: ColorPalette;
    info: ColorPalette;
}
export interface ThemeColors {
    background: string;
    foreground: string;
    card: string;
    cardForeground: string;
    popover: string;
    popoverForeground: string;
    ring: string;
    destructive: string;
    destructiveForeground: string;
    content1: string;
    content2: string;
    content3: string;
    content4: string;
    primary: ColorPalette;
    primaryForeground: string;
    secondary: ColorPalette;
    secondaryForeground: string;
    accent: string;
    accentForeground: string;
    muted: string;
    mutedForeground: string;
    border: string;
    divider: string;
    input: string;
    inputForeground: string;
    focus: string;
    focusVisible: string;
    overlay: string;
    success: string;
    successForeground: string;
    warning: string;
    warningForeground: string;
    danger: string;
    dangerForeground: string;
    info: string;
    infoForeground: string;
    selection: string;
    selectionForeground: string;
    disabled: string;
    disabledForeground: string;
}
export interface Typography {
    fontFamily: {
        sans: string[];
        serif: string[];
        mono: string[];
    };
    fontSize: {
        xs: [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        sm: [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        base: [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        lg: [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        xl: [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '2xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '3xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '4xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '5xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '6xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '7xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '8xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
        '9xl': [string, {
            lineHeight: string;
            letterSpacing?: string;
        }];
    };
    fontWeight: {
        thin: string;
        extralight: string;
        light: string;
        normal: string;
        medium: string;
        semibold: string;
        bold: string;
        extrabold: string;
        black: string;
    };
    lineHeight: {
        none: string;
        tight: string;
        snug: string;
        normal: string;
        relaxed: string;
        loose: string;
    };
    letterSpacing: {
        tighter: string;
        tight: string;
        normal: string;
        wide: string;
        wider: string;
        widest: string;
    };
}
export interface Spacing {
    0: string;
    px: string;
    0.5: string;
    1: string;
    1.5: string;
    2: string;
    2.5: string;
    3: string;
    3.5: string;
    4: string;
    5: string;
    6: string;
    7: string;
    8: string;
    9: string;
    10: string;
    11: string;
    12: string;
    14: string;
    16: string;
    20: string;
    24: string;
    28: string;
    32: string;
    36: string;
    40: string;
    44: string;
    48: string;
    52: string;
    56: string;
    60: string;
    64: string;
    72: string;
    80: string;
    96: string;
}
export interface BorderRadius {
    none: string;
    sm: string;
    base: string;
    md: string;
    lg: string;
    xl: string;
    '2xl': string;
    '3xl': string;
    full: string;
}
export interface Shadows {
    none: string;
    sm: string;
    base: string;
    md: string;
    lg: string;
    xl: string;
    '2xl': string;
    inner: string;
}
export interface Animations {
    duration: {
        0: string;
        75: string;
        100: string;
        150: string;
        200: string;
        300: string;
        500: string;
        700: string;
        1000: string;
        slow: string;
        fast: string;
        normal: string;
    };
    timingFunction: {
        linear: string;
        in: string;
        out: string;
        inOut: string;
    };
    keyframes: {
        spin: Record<string, CSSProperties>;
        ping: Record<string, CSSProperties>;
        pulse: Record<string, CSSProperties>;
        bounce: Record<string, CSSProperties>;
        fadeIn: Record<string, CSSProperties>;
        fadeOut: Record<string, CSSProperties>;
        slideIn: Record<string, CSSProperties>;
        slideOut: Record<string, CSSProperties>;
        scaleIn: Record<string, CSSProperties>;
        scaleOut: Record<string, CSSProperties>;
    };
}
export interface Breakpoints {
    xs: string;
    sm: string;
    md: string;
    lg: string;
    xl: string;
    '2xl': string;
}
export interface ZIndex {
    auto: string;
    0: string;
    10: string;
    20: string;
    30: string;
    40: string;
    50: string;
    dropdown: string;
    modal: string;
    popover: string;
    tooltip: string;
    overlay: string;
    max: string;
}
export interface ComponentVariants {
    button: {
        solid: ComponentVariant;
        bordered: ComponentVariant;
        light: ComponentVariant;
        flat: ComponentVariant;
        faded: ComponentVariant;
        shadow: ComponentVariant;
        ghost: ComponentVariant;
    };
    input: {
        flat: ComponentVariant;
        bordered: ComponentVariant;
        underlined: ComponentVariant;
        faded: ComponentVariant;
    };
    card: {
        shadow: ComponentVariant;
        bordered: ComponentVariant;
        flat: ComponentVariant;
    };
    modal: {
        shadow: ComponentVariant;
        bordered: ComponentVariant;
        blur: ComponentVariant;
    };
    avatar: {
        solid: ComponentVariant;
        bordered: ComponentVariant;
        light: ComponentVariant;
        flat: ComponentVariant;
        faded: ComponentVariant;
        shadow: ComponentVariant;
    };
}
export interface ComponentVariant {
    base?: string;
    colors?: {
        default?: ComponentColorVariant;
        primary?: ComponentColorVariant;
        secondary?: ComponentColorVariant;
        success?: ComponentColorVariant;
        warning?: ComponentColorVariant;
        danger?: ComponentColorVariant;
    };
    sizes?: {
        sm?: string;
        md?: string;
        lg?: string;
    };
}
export interface ComponentColorVariant {
    background?: string;
    foreground?: string;
    border?: string;
    hover?: {
        background?: string;
        foreground?: string;
        border?: string;
    };
    focus?: {
        background?: string;
        foreground?: string;
        border?: string;
    };
    active?: {
        background?: string;
        foreground?: string;
        border?: string;
    };
    disabled?: {
        background?: string;
        foreground?: string;
        border?: string;
    };
}
export interface Theme {
    name: string;
    mode: ThemeMode;
    colors: ThemeColors;
    palette: ColorPalettes;
    typography: Typography;
    spacing: Spacing;
    borderRadius: BorderRadius;
    shadows: Shadows;
    animations: Animations;
    breakpoints: Breakpoints;
    zIndex: ZIndex;
    components: ComponentVariants;
    cssVariables?: Record<string, string>;
    custom?: JSONObject;
}
export interface ThemeContext {
    theme: Theme;
    mode: ThemeMode;
    setTheme: (themeName: string) => void;
    setMode: (mode: ThemeMode) => void;
    availableThemes: string[];
    systemTheme: 'light' | 'dark';
    isLoading: boolean;
}
export interface ThemeUtilities {
    color: (colorPath: string) => string;
    alpha: (colorPath: string, alpha: number) => string;
    lighten: (colorPath: string, amount: number) => string;
    darken: (colorPath: string, amount: number) => string;
    space: (size: keyof Spacing) => string;
    font: (size: keyof Typography['fontSize']) => CSSProperties;
    media: (breakpoint: keyof Breakpoints) => string;
    variant: (component: string, variant: string, color?: string) => CSSProperties;
}
export interface ThemeProviderProps {
    children: React.ReactNode;
    theme?: string;
    mode?: ThemeMode;
    themes?: Record<string, Theme>;
    respectSystemTheme?: boolean;
    persistTheme?: boolean;
    storageKey?: string;
    customCSS?: string;
    className?: string;
}
export type BuiltInTheme = 'default' | 'dark' | 'light' | 'modern' | 'minimal' | 'professional' | 'colorful' | 'high-contrast';
export interface ThemeCustomization {
    extends?: string;
    colors?: Partial<ThemeColors>;
    typography?: Partial<Typography>;
    spacing?: Partial<Spacing>;
    components?: Partial<ComponentVariants>;
    cssVariables?: Record<string, string>;
    custom?: JSONObject;
}
export interface ThemeGeneratorOptions {
    primaryColor: string;
    secondaryColor?: string;
    mode: 'light' | 'dark';
    colorHarmony: 'monochromatic' | 'analogous' | 'complementary' | 'triadic' | 'tetradic';
    contrastRatio: 'AA' | 'AAA';
    borderRadius: 'none' | 'small' | 'medium' | 'large' | 'full';
    shadows: 'none' | 'subtle' | 'medium' | 'strong';
    animations: 'none' | 'reduced' | 'normal' | 'enhanced';
}
export interface ThemeValidation {
    valid: boolean;
    errors: string[];
    warnings: string[];
    accessibility: {
        contrastRatios: Record<string, number>;
        wcagLevel: 'A' | 'AA' | 'AAA' | 'fail';
    };
}
export declare const DEFAULT_THEMES: Record<BuiltInTheme, Partial<Theme>>;
//# sourceMappingURL=theme.d.ts.map