import { AxiosInstance, AxiosPromise, AxiosRequestConfig } from 'axios';
import { ReactNode } from 'react';
import { LovConfig } from '../../pro/es/lov/Lov';
import { ExportMode, RecordStatus } from '../../pro/es/data-set/enum';
import { Customized, expandIconProps, Suffixes, TablePaginationConfig, TableProps, TableQueryBarHook } from '../../pro/es/table/Table';
import { ValidationMessages } from '../../pro/es/validator/Validator';
import { ButtonProps } from '../../pro/es/button/Button';
import { DragColumnAlign, TableColumnTooltip, TableQueryBarType } from '../../pro/es/table/enum';
import { TransportHookProps, TransportProps } from '../../pro/es/data-set/Transport';
import DataSet from '../../pro/es/data-set/DataSet';
import { FeedBack } from '../../pro/es/data-set/FeedBack';
import Record from '../../pro/es/data-set/Record';
import { CacheOptions } from '../../pro/es/_util/Cache';
import { LabelLayout } from '../../pro/es/form/enum';
import { ButtonColor, FuncType } from '../../pro/es/button/enum';
import { Renderer } from '../../pro/es/field/FormField';
import { FormatNumberFunc, FormatNumberFuncOptions } from '../../pro/es/number-field/NumberField';
import { ModalProps } from '../../pro/es/modal/interface';
import { onCellProps } from '../../pro/es/table/Column';
import { SpinProps } from '../spin';
import { PanelProps } from '../collapse';
export declare type Status = {
    [RecordStatus.add]: string;
    [RecordStatus.update]: string;
    [RecordStatus.delete]: string;
};
export declare type renderEmptyHandler = (componentName?: string) => ReactNode;
export declare type Formatter = {
    jsonDate?: string | null;
    date?: string;
    dateTime?: string;
    time?: string;
    year?: string;
    month?: string;
    week?: string;
};
export declare type Config = {
    prefixCls?: string;
    proPrefixCls?: string;
    iconfontPrefix?: string;
    ripple?: boolean;
    collapseExpandIconPosition?: string;
    collapseExpandIcon?: (panelProps: PanelProps) => ReactNode | 'text';
    collapseTrigger?: string;
    lookupCache?: CacheOptions<string, AxiosPromise>;
    lookupUrl?: string | ((code: string) => string);
    lookupAxiosMethod?: string;
    lookupAxiosConfig?: AxiosRequestConfig | ((props: {
        params?: any;
        dataSet?: DataSet;
        record?: Record;
        lookupCode?: string;
    }) => AxiosRequestConfig);
    lookupBatchAxiosConfig?: (codes: string[]) => AxiosRequestConfig;
    lovDefineUrl?: string | ((code: string) => string);
    lovDefineAxiosConfig?: AxiosRequestConfig | ((code: string) => AxiosRequestConfig);
    lovQueryUrl?: string | ((code: string, lovConfig: LovConfig | undefined, props: TransportHookProps) => string);
    lovQueryAxiosConfig?: AxiosRequestConfig | ((code: string, lovConfig: LovConfig | undefined, props: TransportHookProps) => AxiosRequestConfig);
    lovTableProps?: TableProps;
    lovModalProps?: ModalProps;
    lovTableCustomizable?: boolean;
    lovAutoSelectSingle?: boolean;
    axios?: AxiosInstance;
    feedback?: FeedBack;
    dataKey?: string;
    totalKey?: string;
    statusKey?: string;
    tlsKey?: string;
    status?: Status;
    exportMode?: ExportMode;
    labelLayout?: LabelLayout;
    queryBar?: TableQueryBarType | TableQueryBarHook;
    tableBorder?: boolean;
    tableHighLightRow?: boolean;
    tableParityRow?: boolean;
    tableSelectedHighLightRow?: boolean;
    tableRowHeight?: 'auto' | number;
    tableColumnTooltip?: TableColumnTooltip;
    tableColumnResizable?: boolean;
    tableColumnHideable?: boolean;
    tableColumnTitleEditable?: boolean;
    tableDragColumnAlign?: DragColumnAlign;
    tableColumnDraggable?: boolean;
    tableRowDraggable?: boolean;
    tableExpandIcon?: (props: expandIconProps) => ReactNode;
    tableSpinProps?: SpinProps;
    tableButtonProps?: ButtonProps;
    tableCommandProps?: ButtonProps;
    tableDefaultRenderer?: Renderer;
    tableColumnOnCell?: (props: onCellProps) => object;
    tableShowSelectionTips?: boolean;
    tableAlwaysShowRowBox?: boolean;
    tableUseMouseBatchChoose?: boolean;
    tableEditorNextKeyEnterDown?: boolean;
    tableAutoFocus?: boolean;
    tableKeyboard?: boolean;
    tableFilterAdapter?: TransportProps;
    tableFilterSuffix?: Suffixes[];
    tableFilterSearchText?: string;
    tableAutoHeightDiff?: number;
    tableCustomizable?: boolean;
    tableCustomizedSave?: (code: string, customized: Customized) => void;
    tableCustomizedLoad?: (code: string) => Promise<Customized | null>;
    pagination?: TablePaginationConfig | false;
    modalSectionBorder?: boolean;
    drawerSectionBorder?: boolean;
    drawerTransitionName?: string;
    modalAutoCenter?: boolean;
    modalOkFirst?: boolean;
    drawerOkFirst?: boolean;
    modalButtonProps?: ButtonProps;
    modalKeyboard?: boolean;
    modalMaskClosable?: string | boolean;
    buttonFuncType?: FuncType;
    buttonColor?: ButtonColor;
    renderEmpty?: renderEmptyHandler;
    defaultValidationMessages?: ValidationMessages;
    transport?: TransportProps;
    icons?: {
        [key: string]: string[];
    } | string[];
    generatePageQuery?: (pageParams: {
        page?: number;
        pageSize?: number;
        sortName?: string;
        sortOrder?: string;
    }) => object;
    formatter?: Formatter;
    dropdownMatchSelectWidth?: boolean;
    selectReverse?: boolean;
    selectPagingOptionContent?: string | ReactNode;
    selectSearchable?: boolean;
    useColon?: boolean;
    excludeUseColonTagList?: string[];
    textFieldAutoComplete?: 'on' | 'off';
    resultStatusRenderer?: object;
    numberFieldNonStrictStep?: boolean;
    numberFieldFormatter?: FormatNumberFunc;
    numberFieldFormatterOptions?: FormatNumberFuncOptions;
    /**
     * @deprecated
     * 同 tableColumnDraggable
     */
    tableDragColumn?: boolean;
    /**
     * @deprecated
     * 同 tableRowDraggable
     */
    tableDragRow?: boolean;
};
export declare type ConfigKeys = keyof Config;
export declare function getConfig(key: ConfigKeys): any;
export declare function getPrefixCls(suffixCls: string, customizePrefixCls?: string): string;
export declare function getProPrefixCls(suffixCls: string, customizePrefixCls?: string): string;
export default function configure(config: Config): void;
