import type { LoopBudget, MutationMode, ReceiptScope } from "../contracts/index.js"; type CliWorkflowStepName = "start" | "tour" | "guide" | "doctor" | "estimate" | "session-start" | "preflight"; export interface CliWorkflowStepInput { runsRoot: string; step: CliWorkflowStepName; workingDirectory: string; objective?: string; engine?: string; verificationPlan?: string[]; receiptScope?: ReceiptScope; allowedPaths?: string[]; deniedPaths?: string[]; budget?: LoopBudget; } export interface CliRunGateInput { runsRoot: string; workingDirectory: string; objective: string; engine?: string; verificationPlan: string[]; mutationMode?: MutationMode; receiptScope?: ReceiptScope; allowedPaths?: string[]; deniedPaths?: string[]; budget?: LoopBudget; } export interface CliRunGateResult { allowed: boolean; nextCommand: string; message: string; missingSteps: CliWorkflowStepName[]; } export declare function consumeFirstRunBanner(runsRoot: string): Promise; export declare function recordMcpPlanStep(input: { runsRoot: string; workingDirectory: string; objective: string; receiptScope?: ReceiptScope; }): Promise; export declare function recordCliWorkflowStep(input: CliWorkflowStepInput): Promise; export declare function evaluateCliRunGate(input: CliRunGateInput): Promise; /** * Opaque governance receipt shape used by the gate — only recordedAt is required * for the simple presence check performed by executeGateCommand. */ export interface WorkspaceGovernanceReceipt { recordedAt?: string; } /** * Combined CLI + MCP governance state for a single workspace. * Both namespaces live in the same per-workspace file so that receipts * recorded via either surface are visible to the gate. */ export interface WorkspaceGovernanceState { cli: Partial>; mcp: Partial>; } /** * Read the combined CLI and MCP governance receipts for a specific workspace. * Returns empty namespaces when no state file exists yet (fresh workspace). * Used by executeGateCommand to enforce workspace-scoped governance. */ export declare function readWorkspaceGovernanceReadiness(runsRoot: string, workingDirectory: string): Promise; export declare function deriveWorkspaceKey(workingDirectory: string): string; export declare function deriveWorkspaceId(workingDirectory: string): string; export {};