import { ValidationSchemas } from '~/domain'; import { JoiSchema } from '~/infra/joi/helper/joi-types'; export interface IGetSchema { getSchema(rules: ValidationSchemas.Rules): IGetSchema.ResultSchema; } export namespace IGetSchema { export type ResultSchema = Pick< JoiSchema, 'validate' >; export type All = { [K in ValidationSchemas.Type]: IGetSchema; }; export interface Any { setup(model: IGetSchema.All): IGetSchema.All; getJoiSchema(type: T, rules: ValidationSchemas.Rules): ResultSchema; } }