import type { JsonObject, ProjectResourceLinkMigrationEvent, ProjectResourceLinkMigrationManifestRow, ProjectResourceLinkMigrationManifestV1, ProjectResourceLinkMigrationPlanRequest, ProjectResourceLinkMigrationState, ProjectResourceLinkProducerEvidence, ProjectResourceLinkProjectsReferenceProof, Workspace, WorkspaceKind } from "../types/workspace.js"; export type ProjectResourceLinkProducerAttestationPhase = "readback" | "inverse_complete" | "inverse_retained_target"; export interface ProjectResourceLinkProducerAttestation { attestation_id: string; manifest_id: string; phase: ProjectResourceLinkProducerAttestationPhase; evidence_digest: string; verifier: string; verified_at: string; } export interface ProjectResourceLinkProducerProjectSubject { id: string; slug: string; name: string; kind: WorkspaceKind; conversations_channel: string; } export declare function projectResourceLinkProducerProjectSubject(project: Pick): ProjectResourceLinkProducerProjectSubject; export interface ProjectResourceLinkProducerVerificationInput { manifest: ProjectResourceLinkMigrationManifestV1; trusted_project: ProjectResourceLinkProducerProjectSubject; phase: ProjectResourceLinkProducerAttestationPhase; producer_evidence: ProjectResourceLinkProducerEvidence[]; transition_evidence: JsonObject; response_byte_limit: number; time_budget_ms: number; } /** * Trusted, out-of-band producer verifier. Implementations must look up the * named producer receipts and perform exact target readback; request JSON must * never supply or select this function. Its returned attestation is validated * here and persisted in the immutable migration transition event. */ export type ProjectResourceLinkProducerEvidenceVerifier = (input: ProjectResourceLinkProducerVerificationInput) => ProjectResourceLinkProducerAttestation; export type AsyncProjectResourceLinkProducerEvidenceVerifier = (input: ProjectResourceLinkProducerVerificationInput) => ProjectResourceLinkProducerAttestation | Promise; export declare function projectResourceLinkProducerEvidenceDigest(manifest: ProjectResourceLinkMigrationManifestV1, phase: ProjectResourceLinkProducerAttestationPhase, producerEvidence: ProjectResourceLinkProducerEvidence[]): string; export declare function projectResourceLinkProducerAttestationId(manifestId: string, phase: ProjectResourceLinkProducerAttestationPhase, evidenceDigest: string): string; export declare function assertProjectResourceLinkProducerAttestation(manifest: ProjectResourceLinkMigrationManifestV1, phase: ProjectResourceLinkProducerAttestationPhase, producerEvidence: ProjectResourceLinkProducerEvidence[], attestation: ProjectResourceLinkProducerAttestation | undefined): ProjectResourceLinkProducerAttestation; export declare function migrationEvidenceWithProducerAttestation(evidence: JsonObject, attestation: ProjectResourceLinkProducerAttestation): JsonObject; export declare function reconcileProjectResourceLinkProducerProof(manifest: ProjectResourceLinkMigrationManifestV1, evidence: ProjectResourceLinkProducerEvidence[] | undefined, phase: "forward" | "readback" | "inverse", terminalOutcome?: "complete" | "retained_target"): ProjectResourceLinkProducerEvidence[]; export declare function projectResourceLinkMigrationManifestId(projectId: string, operationId: string, stepId: string, desiredCollectionDigest: string): string; export declare function projectResourceLinkMigrationEventId(manifestId: string, transitionVersion: number, toState: ProjectResourceLinkMigrationState): string; export declare function buildProjectResourceLinkMigrationPlan(input: ProjectResourceLinkMigrationPlanRequest, createdAt: string): ProjectResourceLinkMigrationManifestV1; export declare function assertProjectResourceLinkMigrationTransition(from: ProjectResourceLinkMigrationState, to: ProjectResourceLinkMigrationState): void; export declare function applyProjectResourceLinkMigrationTransition(manifest: ProjectResourceLinkMigrationManifestV1, toState: ProjectResourceLinkMigrationState, updatedAt: string, updates?: { producer_evidence?: ProjectResourceLinkProducerEvidence[]; projects_forward_receipt_id?: string | null; projects_inverse_receipt_id?: string | null; projects_reference_proof?: ProjectResourceLinkProjectsReferenceProof | null; last_verified_projects_revision?: string | null; last_verified_projects_digest?: string | null; }): ProjectResourceLinkMigrationManifestV1; export declare function rowToProjectResourceLinkMigrationManifest(row: ProjectResourceLinkMigrationManifestRow): ProjectResourceLinkMigrationManifestV1; export declare function migrationEvent(manifestId: string, transitionVersion: number, fromState: ProjectResourceLinkMigrationState | null, toState: ProjectResourceLinkMigrationState, requestDigest: string, preconditionDigest: string, evidence: JsonObject, createdAt: string): ProjectResourceLinkMigrationEvent; //# sourceMappingURL=project-resource-link-migrations.d.ts.map