import { InjectionKey } from 'vue'; import { RuleItem, ValidateError, ValidateFieldsError } from 'async-validator'; export interface FormItemProps { label?: string; prop?: string; } export interface FormItemRule extends RuleItem { trigger?: string; } export type FormRules = Record; export interface FormProps { model: Record; rules?: FormRules; } export interface FormContext extends FormProps { addField: (field: FormItemContext) => void; removeField: (field: FormItemContext) => void; } export interface ValidateStatusProp { state: 'init' | 'success' | 'error'; errorMsg: string; loading: boolean; } export interface FormItemContext { prop: string; validate: (trigger?: string) => Promise; resetField(): void; clearValidate(): void; } export interface FormValidateFailure { errors: ValidateError[] | null; fields: ValidateFieldsError; } export interface FormInstance { validate: () => Promise; resetFields: (props?: string[]) => void; clearValidate: (props?: string[]) => void; } export interface FormItemInstance { validateStatus: ValidateStatusProp; validate: (trigger?: string) => Promise; resetField(): void; clearValidate(): void; } export declare const formContextKey: InjectionKey; export declare const formItemContextKey: InjectionKey;