/**
 * Mode-aware orchestration on top of `build-tool-list.ts`. Owns
 * `TOOLS_BY_MODE_NAMES` (action/ask/plan whitelist) and `createDefaultHostTools`,
 * which resolves the session's mode + overrides + skips and delegates.
 */
import type { Api, Model } from '../../ai/types.js';
import type { ChildAgentEventEmitter } from '../../contracts/agent-api.js';
import type { HostToolSessionPolicy } from '../../contracts/host-tool.js';
import type { StreamFn, ToolDefinition } from '../../core/core-types.js';
import type { PendingHostToolRequests } from '../../core/pending-host-tool-requests.js';
import type { AgentExecuteCodeMode } from '../index.js';
import type { ShortcutXLPromptPlatform } from '../prompt/build.js';
import { type BuildHostToolListOptions } from './build-tool-list.js';
import type { ExecuteCodeSurface } from './execute-code/index.js';
import type { SessionToolInfoState } from './get-tool-info/index.js';
/** First-class tool names exposed to the LLM per agent mode. */
export declare const TOOLS_BY_MODE_NAMES: Readonly<Record<AgentExecuteCodeMode, readonly string[]>>;
export declare const SUBAGENTS_BY_MODE_NAMES: Readonly<Partial<Record<AgentExecuteCodeMode, readonly string[]>>>;
export interface CreateDefaultHostToolsOptions {
    readonly pendingHostToolRequests: PendingHostToolRequests;
    readonly sessionPolicy: HostToolSessionPolicy;
    /**
     * Drives the default name list, the spreadsheet-code tool's `mode` option,
     * and `switch_mode`'s transition validation via `getCurrentMode()`.
     */
    readonly agentMode: AgentExecuteCodeMode;
    /** Platform surface the spreadsheet tool targets. */
    readonly executeCodeSurface: ExecuteCodeSurface;
    /** Per-mode override of the default name list. Unknown names log + skip. */
    readonly toolNameOverride?: Partial<Record<AgentExecuteCodeMode, readonly string[]>>;
    /** Tool names omitted from the final list (applied after mode/override). */
    readonly skipTools?: readonly string[];
    /** Shared gate between `get_tool_info` and `execute_tool`. */
    readonly sessionToolInfoState?: SessionToolInfoState;
    /** Session-scoped tool names unavailable to this runtime. */
    readonly disabledToolNames?: readonly string[];
    /** Runtime LLM streamer threaded into `task` for subagents. */
    readonly streamFn: StreamFn;
    /** Resolves a subagent's declared `model` id to a concrete `Model<Api>`. */
    readonly resolveModel: (modelId: string) => Model<Api> | undefined;
    readonly getCurrentModel?: () => Model<Api> | undefined;
    /** Resolves a provider's API key, forwarded to subagents for stream auth. */
    readonly getApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;
    /** Active per-turn speed, forwarded to subagents when present. */
    readonly getSpeed?: () => 'fast' | 'standard' | undefined;
    /** Optional sink for raw child-agent events from subagent runs. */
    readonly emitChildAgentEvent?: ChildAgentEventEmitter;
    readonly preferCurrentModelForSubagents?: boolean;
    /**
     * Prompt platform handle. Forwarded to the `task` tool so subagent
     * prompt builders can render an API reference for the right host
     * (web vs plugin). Without this, function-form subagent prompts
     * (workbook_reader, general, verification) cannot run — the contract
     * returns a structured error.
     */
    readonly promptPlatform?: ShortcutXLPromptPlatform;
    readonly applyRuntimeHandoff?: BuildHostToolListOptions['applyRuntimeHandoff'];
    readonly scheduleRefresh?: BuildHostToolListOptions['scheduleRefresh'];
}
/** Build the first-class host tool list for the given agent mode. */
export declare function createDefaultHostTools(options: CreateDefaultHostToolsOptions): ToolDefinition[];
//# sourceMappingURL=mode-host-tools.d.ts.map