import { FieldValidator, ValidationError, ValidationPhase } from './FieldValidator'; import { Component, Ref } from 'vue'; export type FormValidationError = ValidationError & { name?: string; }; export type FormValidationRule = (phase?: ValidationPhase) => Promise; export type FormValidatorOption = { element?: Ref; rules?: FormValidationRule[]; }; export type FormValidator = { /** * Form 안의 모든 FieldValidator 에 대해서 validation 을 수행하고, 그 결과를 리턴한다. */ validationResult: () => Promise; /** * Form 안의 모든 FieldValidator 에 대해서 validation 을 수행한다. */ validate: () => Promise; /** * Form 안의 FieldValidator 를 모두 가져온다. */ getFieldValidators: () => FieldValidator[]; /** * name 속성으로 FieldValidator 를 가져온다. * @param name */ getFieldValidator: (name: string) => FieldValidator | undefined; /** * validation result 를 모두 제거하고, validation 을 수행하지 않은 상태로 돌아간다. */ clear: () => void; }; export declare class ValidationFailedError { errors: FormValidationError[]; constructor(errors: FormValidationError[]); } export declare const isValidationFailedError: (err: unknown) => err is ValidationFailedError; export declare const formValidator: (option: FormValidatorOption) => FormValidator;