import type { FormProps, FormSchema } from 'tav-ui/es/components/form/src/types/form';
import type { ExtractPropTypes, PropType } from 'vue';
import type { PaginationProps } from './types/pagination';
import type { BasicColumn, FetchSetting, SizeType, SorterResult, TableCustomRecord, TableRowSelection, TableSetting } from './types/table';
declare type Recordable<T = any> = Record<string, T>;
export interface FilterForms {
    inputForm?: Omit<FormSchema, 'label' | 'component'> | FormSchema;
    pannelForm?: FormSchema[];
}
export interface useAction {
    ifShow?: boolean;
    handleBeforeAction?: () => void;
    handleAction?: () => void;
    handleAfterAction?: () => void;
}
export interface PermissionButton {
    add: string;
    delete: string;
    import: string;
    export: string;
    refresh: string;
}
export declare const tableProps: {
    clickToRowSelect: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    isTreeTable: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    tableSetting: import("vue-types").VueTypeShape<TableSetting>;
    inset: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    sortFn: {
        type: PropType<(sortInfo: SorterResult) => any>;
        default: (sortInfo: SorterResult) => {
            sort: string;
            dir: string;
        };
    };
    filterFn: {
        type: PropType<(data: Partial<Recordable<string[]>>) => any>;
        default: (data: Partial<Record<string, string[]>>) => Partial<Record<string, string[]>>;
    };
    showTableSetting: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    autoCreateKey: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    striped: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    showSummary: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    summaryFunc: {
        type: PropType<(...arg: any[]) => any[]>;
        default: null;
    };
    summaryData: {
        type: PropType<Recordable<any>[]>;
        default: null;
    };
    indentSize: import("vue-types").VueTypeValidableDef<number> & {
        default: number;
    } & {
        default: number;
    };
    canColDrag: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    api: {
        type: PropType<(...arg: any[]) => Promise<any>>;
        default: null;
    };
    beforeFetch: {
        type: PropType<(...arg: any[]) => any>;
        default: null;
    };
    afterFetch: {
        type: PropType<(...arg: any[]) => any>;
        default: null;
    };
    handleSearchInfoFn: {
        type: PropType<(...arg: any[]) => any>;
        default: null;
    };
    fetchSetting: {
        type: PropType<FetchSetting>;
        default: () => {
            pageField: string;
            sizeField: string;
            listField: string;
            totalField: string;
        };
    };
    immediate: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    emptyDataIsShowTable: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    searchInfo: {
        type: PropType<Recordable<any>>;
        default: null;
    };
    defSort: {
        type: PropType<Recordable<any>>;
        default: null;
    };
    useSearchForm: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    formConfig: {
        type: PropType<Partial<FormProps>>;
        default: null;
    };
    showTableAction: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    filter: {
        type: PropType<FilterForms>;
        default: null;
    };
    filterExclusion: {
        type: BooleanConstructor;
        default: boolean;
    };
    useAdd: {
        type: PropType<useAction>;
        default(): {
            ifShow: boolean;
        };
    };
    useDelete: {
        type: PropType<useAction>;
        default(): {
            ifShow: boolean;
        };
    };
    useImport: {
        type: PropType<useAction>;
        default(): {
            ifShow: boolean;
        };
    };
    useExport: {
        type: PropType<useAction>;
        default(): {
            ifShow: boolean;
        };
    };
    useRefresh: {
        type: PropType<useAction>;
        default(): {
            ifShow: boolean;
        };
    };
    columns: {
        type: PropType<BasicColumn[]>;
        default: () => never[];
    };
    showIndexColumn: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    indexColumnProps: {
        type: PropType<BasicColumn>;
        default: null;
    };
    actionColumn: {
        type: PropType<BasicColumn>;
        default: null;
    };
    ellipsis: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    isCanResizeParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    tablePaddingDistance: {
        type: NumberConstructor;
        default: number;
    };
    formRefMarginTopDistance: {
        type: NumberConstructor;
        default: number;
    };
    canResize: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    } & {
        default: boolean;
    };
    clearSelectOnPageChange: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    resizeHeightOffset: import("vue-types").VueTypeValidableDef<number> & {
        default: number;
    } & {
        default: number;
    };
    rowSelection: {
        type: PropType<TableRowSelection<any> | null>;
        default: null;
    };
    title: {
        type: PropType<string | ((data: Recordable) => string)>;
        default: null;
    };
    titleHelpMessage: {
        type: PropType<string | string[]>;
    };
    maxHeight: import("vue-types").VueTypeValidableDef<number> & {
        default: number;
    };
    fullHeight: {
        type: BooleanConstructor;
        default: boolean;
    };
    dataSource: {
        type: PropType<Recordable<any>[]>;
        default: null;
    };
    rowKey: {
        type: PropType<string | ((record: Recordable) => string)>;
        default: string;
    };
    bordered: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    pagination: {
        type: PropType<boolean | PaginationProps>;
        default: null;
    };
    paginationControl: {
        type: PropType<"backend" | "frontend">;
        default: string;
    };
    loading: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    masking: import("vue-types").VueTypeValidableDef<boolean> & {
        default: boolean;
    };
    rowClassName: {
        type: PropType<(record: TableCustomRecord<any>, index: number) => string>;
    };
    scroll: {
        type: PropType<{
            x: number | true;
            y: number;
        }>;
        default: null;
    };
    beforeEditSubmit: {
        type: PropType<(data: {
            record: Recordable;
            index: number;
            key: string | number;
            value: any;
        }) => Promise<any>>;
    };
    size: {
        type: PropType<SizeType>;
        default: string;
    };
    permission: {
        type: PropType<Partial<PermissionButton>>;
        default(): {
            add: undefined;
            delete: undefined;
            import: undefined;
            export: undefined;
            refresh: undefined;
        };
    };
    keepScrollTop: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export declare type TableProps = ExtractPropTypes<typeof tableProps>;
export {};
