import type { ChatMessage } from "../../types.js"; import type { SessionPlan } from "../../store/plan.js"; import type { TaskEvidence } from "../../store/plan.js"; export type PlanMutator = (mutator: (draft: SessionPlan) => boolean | void) => Promise; export declare const persistProjectRootOnPlan: (mutatePlan: PlanMutator, root: string) => Promise; export declare const persistTaskEvidence: (mutatePlan: PlanMutator, taskId: string, evidence: TaskEvidence) => Promise; export interface SessionStateRefreshPorts { readonly messages: ChatMessage[]; readonly prompt: string; readonly requestContextMessage: string; readonly refreshInjectedBlocks: () => void; readonly suppressed: () => boolean; readonly activePlan: () => SessionPlan | undefined; readonly planApproved: () => boolean; readonly runningJobs: () => readonly unknown[]; readonly projectRoot: () => string | undefined; readonly requiresState: () => boolean; readonly snapshotFlags: () => { featureAppRequired: boolean; featureSeen: boolean; scaffoldOk: boolean; serverStarted: boolean; serverProbedOk: boolean; lastProbeFailed: boolean; pentestSession: boolean; }; } export declare const createSessionStateRefresher: (ports: SessionStateRefreshPorts) => (plan?: SessionPlan | null | undefined) => void;