import { ColorModeOptions } from "@chakra-ui/system";
import { Breakpoints, Styles } from "@chakra-ui/theme-tools";
import { Dict } from "@chakra-ui/utils";
import { StyleObjectOrFn, ThemeThunk } from "@chakra-ui/styled-system";
export declare type GlobalStyles = {
    body: {
        fontFamily: string;
        color: string;
        bg: string;
        transition: string;
        lineHeight: string;
    };
    "*::placeholder": {
        color: string;
    };
    "*, *::before, &::after": {
        borderColor: string;
        wordWrap: string;
    };
};
export declare type RecursiveProperty<Nested = string | number> = RecursiveObject<Nested> | Nested;
export interface RecursiveObject<Nested = string | number> {
    [property: string]: RecursiveProperty<Nested>;
}
export interface ThemeConfig extends ColorModeOptions {
}
export declare type ThemeTransitions = RecursiveObject & {
    property: RecursiveObject;
    easing: RecursiveObject;
    duration: RecursiveObject;
};
export interface ColorHues {
    50: string;
    100: string;
    200: string;
    300: string;
    400: string;
    500: string;
    600: string;
    700: string;
    800: string;
    900: string;
    primary700: string;
    primary600: string;
    primary500: string;
    primary400: string;
    primary300: string;
}
export declare type ThemeDirection = "ltr" | "rtl";
interface ComponentDefaultProps extends Record<string, any> {
    size?: string;
    variant?: string;
    colorScheme?: string;
}
interface SystemStyleObjectRecord {
    [key: string]: StyleObjectOrFn;
}
export interface ComponentSingleStyleConfig {
    baseStyle?: StyleObjectOrFn;
    sizes?: SystemStyleObjectRecord;
    variants?: SystemStyleObjectRecord;
    defaultProps?: ComponentDefaultProps;
}
export interface ComponentMultiStyleConfig {
    parts?: string[];
    baseStyle?: ThemeThunk<SystemStyleObjectRecord>;
    sizes?: SystemStyleObjectRecord;
    variants?: SystemStyleObjectRecord;
    defaultProps?: ComponentDefaultProps;
}
export declare type ComponentStyleConfig = ComponentSingleStyleConfig | ComponentMultiStyleConfig;
export interface ThemeComponents {
    [componentName: string]: ComponentStyleConfig;
}
interface Typography {
    fonts: RecursiveObject<string>;
    fontSizes: RecursiveObject;
    fontWeights: RecursiveObject;
    letterSpacings: RecursiveObject;
    lineHeights: RecursiveObject;
}
interface Foundations extends Typography {
    borders: RecursiveObject;
    breakpoints: Breakpoints<Dict>;
    colors: Record<string, any>;
    radii: RecursiveObject;
    shadows: RecursiveObject<string>;
    sizes: RecursiveObject;
    space: RecursiveObject;
    transition: ThemeTransitions;
    zIndices: RecursiveObject;
}
export interface ChakraTheme extends Foundations {
    components: ThemeComponents;
    config: ThemeConfig;
    direction: ThemeDirection;
    styles: Styles;
    globalStyles?: GlobalStyles;
    layerStyles?: SystemStyleObjectRecord;
    textStyles?: SystemStyleObjectRecord;
}
export {};
