import { ExportSurfaceSnapshot } from "../contract-surface.js"; import { GeneratedManifest } from "../cleanup/generated-file.js"; import { HydrationBoundarySnapshot } from "../hydration-seams.js"; import type { CallableVectorSnapshot } from "../ir/vector.js"; export interface TypraMetadataSet { exportSurface: ExportSurfaceSnapshot; manifest: GeneratedManifest; model?: SchemaNode; hydration?: HydrationBoundarySnapshot; vectors?: CallableVectorSnapshot; } export interface TypraVerifyConfig { protectedPaths?: string[]; hydrationZones?: string[]; /** * Operation keys (`Contract.operation` or bare `operation`) the runtime * declares it implements with a vector adapter. Used to enforce @vector * coverage against the current `vectors.json` snapshot. */ vectorAdapters?: string[]; /** Operation keys the runtime declares as tracked waivers; wildcards rejected. */ vectorWaivers?: string[]; } export interface TypraVerifyFailure { code: string; message: string; blocking: boolean; } export interface TypraVerifySummary { exports: { added: number; removed: number; changed: number; }; protocols: { added: number; removed: number; changed: number; }; files: { added: number; deleted: number; ownershipChanged: number; }; packageNamesChanged: number; modules: { added: number; removed: number; changedTargets: number; }; modulesChanged: number; toolchain: { changed: number; unsupported: number; }; protectedPathTouches: number; hydrationZoneTouches: number; staleCleanupCandidates: number; schema: { addedTypes: number; removedTypes: number; addedOptionalProperties: number; addedRequiredProperties: number; removedProperties: number; requirednessChanged: number; propertyTypesChanged: number; wireNamesChanged: number; discriminatorsChanged: number; enumValuesChanged: number; }; vectorCoverage: { operations: number; covered: number; typed: number; waived: number; missing: number; wildcardWaivers: number; }; } export interface TypraVerifyResult { ok: boolean; breakingChange: "patch" | "minor" | "major"; summary: TypraVerifySummary; failures: TypraVerifyFailure[]; schemaEvolution: SchemaEvolutionChange[]; moduleChanges: TargetModuleChange[]; conformanceMap: ConformanceMapEntry[]; staleCleanupDryRun: StaleCleanupCandidate[]; hydrationBoundaries: HydrationBoundaryReport; } export interface SchemaNode { typeName?: { namespace?: string; name?: string; }; base?: { namespace?: string; name?: string; }; isAbstract?: boolean; isProtocol?: boolean; discriminator?: string; childTypes?: SchemaNode[]; properties?: SchemaProperty[]; } export interface TargetModuleChange { target: string; added: string[]; removed: string[]; } export interface SchemaProperty { name?: string; typeName?: { namespace?: string; name?: string; }; isOptional?: boolean; knownAs?: Array<{ provider?: string; name?: string; }>; allowedValues?: string[]; enumName?: string | null; isOpenEnum?: boolean; isScalar?: boolean; isCollection?: boolean; isAny?: boolean; isDict?: boolean; type?: SchemaNode; } export interface SchemaEvolutionChange { kind: "type-added" | "type-removed" | "property-added-optional" | "property-added-required" | "property-removed" | "property-requiredness-changed" | "property-type-changed" | "property-wire-name-changed" | "type-discriminator-changed" | "property-enum-values-changed"; path: string; severity: "patch" | "minor" | "major"; message: string; } export interface ConformanceMapEntry { contract: string; protocol: boolean; targets: Array<{ target: string; symbol: string; source: string; packageName?: string; namespace?: string; outputRoot: string; modules: string[]; exported: boolean; }>; } export interface StaleCleanupCandidate { path: string; reasons: string[]; safe: boolean; } export interface HydrationBoundaryReport { protectedPaths: string[]; hydrationZones: string[]; seams: HydrationBoundarySnapshot["seams"]; } export declare function verifyTypraMetadata(options: { baselineRoot: string; currentRoot: string; configPath?: string; }): TypraVerifyResult; export declare function loadTypraMetadata(root: string): TypraMetadataSet; export declare function loadVerifyConfig(configPath: string): TypraVerifyConfig; export declare function compareTypraMetadata(baseline: TypraMetadataSet, current: TypraMetadataSet, config?: TypraVerifyConfig): TypraVerifyResult; export declare function formatVerifySummary(result: TypraVerifyResult): string;