import type { ProviderMessage, ProviderResponse } from '../providers/provider.types';
import type { SDKMessageLike } from './sdk-message-stream';
import { ProviderRegistry } from '../providers/provider-registry.service';
export interface CompactionOptions {
    tokenBudget: number;
    estimateTokens: (text: string) => number;
    toolResultMaxTokens?: number;
    slidingWindowPairs?: number;
}
export interface CompactionResult {
    messages: ProviderMessage[];
    droppedCount: number;
    truncatedToolResults: number;
}
export declare class QueryEngine {
    private readonly providerRegistry;
    constructor(providerRegistry: ProviderRegistry);
    summarizeOldHistory(history: ProviderMessage[], options: {
        estimateTokens: (text: string) => number;
        summarizeThreshold?: number;
        keepLastPairs?: number;
    }): Promise<{
        messages: ProviderMessage[];
        summarized: boolean;
        summary?: string;
    }>;
    compactHistory(history: ProviderMessage[], options: CompactionOptions): CompactionResult;
    runStreaming(args: {
        invoke: () => Promise<ProviderResponse>;
    }): AsyncGenerator<SDKMessageLike, void, void>;
}
