import { dialogProps } from 'element-plus';
import { formProps } from '../Form/props';
import { tableProps } from '../Table/props';
import { descriptionsProps } from '../Descriptions/props';
import type { PropType } from 'vue';
import type { ExternalParam } from '../types/index';
import type { IFormProps, IFormColumns, InvalidFields } from '../Form/index';
import type { ITableColumns } from '../Table/index';
import type { IDescriptionsColumns } from '../Descriptions/index';
import type { ICrudColumns, ICrudMenuColumns, ICrudBeforeOpen, ICrudBeforeClose, ICrudDialogType, ICrudSearchProps } from './type';
type FormKeys = Array<keyof typeof formProps>;
type TableKeys = Array<keyof typeof tableProps>;
type DescriptionsKeys = Array<keyof typeof descriptionsProps>;
type DialogKeys = Array<keyof typeof dialogProps>;
export declare const formKeys: FormKeys;
export declare const tableKeys: TableKeys;
export declare const descriptionsKeys: DescriptionsKeys;
export declare const dialogKeys: DialogKeys;
export declare const crudProps: {
    columns: PropType<ICrudColumns>;
    addColumns: PropType<IFormColumns>;
    editColumns: PropType<IFormColumns>;
    formColumns: PropType<IFormColumns>;
    searchColumns: PropType<IFormColumns>;
    tableColumns: PropType<ITableColumns>;
    detailColumns: PropType<IDescriptionsColumns>;
    menu: PropType<boolean | ICrudMenuColumns>;
    search: ObjectConstructor;
    searchProps: PropType<ICrudSearchProps>;
    /**
     * @deprecated The `searchRules` attribute will be removed in the next major version, please use `searchProps` instead
     */
    searchRules: PropType<IFormProps["rules"]>;
    beforeOpen: PropType<ICrudBeforeOpen>;
    beforeClose: PropType<ICrudBeforeClose>;
    top: {
        readonly type: import("vue").PropType<string>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    title: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    center: BooleanConstructor;
    appendToBody: BooleanConstructor;
    appendTo: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | ((new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement))[], unknown, unknown, "body", boolean>;
    destroyOnClose: BooleanConstructor;
    closeOnClickModal: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    closeOnPressEscape: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    lockScroll: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    modal: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    openDelay: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
    closeDelay: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
    modalClass: StringConstructor;
    width: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    zIndex: {
        readonly type: import("vue").PropType<number>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    trapFocus: BooleanConstructor;
    headerAriaLevel: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
    alignCenter: BooleanConstructor;
    closeIcon: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    draggable: BooleanConstructor;
    overflow: BooleanConstructor;
    fullscreen: BooleanConstructor;
    showClose: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    ariaLevel: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
    size: PropType<import("element-plus").ComponentSize>;
    align: PropType<"left" | "center" | "right">;
    column: NumberConstructor;
    direction: PropType<"vertical" | "horizontal">;
    border: BooleanConstructor;
    detail: ObjectConstructor;
    extra: StringConstructor;
    labelAlign: PropType<"left" | "center" | "right">;
    data: {
        type: PropType<import("element-plus/es/components/table/src/table/defaults").DefaultRow[]>;
        default: () => never[];
    };
    small: BooleanConstructor;
    disabled: BooleanConstructor;
    popperClass: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    teleported: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    style: {
        type: PropType<import("vue").CSSProperties>;
        default: () => {};
    };
    load: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["load"]>;
    rowStyle: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["rowStyle"]>;
    lazy: BooleanConstructor;
    emptyText: StringConstructor;
    defaultExpandAll: BooleanConstructor;
    indent: {
        type: NumberConstructor;
        default: number;
    };
    maxHeight: (StringConstructor | NumberConstructor)[];
    rowKey: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["rowKey"]>;
    summaryMethod: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["summaryMethod"]>;
    rowClassName: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["rowClassName"]>;
    cellClassName: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["cellClassName"]>;
    cellStyle: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["cellStyle"]>;
    headerRowClassName: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["headerRowClassName"]>;
    headerRowStyle: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["headerRowStyle"]>;
    headerCellClassName: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["headerCellClassName"]>;
    headerCellStyle: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["headerCellStyle"]>;
    expandRowKeys: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["expandRowKeys"]>;
    defaultSort: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["defaultSort"]>;
    spanMethod: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["spanMethod"]>;
    treeProps: {
        type: PropType<import("element-plus").TableProps<import("element-plus/es/components/table/src/table/defaults").DefaultRow>["treeProps"]>;
        default: () => {
            hasChildren: string;
            children: string;
        };
    };
    prevIcon: {
        type: PropType<string | import("vue").Component>;
        default: undefined;
    };
    nextIcon: {
        type: PropType<string | import("vue").Component>;
        default: undefined;
    };
    selection: {
        type: PropType<boolean | import("../Table/type").ITableSelectionColumns>;
        default: boolean;
    };
    expand: {
        type: PropType<boolean | import("../Table/type").ITableExpandColumns>;
        default: undefined;
    };
    index: {
        type: PropType<boolean | import("../Table/type").ITableIndexColumns>;
        default: boolean;
    };
    height: (StringConstructor | NumberConstructor)[];
    fit: {
        type: BooleanConstructor;
        default: boolean;
    };
    stripe: BooleanConstructor;
    showHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    showSummary: BooleanConstructor;
    sumText: StringConstructor;
    highlightCurrentRow: BooleanConstructor;
    currentRowKey: (StringConstructor | NumberConstructor)[];
    tooltipEffect: StringConstructor;
    selectOnIndeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    className: {
        type: StringConstructor;
        default: string;
    };
    tableLayout: {
        type: PropType<"fixed" | "auto">;
        default: string;
    };
    scrollbarAlwaysOn: BooleanConstructor;
    flexible: BooleanConstructor;
    showOverflowTooltip: BooleanConstructor;
    headerAlign: PropType<"left" | "center" | "right">;
    pageSize: NumberConstructor;
    defaultPageSize: NumberConstructor;
    total: NumberConstructor;
    pageCount: NumberConstructor;
    pagerCount: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 7, boolean>;
    currentPage: NumberConstructor;
    defaultCurrentPage: NumberConstructor;
    layout: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, string, boolean>;
    pageSizes: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => number[]) | (() => number[]) | ((new (...args: any[]) => number[]) | (() => number[]))[], unknown, unknown, () => [10, 20, 30, 40, 50, 100], boolean>;
    prevText: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    nextText: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    background: BooleanConstructor;
    hideOnSinglePage: BooleanConstructor;
    appendSizeTo: StringConstructor;
    max: NumberConstructor;
    modelValue: (ObjectConstructor | ArrayConstructor)[];
    gutter: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
    justify: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "center" | "space-around" | "space-between" | "space-evenly" | "end" | "start", unknown, "start", boolean>;
    labelWidth: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
    labelPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "top" | "left" | "right", unknown, "right", boolean>;
    rules: {
        readonly type: import("vue").PropType<Partial<Record<string, import("element-plus/es/utils").Arrayable<import("element-plus").FormItemRule>>>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    inlineMessage: BooleanConstructor;
    showMessage: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    requireAsteriskPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right", unknown, "left", boolean>;
    labelSuffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    inline: BooleanConstructor;
    statusIcon: BooleanConstructor;
    validateOnRuleChange: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    hideRequiredAsterisk: BooleanConstructor;
    scrollToError: BooleanConstructor;
    scrollIntoViewOptions: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<readonly [ObjectConstructor, BooleanConstructor], unknown, unknown>>;
        readonly required: false;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    prefix: {
        type: StringConstructor;
        default: string;
    };
    indexes: {
        type: PropType<number[]>;
        default: undefined;
    };
    array: BooleanConstructor;
};
export declare const crudEmits: {
    submit: (close: () => void, done: () => void, type: ICrudDialogType, isValid: boolean, invalidFields?: InvalidFields) => boolean;
    search: (done: () => void, isValid: boolean, invalidFields?: InvalidFields) => boolean;
    searchReset: () => boolean;
    add: () => boolean;
    edit: (row: ExternalParam) => row is object;
    detail: (row: ExternalParam) => row is object;
    delete: (row: ExternalParam) => row is object;
    'update:search': (value: ExternalParam) => value is object;
    'update:currentPage': (current: number) => boolean;
    'update:pageSize': (size: number) => boolean;
    load: () => boolean;
    'update:modelValue': (value: ExternalParam) => value is object | any[] | undefined;
    reset: () => boolean;
    'step-change': (active: import("element-plus").TabPaneName) => active is string | number;
    'collapse-change': (active: import("element-plus").CollapseModelValue) => active is import("element-plus").CollapseActiveName[];
    'tab-change': (name: import("element-plus").TabPaneName) => name is string | number;
    'add-item': (indexes: number[]) => boolean;
    'remove-item': (indexes: number[]) => boolean;
};
export {};
