interface SessionUpdate {
    sessionUpdate: string;
    [key: string]: unknown;
}
/**
 * Structured event emitted from accumulator as ACP session updates arrive.
 * Consumed by daemon subscribeRun to stream to remote clients (Console chat).
 */
export type AccumulatorEvent = {
    type: 'text';
    text: string;
} | {
    type: 'tool_use';
    id: string;
    title: string;
    kind: string;
    status: string;
} | {
    type: 'tool_update';
    id: string;
    status: string;
} | {
    type: 'usage';
    used: number;
    size: number;
} | {
    type: 'complete';
    stopReason: string;
};
export type AccumulatorListener = (event: AccumulatorEvent) => void;
export declare class SessionUpdateAccumulator {
    private textChunks;
    private toolCalls;
    private logFile;
    private listeners;
    stopReason: string | null;
    hasPendingPermission: boolean;
    lastUpdateAt: string | null;
    /** Set a log file path — events will be appended as human-readable lines. */
    setLogFile(path: string): void;
    reset(): void;
    addListener(fn: AccumulatorListener): void;
    /** Mark the run as complete and emit a complete event. Called by adapter after run settles. */
    markComplete(stopReason: string): void;
    removeListener(fn: AccumulatorListener): void;
    private emit;
    handleUpdate(update: SessionUpdate): void;
    /** Recent text output, capped to maxChars (replaces capturePaneText). */
    getRecentText(maxChars?: number): string;
    /** Count of non-terminal (pending/in_progress) tool calls. */
    get activeToolCalls(): number;
    private appendLog;
}
export {};
//# sourceMappingURL=acp-session-accumulator.d.ts.map