import { Context } from 'react';
import { EmotionCache } from '@emotion/cache';
import { EmotionCache as EmotionCache_2 } from '@emotion/utils';
import { HvThemeColorMode } from '@hitachivantara/uikit-styles';
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 */
declare type HvExtraDeepProps<T> = {
    [P in keyof T]: T[P] & Record<string, any>;
} & Record<string, any>;

/**
 * Theme structure
 */
export declare type HvTheme = HvExtraDeepProps<HvThemeStructure>;

export declare const HvThemeContext: Context<HvThemeContextValue>;

export declare interface HvThemeContextValue {
    colorModes: HvThemeColorMode[];
    activeTheme?: HvTheme;
    selectedMode: HvThemeColorMode;
    changeMode: (mode?: HvThemeColorMode) => void;
    rootId?: string;
}

export declare function useEmotionCache(): EmotionCache_2;

export { }
