import AggregatedValidator from './AggregatedValidator'; import ExtraArguments from './ExtraArguments'; import ResponseValidationProcessor from './ResponseValidationProcessor'; import SchemaValidationMethods from './SchemaValidationMethods'; import ValidationProcessorChecker from './ValidationProcessorChecker'; import ValidationProcessorFactory from './ValidationProcessorFactory'; type TestValidation = ( validation: string, isValid: ValidationProcessorChecker, response?: ResponseValidationProcessor ) => T; interface BaseBuilderNode { check(validation: string, extraArguments: Partial & T): Node; // eslint-disable-next-line no-use-before-define end(): Main; } interface BuilderMain { build(): SchemaValidationMethods; factory(name: string, extraArguments: any): ValidationProcessorFactory; with(path: string): T; with(path: string, invalidationPaths: Array): T; } export interface BuilderNode extends BaseBuilderNode, BuilderNode> { test: TestValidation; [key: string]: AggregatedValidator | any; } interface Builder extends BuilderMain {} export default Builder;