import { BreakpointsOptions, SpacingOptions, SxConfig } from '@mui/system';
import { DefaultColorScheme, ExtendedColorScheme } from './types/colorScheme';
import { ColorSystem } from './types/colorSystem';
import { Focus } from './types/focus';
import { TypographySystem } from './types/typography';
import { Variants, ColorInversion, ColorInversionConfig } from './types/variants';
import { Theme, ThemeCssVar, ThemeScales } from './types';
import { Components } from './components';
type Partial2Level<T> = {
    [K in keyof T]?: T[K] extends Record<any, any> ? {
        [J in keyof T[K]]?: T[K][J];
    } : T[K];
};
type Partial3Level<T> = {
    [K in keyof T]?: {
        [J in keyof T[K]]?: T[K][J] extends Record<any, any> ? {
            [P in keyof T[K][J]]?: T[K][J][P];
        } : T[K][J];
    };
};
export interface ColorSystemOptions extends Partial3Level<ColorSystem> {
}
export interface CssVarsThemeOptions extends Partial2Level<ThemeScales> {
    /**
     * Prefix of the generated CSS variables
     * @default 'joy'
     * @example extendTheme({ cssVarPrefix: 'foo-bar' })
     * // { ..., typography: { body1: { fontSize: 'var(--foo-bar-fontSize-md)' } }, ... }
     *
     * @example <caption>Provides empty string ('') to remove the prefix</caption>
     * extendTheme({ cssVarPrefix: 'foo-bar' })
     * // { ..., typography: { body1: { fontSize: 'var(--fontSize-md)' } }, ... }
     */
    cssVarPrefix?: string;
    focus?: Partial<Focus>;
    typography?: Partial<TypographySystem>;
    variants?: Partial2Level<Variants>;
    colorInversion?: Partial2Level<ColorInversion> | ((theme: Theme) => Partial2Level<ColorInversion>);
    colorInversionConfig?: ColorInversionConfig;
    breakpoints?: BreakpointsOptions;
    spacing?: SpacingOptions;
    components?: Components<Theme>;
    colorSchemes?: Partial<Record<DefaultColorScheme | ExtendedColorScheme, ColorSystemOptions>>;
    unstable_sxConfig?: SxConfig;
}
export declare const createGetCssVar: (cssVarPrefix?: string) => <AdditionalVars extends string = never>(field: ThemeCssVar | AdditionalVars, ...fallbacks: (ThemeCssVar | AdditionalVars)[]) => string;
export default function extendTheme(themeOptions?: CssVarsThemeOptions): Theme;
export {};
