/**
 * Session handoff computation and persistence.
 *
 * Creates structured handoff data when a session ends, containing:
 * - Last focused task
 * - Tasks completed and created
 * - Decisions recorded
 * - Next suggested tasks
 * - Open blockers and bugs
 * - Human override notes
 *
 * @task T4915
 * @epic T4914
 */
/**
 * Handoff data schema - structured state for session transition.
 */
export interface HandoffData {
    /** Last task being worked on */
    lastTask: string | null;
    /** Tasks completed in session */
    tasksCompleted: string[];
    /** Tasks created in session */
    tasksCreated: string[];
    /** Count of decisions recorded */
    decisionsRecorded: number;
    /** Top-3 from tasks.next */
    nextSuggested: string[];
    /** Tasks with blockers */
    openBlockers: string[];
    /** Open bugs */
    openBugs: string[];
    /** Human override note */
    note?: string;
    /** Human override next action */
    nextAction?: string;
}
/**
 * Options for computing handoff data.
 */
export interface ComputeHandoffOptions {
    sessionId: string;
    /** Optional human note override */
    note?: string;
    /** Optional human next action override */
    nextAction?: string;
}
/**
 * Compute handoff data for a session.
 * Gathers all session statistics and auto-computes structured state.
 */
export declare function computeHandoff(projectRoot: string, options: ComputeHandoffOptions): Promise<HandoffData>;
/**
 * Persist handoff data to a session.
 */
export declare function persistHandoff(projectRoot: string, sessionId: string, handoff: HandoffData): Promise<void>;
/**
 * Get handoff data for a session.
 */
export declare function getHandoff(projectRoot: string, sessionId: string): Promise<HandoffData | null>;
/**
 * Get handoff data for the most recent ended session.
 * Filters by scope if provided.
 */
export declare function getLastHandoff(projectRoot: string, scope?: {
    type: string;
    epicId?: string;
    rootTaskId?: string;
}): Promise<{
    sessionId: string;
    handoff: HandoffData;
} | null>;
/**
 * Git state snapshot captured at session end.
 */
export interface GitState {
    branch: string;
    commitCount: number;
    lastCommitHash: string | null;
    uncommittedChanges: boolean;
}
/**
 * Decision summary for debrief output.
 */
export interface DebriefDecision {
    id: string;
    decision: string;
    rationale: string;
    taskId: string;
}
/**
 * Rich debrief data — superset of HandoffData.
 * Captures comprehensive session state for cross-conversation continuity.
 *
 * @epic T4959
 */
export interface DebriefData {
    /** Standard handoff data (backward compat). */
    handoff: HandoffData;
    /** Session that produced this debrief. */
    sessionId: string;
    /** Agent/conversation identifier (if known). */
    agentIdentifier: string | null;
    /** Session start time. */
    startedAt: string;
    /** Session end time. */
    endedAt: string;
    /** Duration in minutes. */
    durationMinutes: number;
    /** Decisions made during the session. */
    decisions: DebriefDecision[];
    /** Git state at session end (best-effort). */
    gitState: GitState | null;
    /** Position in the session chain (1-based). */
    chainPosition: number;
    /** Total length of the session chain. */
    chainLength: number;
}
/**
 * Options for computing debrief data.
 */
export interface ComputeDebriefOptions extends ComputeHandoffOptions {
    /** Agent/conversation identifier. */
    agentIdentifier?: string | null;
    /** Session start time. */
    startedAt?: string;
    /** Session end time. */
    endedAt?: string;
}
/**
 * Compute rich debrief data for a session.
 * Builds on computeHandoff() and adds decisions, git state, chain position.
 *
 * @epic T4959
 */
export declare function computeDebrief(projectRoot: string, options: ComputeDebriefOptions): Promise<DebriefData>;
//# sourceMappingURL=handoff.d.ts.map