import { type RuntimeRecord } from "../domain/records.js"; import type { EvidenceReference } from "../evidence/store.js"; import type { LiveContactReference } from "../live/contact-journal.js"; import type { LinuxProcessIdentity } from "../runtime/process-identity.js"; import { type CanonicalDispatchIntent, type CapturedDispatchIntent } from "./intent.js"; export type DispatchAdviceState = "prepared" | "contacting" | "completed" | "blocked"; export type AdvisorVerdict = "approve" | "revise" | "veto"; export type DispatchAdvicePayload = Record & { advice_id: string; request_id: string; expected_evidence_id: string; dispatch_intent_sha256: string; canonical_intent: CanonicalDispatchIntent; created_at: string; updated_at: string; contact_reference: LiveContactReference | null; contact_owner_process: LinuxProcessIdentity | null; provider_started_at: string | null; advisor_evidence: EvidenceReference | null; verdict: AdvisorVerdict | null; blocked_reason: string | null; }; export type DispatchAdviceRecord = RuntimeRecord; export interface DispatchAdviceStore { create(intent: CapturedDispatchIntent, at: string): DispatchAdviceRecord; read(adviceId: string): DispatchAdviceRecord; readIfExists(adviceId: string): DispatchAdviceRecord | undefined; transition(options: { record: DispatchAdviceRecord; step: string; toState: DispatchAdviceState; at: string; update: (payload: DispatchAdvicePayload) => DispatchAdvicePayload; }): DispatchAdviceRecord; list(): readonly DispatchAdviceRecord[]; } export declare function adviceIdForIntent(intent: CapturedDispatchIntent): string; export declare function createDispatchAdviceStore(options: { packageRoot: string; stateRoot: string; }): DispatchAdviceStore;