import type { ValidationIssue } from '../types'; import type { StructureDefinition } from '../core/structure-definition-types'; import { StructureDefinitionLoader } from '../core/structure-definition-loader'; import { TypeValidator } from './type-validator'; import { ValueSetValidator } from './valueset-validator'; import { ElementRulesValidator } from './element-rules-validator'; import type { ExtensionValidationContext } from './extension-types'; export type { ExtensionDefinition, ExtensionValidationContext } from './extension-types'; export declare class ExtensionValidator { private readonly sdLoader; private readonly typeValidator; private readonly valueSetValidator; private readonly elementRulesValidator; private extensionProfileCache; /** * Cache of sub-extension definitions keyed by parent extension profile URL. * Avoids parsing complex-extension snapshots for every nested instance. */ private subExtensionDefinitionsCache; /** * Remembers whether the loader resolved each extension URL. */ private urlResolvabilityCache; /** * Bounds malformed or cyclic nested-extension input. */ private readonly maxNestedExtensionDepth; constructor(sdLoader: StructureDefinitionLoader, typeValidator: TypeValidator, valueSetValidator: ValueSetValidator, elementRulesValidator: ElementRulesValidator); validateExtensions(resource: any, profileSD: StructureDefinition, context: ExtensionValidationContext): Promise; /** * Check whether an extension URL resolves to a loadable StructureDefinition. * Results are cached per-validator to avoid hitting the SD loader (and * its DB cache / auto-download) for the same URL repeatedly. */ private isExtensionUrlResolvable; /** * Validate a single extension instance. * * The optional `depth` argument guards against runaway recursion on * pathological input (e.g. an extension array that mutates to reference * itself). Each level of nesting increments the counter; once we exceed * `maxNestedExtensionDepth` the method returns early with a dedicated * diagnostic so callers can see why traversal stopped. */ private validateExtensionInstance; } //# sourceMappingURL=extension-validator.d.ts.map