import type { FormSchema } from 'tav-ui/es/components/form/src/types/form';
import type { ButtonProps } from 'tav-ui/es/components/button/src/types';
import type { TooltipProps } from 'ant-design-vue/es/tooltip/Tooltip';
import type { CSSProperties, ComputedRef, Ref } from 'vue';
import type { VxeGridPropTypes } from 'vxe-table';
import type { TableProColumn } from './types';
export interface PagerConfig extends VxeGridPropTypes.PagerConfig {
    controller?: 'backend' | 'frontend';
}
export interface TableProFilterForm {
    inputForm?: Omit<FormSchema, 'label' | 'component'> | FormSchema;
    pannelForm?: FormSchema[];
    getPopupContainer?: () => HTMLElement;
}
export interface TableProFilterFormConfig extends TableProFilterForm {
    enabled?: boolean;
}
interface CustomAction {
    permission?: string;
    permissionCode?: number;
    usePermission?: {
        code: string;
        ref: any;
        row?: any;
    };
    handleBeforeAction?: (e: Event) => void;
    handleAction?: (e: Event) => void;
    handleAfterAction?: (e: Event) => void;
}
declare type defaultValueKey = 'fileName' | 'fileSeq' | 'fileType' | 'fileContainFields';
export interface TableProCustomActionConfig {
    enabled?: boolean;
    add?: CustomAction | boolean;
    delete?: CustomAction | boolean;
    import?: CustomAction | boolean;
    export?: (CustomAction & {
        fileName?: string;
        /** 对导出的数据进行格式化等操作，数据的导出与数据的展示列配置是分开管理的，只能是扁平数组 */
        columns?: (...args: any[]) => {
            field: string;
            title?: string;
            minWidth?: number;
            visible?: boolean;
            cellContent?: (...args: any[]) => any;
            cellFormat?: (...args: any[]) => any;
        }[];
        defaultValue: Partial<Record<defaultValueKey, any>>;
        fileDataTypeOptionsConfig?: (...args: [Record<string, string>[]]) => Record<string, string>[];
        /** color 相关的格式必须为 argb，即 #212121 => 212121 */
        styles?: {
            headerHeight?: number;
            headerBackgroundColor?: string;
            headerFontSize?: number;
            cellHeight?: number;
            cellFontColor?: string;
            cellFontSize?: number;
            cellBorderStyle?: string;
            cellBorderColor?: string;
            footerHeight?: number;
            footerBackgroundColor?: string;
            footerFontSize?: number;
            descriptionHeight?: number;
            descriptionBackgroundColor?: string;
            descriptionFontSize?: number;
            descriptionAlign?: string;
        };
        handleDescription?: (...args: any[]) => any;
        /** 是否在导出表格中显示隐藏列，默认 false（不显示） */
        useUnvisibleColumn?: boolean;
        /** 针对页面上有 tab 页签的情况，将 tab 对应的字段名传进来 */
        keepedApiParamKeys?: string[];
        /** 使用默认接口进行前端导出后对数据做处理，类似 tablepro 的 afterapi */
        afterApi?: (...args: any[]) => any;
        /** 使用后端导出，传入后端导出接口，类似 tablepro 的 api */
        useBackendApi?: (...args: any[]) => any;
    }) | boolean;
    refresh?: CustomAction | boolean;
    column?: CustomAction | boolean;
    statistical?: CustomAction | boolean;
    checkboxCache?: (CustomAction & {
        fieldNames?: Record<'label', any>;
    }) | boolean;
}
export declare type VxeQueryParams = VxeGridPropTypes.ProxyAjaxQueryParams;
export declare type TableProApiParams = {
    filter?: Record<string, any>;
    model?: Record<string, any>;
    clearSelect?: boolean;
    page?: number;
};
export interface TableProApi<T> {
    (option: TableProApiParams): T;
}
export interface TableProInnerInfo {
    userInfo?: Record<string, any>;
    columnsInfoGet?: (...arg: any[]) => Promise<any>;
    columnsInfoSet?: (...arg: any[]) => Promise<any>;
}
export interface TableProTagsConfig {
    /** label 对应的字段 */
    label?: string;
    /** value 对应的字段 */
    value?: string;
    /** tag 颜色 */
    color?: string;
    round?: boolean | string;
    /** tag 自定义样式 */
    style?: CSSProperties;
}
export interface TableProPopConfirm {
    title: string;
    okText?: string;
    cancelText?: string;
    confirm: (...arg: any[]) => any;
    cancel?: (...arg: any[]) => any;
    icon?: string;
    placement?: 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | 'bottomLeft' | 'bottomRight';
}
export interface TableProActionItem extends ButtonProps {
    onClick?: (...arg: any[]) => any;
    label?: string;
    blankLabel?: string;
    color?: 'success' | 'error' | 'warning';
    icon?: string;
    popConfirm?: TableProPopConfirm;
    disabled?: boolean;
    divider?: boolean;
    limit?: number;
    enabled?: boolean | ((action: TableProActionItem) => boolean);
    tooltip?: string | TooltipProps;
    permission?: string;
    permissionCode?: number;
}
export interface TreeDataItem {
    value: string;
    key: string;
    title?: string;
    disabled?: boolean;
    children?: TreeDataItem[];
}
/** 把tree需要的数据融合进column */
export declare type CustomActionSettingColumnOption = TableProColumn & {
    key?: string;
    value?: any;
    disabled?: boolean;
};
export interface CustomActionSettingColumn {
    coverColumnsSetting: (columns: CustomActionSettingColumnOption[], checkedList: string[]) => void;
    handleColumnClick: () => void;
}
export interface CustomActionSetting {
    refreshRef: null;
    columnRef: Ref<CustomActionSettingColumn>;
    showColumnsModa: () => void;
}
export interface CustomActionRef {
    addRef: null;
    deleteRef: null;
    importRef: null;
    exportRef: null;
    showExportModal: () => void;
    showColumnsModa: () => void;
    settingsRef: Ref<CustomActionSetting>;
    actionRef: Ref<ComputedRef>;
}
export {};
