import { Expression, TSType } from '@babel/types'; import { OpenApiSchema } from '../../../schemas/common'; import { DependencyImports } from '../../../utils/dependencies'; export interface ValidationProviderContext { getNamedSchemaReference(name: string): Expression; } export interface ResultWithDependencyImports { result: T; dependencyImports: DependencyImports; } export declare abstract class ValidationProvider { abstract getSchemaType(): ResultWithDependencyImports; abstract generateSchema(schema: OpenApiSchema, context: ValidationProviderContext): ResultWithDependencyImports; abstract generateLazyGetter(expression: Expression): ResultWithDependencyImports; abstract generateAssertCall(validationSchema: Expression, data: Expression): ResultWithDependencyImports; abstract generateSetModelNameCall(validationSchema: Expression, modelName: string): ResultWithDependencyImports; abstract generateOperationResponseSchema(responses: { [statusCode: string]: { [mediaType: string]: Expression | null; }; }): ResultWithDependencyImports; abstract generateMakeExtensibleCallback(): Promise>; abstract generateFormatErrorMessageCallback(): Promise>; }