import { ComputedRef, Ref, ShallowRef, DefineComponent, ExtractPropTypes, PropType, VNode, RendererNode, RendererElement, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { CSSInterpolation, Theme, useStyleRegister } from '../_util/cssinjs';
import { VueNode } from '../_util/type';
import { AliasToken, GlobalToken, MapToken, OverrideToken, PresetColorKey, PresetColorType, SeedToken, PresetColors } from './interface';
import { FullToken, default as genComponentStyleHook } from './util/genComponentStyleHook';
import { default as statisticToken, merge as mergeToken, statistic } from './util/statistic';
export { genComponentStyleHook, mergeToken, PresetColors, statistic, statisticToken, useStyleRegister, };
export type { AliasToken, AliasToken as DerivativeToken, FullToken, PresetColorKey, PresetColorType, SeedToken, };
export declare const defaultConfig: {
    token: SeedToken;
    hashed: boolean;
};
export interface DesignTokenContext {
    token: Partial<AliasToken>;
    theme?: Theme<SeedToken, MapToken>;
    components?: OverrideToken;
    hashed?: string | boolean;
}
export declare const globalDesignTokenApi: ShallowRef<DesignTokenContext | undefined, DesignTokenContext | undefined>;
export declare const useDesignTokenProvider: (value: ComputedRef<DesignTokenContext>) => void;
export declare const useDesignTokenInject: () => ComputedRef<{
    token: SeedToken;
    hashed: boolean;
} | DesignTokenContext>;
export declare const DesignTokenProvider: DefineComponent<ExtractPropTypes<{
    value: {
        type: PropType<DesignTokenContext>;
        default: DesignTokenContext;
    };
}>, () => VNode<RendererNode, RendererElement, {
    [key: string]: any;
}>[] | undefined, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
    value: {
        type: PropType<DesignTokenContext>;
        default: DesignTokenContext;
    };
}>> & Readonly<{}>, {
    value: DesignTokenContext;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export declare function useToken(): [
    ComputedRef<Theme<SeedToken, MapToken>>,
    ComputedRef<GlobalToken>,
    ComputedRef<string>
];
export type UseComponentStyleResult = [(node: VueNode) => VueNode, Ref<string>];
export type GenerateStyle<ComponentToken extends object = AliasToken, ReturnType = CSSInterpolation> = (token: ComponentToken) => ReturnType;
