export type ReleaseChannel = 'stable' | 'prerelease'; export type ProvenanceObservation = 'passed' | 'failed' | 'unverified'; export type ReleaseVerificationCheckStatus = 'passed' | 'failed'; export interface ReleaseVerificationExpectation { repository: string; packageName: string; mcpName: string; version: string; tag: string; channel: ReleaseChannel; npmDistTag: string; commitSha: string; requiredAssets: string[]; requiredGhcrTags: string[]; } export interface ReleaseAssetObservation { name: string; digest?: string; } export interface ReleaseVerificationObservation { npm: { version?: string; distTags: Record; provenance: ProvenanceObservation; workflowContextProof?: boolean; }; github: { tag?: string; tagCommitSha?: string; isDraft?: boolean; isPrerelease?: boolean; assets: ReleaseAssetObservation[]; }; ghcr: { digest?: string; tags: string[]; revision?: string; }; mcpRegistry: { version?: string; isLatest?: boolean; } | null; } export type ReleaseVerificationCheckId = 'npm-version' | 'npm-dist-tag' | 'npm-provenance' | 'github-tag' | 'github-tag-commit' | 'github-classification' | 'github-assets' | 'ghcr-tags' | 'ghcr-revision' | 'mcp-registry'; export interface ReleaseVerificationCheck { id: ReleaseVerificationCheckId; status: ReleaseVerificationCheckStatus; expected: unknown; actual: unknown; message?: string; } export interface ReleaseVerificationReport { ok: boolean; checks: ReleaseVerificationCheck[]; failures: ReleaseVerificationCheck[]; } export declare function verifyPublishedReleaseObservation(expectation: ReleaseVerificationExpectation, observation: ReleaseVerificationObservation): ReleaseVerificationReport;