import type { AgentLogger, ToolInvoker } from "../../agent/types.js";
import type { HookRegistry } from "../../contracts/hooks.js";
import type { ChatMessage } from "../../agent/types.js";
import type { BackgroundTaskManager } from "../../runtime/infra/background-tasks.js";
import type { ToolCatalog } from "../../runtime/ports/index.js";
import type { AgentToolDeps } from "../../skills/tools/agent-tool.js";
import type { LLMTransport } from "../provider-core-facade.js";
export interface AgentToolServiceHost {
    readonly agent: unknown | null;
    readonly currentTransport: LLMTransport | null;
    readonly currentApiKey: string;
    readonly currentModel: string;
    sendNotification(method: string, params: Record<string, unknown>): void;
    /** Unified background execution registry. Required for background=true forks. */
    getBackgroundTasks(): BackgroundTaskManager | null;
    /**
     * Parent conversation history for inheritContext=true forks (foreground only).
     * Returns the raw prior turns; the service trims/strips/budget-caps them.
     * Null/empty → the sub-agent starts fresh.
     */
    getConversationHistory(): readonly ChatMessage[] | null;
    /** Whether the current turn is group-chat / untrusted (drives context redaction). */
    isGroupContext(): boolean;
    /** Active project root — for loading the subagent's project rules / AGENTS. */
    getActiveProjectRoot(): string;
    /** Lightweight memory INDEX block injected into the subagent system prompt. */
    getMemoryIndex(): string | null;
}
export interface AgentToolServiceOptions {
    host: AgentToolServiceHost;
    hooks: HookRegistry;
    log: AgentLogger;
    toolCatalog: ToolCatalog;
    toolInvoker: ToolInvoker;
}
export declare function createAgentToolService({ host, hooks, log, toolCatalog, toolInvoker }: AgentToolServiceOptions): AgentToolDeps;
