import { MaybeRef } from '@aplus-frontend/utils';
import { App, Ref, ComputedRef, ExtractPropTypes, PropType } from 'vue';
import { ConfigProviderContext } from '../constants';
import { default as __DTS_DEFAULT_0__ } from '@aplus-frontend/antdv/es/config-provider/renderEmpty';
import { TransformCellTextProps } from '@aplus-frontend/antdv/es/table/interface';
import { CSPConfig } from '@aplus-frontend/antdv/es/config-provider';
import { Locale } from '@aplus-frontend/antdv/es/locale';
import { ButtonSize } from '@aplus-frontend/antdv/es/button';
import { ThemeConfig, InputConfig, PaginationConfig, FormConfig, SelectConfig, CascaderConfig, DatePickerConfig, RangePickerConfig, TreeSelectConfig, TextAreaConfig, InputNumberConfig, MentionsConfig, TimePickerConfig, CardConfig, TableConfig, TooltipConfig, PopoverConfig, PopconfirmConfig, ModalConfig, DrawerConfig, ImageConfig } from '@aplus-frontend/antdv/es/config-provider/context';
import { ApGridRowSelection, AgGridRowSelection, ApExportGroupListItem, ApViewUrlQueryAdapter, FullToken, ViewCacheOption } from '../..';
import { GridApi } from 'ag-grid-community';
import { UiModeType, SearchFormGlobalConfig, ApUploadConfig, ApDescriptionsConfig, ApiType, ValueTypeRenderConfig, downloadCenterTriggerConfig } from '..';
import { ApFilePreviewParser } from '../../business/ap-file-preview/interface';
import { LocaleType } from '../../locale';
import { RecursivePartial } from '../../type';
export declare const keysOf: <T extends Record<string, any>>(arr: T) => Array<keyof T>;
export declare function useGlobalConfig<K extends keyof ConfigProviderContext, D extends ConfigProviderContext[K]>(key: K, defaultValue?: D): Ref<Exclude<ConfigProviderContext[K], undefined> | D>;
export declare function useGlobalConfig(): Ref<ConfigProviderContext>;
export declare const provideGlobalConfig: (config: MaybeRef<ConfigProviderContext>, app?: App, global?: boolean) => ComputedRef<Partial<Partial< ExtractPropTypes<{
    iconPrefixCls: StringConstructor;
    getTargetContainer: {
        type: PropType<() => HTMLElement | Window>;
    };
    getPopupContainer: {
        type: PropType<(triggerNode?: HTMLElement) => HTMLElement>;
    };
    prefixCls: StringConstructor;
    getPrefixCls: {
        type: PropType<(suffixCls?: string, customizePrefixCls?: string) => string>;
    };
    renderEmpty: {
        type: PropType<__DTS_DEFAULT_0__>;
    };
    transformCellText: {
        type: PropType<(tableProps: TransformCellTextProps) => any>;
    };
    csp: {
        type: PropType<CSPConfig>;
        default: CSPConfig;
    };
    autoInsertSpaceInButton: {
        type: BooleanConstructor;
        default: any;
    };
    locale: {
        type: PropType<Locale>;
        default: Locale;
    };
    pageHeader: {
        type: PropType<{
            ghost?: boolean;
        }>;
        default: {
            ghost?: boolean;
        };
    };
    componentSize: {
        type: PropType<ButtonSize>;
    };
    componentDisabled: {
        type: BooleanConstructor;
        default: any;
    };
    direction: {
        type: PropType<"rtl" | "ltr">;
        default: string;
    };
    space: {
        type: PropType<{
            size?: ButtonSize | number;
        }>;
        default: {
            size?: ButtonSize | number;
        };
    };
    virtual: {
        type: BooleanConstructor;
        default: any;
    };
    variant: {
        type: PropType<"filled" | "outlined" | "borderless" | "underlined">;
    };
    dropdownMatchSelectWidth: {
        type: (BooleanConstructor | NumberConstructor)[];
        default: boolean;
    };
    theme: {
        type: PropType<ThemeConfig>;
        default: ThemeConfig;
    };
    wave: {
        type: PropType<{
            disabled?: boolean;
        }>;
        default: {
            disabled?: boolean;
        };
    };
    input: {
        type: PropType<InputConfig>;
        default: InputConfig;
    };
    pagination: {
        type: PropType<PaginationConfig>;
        default: PaginationConfig;
    };
    form: {
        type: PropType<FormConfig>;
        default: FormConfig;
    };
    select: {
        type: PropType<SelectConfig>;
        default: SelectConfig;
    };
    cascader: {
        type: PropType<CascaderConfig>;
        default: CascaderConfig;
    };
    datePicker: {
        type: PropType<DatePickerConfig>;
        default: DatePickerConfig;
    };
    rangePicker: {
        type: PropType<RangePickerConfig>;
        default: RangePickerConfig;
    };
    treeSelect: {
        type: PropType<TreeSelectConfig>;
        default: TreeSelectConfig;
    };
    textArea: {
        type: PropType<TextAreaConfig>;
        default: TextAreaConfig;
    };
    inputNumber: {
        type: PropType<InputNumberConfig>;
        default: InputNumberConfig;
    };
    mentions: {
        type: PropType<MentionsConfig>;
        default: MentionsConfig;
    };
    timePicker: {
        type: PropType<TimePickerConfig>;
        default: TimePickerConfig;
    };
    card: {
        type: PropType<CardConfig>;
        default: CardConfig;
    };
    table: {
        type: PropType<TableConfig>;
        default: TableConfig;
    };
    tooltip: {
        type: PropType<TooltipConfig>;
        default: TooltipConfig;
    };
    popover: {
        type: PropType<PopoverConfig>;
        default: PopoverConfig;
    };
    popconfirm: {
        type: PropType<PopconfirmConfig>;
        default: PopconfirmConfig;
    };
    modal: {
        type: PropType<ModalConfig>;
        default: ModalConfig;
    };
    drawer: {
        type: PropType<DrawerConfig>;
        default: DrawerConfig;
    };
    image: {
        type: PropType<ImageConfig>;
        default: ImageConfig;
    };
    apGrid: {
        type: PropType<{
            rowSelection?: true | ApGridRowSelection<any> | undefined;
        }>;
    };
    agGrid: {
        type: PropType<{
            rowSelection?: true | AgGridRowSelection<any> | undefined;
            onModelUpdated?: ((api: GridApi) => void) | undefined;
        }>;
    };
    apProCard: {
        type: PropType<{
            uiMode?: UiModeType;
        }>;
    };
    apImage: {
        type: PropType<{
            uiMode?: UiModeType | undefined;
        }>;
    };
    apTitle: {
        type: PropType<{
            uiMode?: UiModeType | undefined;
        }>;
    };
    searchForm: {
        type: PropType<SearchFormGlobalConfig>;
        default: () => {};
    };
    apUpload: {
        type: PropType<ApUploadConfig>;
        default: () => {};
    };
    apDescriptions: {
        type: PropType<ApDescriptionsConfig>;
        default: () => {};
    };
    apFilePreview: {
        type: PropType<{
            parserPlugin?: ApFilePreviewParser[] | undefined;
        }>;
        default: () => {};
    };
    apExportGroup: {
        type: PropType<Pick< ApExportGroupListItem, "dateValidate" | "exportField" | "handleExported"> & {
            hasPermission?: any;
        }>;
        default: () => {};
    };
    apView: {
        type: PropType<{
            apViewQuerySync?: ApViewUrlQueryAdapter | undefined;
        }>;
        default: () => {};
    };
    aplusLocale: {
        type: PropType<LocaleType>;
    };
    aplusToken: {
        type: PropType<RecursivePartial<FullToken>>;
    };
    namespace: {
        type: StringConstructor;
    };
    api: {
        type: PropType<ApiType>;
        default: () => {};
    };
    uiMode: {
        type: PropType<UiModeType>;
    };
    valueTypeMap: {
        type: PropType<Record<string, ValueTypeRenderConfig>>;
        default: () => {};
    };
    downloadCenterTriggerConfig: {
        type: PropType<downloadCenterTriggerConfig>;
        default: () => {};
    };
    scrollYDomName: {
        type: StringConstructor;
    };
    viewCacheOption: {
        type: PropType<ViewCacheOption>;
        default: () => {};
    };
}>>>> | undefined;
