import { Context } from 'react';
import { EmotionCache } from '@emotion/cache';
import { EmotionCache as EmotionCache_2 } from '@emotion/utils';
import { HvThemeStructure } from '@hitachivantara/uikit-styles';

export declare const defaultCacheKey = "hv";

export declare const defaultEmotionCache: EmotionCache;

export declare const EmotionContext: Context<    {
cache: EmotionCache;
}>;

/**
 * This type allows to pass undetermined extra props to components recursively
 * @deprecated internal use only
 */
export declare type HvExtraDeepProps<T> = {
    [P in keyof T]: T[P] & Record<string, any>;
} & Record<string, any>;

/**
 * This type allows to pass undetermined extra props to components
 * @deprecated use Record<string, {type}> */
export declare type HvExtraProps = {
    [key: string]: any;
};

/**
 * Theme structure
 */
export declare type HvTheme = HvExtraDeepProps<HvThemeStructure>;

export declare const HvThemeContext: Context<HvThemeContextValue>;

export declare interface HvThemeContextValue {
    themes: string[];
    colorModes: string[];
    activeTheme?: HvTheme;
    selectedTheme: string;
    selectedMode: string;
    changeTheme: (theme?: string, mode?: string) => void;
    rootId?: string;
}

export declare function useEmotionCache(): EmotionCache_2;

export { }
