import type { CompressionMode, CompressionStrategy } from '../types/config.js';
import type { AISDKCoreTool, LLMClient, Message } from '../types/core.js';
export interface AutoCompactSessionOverrides {
    enabled: boolean | null;
    threshold: number | null;
    mode: CompressionMode | null;
    strategy: CompressionStrategy | null;
}
export declare const autoCompactSessionOverrides: AutoCompactSessionOverrides;
/**
 * Perform auto-compact on messages (async)
 * Returns compressed messages if compression was performed, null otherwise.
 *
 * When `strategy` resolves to 'llm' and a client is provided, the compressible
 * segment is replaced by a single synthetic message generated by the model.
 * Falls back to the mechanical path on any LLM error.
 *
 * `nativeTools` are the tool definitions sent to the model out-of-band (native
 * tool calling). They occupy context but live outside the message list, so the
 * trigger would under-count without them and fire late — mirror the context
 * indicator by adding their token cost to the gate. Pass `{}`/undefined under
 * XML/JSON fallback, where the definitions are already inside `systemMessage`.
 */
export declare function performAutoCompact(messages: Message[], systemMessage: Message, provider: string, model: string, config: {
    enabled: boolean;
    threshold: number;
    mode: CompressionMode;
    strategy?: CompressionStrategy;
    notifyUser: boolean;
}, onNotify?: (message: string) => void, client?: LLMClient, nativeTools?: Record<string, AISDKCoreTool>): Promise<Message[] | null>;
export declare function setAutoCompactEnabled(enabled: boolean | null): void;
export declare function setAutoCompactThreshold(threshold: number | null): void;
export declare function setAutoCompactMode(mode: CompressionMode | null): void;
export declare function setAutoCompactStrategy(strategy: CompressionStrategy | null): void;
export declare function resetAutoCompactSession(): void;
//# sourceMappingURL=auto-compact.d.ts.map