import { ValidationSchemas } from '~/domain/entities'; import { ValidationEmailBuilder, ValidationNameBuilder, ValidationPhoneBuilder, ValidationUuidBuilder, ValidationPriceBuilder, ValidationDocumentBuilder, } from './custom-cases'; export interface ValidationBuilder { string: ValidationBuilder.Fn<'string'>; number: ValidationBuilder.Fn<'number'>; object: ValidationBuilder.Fn<'object'>; array: ValidationBuilder.Fn<'array'>; readonly custom: ValidationCustomBuilder; } export interface ValidationCustomBuilderGroup { uuid: ValidationUuidBuilder; phone: ValidationPhoneBuilder; name: ValidationNameBuilder; email: ValidationEmailBuilder; price: ValidationPriceBuilder; document: ValidationDocumentBuilder; } export type ValidationCustomBuilder = { [K in keyof ValidationCustomBuilderGroup]: ValidationCustomBuilderGroup[K]['build']; }; export namespace ValidationBuilder { export interface Fn { (rules: ValidationSchemas.Rules): ValidationSchemas; } export interface GetBuilder { load(): ValidationBuilder; } }