import type { PortableTool } from "../skills/portable-tool.js";
import type { PermissionMode } from "../runtime/ports/permission-contracts.js";
import type { TaskToolHooks } from "../skills/tools/task-tool.js";
import type { ExecProgress } from "../skills/tools/exec-tool.js";
import type { BackgroundTaskManager } from "../runtime/infra/background-tasks.js";
import type { ModelPurpose } from "../runtime/infra/model-registry.js";
import type { MediaPersistence } from "../runtime/infra/media-persistence.js";
import type { LLMTransport } from "./provider-core-facade.js";
import type { AgentLogger } from "../agent/types.js";
import type { AskUserQuestion } from "../skills/tools/ask-user-tool.js";
import type { PathService, ToolCatalog } from "../runtime/ports/index.js";
export { setMediaClientConfig, setProviderToolAPI } from "./media-runtime-facade.js";
export { setGroupSecurityMode, validateExecCommand } from "./tool-bootstrap-core-registration.js";
export { enforceAbsoluteFloors } from "./tool-bootstrap-paths.js";
export interface SandboxPermissionSnapshot {
    mode: PermissionMode;
    workdir: string;
    allowedDirs: string[];
    /** cut7c: current turn is an untrusted community-skill turn → tighten the sandbox. */
    communityTurn: boolean;
}
/** Wire the OS-sandbox permission source (live rule-engine snapshot), or null to clear. */
export declare function setSandboxPermissionSource(source: (() => SandboxPermissionSnapshot | undefined) | null): void;
/**
 * Set task tool lifecycle hooks. Called from stdio-server when session starts.
 * Connects planning-task events to the HookRegistry.
 */
export declare function setTaskToolHooks(hooks: TaskToolHooks | undefined): void;
/**
 * Set the unified background task registry. Called from stdio-server at startup.
 * exec(background=true) and the task tool's output/cancel actions route through it.
 * Hosts that never set it get a loud error from those paths (no silent fakes).
 */
export declare function setBackgroundTaskRuntime(manager: BackgroundTaskManager | null): void;
/**
 * Set the ask_user callback. The host (Electron / test harness) provides
 * an implementation that presents questions to the user and returns answers.
 * If null, ask_user returns "user declined" to the LLM.
 */
export declare function setAskUserCallback(callback: ((questions: AskUserQuestion[]) => Promise<Record<string, string> | null>) | null): void;
export declare function setBootstrapWorkdir(newWorkdir: string): void;
export interface BootstrapConfig {
    workdir?: string;
    toolCatalog?: ToolCatalog;
    pathService?: PathService;
    mediaPersistence?: MediaPersistence;
    log?: AgentLogger;
    /** Called during foreground shell execution with incremental progress. */
    onExecProgress?(progress: ExecProgress): void;
    /** host 多档 LLM 解析(web_answer/web_research 用);未提供则不注册这些工具(零孤立)。 */
    resolveClientForPurpose?(purpose: ModelPurpose): {
        transport: LLMTransport;
        apiKey: string;
        model: string;
    } | null;
    getTaskScopeKey?(): string | undefined;
}
/**
 * Create all locally-executable tools and install into centralized tool pool.
 *
 * CC parity: getAllBaseTools() returns flat array, installed via setToolPool().
 * Tools execute IN-PROCESS (zero IPC).
 *
 * @alias initToolDeps -kept for backward compat with existing call sites.
 */
export declare function getAllBaseTools(config?: BootstrapConfig): PortableTool[];
