import type { ComponentInternalInstance, InjectionKey, PropType, Raw, Ref } from 'vue'; import type { ValidationProps } from './validation.js'; import type { EventProp } from '../util/index.js'; export interface FormProvide { register: (item: { id: number | string; vm: ComponentInternalInstance; validate: () => Promise; reset: () => Promise; resetValidation: () => Promise; }) => void; unregister: (id: number | string) => void; update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void; items: Ref; isDisabled: Readonly>; isReadonly: Readonly>; isValidating: Ref; isValid: Ref; validateOn: Ref; } export interface FormField { id: number | string; validate: () => Promise; reset: () => Promise; resetValidation: () => Promise; vm: Raw; isValid: boolean | null; errorMessages: string[]; } export interface FieldValidationResult { id: number | string; errorMessages: string[]; } export interface FormValidationResult { valid: boolean; errors: FieldValidationResult[]; } export interface SubmitEventPromise extends SubmitEvent, Promise { } export declare const FormKey: InjectionKey; export interface FormProps { disabled: boolean; fastFail: boolean; readonly: boolean; modelValue: boolean | null; 'onUpdate:modelValue': EventProp<[boolean | null]> | undefined; validateOn: ValidationProps['validateOn']; } export declare const makeFormProps: (defaults?: Defaults | undefined) => { disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]; }; fastFail: unknown extends Defaults["fastFail"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["fastFail"] ? boolean : boolean | Defaults["fastFail"]; }; readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"]; }; modelValue: unknown extends Defaults["modelValue"] ? { type: PropType; default: null; } : Omit<{ type: PropType; default: null; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["modelValue"] ? boolean | null : Defaults["modelValue"] | NonNullable; }; validateOn: unknown extends Defaults["validateOn"] ? { type: PropType; default: string; } : Omit<{ type: PropType; default: string; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["validateOn"] ? ("blur eager" | "blur lazy" | "eager" | "eager blur" | "eager input" | "eager invalid-input" | "eager submit" | "input eager" | "input lazy" | "invalid-input eager" | "invalid-input lazy" | "lazy" | "lazy blur" | "lazy input" | "lazy invalid-input" | "lazy submit" | "submit eager" | "submit lazy" | ("blur" | "input" | "invalid-input" | "submit")) | undefined : Defaults["validateOn"] | NonNullable<("blur eager" | "blur lazy" | "eager" | "eager blur" | "eager input" | "eager invalid-input" | "eager submit" | "input eager" | "input lazy" | "invalid-input eager" | "invalid-input lazy" | "lazy" | "lazy blur" | "lazy input" | "lazy invalid-input" | "lazy submit" | "submit eager" | "submit lazy" | ("blur" | "input" | "invalid-input" | "submit")) | undefined>; }; }; export declare function createForm(props: FormProps): { errors: Ref<{ id: number | string; errorMessages: string[]; }[], FieldValidationResult[] | { id: number | string; errorMessages: string[]; }[]>; isDisabled: Readonly>; isReadonly: Readonly>; isValidating: import("vue").ShallowRef; isValid: Ref & { readonly externalValue: boolean | null; }; items: Ref<{ id: number | string; validate: () => Promise; reset: () => Promise; resetValidation: () => Promise; vm: Raw; isValid: boolean | null; errorMessages: string[]; }[], FormField[] | { id: number | string; validate: () => Promise; reset: () => Promise; resetValidation: () => Promise; vm: Raw; isValid: boolean | null; errorMessages: string[]; }[]>; validate: () => Promise<{ valid: boolean; errors: { id: number | string; errorMessages: string[]; }[]; }>; reset: () => void; resetValidation: () => void; }; export declare function useForm(props?: { readonly: boolean | null; disabled: boolean | null; }): { register?: ((item: { id: number | string; vm: ComponentInternalInstance; validate: () => Promise; reset: () => Promise; resetValidation: () => Promise; }) => void) | undefined; unregister?: ((id: number | string) => void) | undefined; update?: ((id: number | string, isValid: boolean | null, errorMessages: string[]) => void) | undefined; items?: Ref | undefined; isValidating?: Ref | undefined; isValid?: Ref | undefined; validateOn?: Ref<("blur eager" | "blur lazy" | "eager" | "eager blur" | "eager input" | "eager invalid-input" | "eager submit" | "input eager" | "input lazy" | "invalid-input eager" | "invalid-input lazy" | "lazy" | "lazy blur" | "lazy input" | "lazy invalid-input" | "lazy submit" | "submit eager" | "submit lazy" | ("blur" | "input" | "invalid-input" | "submit")) | undefined, ("blur eager" | "blur lazy" | "eager" | "eager blur" | "eager input" | "eager invalid-input" | "eager submit" | "input eager" | "input lazy" | "invalid-input eager" | "invalid-input lazy" | "lazy" | "lazy blur" | "lazy input" | "lazy invalid-input" | "lazy submit" | "submit eager" | "submit lazy" | ("blur" | "input" | "invalid-input" | "submit")) | undefined> | undefined; isReadonly: import("vue").ComputedRef; isDisabled: import("vue").ComputedRef; };