import type { EventV3 } from "./contract.js"; export declare const EVENT_V3_GENESIS_MANIFEST: ".harnery/ledgers/v3/genesis.json"; export declare const EVENT_V3_ACTIVATION_MANIFEST: ".harnery/ledgers/v3/activation.json"; type GenesisEventV3 = Extract; type ActivationEventV3 = Extract; export interface CandidateProfileV3 { initial_schema_digest: `sha256:${string}`; contract_source_digest: `sha256:${string}`; harnery_commit: string; host_repository_commit: string; producer_build_ids: string[]; adapter_capability_profile_digests: string[]; config_digest: `sha256:${string}`; canonicalizer_version: "harnery-jcs-nfc-v1"; fingerprint_version: string; privacy_key_epoch: `pep_${string}`; candidate_created_at: string; } export interface CandidateGenesisManifestV3 { manifest_version: 1; kind: "candidate_genesis"; profile: CandidateProfileV3; event: GenesisEventV3; } export interface ActivationManifestV3 { manifest_version: 1; kind: "activation"; activation_id: `act_${string}`; genesis_id: `gex_${string}`; candidate_manifest_digest: `sha256:${string}`; approval_record_id: string; activation_approved_at: string; event: ActivationEventV3; } export interface ControlProducerV3 { producer_id: `prd_${string}`; boot_id: `boot_${string}`; sequence: number; build_id: `build_${string}`; platform: "linux" | "windows" | "macos" | "unknown"; bridge?: "codex-wsl"; } export interface BuildCandidateGenesisManifestV3Input { profile: CandidateProfileV3; root_id: `root_${string}`; instance_id: `inst_${string}`; producer: ControlProducerV3; genesis_id?: `gex_${string}`; event_id?: `evt_${string}`; } export interface BuildActivationManifestV3Input { candidate: CandidateGenesisManifestV3; approval_record_id: string; activation_approved_at: string; producer: ControlProducerV3; activation_id?: `act_${string}`; event_id?: `evt_${string}`; } export type ControlManifestValidationV3 = { ok: true; value: T; } | { ok: false; reason: string; }; export type EventV3ControlState = { state: "closed"; reason: "no_candidate"; } | { state: "repairable"; reason: "genesis_event_missing" | "activation_event_missing"; genesis: CandidateGenesisManifestV3; activation?: ActivationManifestV3; } | { state: "candidate"; genesis: CandidateGenesisManifestV3; candidate_manifest_digest: `sha256:${string}`; } | { state: "active"; genesis: CandidateGenesisManifestV3; activation: ActivationManifestV3; candidate_manifest_digest: `sha256:${string}`; } | { state: "invalid"; reason: string; }; export type EventV3WriteMode = "candidate" | "active"; /** Build a complete immutable candidate packet without writing it or opening a gate. */ export declare function buildCandidateGenesisManifestV3(input: BuildCandidateGenesisManifestV3Input): CandidateGenesisManifestV3; /** Build an approval-bound activation packet without writing it or opening a gate. */ export declare function buildActivationManifestV3(input: BuildActivationManifestV3Input): ActivationManifestV3; /** Validate an in-memory candidate with the same strict rules as the live gate. */ export declare function validateCandidateGenesisManifestV3(value: unknown): ControlManifestValidationV3; /** Validate an in-memory activation against one exact candidate packet. */ export declare function validateActivationManifestV3(value: unknown, candidate: CandidateGenesisManifestV3): ControlManifestValidationV3; /** * Resolve the session/evidence gate from exact control-file and ledger-event pairs. * This function never repairs or creates state. Any ambiguity keeps the gate closed. */ /** * The live epoch's genesis id from the immutable manifest, or undefined when * no valid genesis is published. This is the cheap epoch-identity read the * writer fence uses: one small canonical file, never the event history. */ export declare function liveGenesisIdV3(coordRoot: string): `gex_${string}` | undefined; /** Same read for a caller that already holds the manifest path (the writer's drain). */ export declare function genesisIdFromManifestV3(genesisPath: string): `gex_${string}` | undefined; export declare function readEventV3ControlState(coordRoot: string): EventV3ControlState; export declare function eventV3WriteGateOpen(coordRoot: string, mode: EventV3WriteMode): boolean; export declare function candidateProfileDigestV3(profile: CandidateProfileV3): `sha256:${string}`; export declare function candidateManifestDigestV3(manifest: CandidateGenesisManifestV3): `sha256:${string}`; export {}; //# sourceMappingURL=control.d.ts.map