import type { SessionPlan, TaskEvidence } from "../../../store/plan.js"; import type { TaskWorkLedger } from "../../task-evidence.js"; import type { ToolExecutionState } from "../tool-execution/state.js"; import type { LooseWorkReceipt } from "../../task-evidence.js"; import type { PlanMutator } from "../plan-persistence.js"; import type { canMarkTaskDone } from "../../task-evidence.js"; export interface TaskGateSetup { readonly ledgerForTask: (plan: SessionPlan, taskId: string) => TaskWorkLedger | null; readonly completionGateForTask: (plan: SessionPlan, taskId: string) => ReturnType; readonly persistProjectRootOnPlan: (root: string) => Promise; readonly persistTaskEvidence: (taskId: string, evidence: TaskEvidence) => Promise; } export declare const setUpTaskGate: (input: { readonly toolState: ToolExecutionState; readonly looseWork: LooseWorkReceipt[]; readonly featureAppRequired: boolean; readonly projectRoot: () => string | undefined; readonly mutatePlan: PlanMutator; }) => TaskGateSetup;