import type { TaskRecord } from "./types.js"; export type TerminalKind = "rdone" | "rfail"; /** Immutable secret-scan reference stored in journal + delivered evidence. */ export interface TerminalSecretScanReference { readonly scan_id: string; readonly sha256: string; readonly file_name: string; } export declare const TERMINAL_PAYLOAD_KEYS: readonly ["next_task", "task_id", "terminal_proof"]; export declare const TERMINAL_PROOF_KEYS: readonly ["schema_version", "kind", "evidence", "identity_digest"]; export declare const TERMINAL_COMMON_EVIDENCE_KEYS: readonly ["result_commit_operation_id", "result_identity_digest", "result_commit", "verification_operation_id", "verification_evidence_digest", "verification_outcome", "grade_operation_id", "grade_output_digest", "grade_passed"]; export declare const RDONE_NULL_DELIVERY_KEYS: readonly ["result_commit_operation_id", "result_identity_digest", "result_commit", "verification_operation_id", "verification_evidence_digest", "verification_outcome", "grade_operation_id", "grade_output_digest", "grade_passed", "stop_operation_id", "stop_identity_digest", "delivery"]; export declare const RDONE_DELIVERED_EVIDENCE_KEYS: readonly ["result_commit_operation_id", "result_identity_digest", "result_commit", "verification_operation_id", "verification_evidence_digest", "verification_outcome", "grade_operation_id", "grade_output_digest", "grade_passed", "stop_operation_id", "stop_identity_digest", "delivery"]; export declare const RDONE_DELIVERY_INNER_KEYS: readonly ["delivery_auth_operation_id", "delivery_auth_digest", "secret_scan_operation_id", "secret_scan_reference", "push_operation_id", "push_identity_digest", "pr_operation_id", "pr_identity_digest", "draft_pr_url"]; export declare const SECRET_SCAN_REFERENCE_KEYS: readonly ["scan_id", "sha256", "file_name"]; export declare const RFAIL_EVIDENCE_KEYS: readonly ["result_commit_operation_id", "result_identity_digest", "result_commit", "verification_operation_id", "verification_evidence_digest", "verification_outcome", "grade_operation_id", "grade_output_digest", "grade_passed", "reflection_operation_id", "reflection_output_digest", "stop_operation_id", "stop_identity_digest", "lineage_operation_id", "lineage_digest"]; export interface TerminalCommonEvidence { readonly result_commit_operation_id: string; readonly result_identity_digest: string; readonly result_commit: string; readonly verification_operation_id: string; readonly verification_evidence_digest: string; readonly verification_outcome: string; readonly grade_operation_id: string; readonly grade_output_digest: string; readonly grade_passed: boolean; } export interface RdoneNullDeliveryEvidence extends TerminalCommonEvidence { readonly stop_operation_id: string; readonly stop_identity_digest: string; readonly delivery: null; } export interface RdoneDeliveredEvidence extends TerminalCommonEvidence { readonly stop_operation_id: string; readonly stop_identity_digest: string; readonly delivery: { readonly delivery_auth_operation_id: string; readonly delivery_auth_digest: string; readonly secret_scan_operation_id: string; readonly secret_scan_reference: TerminalSecretScanReference; readonly push_operation_id: string; readonly push_identity_digest: string; readonly pr_operation_id: string; readonly pr_identity_digest: string; readonly draft_pr_url: string; }; } export type RdoneEvidence = RdoneNullDeliveryEvidence | RdoneDeliveredEvidence; export interface RfailEvidence extends TerminalCommonEvidence { readonly reflection_operation_id: string; readonly reflection_output_digest: string; readonly stop_operation_id: string; readonly stop_identity_digest: string; readonly lineage_operation_id: string; readonly lineage_digest: string; } export type TerminalEvidence = RdoneEvidence | RfailEvidence; export interface TerminalProof { readonly schema_version: 2; readonly kind: TerminalKind; readonly evidence: TerminalEvidence; readonly identity_digest: string; } /** * Build exact terminal_proof from independently resolved next task + evidence. * Digest only after evidence is fully resolved (never hash unvalidated row fields). */ export declare function buildTerminalProof(kind: TerminalKind, exactNextTask: TaskRecord, resolvedEvidence: TerminalEvidence): TerminalProof; /** * Parse task_activity terminal record against independently reconstructed next task * and independently resolved evidence. Never trust the row as its own expectation. * Independently derives rdoneOpId/rfailOpId; requires recorded_at. */ export declare function parseTerminalTransitionRecord(record: { readonly operation_id: string; readonly kind: string; readonly payload: Readonly>; readonly recorded_at?: string; }, expected: { readonly kind: TerminalKind; readonly expectedNextTask: TaskRecord; readonly expectedEvidence: TerminalEvidence; }): { readonly next_task: TaskRecord; readonly proof: TerminalProof; readonly recorded_at: string; }; /** Allowed rdone delta from predecessor task. */ export declare function deriveRdoneNextTask(predecessor: TaskRecord, draftPrUrl: string | null, recordedAt: string): TaskRecord; /** Allowed rfail delta from predecessor task. */ export declare function deriveRfailNextTask(predecessor: TaskRecord, nextActivity: "idle" | "blocked", lineageOp: string, lineageDigest: string, recordedAt: string): TaskRecord;