import { DefineComponent, ISchema, ISchemaFieldProps, SchemaKey, VueComponent } from "@formily/vue";
import { Form as FormilyForm, IFormProps } from "@formily/core";
import { Options, Result, Service } from "../useRequest/src/types";
import { type PropType, type Ref } from "vue";
import { ArrayTable, ITable } from "vue-admin-core/es/formily";
import defaultProps from "element-plus/es/components/table/src/table/defaults";
/**
 * useFormilyTable Hook 的签名
 */
declare type useFormilyTable = <TData, TParams extends any[]>(request: Service<TData, TParams> | Result<TData, TParams>, options?: Options<TData, TParams> & {
    formProps?: IFormProps<object>;
}, definitions?: Record<string, ISchema>, SchemaField?: DefineComponent<ISchemaFieldProps>) => {
    form: Ref<FormilyForm>;
    Table: DefineComponent<PropType<typeof ArrayTable>>;
    request: Result<TData, TParams>;
    table: ITable;
};
export type UseFormilyTableSchema = Record<SchemaKey, {
    "x-table-header": boolean;
    "x-column-props": typeof defaultProps;
} & ISchema>;
export declare const transformTableSchema: (schemas: UseFormilyTableSchema) => Record<string, import("@formily/vue").Stringify<{
    [key: symbol]: any;
    [key: `x-${string}`]: any;
    [key: `x-${number}`]: any;
    version?: string | undefined;
    name?: SchemaKey | undefined;
    title?: any;
    description?: any;
    default?: any;
    readOnly?: boolean | undefined;
    writeOnly?: boolean | undefined;
    type?: import("@formily/vue").SchemaTypes | undefined;
    enum?: import("@formily/vue").SchemaEnum<any> | undefined;
    const?: any;
    multipleOf?: number | undefined;
    maximum?: number | undefined;
    exclusiveMaximum?: number | undefined;
    minimum?: number | undefined;
    exclusiveMinimum?: number | undefined;
    maxLength?: number | undefined;
    minLength?: number | undefined;
    pattern?: string | RegExp | undefined;
    maxItems?: number | undefined;
    minItems?: number | undefined;
    uniqueItems?: boolean | undefined;
    maxProperties?: number | undefined;
    minProperties?: number | undefined;
    required?: string | boolean | string[] | undefined;
    format?: string | undefined;
    $ref?: string | undefined;
    $namespace?: string | undefined;
    definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
    properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
    items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
    additionalItems?: import("@formily/vue").Stringify<any> | undefined;
    patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
    additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
    "x-value"?: any;
    "x-index"?: number | undefined;
    "x-pattern"?: any;
    "x-display"?: any;
    "x-validator"?: any;
    "x-decorator"?: any;
    "x-decorator-props"?: any;
    "x-component"?: any;
    "x-component-props"?: any;
    "x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
    "x-content"?: any;
    "x-data"?: any;
    "x-visible"?: boolean | undefined;
    "x-hidden"?: boolean | undefined;
    "x-disabled"?: boolean | undefined;
    "x-editable"?: boolean | undefined;
    "x-read-only"?: boolean | undefined;
    "x-read-pretty"?: boolean | undefined;
    "x-compile-omitted"?: string[] | undefined;
}>>;
export declare const useFormilyTable: <TData, TParams extends any[]>(request: Service<TData, TParams> | Result<TData, TParams>, options?: (Options<TData, TParams> & {
    formProps?: IFormProps<object> | undefined;
}) | undefined, SchemaField?: DefineComponent<ISchemaFieldProps>) => {
    form: Ref<FormilyForm<any>>;
    Table: import("vue").DefineComponent<{
        schema: {
            type: PropType<UseFormilyTableSchema>;
            required: true;
        };
        components: {
            type: PropType<Record<string, VueComponent>>;
        };
        scope: {
            type: ObjectConstructor;
        };
        name: {
            type: PropType<SchemaKey>;
        };
        definitions: {
            type: PropType<Record<string, import("@formily/vue").Stringify<{
                [key: symbol]: any;
                [key: `x-${string}`]: any;
                [key: `x-${number}`]: any;
                version?: string | undefined;
                name?: SchemaKey | undefined;
                title?: any;
                description?: any;
                default?: any;
                readOnly?: boolean | undefined;
                writeOnly?: boolean | undefined;
                type?: import("@formily/vue").SchemaTypes | undefined;
                enum?: import("@formily/vue").SchemaEnum<any> | undefined;
                const?: any;
                multipleOf?: number | undefined;
                maximum?: number | undefined;
                exclusiveMaximum?: number | undefined;
                minimum?: number | undefined;
                exclusiveMinimum?: number | undefined;
                maxLength?: number | undefined;
                minLength?: number | undefined;
                pattern?: string | RegExp | undefined;
                maxItems?: number | undefined;
                minItems?: number | undefined;
                uniqueItems?: boolean | undefined;
                maxProperties?: number | undefined;
                minProperties?: number | undefined;
                required?: string | boolean | string[] | undefined;
                format?: string | undefined;
                $ref?: string | undefined;
                $namespace?: string | undefined;
                definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
                additionalItems?: import("@formily/vue").Stringify<any> | undefined;
                patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
                "x-value"?: any;
                "x-index"?: number | undefined;
                "x-pattern"?: any;
                "x-display"?: any;
                "x-validator"?: any;
                "x-decorator"?: any;
                "x-decorator-props"?: any;
                "x-component"?: any;
                "x-component-props"?: any;
                "x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
                "x-content"?: any;
                "x-data"?: any;
                "x-visible"?: boolean | undefined;
                "x-hidden"?: boolean | undefined;
                "x-disabled"?: boolean | undefined;
                "x-editable"?: boolean | undefined;
                "x-read-only"?: boolean | undefined;
                "x-read-pretty"?: boolean | undefined;
                "x-compile-omitted"?: string[] | undefined;
            }>>>;
        };
        data: {
            type: PropType<any[]>;
            default: () => never[];
        };
        size: {
            readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "large" | "default", never>>;
            readonly required: false;
            readonly validator: ((val: unknown) => boolean) | undefined;
            __epPropKey: true;
        };
        width: (NumberConstructor | StringConstructor)[];
        height: (NumberConstructor | StringConstructor)[];
        maxHeight: (NumberConstructor | StringConstructor)[];
        fit: {
            type: BooleanConstructor;
            default: boolean;
        };
        stripe: BooleanConstructor;
        border: BooleanConstructor;
        rowKey: PropType<string | ((row: any) => string) | undefined>;
        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: (NumberConstructor | StringConstructor)[];
        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<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
        spanMethod: PropType<((data: {
            row: any;
            rowIndex: number;
            column: import("element-plus/es/components/table/src/table-column/defaults").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<"fixed" | "auto">;
            default: string;
        };
        scrollbarAlwaysOn: {
            type: BooleanConstructor;
            default: boolean;
        };
        flexible: BooleanConstructor;
        showOverflowTooltip: PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
    }, () => any, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
        schema: {
            type: PropType<UseFormilyTableSchema>;
            required: true;
        };
        components: {
            type: PropType<Record<string, VueComponent>>;
        };
        scope: {
            type: ObjectConstructor;
        };
        name: {
            type: PropType<SchemaKey>;
        };
        definitions: {
            type: PropType<Record<string, import("@formily/vue").Stringify<{
                [key: symbol]: any;
                [key: `x-${string}`]: any;
                [key: `x-${number}`]: any;
                version?: string | undefined;
                name?: SchemaKey | undefined;
                title?: any;
                description?: any;
                default?: any;
                readOnly?: boolean | undefined;
                writeOnly?: boolean | undefined;
                type?: import("@formily/vue").SchemaTypes | undefined;
                enum?: import("@formily/vue").SchemaEnum<any> | undefined;
                const?: any;
                multipleOf?: number | undefined;
                maximum?: number | undefined;
                exclusiveMaximum?: number | undefined;
                minimum?: number | undefined;
                exclusiveMinimum?: number | undefined;
                maxLength?: number | undefined;
                minLength?: number | undefined;
                pattern?: string | RegExp | undefined;
                maxItems?: number | undefined;
                minItems?: number | undefined;
                uniqueItems?: boolean | undefined;
                maxProperties?: number | undefined;
                minProperties?: number | undefined;
                required?: string | boolean | string[] | undefined;
                format?: string | undefined;
                $ref?: string | undefined;
                $namespace?: string | undefined;
                definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
                additionalItems?: import("@formily/vue").Stringify<any> | undefined;
                patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
                additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
                "x-value"?: any;
                "x-index"?: number | undefined;
                "x-pattern"?: any;
                "x-display"?: any;
                "x-validator"?: any;
                "x-decorator"?: any;
                "x-decorator-props"?: any;
                "x-component"?: any;
                "x-component-props"?: any;
                "x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
                "x-content"?: any;
                "x-data"?: any;
                "x-visible"?: boolean | undefined;
                "x-hidden"?: boolean | undefined;
                "x-disabled"?: boolean | undefined;
                "x-editable"?: boolean | undefined;
                "x-read-only"?: boolean | undefined;
                "x-read-pretty"?: boolean | undefined;
                "x-compile-omitted"?: string[] | undefined;
            }>>>;
        };
        data: {
            type: PropType<any[]>;
            default: () => never[];
        };
        size: {
            readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "large" | "default", never>>;
            readonly required: false;
            readonly validator: ((val: unknown) => boolean) | undefined;
            __epPropKey: true;
        };
        width: (NumberConstructor | StringConstructor)[];
        height: (NumberConstructor | StringConstructor)[];
        maxHeight: (NumberConstructor | StringConstructor)[];
        fit: {
            type: BooleanConstructor;
            default: boolean;
        };
        stripe: BooleanConstructor;
        border: BooleanConstructor;
        rowKey: PropType<string | ((row: any) => string) | undefined>;
        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: (NumberConstructor | StringConstructor)[];
        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<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
        spanMethod: PropType<((data: {
            row: any;
            rowIndex: number;
            column: import("element-plus/es/components/table/src/table-column/defaults").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<"fixed" | "auto">;
            default: string;
        };
        scrollbarAlwaysOn: {
            type: BooleanConstructor;
            default: boolean;
        };
        flexible: BooleanConstructor;
        showOverflowTooltip: PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
    }>>, {
        style: import("vue").CSSProperties;
        data: any[];
        className: string;
        fit: boolean;
        stripe: boolean;
        border: boolean;
        showHeader: boolean;
        showSummary: boolean;
        highlightCurrentRow: boolean;
        defaultExpandAll: boolean;
        selectOnIndeterminate: boolean;
        indent: number;
        treeProps: {
            hasChildren?: string | undefined;
            children?: string | undefined;
        } | undefined;
        lazy: boolean;
        tableLayout: "fixed" | "auto";
        scrollbarAlwaysOn: boolean;
        flexible: boolean;
    }, {}>;
    request: Result<TData, TParams>;
    table: ITable;
};
export default useFormilyTable;
