import { type PropType, type SlotsType } from 'vue'; import { type ElFormItemSlots, type FormItemExpose, type FormItemProps, type FormItemWidth } from '../form'; export type FormListRow = Record; export interface FormListColumn { label?: string; width?: FormItemWidth; required?: boolean; } export declare const formListProps: { defaultValue: { type: ObjectConstructor; }; min: { type: NumberConstructor; }; max: { type: NumberConstructor; }; modelValue: { type: PropType; default: () => never[]; }; addText: { type: StringConstructor; default: string; }; columns: { type: PropType; }; draggable: { type: BooleanConstructor; }; fieldType: { type: PropType; default: "input"; }; fieldProps: { type: PropType; }; fieldSlots: { type: PropType; }; fieldRef: { type: PropType<(el: any) => void>; }; width: { type: PropType; }; placeholder: { type: StringConstructor; }; disabled: { type: BooleanConstructor; default: boolean; }; readonly: { type: BooleanConstructor; default: boolean; }; colProps: { type: PropType; }; internalIndex: { type: NumberConstructor; }; tooltip: { type: PropType; }; extra: { type: PropType; }; label: StringConstructor; labelWidth: import("element-plus/es/utils/index.mjs").EpPropFinalized; labelPosition: import("element-plus/es/utils/index.mjs").EpPropFinalized; prop: { readonly type: import("vue").PropType string | string[]) | (() => import("element-plus").FormItemProp) | ((new (...args: any[]) => string | string[]) | (() => import("element-plus").FormItemProp))[], unknown, unknown>>; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; required: import("element-plus/es/utils/index.mjs").EpPropFinalized; rules: { readonly type: import("vue").PropType import("element-plus").FormItemRule | import("element-plus").FormItemRule[]) | (() => import("element-plus/es/utils/typescript.mjs").Arrayable) | ((new (...args: any[]) => import("element-plus").FormItemRule | import("element-plus").FormItemRule[]) | (() => import("element-plus/es/utils/typescript.mjs").Arrayable))[], unknown, unknown>>; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; error: StringConstructor; validateStatus: { readonly type: import("vue").PropType>; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; for: StringConstructor; inlineMessage: import("element-plus/es/utils/index.mjs").EpPropFinalized; showMessage: import("element-plus/es/utils/index.mjs").EpPropFinalized; size: { readonly type: import("vue").PropType>; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; }; export declare const defaultFormListProps: { modelValue: () => never[]; addText: string; fieldRef: () => void; showMessage: boolean; inlineMessage: boolean; required: undefined; }; export interface FormListProps extends Omit, 'modelValue'> { defaultValue?: T; modelValue?: T[]; min?: number; max?: number; addText?: string; columns?: FormListColumn[]; draggable?: boolean; } export interface FormListSlots extends Omit { default?: (props: { row: T; index: number; getProp: (...args: (string | number)[]) => string[]; }) => any; custom?: (props: { list: T[]; getProp: (...args: (string | number)[]) => string[]; getKey: (row: T) => string; } & FormListAction) => any; } export declare const formListSlots: SlotsType; export declare const formListEmits: { 'update:modelValue': (value: any[]) => any[]; }; export interface FormListEmits { (e: 'update:modelValue', value: T[]): void; } export interface FormListAction { add: (row?: T, index?: number) => void; remove: (index: number) => void; move: (fromIndex: number, toIndex: number) => void; } export interface FormListExpose extends FormItemExpose, FormListAction { } export declare const formListExposeKeys: string[]; export interface FormListGuards { beforeAdd: (defaultValue: T, index: number, count: number) => Promise | any; beforeRemove: (index: number, count: number) => Promise | boolean; } export interface FormListContext { }