import type { Ref } from 'vue';
export interface TableOptions {
    options: {
        initHttp?: boolean;
        loading?: boolean;
        page?: boolean;
        pageType?: string;
        editor?: boolean;
        sortDefault?: boolean;
        httpRequest?: (params: any) => Promise<any>;
        beforeHttp?: (params: any) => void;
        afterHttp?: (data: any) => void;
        lastHttp?: (tableData: any[], data: any) => void;
        asyncAfterHttp?: (tableData: any[], data: any) => Promise<any[]>;
        sizeChange?: (tableData: any[], next: (state: boolean) => void) => void;
        currentChange?: (tableData: any[], next: (state: boolean) => void) => void;
        afterCurrentChange?: () => void;
        iconClass?: string;
        showCountIcon?: boolean;
        countDetail?: string;
        formatter?: any;
    };
    columns: any[];
    attributes?: Record<string, any>;
    operation?: Record<string, any>;
    http?: Record<string, any>;
    paginations?: Record<string, any>;
}
export interface Callback {
    (tableData: any[]): void;
}
declare const _default: import("vue").DefineComponent<{
    tools: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    formFields: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    formTools: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    tables: {
        type: ObjectConstructor;
        required: true;
        default: () => {
            url: string;
            options: {};
            columns: never[];
        };
    };
    labelWidth: {
        type: (StringConstructor | NumberConstructor)[];
        required: true;
    };
    showReset: {
        type: BooleanConstructor;
        required: true;
        default: boolean;
    };
    showSubmit: {
        type: BooleanConstructor;
        required: true;
        default: boolean;
    };
    formAttributes: {
        type: ObjectConstructor;
        required: true;
    };
    submitBtnIcon: {
        type: StringConstructor;
        required: true;
    };
    resetBtnIcon: {
        type: StringConstructor;
        required: true;
    };
}, {
    props: {
        tools: () => any[];
        formFields: () => any[];
        formTools: () => any[];
        tables: TableOptions;
        labelWidth: string | number;
        showReset: boolean;
        showSubmit: boolean;
        formAttributes: Record<string, any>;
        submitBtnIcon: string;
        resetBtnIcon: string;
    };
    loading: Ref<boolean>;
    tableData: Ref<any[]>;
    tableDataTemp: Ref<any[]>;
    currentPage: Ref<number>;
    pageSize: Ref<number>;
    total: Ref<number>;
    timeStamp: Ref<number>;
    queryModel: Record<string, any>;
    queryForm: any;
    emit: (event: "reset" | "sortChange" | "filterChange" | "filterConfirm" | "filterReset", ...args: any[]) => void;
    initTables: (callback: () => void) => void;
    loadTable: (model?: Record<string, any>, callback?: (() => void) | undefined) => void;
    setQueryFormOptions: (columnName: string, options: unknown[]) => void;
    setQueryFormDisabled: (columnName: string, state: boolean) => void;
    setQueryFormValue: (columnName: string, state: boolean) => void;
    formSubmit: (model?: any) => void;
    reset: (model: any) => void;
    fetchTable: (model?: Record<string, any>, callback?: ((...args: any) => void) | undefined) => Promise<false | undefined>;
    formatter: () => void;
    setTableData: (data: any, isResetCurrentPage?: boolean) => void;
    getTableData: () => any[];
    handleSizeChange: (val: number) => void;
    handleSizeChangeNext: (val: number) => void;
    handleCurrentChange: (val: number) => void;
    handleCurrentChangeNext: (val: number) => void;
    sortChange: (val: any) => void;
    resetQueryFrom: () => void;
    setTableColumn: (key: string, keys: string, value: any) => void;
    setTableEdit: (state: boolean) => void;
    setTableOperationShow: (state: boolean) => void;
    filterChange: ({ columnName, filterKey, filteredList, filteredIdList, }: {
        columnName: string;
        filterKey: string;
        filteredList: unknown[];
        filteredIdList: unknown[];
    }) => void;
    filterConfirm: () => void;
    filterReset: () => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("reset" | "sortChange" | "filterChange" | "filterConfirm" | "filterReset")[], "reset" | "sortChange" | "filterChange" | "filterConfirm" | "filterReset", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
    tools: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    formFields: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    formTools: {
        type: FunctionConstructor;
        required: true;
        default: () => never[];
    };
    tables: {
        type: ObjectConstructor;
        required: true;
        default: () => {
            url: string;
            options: {};
            columns: never[];
        };
    };
    labelWidth: {
        type: (StringConstructor | NumberConstructor)[];
        required: true;
    };
    showReset: {
        type: BooleanConstructor;
        required: true;
        default: boolean;
    };
    showSubmit: {
        type: BooleanConstructor;
        required: true;
        default: boolean;
    };
    formAttributes: {
        type: ObjectConstructor;
        required: true;
    };
    submitBtnIcon: {
        type: StringConstructor;
        required: true;
    };
    resetBtnIcon: {
        type: StringConstructor;
        required: true;
    };
}>> & {
    onReset?: ((...args: any[]) => any) | undefined;
    onSortChange?: ((...args: any[]) => any) | undefined;
    onFilterChange?: ((...args: any[]) => any) | undefined;
    onFilterConfirm?: ((...args: any[]) => any) | undefined;
    onFilterReset?: ((...args: any[]) => any) | undefined;
}, {
    formFields: Function;
    tools: Function;
    formTools: Function;
    tables: Record<string, any>;
}>;
export default _default;
