import type { CNode } from 'css-render';
import type { Ref, VNodeChild } from 'vue';
import type { ScrollbarTheme } from '../../_internal/scrollbar/styles';
import type { InternalSelectMenuTheme } from '../../_internal/select-menu/styles';
import type { InternalSelectionTheme } from '../../_internal/selection/styles';
import type { Hljs } from '../../_mixins';
import type { AlertTheme } from '../../alert/styles';
import type { AnchorTheme } from '../../anchor/styles';
import type { AutoCompleteSize } from '../../auto-complete/src/public-types';
import type { AutoCompleteTheme } from '../../auto-complete/styles';
import type { AvatarGroupTheme } from '../../avatar-group/styles';
import type { AvatarTheme } from '../../avatar/styles';
import type { BackTopTheme } from '../../back-top/styles';
import type { BadgeTheme } from '../../badge/styles';
import type { BreadcrumbTheme } from '../../breadcrumb/styles';
import type { ButtonGroupTheme } from '../../button-group/styles/light';
import type { ButtonSize } from '../../button/src/public-types';
import type { ButtonTheme } from '../../button/styles';
import type { CalendarTheme } from '../../calendar/styles';
import type { CardSize } from '../../card/src/public-types';
import type { CardTheme } from '../../card/styles';
import type { CarouselTheme } from '../../carousel/styles';
import type { CascaderSize } from '../../cascader/src/public-types';
import type { CascaderTheme } from '../../cascader/styles';
import type { CheckboxSize } from '../../checkbox/src/public-types';
import type { CheckboxTheme } from '../../checkbox/styles';
import type { CodeTheme } from '../../code/styles';
import type { CollapseTransitionTheme } from '../../collapse-transition/styles';
import type { CollapseTheme } from '../../collapse/styles';
import type { ColorPickerSize } from '../../color-picker/src/public-types';
import type { ColorPickerTheme } from '../../color-picker/styles';
import type { DataTableRenderFilter, DataTableRenderSorter } from '../../data-table';
import type { DataTableSize } from '../../data-table/src/public-types';
import type { DataTableTheme } from '../../data-table/styles';
import type { DatePickerSize } from '../../date-picker/src/public-types';
import type { DatePickerTheme } from '../../date-picker/styles';
import type { DescriptionsSize } from '../../descriptions/src/public-types';
import type { DescriptionsTheme } from '../../descriptions/styles';
import type { IconPlacement } from '../../dialog/src/interface';
import type { DialogTheme } from '../../dialog/styles';
import type { DividerTheme } from '../../divider/styles';
import type { DrawerTheme } from '../../drawer/styles';
import type { DropdownSize } from '../../dropdown/src/public-types';
import type { DropdownTheme } from '../../dropdown/styles';
import type { DynamicInputTheme } from '../../dynamic-input/styles';
import type { DynamicTagsSize } from '../../dynamic-tags/src/public-types';
import type { DynamicTagsTheme } from '../../dynamic-tags/styles';
import type { ElementTheme } from '../../element/styles';
import type { EllipsisTheme } from '../../ellipsis/styles';
import type { EmptyProps } from '../../empty';
import type { EmptyTheme } from '../../empty/styles';
import type { EquationTheme } from '../../equation/styles';
import type { FlexTheme } from '../../flex/styles';
import type { FloatButtonGroupTheme } from '../../float-button-group/styles';
import type { FloatButtonTheme } from '../../float-button/styles';
import type { FormSize } from '../../form/src/public-types';
import type { FormTheme } from '../../form/styles';
import type { GradientTextTheme } from '../../gradient-text/styles';
import type { HeatmapTheme } from '../../heatmap/styles';
import type { IconWrapperTheme } from '../../icon-wrapper/styles';
import type { IconTheme } from '../../icon/styles';
import type { ImageTheme } from '../../image/styles';
import type { InputNumberSize } from '../../input-number/src/public-types';
import type { InputNumberTheme } from '../../input-number/styles';
import type { InputOtpSize } from '../../input-otp/src/public-types';
import type { InputOtpTheme } from '../../input-otp/styles';
import type { InputSize } from '../../input/src/public-types';
import type { InputTheme } from '../../input/styles';
import type { LayoutTheme } from '../../layout/styles';
import type { RowTheme } from '../../legacy-grid/styles';
import type { LegacyTransferTheme } from '../../legacy-transfer/styles';
import type { ListTheme } from '../../list/styles';
import type { LoadingBarTheme } from '../../loading-bar/styles';
import type { NDateLocale, NLocale } from '../../locales';
import type { LogTheme } from '../../log/styles';
import type { MarqueeTheme } from '../../marquee/styles';
import type { MentionSize } from '../../mention/src/public-types';
import type { MentionTheme } from '../../mention/styles';
import type { MenuTheme } from '../../menu/styles';
import type { MessageTheme } from '../../message/styles';
import type { ModalTheme } from '../../modal/styles';
import type { NotificationTheme } from '../../notification/styles';
import type { PageHeaderTheme } from '../../page-header/styles';
import type { PaginationSize } from '../../pagination/src/public-types';
import type { PaginationTheme } from '../../pagination/styles';
import type { PopconfirmTheme } from '../../popconfirm/styles';
import type { PopoverTheme } from '../../popover/styles';
import type { PopselectSize } from '../../popselect/src/public-types';
import type { PopselectTheme } from '../../popselect/styles';
import type { ProgressTheme } from '../../progress/styles';
import type { QrCodeTheme } from '../../qr-code/styles';
import type { RadioSize } from '../../radio/src/public-types';
import type { RadioTheme } from '../../radio/styles';
import type { RateSize } from '../../rate/src/public-types';
import type { RateTheme } from '../../rate/styles';
import type { ResultSize } from '../../result/src/public-types';
import type { ResultTheme } from '../../result/styles';
import type { SelectSize } from '../../select/src/public-types';
import type { SelectTheme } from '../../select/styles';
import type { SkeletonSize } from '../../skeleton/src/public-types';
import type { SkeletonTheme } from '../../skeleton/styles';
import type { SliderTheme } from '../../slider/styles';
import type { SpaceSize } from '../../space/src/public-types';
import type { SpaceTheme } from '../../space/styles';
import type { SpinTheme } from '../../spin/styles';
import type { SplitTheme } from '../../split/styles';
import type { StatisticTheme } from '../../statistic/styles';
import type { StepsTheme } from '../../steps/styles';
import type { SwitchSize } from '../../switch/src/public-types';
import type { SwitchTheme } from '../../switch/styles';
import type { TableSize } from '../../table/src/public-types';
import type { TableTheme } from '../../table/styles';
import type { TabsSize } from '../../tabs/src/public-types';
import type { TabsTheme } from '../../tabs/styles';
import type { TagSize } from '../../tag/src/public-types';
import type { TagTheme } from '../../tag/styles';
import type { ThingTheme } from '../../thing/styles';
import type { TimePickerSize } from '../../time-picker/src/public-types';
import type { TimePickerTheme } from '../../time-picker/styles';
import type { TimelineTheme } from '../../timeline/styles';
import type { TooltipTheme } from '../../tooltip/styles';
import type { TransferSize } from '../../transfer/src/public-types';
import type { TransferTheme } from '../../transfer/styles';
import type { TreeSelectSize } from '../../tree-select/src/public-types';
import type { TreeSelectTheme } from '../../tree-select/styles';
import type { TreeTheme } from '../../tree/styles';
import type { TypographyTheme } from '../../typography/styles';
import type { UploadTheme } from '../../upload/styles';
import type { WatermarkTheme } from '../../watermark/styles';
import type { GlobalTheme, GlobalThemeOverrides } from './interface';
import type { Katex } from './katex';
export interface GlobalThemeWithoutCommon {
    Alert?: AlertTheme;
    Anchor?: AnchorTheme;
    AutoComplete?: AutoCompleteTheme;
    Avatar?: AvatarTheme;
    AvatarGroup?: AvatarGroupTheme;
    BackTop?: BackTopTheme;
    Badge?: BadgeTheme;
    Breadcrumb?: BreadcrumbTheme;
    Button?: ButtonTheme;
    ButtonGroup?: ButtonGroupTheme;
    Calendar?: CalendarTheme;
    Card?: CardTheme;
    Carousel?: CarouselTheme;
    Cascader?: CascaderTheme;
    Checkbox?: CheckboxTheme;
    Code?: CodeTheme;
    Collapse?: CollapseTheme;
    CollapseTransition?: CollapseTransitionTheme;
    ColorPicker?: ColorPickerTheme;
    DataTable?: DataTableTheme;
    DatePicker?: DatePickerTheme;
    Descriptions?: DescriptionsTheme;
    Dialog?: DialogTheme;
    Divider?: DividerTheme;
    Drawer?: DrawerTheme;
    Dropdown?: DropdownTheme;
    DynamicInput?: DynamicInputTheme;
    DynamicTags?: DynamicTagsTheme;
    Element?: ElementTheme;
    Ellipsis?: EllipsisTheme;
    Empty?: EmptyTheme;
    Equation?: EquationTheme;
    Flex?: FlexTheme;
    Form?: FormTheme;
    FloatButton?: FloatButtonTheme;
    FloatButtonGroup?: FloatButtonGroupTheme;
    GradientText?: GradientTextTheme;
    Icon?: IconTheme;
    IconWrapper?: IconWrapperTheme;
    Image?: ImageTheme;
    Input?: InputTheme;
    InputNumber?: InputNumberTheme;
    InputOtp?: InputOtpTheme;
    Layout?: LayoutTheme;
    LegacyTransfer?: LegacyTransferTheme;
    List?: ListTheme;
    LoadingBar?: LoadingBarTheme;
    Log?: LogTheme;
    Menu?: MenuTheme;
    Mention?: MentionTheme;
    Message?: MessageTheme;
    Modal?: ModalTheme;
    Notification?: NotificationTheme;
    PageHeader?: PageHeaderTheme;
    Pagination?: PaginationTheme;
    Popconfirm?: PopconfirmTheme;
    Popover?: PopoverTheme;
    Popselect?: PopselectTheme;
    Progress?: ProgressTheme;
    QrCode?: QrCodeTheme;
    Radio?: RadioTheme;
    Rate?: RateTheme;
    Result?: ResultTheme;
    Scrollbar?: ScrollbarTheme;
    Select?: SelectTheme;
    Skeleton?: SkeletonTheme;
    Slider?: SliderTheme;
    Space?: SpaceTheme;
    Spin?: SpinTheme;
    Statistic?: StatisticTheme;
    Steps?: StepsTheme;
    Switch?: SwitchTheme;
    Table?: TableTheme;
    Tabs?: TabsTheme;
    Tag?: TagTheme;
    Thing?: ThingTheme;
    TimePicker?: TimePickerTheme;
    Timeline?: TimelineTheme;
    Tooltip?: TooltipTheme;
    Transfer?: TransferTheme;
    Tree?: TreeTheme;
    TreeSelect?: TreeSelectTheme;
    Typography?: TypographyTheme;
    Upload?: UploadTheme;
    Watermark?: WatermarkTheme;
    Split?: SplitTheme;
    Row?: RowTheme;
    Marquee?: MarqueeTheme;
    Heatmap?: HeatmapTheme;
    InternalSelectMenu?: InternalSelectMenuTheme;
    InternalSelection?: InternalSelectionTheme;
}
export interface GlobalComponentConfig {
    AutoComplete?: {
        size?: AutoCompleteSize;
    };
    Cascader?: {
        size?: CascaderSize;
        renderEmpty?: () => VNodeChild;
    };
    Button?: {
        size?: ButtonSize;
    };
    Card?: {
        size?: CardSize;
    };
    Checkbox?: {
        size?: CheckboxSize;
    };
    Pagination?: {
        size?: PaginationSize;
        inputSize?: InputSize;
        selectSize?: SelectSize;
    };
    ColorPicker?: {
        size?: ColorPickerSize;
    };
    DatePicker?: {
        size?: DatePickerSize;
        timePickerSize?: TimePickerSize;
    };
    Dialog?: {
        iconPlacement?: IconPlacement;
    };
    DataTable?: {
        size?: DataTableSize;
        renderFilter?: DataTableRenderFilter;
        renderSorter?: DataTableRenderSorter;
        renderEmpty?: () => VNodeChild;
    };
    Descriptions?: {
        size?: DescriptionsSize;
    };
    Dropdown?: {
        size?: DropdownSize;
    };
    DynamicInput?: {
        buttonSize?: ButtonSize;
    };
    DynamicTags?: {
        size?: DynamicTagsSize;
    };
    Empty?: Pick<EmptyProps, 'description' | 'renderIcon'>;
    Form?: {
        size?: FormSize;
    };
    Input?: {
        size?: InputSize;
    };
    InputNumber?: {
        size?: InputNumberSize;
    };
    InputOtp?: {
        size?: InputOtpSize;
    };
    Mention?: {
        size?: MentionSize;
    };
    Select?: {
        size?: SelectSize;
        renderEmpty?: () => VNodeChild;
    };
    Popselect?: {
        size?: PopselectSize;
    };
    Radio?: {
        size?: RadioSize;
    };
    Rate?: {
        size?: RateSize;
    };
    Result?: {
        size?: ResultSize;
    };
    Skeleton?: {
        size?: SkeletonSize;
    };
    Space?: {
        size?: SpaceSize;
    };
    Switch?: {
        size?: SwitchSize;
    };
    Table?: {
        size?: TableSize;
    };
    Tabs?: {
        size?: TabsSize;
    };
    Tag?: {
        size?: TagSize;
    };
    TimePicker?: {
        size?: TimePickerSize;
    };
    Transfer?: {
        size?: TransferSize;
        renderEmpty?: () => VNodeChild;
    };
    Tree?: {
        renderEmpty?: () => VNodeChild;
    };
    TreeSelect?: {
        size?: TreeSelectSize;
        renderEmpty?: () => VNodeChild;
    };
}
export interface GlobalIconConfig {
    attach?: () => VNodeChild;
    cancel?: () => VNodeChild;
    clear?: () => VNodeChild;
    close?: () => VNodeChild;
    date?: () => VNodeChild;
    download?: () => VNodeChild;
    error?: () => VNodeChild;
    info?: () => VNodeChild;
    retry?: () => VNodeChild;
    success?: () => VNodeChild;
    time?: () => VNodeChild;
    to?: () => VNodeChild;
    trash?: () => VNodeChild;
    warning?: () => VNodeChild;
    rotateClockwise?: () => VNodeChild;
    rotateCounterclockwise?: () => VNodeChild;
    zoomIn?: () => VNodeChild;
    zoomOut?: () => VNodeChild;
}
export interface RtlItem {
    name: keyof GlobalThemeWithoutCommon;
    style: CNode;
    peers?: RtlItem[];
}
export type RtlProp = RtlItem[];
export type RtlEnabledState = Partial<Record<keyof GlobalThemeWithoutCommon, RtlItem>>;
export type Breakpoints = Record<string, number> | undefined;
export interface ConfigProviderInjection {
    mergedBreakpointsRef: Ref<Breakpoints | undefined>;
    mergedClsPrefixRef: Ref<string>;
    mergedBorderedRef: Ref<boolean | undefined>;
    mergedNamespaceRef: Ref<string | undefined>;
    mergedLocaleRef: Ref<NLocale | undefined>;
    mergedDateLocaleRef: Ref<NDateLocale | undefined>;
    mergedHljsRef: Ref<Hljs | undefined>;
    mergedKatexRef: Ref<Katex | undefined>;
    mergedComponentPropsRef: Ref<GlobalComponentConfig | undefined>;
    mergedIconsRef: Ref<GlobalIconConfig | undefined>;
    mergedThemeRef: Ref<GlobalTheme | undefined>;
    mergedThemeOverridesRef: Ref<GlobalThemeOverrides | undefined>;
    mergedRtlRef: Ref<RtlEnabledState | undefined>;
    mergedThemeHashRef: Ref<string>;
    inlineThemeDisabled: boolean;
    preflightStyleDisabled: boolean;
    styleMountTarget: ParentNode | undefined;
}
