import type Ajv from 'ajv'; import type { JSONSchema, SchemaConflict, NotViolation } from './schema-types'; /** * Check if a JSON schema uses any conditional features that require * re-evaluating the effective schema when the value changes. * * These features include: * - `if`/`then`/`else` (conditional subschemas) * - `dependentRequired` (2020-12) * - `dependentSchemas` (2019-09/2020-12) * - `dependencies` (draft-07) */ export declare function hasConditionalFeatures(schema: JSONSchema | null | undefined): boolean; /** * Evaluate `not` subschema against the current value using AJV. * Returns a NotViolation if the value matches the disallowed schema. */ export declare function evaluateNotViolation(notSchema: JSONSchema, value: unknown, ajv: Ajv | undefined, basePath?: ReadonlyArray): NotViolation | null; /** * Evaluate if/then/else and dependencies overlays for an object schema without * mutating the base definition. Returns a new effective schema plus any merge * conflicts discovered while composing overlays. */ export declare function composeEffectiveObjectSchema(baseDef: JSONSchema, value: unknown, ajv: Ajv | undefined, basePath?: ReadonlyArray): { effective: JSONSchema; conflicts: readonly SchemaConflict[]; }; /** * Returns the overlay schema coming from if/then/else for the given value or * null if no overlay applies or no AJV instance is available. */ export declare function evaluateIfThenElseOverlay(def: JSONSchema, value: unknown, ajv: Ajv | undefined): JSONSchema | null; /** * Tracks which properties have been evaluated by various JSON Schema keywords. * This is used to implement unevaluatedProperties semantics for 2019-09/2020-12. */ export declare function getEvaluatedProperties(schema: JSONSchema, value: Record | undefined, ajv: Ajv | undefined): Set;