import { type ReactNode } from "react";
import { animations, borderRadius, shadows, spacing, touchTargets, typography } from "./tokens";
export interface Theme {
    colors: {
        background: string;
        foreground: string;
        card: string;
        cardForeground: string;
        popover: string;
        popoverForeground: string;
        primary: string;
        primaryForeground: string;
        secondary: string;
        secondaryForeground: string;
        muted: string;
        mutedForeground: string;
        accent: string;
        accentForeground: string;
        destructive: string;
        destructiveForeground: string;
        success: string;
        successForeground: string;
        warning: string;
        warningForeground: string;
        info: string;
        infoForeground: string;
        border: string;
        input: string;
        ring: string;
        text: string;
        textMuted: string;
        textDisabled: string;
    };
    spacing: typeof spacing;
    borderRadius: typeof borderRadius;
    typography: typeof typography;
    shadows: typeof shadows;
    touchTargets: typeof touchTargets;
    animations: typeof animations;
}
export interface ThemeZero {
    bg: Record<string, any>;
    text: Record<string, any>;
    border: Record<string, any>;
    shadow: {
        sm: typeof shadows.sm;
        md: typeof shadows.md;
        lg: typeof shadows.lg;
        xl: typeof shadows.xl;
    };
    button: {
        primary: object;
        secondary: object;
        outline: object;
        ghost: object;
    };
    input: {
        base: object;
        focused: object;
        error: object;
    };
    card: {
        base: object;
    };
}
export interface ThemeIcons {
    color: {
        default: string;
        muted: string;
        primary: string;
        secondary: string;
        destructive: string;
        success: string;
        warning: string;
    };
    size: {
        sm: number;
        md: number;
        lg: number;
        xl: number;
    };
}
declare const createThemeColors: (isDark: boolean, lightTheme?: ColorPalette | Theme["colors"], darkTheme?: ColorPalette | Theme["colors"], colorTheme?: Partial<Theme["colors"]>) => Theme["colors"];
declare const createThemeZero: (themeColors: Theme["colors"]) => ThemeZero;
declare const createThemeIcons: (themeColors: Theme["colors"]) => ThemeIcons;
interface ThemeContextType {
    theme: Theme;
    zero: ThemeZero;
    icons: ThemeIcons;
    isDark: boolean;
    currentTheme: "light" | "dark" | "system";
    systemTheme: "light" | "dark";
    setTheme: (theme: "light" | "dark" | "system") => void;
    toggleTheme: () => void;
}
type ColorPalette = {
    50: string;
    100: string;
    200: string;
    300: string;
    400: string;
    500: string;
    600: string;
    700: string;
    800: string;
    900: string;
    950: string;
};
interface ThemeProviderProps {
    children: ReactNode;
    defaultTheme?: "light" | "dark" | "system";
    forcedTheme?: "light" | "dark";
    colorTheme?: Partial<Theme["colors"]>;
    lightTheme?: ColorPalette | Theme["colors"];
    darkTheme?: ColorPalette | Theme["colors"];
}
export declare function ThemeProvider({ children, defaultTheme, forcedTheme, colorTheme, lightTheme, darkTheme, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
export declare function useTheme(): ThemeContextType;
export declare function usePlatformTypography(): {
    readonly largeTitle: {
        readonly fontSize: 34;
        readonly lineHeight: 41;
        readonly fontWeight: "700";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Bold";
    };
    readonly title1: {
        readonly fontSize: 28;
        readonly lineHeight: 34;
        readonly fontWeight: "700";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Bold";
    };
    readonly title2: {
        readonly fontSize: 22;
        readonly lineHeight: 28;
        readonly fontWeight: "700";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Bold";
    };
    readonly title3: {
        readonly fontSize: 20;
        readonly lineHeight: 25;
        readonly fontWeight: "600";
        readonly fontFamily: "AtkinsonHyperlegibleNext-SemiBold";
    };
    readonly headline: {
        readonly fontSize: 17;
        readonly lineHeight: 22;
        readonly fontWeight: "600";
        readonly fontFamily: "AtkinsonHyperlegibleNext-SemiBold";
    };
    readonly body: {
        readonly fontSize: 17;
        readonly lineHeight: 22;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly callout: {
        readonly fontSize: 16;
        readonly lineHeight: 21;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly subhead: {
        readonly fontSize: 15;
        readonly lineHeight: 20;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly footnote: {
        readonly fontSize: 13;
        readonly lineHeight: 18;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly caption1: {
        readonly fontSize: 12;
        readonly lineHeight: 16;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly caption2: {
        readonly fontSize: 11;
        readonly lineHeight: 13;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
} | {
    readonly headline1: {
        readonly fontSize: 96;
        readonly lineHeight: 112;
        readonly fontWeight: "300";
        readonly fontFamily: "AtkinsonHyperlegibleNext-ExtraLight";
    };
    readonly headline2: {
        readonly fontSize: 60;
        readonly lineHeight: 72;
        readonly fontWeight: "300";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Light";
    };
    readonly headline3: {
        readonly fontSize: 48;
        readonly lineHeight: 56;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly headline4: {
        readonly fontSize: 34;
        readonly lineHeight: 42;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly headline5: {
        readonly fontSize: 24;
        readonly lineHeight: 32;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly headline6: {
        readonly fontSize: 20;
        readonly lineHeight: 28;
        readonly fontWeight: "500";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Medium";
    };
    readonly subtitle1: {
        readonly fontSize: 16;
        readonly lineHeight: 24;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly subtitle2: {
        readonly fontSize: 14;
        readonly lineHeight: 22;
        readonly fontWeight: "500";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Medium";
    };
    readonly body1: {
        readonly fontSize: 16;
        readonly lineHeight: 24;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly body2: {
        readonly fontSize: 14;
        readonly lineHeight: 20;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly button: {
        readonly fontSize: 14;
        readonly lineHeight: 16;
        readonly fontWeight: "500";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Medium";
    };
    readonly caption: {
        readonly fontSize: 12;
        readonly lineHeight: 16;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly overline: {
        readonly fontSize: 10;
        readonly lineHeight: 16;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
} | {
    readonly xs: {
        readonly fontSize: 12;
        readonly lineHeight: 16;
        readonly marginBottom: -0.3;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly sm: {
        readonly fontSize: 14;
        readonly lineHeight: 20;
        readonly marginBottom: -1;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly base: {
        readonly fontSize: 16;
        readonly lineHeight: 24;
        readonly marginBottom: -1.2;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly lg: {
        readonly fontSize: 18;
        readonly lineHeight: 28;
        readonly marginBottom: -1.5;
        readonly fontWeight: "400";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Regular";
    };
    readonly xl: {
        readonly fontSize: 20;
        readonly lineHeight: 28;
        readonly marginBottom: -1.75;
        readonly fontWeight: "500";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Medium";
    };
    readonly "2xl": {
        readonly fontSize: 24;
        readonly lineHeight: 32;
        readonly marginBottom: -2;
        readonly fontWeight: "600";
        readonly fontFamily: "AtkinsonHyperlegibleNext-SemiBold";
    };
    readonly "3xl": {
        readonly fontSize: 30;
        readonly lineHeight: 36;
        readonly marginBottom: -2.5;
        readonly fontWeight: "700";
        readonly fontFamily: "AtkinsonHyperlegibleNext-Bold";
    };
    readonly "4xl": {
        readonly fontSize: 36;
        readonly lineHeight: 40;
        readonly marginBottom: -3;
        readonly fontWeight: "700";
        readonly fontFamily: "AtkinsonHyperlegibleNext-ExtraBold";
    };
};
export declare function createThemedStyles<T extends Record<string, any>>(styleCreator: (theme: Theme, zero: ThemeZero, icons: ThemeIcons) => T): () => T;
export declare const lightTheme: Theme;
export declare const darkTheme: Theme;
export { createThemeColors, createThemeIcons, createThemeZero };
//# sourceMappingURL=theme.d.ts.map