/**
 * Shadow phase-event ledger for the phase-aware runtime.
 *
 * Slice 1 records events only. No gate or nudge reads these events yet, so this
 * module must stay append-only and behavior-neutral.
 */
import type { TaskExecutionState } from './protocol/types.js';
import type { PhaseEvent, PhaseEventKind, TurnPhase } from './protocol/task-permission-types.js';
export interface RecordPhaseEventArgs {
    iter: number;
    kind: PhaseEventKind;
    tool?: string;
    detail?: string;
    evidenceKind?: string;
    phaseHint?: TurnPhase;
}
export declare function recordPhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, args: RecordPhaseEventArgs): PhaseEvent;
export declare function recordAssistantTextPhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, text: string): PhaseEvent | null;
export declare function recordRuntimeNudgePhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, nudgeKind: string): PhaseEvent;
export declare function recordToolPhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, kind: Extract<PhaseEventKind, 'tool_proposed' | 'tool_started' | 'tool_completed'>, tool: string, detail?: string): PhaseEvent;
export declare function recordPermissionPhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, kind: Extract<PhaseEventKind, 'permission_requested' | 'permission_granted' | 'permission_denied'>, tool: string): PhaseEvent;
export declare function recordPostGrantEvidencePhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, evidenceKind: string, detail: string): PhaseEvent;
export declare function recordVerificationEvidencePhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, tool: string, detail: string): PhaseEvent;
export declare function recordCompletionClaimPhaseEvent(taskState: Pick<TaskExecutionState, 'phaseEvents'>, iter: number, text: string): PhaseEvent;
