/**
 * Feedback Coordinator - Coordinates all feedback mechanisms
 *
 * Unifies progress feedback, stream updates, and direct messages
 * into a single coherent feedback system.
 */
import type { MessageBus } from '../../infra/bus/index.js';
import type { SessionContext } from '../session/session-context.js';
import type { ProgressFeedbackManager, ProgressStage } from '../lifecycle/progress.js';
import type { StreamHandle } from '../messaging/stream-manager.js';
export interface FeedbackCoordinatorConfig {
    progressManager: ProgressFeedbackManager;
    bus: MessageBus;
}
export declare class FeedbackCoordinator {
    private progressManager;
    private bus;
    private currentStreamHandle;
    private currentContext;
    constructor(config: FeedbackCoordinatorConfig);
    /**
     * Set the current context for feedback
     */
    setContext(context: SessionContext): void;
    /**
     * Clear the current context
     */
    clearContext(): void;
    /**
     * Start a task and initialize feedback
     */
    startTask(): void;
    /**
     * End a task and cleanup feedback
     */
    endTask(): void;
    /**
     * Set the stream handle for progress updates
     */
    setStreamHandle(handle: StreamHandle): void;
    /**
     * Clear the stream handle
     */
    clearStreamHandle(): void;
    /**
     * Send progress message via stream or direct message
     */
    private sendProgressMessage;
    /**
     * Send heartbeat for long-running tasks
     */
    private sendHeartbeat;
    /**
     * Map tool name to progress stage
     */
    private getToolStage;
    /**
     * Update progress via stream
     */
    updateProgress(text: string, stage: ProgressStage, detail?: string): void;
    /**
     * Set progress stage
     */
    setProgress(stage: ProgressStage, detail?: string): void;
    /**
     * Send a direct message to the current context
     */
    sendMessage(content: string): Promise<void>;
    /**
     * Get the progress manager instance
     */
    getProgressManager(): ProgressFeedbackManager;
}
