import type { ExtractPropTypes, Component, VNode, PropType } from 'vue';
import type { ElTooltipProps, PaginationProps, TableColumnCtx } from 'element-plus';
import type { WetValueType, WetSchemaItemType, WetSchemaProps } from '../../pro-form';
import type { WetFormOption } from '../../types';
import columnpProps from 'element-plus/es/components/table/src/table-column/defaults';
export type CloumnPropsType = ExtractPropTypes<typeof columnpProps>;
export declare const wetBaseColumnProps: {
    type: {
        type: StringConstructor;
        default: string;
    };
    label: StringConstructor;
    className: StringConstructor;
    labelClassName: StringConstructor;
    property: StringConstructor;
    prop: StringConstructor;
    width: {
        type: (StringConstructor | NumberConstructor)[];
        default: string;
    };
    minWidth: {
        type: (StringConstructor | NumberConstructor)[];
        default: string;
    };
    renderHeader: PropType<(data: {
        column: TableColumnCtx<any>;
        $index: number;
    }) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>>;
    sortable: {
        type: (BooleanConstructor | StringConstructor)[];
        default: boolean;
    };
    sortMethod: PropType<(a: any, b: any) => number>;
    sortBy: PropType<string | string[] | ((row: any, index: number) => string)>;
    resizable: {
        type: BooleanConstructor;
        default: boolean;
    };
    columnKey: StringConstructor;
    align: StringConstructor;
    headerAlign: StringConstructor;
    showOverflowTooltip: {
        type: PropType<boolean | Partial<Pick<ElTooltipProps, "hideAfter" | "transition" | "showArrow" | "appendTo" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter">> | undefined>;
        default: undefined;
    };
    fixed: (BooleanConstructor | StringConstructor)[];
    formatter: PropType<(row: any, column: TableColumnCtx<any>, cellValue: any, index: number) => string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>>;
    selectable: PropType<(row: any, index: number) => boolean>;
    reserveSelection: BooleanConstructor;
    filterMethod: PropType<import("element-plus/es/components/table/src/table-column/defaults").FilterMethods<any>>;
    filteredValue: PropType<string[]>;
    filters: PropType<import("element-plus/es/components/table/src/table-column/defaults").Filters>;
    filterPlacement: StringConstructor;
    filterMultiple: {
        type: BooleanConstructor;
        default: boolean;
    };
    filterClassName: StringConstructor;
    index: PropType<number | ((index: number) => number)>;
    sortOrders: {
        type: PropType<("ascending" | "descending" | null)[]>;
        default: () => (string | null)[];
        validator: (val: ("ascending" | "descending" | null)[]) => boolean;
    };
};
export type WetProTableRequstRes = {
    data: any;
    total: number;
    success?: boolean;
};
export interface TableSpanMethodProps<T = any> {
    row: T;
    column: TableColumnCtx<T>;
    rowIndex: number;
    columnIndex: number;
}
export type WetBaseColumns = {
    title?: string;
    label?: string;
    isScrollMark?: boolean;
    dataIndex: string | string[];
    tooltip?: string;
    ellipsis?: boolean | Partial<ElTooltipProps>;
    valueEnum?: WetFormOption[];
    isRender?: boolean;
    render?: (rowInfo: {
        row: any;
        $index: number;
    }) => Component | VNode | undefined;
    columns?: WetBaseColumns[];
} & Partial<CloumnPropsType>;
export type WetRowSelection = {
    type: 'checkbox' | 'radio' | 'line';
    fixed?: boolean;
    onChange?: (selectedRows: any[]) => void;
};
export type WetTableExpandable = {
    columns: WetBaseColumns[];
    dataIndex?: string | string[];
    dataOutput?: (row: any, index: number) => any;
    showIndex?: boolean;
    expandable?: WetTableExpandable;
    size?: WetSchemaTableProps['size'];
    stripe?: WetSchemaTableProps['stripe'];
} | boolean;
export declare const wetSchemaTableProps: {
    emptyFormat: {
        type: StringConstructor;
        default: string;
    };
    rowKey: {
        type: PropType<string | string[]>;
    };
    fill: BooleanConstructor;
    columns: {
        type: PropType<WetBaseColumns[]>;
    };
    showIndex: {
        type: BooleanConstructor;
        default: boolean;
    };
    ellipsisProps: {
        type: PropType<Partial<ElTooltipProps>>;
        default(): {
            effect: string;
            placement: string;
        };
    };
    selections: {
        type: PropType<any[]>;
        default(): never[];
    };
    rowSelection: {
        type: PropType<WetRowSelection>;
    };
    expandable: {
        type: PropType<WetTableExpandable>;
    };
    mergeDataIndexs: {
        type: PropType<(string | string[])[]>;
    };
    data: {
        type: PropType<any[]>;
        default: () => never[];
    };
    size: {
        readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    width: (StringConstructor | NumberConstructor)[];
    height: (StringConstructor | NumberConstructor)[];
    maxHeight: (StringConstructor | NumberConstructor)[];
    fit: {
        type: BooleanConstructor;
        default: boolean;
    };
    stripe: BooleanConstructor;
    border: BooleanConstructor;
    showHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    showSummary: BooleanConstructor;
    sumText: StringConstructor;
    summaryMethod: PropType<import("element-plus/es/components/table/src/table/defaults").SummaryMethod<any> | undefined>;
    rowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
    rowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
    cellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
    cellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
    headerRowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
    headerRowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
    headerCellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
    headerCellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
    highlightCurrentRow: BooleanConstructor;
    currentRowKey: (StringConstructor | NumberConstructor)[];
    emptyText: StringConstructor;
    expandRowKeys: PropType<any[] | undefined>;
    defaultExpandAll: BooleanConstructor;
    defaultSort: PropType<import("element-plus/es/components/table/src/table/defaults").Sort | undefined>;
    tooltipEffect: StringConstructor;
    tooltipOptions: PropType<Partial<Pick<ElTooltipProps, "hideAfter" | "transition" | "showArrow" | "appendTo" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter">> | undefined>;
    spanMethod: PropType<((data: {
        row: any;
        rowIndex: number;
        column: TableColumnCtx<any>;
        columnIndex: number;
    }) => number[] | {
        rowspan: number;
        colspan: number;
    } | undefined) | undefined>;
    selectOnIndeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    indent: {
        type: NumberConstructor;
        default: number;
    };
    treeProps: {
        type: PropType<{
            hasChildren?: string | undefined;
            children?: string | undefined;
        } | undefined>;
        default: () => {
            hasChildren: string;
            children: string;
        };
    };
    lazy: BooleanConstructor;
    load: PropType<((row: any, treeNode: import("element-plus/es/components/table/src/table/defaults").TreeNode, resolve: (data: any[]) => void) => void) | undefined>;
    style: {
        type: PropType<import("vue").CSSProperties>;
        default: () => {};
    };
    className: {
        type: StringConstructor;
        default: string;
    };
    tableLayout: {
        type: PropType<"auto" | "fixed">;
        default: string;
    };
    scrollbarAlwaysOn: {
        type: BooleanConstructor;
        default: boolean;
    };
    flexible: BooleanConstructor;
    showOverflowTooltip: PropType<boolean | Partial<Pick<ElTooltipProps, "hideAfter" | "transition" | "showArrow" | "appendTo" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter">> | undefined>;
};
export type WetSchemaTableProps = ExtractPropTypes<typeof wetSchemaTableProps>;
export type WetSchemaTableInstance = {
    scrollToIndex: (index: number) => void;
};
export type WetProTableColumns = Omit<WetBaseColumns, 'columns'> & {
    required?: boolean;
    columns?: WetProTableColumns[];
    valueType?: WetValueType;
    formItemProps?: WetSchemaItemType;
    fieldProps?: Record<string, any>;
    search?: boolean;
    hideInSearch?: boolean;
    hideInTable?: boolean;
};
export type WetProTableRequest = <T>(fromValue: T, pagination: {
    pageSize: number;
    currentPage: number;
}, sort?: any, filter?: any) => Promise<WetProTableRequstRes>;
export declare const WetProTableProps: {
    title: StringConstructor;
    request: PropType<WetProTableRequest>;
    search: {
        type: PropType<boolean | Partial<Omit<WetSchemaProps, "labelWidth"> & {
            collapsed?: boolean | undefined;
            labelWidth?: number | undefined;
        }>>;
        default: boolean;
    };
    columns: {
        type: PropType<WetProTableColumns[]>;
        default(): never[];
    };
    pagination: {
        type: PropType<boolean | (Partial<PaginationProps> & {
            position?: "center" | "right" | "left" | undefined;
        })>;
        default(): boolean;
    };
    showMoreTools: {
        type: BooleanConstructor;
        default: boolean;
    };
    cardBordered: BooleanConstructor;
    emptyFormat: {
        type: StringConstructor;
        default: string;
    };
    rowKey: {
        type: PropType<string | string[]>;
    };
    fill: BooleanConstructor;
    showIndex: {
        type: BooleanConstructor;
        default: boolean;
    };
    ellipsisProps: {
        type: PropType<Partial<ElTooltipProps>>;
        default(): {
            effect: string;
            placement: string;
        };
    };
    selections: {
        type: PropType<any[]>;
        default(): never[];
    };
    rowSelection: {
        type: PropType<WetRowSelection>;
    };
    expandable: {
        type: PropType<WetTableExpandable>;
    };
    mergeDataIndexs: {
        type: PropType<(string | string[])[]>;
    };
    data: {
        type: PropType<any[]>;
        default: () => never[];
    };
    size: {
        readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    width: (StringConstructor | NumberConstructor)[];
    height: (StringConstructor | NumberConstructor)[];
    maxHeight: (StringConstructor | NumberConstructor)[];
    fit: {
        type: BooleanConstructor;
        default: boolean;
    };
    stripe: BooleanConstructor;
    border: BooleanConstructor;
    showHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    showSummary: BooleanConstructor;
    sumText: StringConstructor;
    summaryMethod: PropType<import("element-plus/es/components/table/src/table/defaults").SummaryMethod<any> | undefined>;
    rowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
    rowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
    cellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
    cellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
    headerRowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
    headerRowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
    headerCellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
    headerCellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
    highlightCurrentRow: BooleanConstructor;
    currentRowKey: (StringConstructor | NumberConstructor)[];
    emptyText: StringConstructor;
    expandRowKeys: PropType<any[] | undefined>;
    defaultExpandAll: BooleanConstructor;
    defaultSort: PropType<import("element-plus/es/components/table/src/table/defaults").Sort | undefined>;
    tooltipEffect: StringConstructor;
    tooltipOptions: PropType<Partial<Pick<ElTooltipProps, "hideAfter" | "transition" | "showArrow" | "appendTo" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter">> | undefined>;
    spanMethod: PropType<((data: {
        row: any;
        rowIndex: number;
        column: TableColumnCtx<any>;
        columnIndex: number;
    }) => number[] | {
        rowspan: number;
        colspan: number;
    } | undefined) | undefined>;
    selectOnIndeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    indent: {
        type: NumberConstructor;
        default: number;
    };
    treeProps: {
        type: PropType<{
            hasChildren?: string | undefined;
            children?: string | undefined;
        } | undefined>;
        default: () => {
            hasChildren: string;
            children: string;
        };
    };
    lazy: BooleanConstructor;
    load: PropType<((row: any, treeNode: import("element-plus/es/components/table/src/table/defaults").TreeNode, resolve: (data: any[]) => void) => void) | undefined>;
    style: {
        type: PropType<import("vue").CSSProperties>;
        default: () => {};
    };
    className: {
        type: StringConstructor;
        default: string;
    };
    tableLayout: {
        type: PropType<"auto" | "fixed">;
        default: string;
    };
    scrollbarAlwaysOn: {
        type: BooleanConstructor;
        default: boolean;
    };
    flexible: BooleanConstructor;
    showOverflowTooltip: PropType<boolean | Partial<Pick<ElTooltipProps, "hideAfter" | "transition" | "showArrow" | "appendTo" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter">> | undefined>;
};
export type WetProTablePropsType = ExtractPropTypes<typeof WetProTableProps>;
