import type { Validation } from '@vuelidate/core'; type ValidationRulesetBase = { [Key in keyof T]?: (T[Key] extends Array ? ValidationRulesetBase : T[Key] extends object ? ValidationRulesetBase : IValidationSet) | IValidationSet; }; interface ValidationRulesetExtension { _validationDeclaration?: IValidationSet; } export interface IValidation extends Validation { } export interface ValidationState { valid: boolean; mandatory: boolean; errorMessage: string; validationDeclaration: IValidation; } export interface IValidationSet { _validationSet: boolean; } export type ValidationRuleset = ValidationRulesetBase | ValidationRulesetExtension;