import type { WorkingStateManager } from '../../compaction/manager.js';
import type { PluginLifecycleManager } from '../../plugin/lifecycle.js';
import { type ProbeRegistry } from '../../probe/registry.js';
import type { ActivityStore } from '../../store/activity/memory.js';
import type { RunId } from '../../types/ids/index.js';
import type { InvocationState } from '../../types/invocation/index.js';
import { type Message } from '../../types/message/index.js';
import type { PermissionMode } from '../../types/permission/index.js';
import type { ChatCompletionResponse } from '../../types/provider/index.js';
import type { RunEvent } from '../../types/run/index.js';
import type { Sandbox } from '../../types/sandbox/index.js';
import type { ToolRegistryContract } from '../../types/tool/index.js';
import type { Logger } from '../../utils/logger.js';
export type EmitEvent = (event: RunEvent) => Promise<void>;
export interface ToolExecutorConfig {
    tools: ToolRegistryContract;
    runId: RunId;
    workingDirectory: string;
    permissionMode: PermissionMode;
    env: Record<string, string>;
    abortSignal: AbortSignal;
    sandbox?: Sandbox;
    invocationState?: InvocationState;
    pluginManager?: PluginLifecycleManager;
}
export interface ToolExecutionBatch {
    messages: Message[];
    results: Array<{
        toolCallId: string;
        output: string;
    }>;
}
export declare class ToolExecutor {
    private config;
    private activityStore;
    private emitEvent;
    private log;
    private workingStateManager?;
    private probes;
    constructor(config: ToolExecutorConfig, activityStore: ActivityStore, emitEvent: EmitEvent, log: Logger, probes?: ProbeRegistry);
    setWorkingStateManager(manager: WorkingStateManager): void;
    setSandbox(sandbox: Sandbox): void;
    executeBatch(response: ChatCompletionResponse): Promise<ToolExecutionBatch>;
    private buildToolContext;
    private executeSingle;
    private runPreToolHook;
    private interpretPreToolResults;
    private runPostToolHook;
    private recordSyntheticHookOutcome;
    private maybeCompress;
}
//# sourceMappingURL=executor.d.ts.map