import type { AgentModelRegistry } from '../contracts/agent-model.js';
import type { AgentSessionContext } from '../contracts/agent-session-store.js';
import type { HeartbeatWrapFn } from '../core/agent-engine.js';
import type { AgentController, AgentMessage } from '../core/index.js';
import { type CompactionSessionStore } from '../core/session/compaction-bridge.js';
import type { CompactionCompleteFn } from '../core/session/compaction/index.js';
import type { EmbeddedAgentPerTurnOptions } from './per-turn-options.js';
export interface EmbeddedCompactionWiringOptions {
    agent: AgentController;
    modelRegistry: AgentModelRegistry;
    sessionStore: CompactionSessionStore;
    getPerTurnOptions: () => EmbeddedAgentPerTurnOptions;
    completeFn?: CompactionCompleteFn;
    /** Returns active turn's heartbeat wrap so the long summarize call shows status. */
    getHeartbeatWrap?: () => HeartbeatWrapFn | undefined;
    onMessagesReplaced?: (context: AgentSessionContext) => void;
    onAgentMessagesReplaced?: (messages: readonly AgentMessage[]) => void;
}
export interface EmbeddedCompactionWiring {
    /** Trigger threshold/overflow compaction. `skipAbortedCheck=true` post-turn, `false` pre-submit. */
    triggerIfNeeded(skipAbortedCheck: boolean): Promise<void>;
    /** Resolves when any in-flight auto-compaction settles. */
    whenIdle(): Promise<void>;
}
export declare function createEmbeddedCompactionWiring(options: EmbeddedCompactionWiringOptions): EmbeddedCompactionWiring;
//# sourceMappingURL=compaction-wiring.d.ts.map