import type { AnySchema, AnySchemaObject, AnyValidateFunction, EvaluatedProperties, EvaluatedItems } from "../types"; import type Ajv from "../core"; import type { InstanceOptions } from "../core"; import { CodeGen, Name, Code, ValueScopeName } from "./codegen"; import { LocalRefs } from "./resolve"; import { JSONType } from "./rules"; export declare type SchemaRefs = { [Ref in string]?: SchemaEnv | AnySchema; }; export interface SchemaCxt { readonly gen: CodeGen; readonly allErrors?: boolean; readonly data: Name; readonly parentData: Name; readonly parentDataProperty: Code | number; readonly dataNames: Name[]; readonly dataPathArr: (Code | number)[]; readonly dataLevel: number; dataTypes: JSONType[]; definedProperties: Set; readonly topSchemaRef: Code; readonly validateName: Name; evaluated?: Name; readonly ValidationError?: Name; readonly schema: AnySchema; readonly schemaEnv: SchemaEnv; readonly rootId: string; baseId: string; readonly schemaPath: Code; readonly errSchemaPath: string; readonly errorPath: Code; readonly propertyName?: Name; readonly compositeRule?: boolean; props?: EvaluatedProperties | Name; items?: EvaluatedItems | Name; jtdDiscriminator?: string; jtdMetadata?: boolean; readonly createErrors?: boolean; readonly opts: InstanceOptions; readonly self: Ajv; } export interface SchemaObjCxt extends SchemaCxt { readonly schema: AnySchemaObject; } interface SchemaEnvArgs { readonly schema: AnySchema; readonly schemaId?: "$id" | "id"; readonly root?: SchemaEnv; readonly baseId?: string; readonly schemaPath?: string; readonly localRefs?: LocalRefs; readonly meta?: boolean; } export declare class SchemaEnv implements SchemaEnvArgs { readonly schema: AnySchema; readonly schemaId?: "$id" | "id"; readonly root: SchemaEnv; baseId: string; schemaPath?: string; localRefs?: LocalRefs; readonly meta?: boolean; readonly $async?: boolean; readonly refs: SchemaRefs; readonly dynamicAnchors: { [Ref in string]?: true; }; validate?: AnyValidateFunction; validateName?: ValueScopeName; serialize?: (data: unknown) => string; serializeName?: ValueScopeName; parse?: (data: string) => unknown; parseName?: ValueScopeName; constructor(env: SchemaEnvArgs); } export declare function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv; export declare function resolveRef(this: Ajv, root: SchemaEnv, baseId: string, ref: string): AnySchema | SchemaEnv | undefined; export declare function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void; export declare function resolveSchema(this: Ajv, root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it ref: string): SchemaEnv | undefined; export {};