export declare abstract class Schema { abstract toTypeScript(context: TsContext): string; abstract toSchema(): object; abstract validate(value: unknown, context: ValidationContext): void; _validateWithHooks(value: unknown, context: ValidationContext): void; getChildren(): Schema[]; getChildrenDeep(): Schema[]; private childrenDeep; getChildrenLike(type: new (...args: any[]) => T): T[]; getChildrenDeepLike(type: new (...args: any[]) => T): T[]; replaceWith(replacement: Schema): void; } export interface ValidationOptions { beforeVisit?(schema: Schema, value: unknown, context: ValidationContext): unknown; afterVisit?(schema: Schema, value: unknown, context: ValidationContext): unknown; } export declare class ValidationContext { readonly options: ValidationOptions; path: (string | number)[]; errors: string[]; constructor(options: ValidationOptions); copy(): ValidationContext; of(next: string | number): ValidationContext; getPath(): string; addError(error: string): void; addErrorThere(error: string): void; beforeVisit(schema: Schema, value: unknown): void; afterVisit(schema: Schema, value: unknown): void; } export declare class TsContext { private readonly declarations; addDeclaration(declaration: string): void; addNamedDeclaration(name: string, pattern: string): void; addNamedType(name: string, declaration: string): void; getDeclarations(): string[]; private readonly globals; addGlobal(declaration: string): void; getGlobals(): string[]; }