import { CalendarController } from '../calendar';
import { ButtonProps } from '../button';
import { FormErrorMessage } from '../form';
import { LNode } from '../../common.type';
export interface GlobalConfigProvider {
    alert?: AlertConfig;
    anchor?: AnchorConfig;
    animation?: Partial<Record<'include' | 'exclude', Array<AnimationType>>>;
    calendar?: CalendarConfig;
    cascader?: CascaderConfig;
    classPrefix?: string;
    colorPicker?: ColorPickerConfig;
    datePicker?: DatePickerConfig;
    dialog?: DialogConfig;
    drawer?: DrawerConfig;
    form?: FormConfig;
    icon?: IconConfig;
    input?: InputConfig;
    list?: ListConfig;
    pagination?: PaginationConfig;
    popconfirm?: PopconfirmConfig;
    select?: SelectConfig;
    steps?: StepsConfig;
    table?: TableConfig;
    tag?: TagConfig;
    timePicker?: TimePickerConfig;
    transfer?: TransferConfig;
    tree?: TreeConfig;
    treeSelect?: TreeSelectConfig;
    upload?: UploadConfig;
}
export interface InputConfig {
    autocomplete?: string;
    placeholder?: string;
}
export interface PaginationConfig {
    itemsPerPage?: string;
    jumpTo?: string;
    page?: string;
    total?: string;
}
export interface CalendarConfig {
    cellMonth?: string;
    controllerConfig?: CalendarController;
    fillWithZero?: boolean;
    firstDayOfWeek?: number;
    hideWeekend?: string;
    monthRadio?: string;
    monthSelection?: string;
    showWeekend?: string;
    thisMonth?: string;
    today?: string;
    week?: string;
    yearRadio?: string;
    yearSelection?: string;
}
export interface CascaderConfig {
    empty?: string;
    loadingText?: string;
    placeholder?: string;
}
export interface ColorPickerConfig {
    clearConfirmText?: string;
    recentColorTitle?: string;
    swatchColorTitle?: string;
}
export interface TransferConfig {
    empty?: string;
    placeholder?: string;
    title?: string;
}
export interface TimePickerConfig {
    anteMeridiem?: string;
    confirm?: string;
    now?: string;
    placeholder?: string;
    postMeridiem?: string;
}
export interface DatePickerConfig {
    confirm?: string;
    dayAriaLabel?: string;
    direction?: string;
    firstDayOfWeek?: number;
    format?: string;
    monthAriaLabel?: string;
    months?: string[];
    nextDecade?: string;
    nextMonth?: string;
    nextYear?: string;
    now?: string;
    placeholder?: {
        date?: string;
        month?: string;
        year?: string;
    };
    preDecade?: string;
    preMonth?: string;
    preYear?: string;
    presets?: ConfigPresetDate;
    quarters?: string[];
    rangeSeparator?: string;
    selectDate?: string;
    selectTime?: string;
    weekAbbreviation?: string;
    weekdays?: string[];
    yearAriaLabel?: string;
}
export interface DialogConfig {
    cancel?: string | ButtonProps;
    closeOnEscKeydown?: boolean;
    closeOnOverlayClick?: boolean;
    confirm?: string | ButtonProps;
    confirmBtnTheme?: {
        default: string;
        info: string;
        warning: string;
        danger: string;
        success: string;
    };
}
export interface DrawerConfig {
    cancel?: string | ButtonProps;
    closeOnEscKeydown?: boolean;
    closeOnOverlayClick?: boolean;
    confirm?: string | ButtonProps;
    size?: string;
}
export interface PopconfirmConfig {
    cancel?: string | ButtonProps;
    confirm?: string | ButtonProps;
    confirmBtnTheme?: {
        default: string;
        warning: string;
        danger: string;
    };
}
export interface TableConfig {
    cancelText?: string;
    clearFilterResultButtonText?: string;
    columnConfigButtonText?: string;
    columnConfigDescriptionText?: string;
    columnConfigTitleText?: string;
    confirmText?: string;
    empty?: string | LNode;
    expandIcon?: LNode;
    filterIcon?: LNode;
    hideSortTips?: boolean;
    loadingMoreText?: string;
    loadingText?: string;
    resetText?: string;
    searchResultText?: string;
    selectAllText?: string;
    sortAscendingOperationText?: string;
    sortCancelOperationText?: string;
    sortDescendingOperationText?: string;
    sortIcon?: LNode;
    treeExpandAndFoldIcon?: LNode<{
        type: 'expand' | 'fold';
    }>;
}
export interface SelectConfig {
    clearIcon?: LNode;
    empty?: string;
    filterable?: boolean;
    loadingText?: string;
    placeholder?: string;
}
export interface TreeConfig {
    empty?: string;
    folderIcon?: LNode;
}
export interface TreeSelectConfig {
    empty?: string;
    loadingText?: string;
    placeholder?: string;
}
export interface ListConfig {
    loadingMoreText?: string;
    loadingText?: string;
}
export interface UploadConfig {
    cancelUploadText?: string;
    dragger?: UploadConfigDragger;
    file?: UploadConfigFileList;
    progress?: UploadConfigProgress;
    sizeLimitMessage?: string;
    triggerUploadText?: UploadTriggerUploadText;
}
export interface UploadConfigProgress {
    failText?: string;
    successText?: string;
    uploadingText?: string;
    waitingText?: string;
}
export interface UploadConfigDragger {
    clickAndDragText?: string;
    dragDropText?: string;
    draggingText?: string;
}
export interface UploadConfigFileList {
    fileNameText?: string;
    fileOperationDateText?: string;
    fileOperationText?: string;
    fileSizeText?: string;
    fileStatusText?: string;
}
export interface FormConfig {
    errorMessage?: FormErrorMessage;
    requiredMark?: boolean;
}
export interface TagConfig {
    closeIcon?: LNode;
}
export interface StepsConfig {
    errorIcon?: LNode;
}
export interface AlertConfig {
    collapseText?: string;
    expandText?: string;
}
export interface AnchorConfig {
    copySuccessText?: string;
    copyText?: string;
}
export declare type AnimationType = 'ripple' | 'expand' | 'fade';
export interface ConfigPresetDate {
    [name: string]: DateConfigValue | (() => DateConfigValue);
}
export declare type DateConfigValue = string | Date | Array<DateConfigValue>;
export interface UploadTriggerUploadText {
    image?: string;
    normal?: string;
    fileInput?: string;
    reupload?: string;
    continueUpload: string;
    delete?: string;
}
export interface IconConfig {
    [name: string]: any;
}
