import { type ComponentSpec, type DeprecationMetadata } from "./componentSchema"; export interface ComponentSchemaArtifact { schemaVersion: number; authoringContractVersion?: number; diagnosticContractVersion?: number; components: Record; } export type ReleaseType = "patch" | "minor" | "major"; export type SchemaChangeKind = "added" | "changed" | "removed"; export interface SchemaChange { kind: SchemaChangeKind; path: string; message: string; /** * True when the mutation invalidates already-stored authored instances (a removal, a * prop retype, a prop becoming required, dropped child acceptance, or a narrowed * allowlist). Breaking changes are gated on an expired deprecation window + a * structured breakingChange entry, exactly like removals. */ breaking?: boolean; deprecation?: DeprecationMetadata; } export interface PolicyIssue { path: string; message: string; } export type ReleasePolicyClassification = "first-publish" | "no-schema-change" | "schema-change" | "validation-failed" | "blocked-removal"; export interface ReleasePolicyResult { ok: boolean; classification: ReleasePolicyClassification; releaseType?: ReleaseType; changes: SchemaChange[]; blockedRemovals: SchemaChange[]; issues: PolicyIssue[]; } export interface ReleasePolicyOptions { today?: string; } export declare function evaluateReleasePolicy(previous: ComponentSchemaArtifact | null | undefined, current: ComponentSchemaArtifact, options?: ReleasePolicyOptions): ReleasePolicyResult; export declare function diffSchemaArtifacts(previous: ComponentSchemaArtifact, current: ComponentSchemaArtifact): SchemaChange[]; export declare function validateComponentSchemaArtifact(artifact: unknown, path?: string): PolicyIssue[]; export declare function validateDeprecationMetadata(metadata: unknown, path?: string): PolicyIssue[]; //# sourceMappingURL=releasePolicy.d.ts.map