import { AgentStreamEvent } from "../types/ui-events.js";
import { StreamEvent } from "../types/internal.js";
import { ChunkingStrategy } from "./chunk-buffer.js";
/**
 * Adapter that transforms low-level streaming events into high-level UI events
 * using GraphQL types for type safety
 */
export declare class UIEventAdapter {
    private onEvent;
    private conversationId;
    private model?;
    private modelService?;
    private tokenCount;
    private currentMessage;
    private isStreaming;
    private conversationStartTime;
    private streamStartTime;
    private firstTokenTime;
    private lastTokenTime;
    private tokenDelays;
    private activeToolCalls;
    private lastUpdateTime;
    private updateTimer?;
    private chunkBuffer?;
    private smoothingDelay;
    private chunkQueue;
    private contextWindowUsage?;
    constructor(onEvent: (event: AgentStreamEvent) => void, conversationId: string, options?: {
        smoothingEnabled?: boolean;
        chunkingStrategy?: ChunkingStrategy;
        smoothingDelay?: number;
        model?: string;
        modelService?: string;
    });
    /**
     * Process a raw streaming event and emit appropriate UI events
     */
    handleEvent(event: StreamEvent): void;
    private handleStart;
    private handleToken;
    private handleMessage;
    private handleToolCallStart;
    private handleToolCallDelta;
    private handleToolCallParsed;
    private handleToolCallComplete;
    private handleComplete;
    private handleError;
    private scheduleMessageUpdate;
    private scheduleChunkEmission;
    private emitNextChunk;
    private emitMessageUpdate;
    private emitUIEvent;
    private handleContextWindow;
    /**
     * Clean up any pending timers
     */
    dispose(): void;
}
