import type { ConversationManager } from './conversation.js';
import type { ModelDefinition, ProviderRegistry } from '../providers/registry.js';
import { type ConversationFollowUpItem } from './conversation-follow-ups.js';
import { normalizeUsage } from './orchestrator-runtime.js';
export interface OrchestratorFollowUpRuntimeOptions {
    readonly conversation: ConversationManager;
    readonly getViewportHeight: () => number;
    readonly scrollToEnd: (height: number) => void;
    readonly getSystemPrompt: () => string;
    readonly requestRender: () => void;
    readonly getThinkingState: () => {
        readonly isThinking: boolean;
        readonly isCompacting: boolean;
    };
    readonly getQueuedUserMessageCount: () => number;
    readonly getProviderRegistry: () => ProviderRegistry;
    readonly getCurrentModel: () => ModelDefinition;
    readonly routeLowPriorityMessage: (message: string) => void;
    readonly applyUsage: (usage: ReturnType<typeof normalizeUsage>) => void;
}
export declare class OrchestratorFollowUpRuntime {
    private readonly options;
    private queue;
    private flushScheduled;
    private isRunning;
    private readonly recentKeys;
    constructor(options: OrchestratorFollowUpRuntimeOptions);
    enqueue(item: ConversationFollowUpItem): void;
    scheduleFlush(): void;
    private pruneRecent;
    private takeBatch;
    private flush;
}
//# sourceMappingURL=orchestrator-follow-up-runtime.d.ts.map