/**
 * QueueTracker — tracks pending steering and follow-up messages for UI display.
 *
 * When the user sends a message while the agent is streaming, the text is
 * queued via AgentController.steer() or AgentController.followUp(). This tracker mirrors those
 * queues so the UI can show what's pending. When the AgentController delivers a queued
 * message (message_start with matching text), the tracker removes it.
 *
 * Part of the AgentSession event pipeline (step 1). Does not reference
 * AgentSession, AgentController, or any other pipeline handler.
 */
import type { AgentLoopEvent } from '../../core/index.js';
export declare class QueueTracker {
    private _steering;
    private _followUp;
    /** Pending steering messages (read-only). */
    get steeringMessages(): readonly string[];
    /** Pending follow-up messages (read-only). */
    get followUpMessages(): readonly string[];
    /** Total pending messages (steering + follow-up). */
    get pendingCount(): number;
    /** Track a new steering message. */
    pushSteering(text: string): void;
    /** Track a new follow-up message. */
    pushFollowUp(text: string): void;
    /**
     * Clear all tracked messages and return them.
     * Used when aborting or switching sessions.
     */
    clearAll(): {
        steering: string[];
        followUp: string[];
    };
    /**
     * Handle an agent event: remove delivered messages from the tracking queues.
     *
     * On message_start for a user message, checks if the text matches a tracked
     * steering or follow-up message and removes the first match. This must run
     * BEFORE the event is emitted to external listeners so the UI sees the
     * updated queue state.
     */
    handle(event: AgentLoopEvent): void;
}
//# sourceMappingURL=queue-tracker.d.ts.map