/**
 * Composition-root helper for both the production worker boot and the
 * in-process test transport. Everything the embedded runtime needs that
 * doesn't depend on host-specific infrastructure (credit-balance fetchers,
 * subagent prompt platform) is wired here so the two transports cannot
 * drift on lock-step state, the `onAgentStart` reset hook, and tool
 * composition. Host-specific bits stay at the call sites.
 */
import type { Api, Model } from '../ai/types.js';
import type { AgentConfiguration, ChildAgentEventEmitter } from '../contracts/agent-api.js';
import { AgentExecuteCodeMode } from '../contracts/agent-execute-code.js';
import type { AgentModelRegistry } from '../contracts/agent-model.js';
import type { HostToolSessionPolicy } from '../contracts/host-tool.js';
import type { StreamFn, ToolDefinition } from '../core/core-types.js';
import type { EmbeddedAgentCreditGate } from './credit-gate.js';
import { ExecuteCodeSurface } from './host-tools/execute-code/index.js';
import { type SessionToolInfoState } from './host-tools/index.js';
import type { ComposeEmbeddedAgentRuntimeOptions } from './index.js';
import type { ShortcutXLPromptPlatform } from './prompt/build.js';
export interface BuildHostEmbeddedAgentOptionsInput {
    readonly agentMode: AgentExecuteCodeMode;
    readonly executeCodeSurface: ExecuteCodeSurface;
    readonly initialConfiguration: AgentConfiguration;
    readonly model: Model<Api>;
    readonly modelRegistry: AgentModelRegistry;
    readonly sessionPolicy: HostToolSessionPolicy;
    readonly sessionStore: ComposeEmbeddedAgentRuntimeOptions['sessionStore'];
    readonly streamFn: StreamFn;
    readonly emitChildAgentEvent: ChildAgentEventEmitter;
    readonly preferCurrentModelForSubagents?: boolean;
    /** Session-scoped tool names unavailable to this runtime. */
    readonly disabledToolNames?: readonly string[];
    /** Pass an instance to enable runtime credit halts; omit or `null` to opt out. */
    readonly creditGate?: EmbeddedAgentCreditGate | null;
    /** Benchmark runs are unattended; host tools that require user handoff must be hidden. */
    readonly isBenchmark?: boolean;
    /** Subagent prompt platform — host-specific. Omit when subagents won't be exercised. */
    readonly promptPlatform?: ShortcutXLPromptPlatform;
    /** Extra non-default tools for harness scenarios (e.g. fake tool round-trips). */
    readonly extraTools?: readonly ToolDefinition[];
}
export interface BuildHostEmbeddedAgentOptionsResult {
    readonly options: ComposeEmbeddedAgentRuntimeOptions;
    readonly sessionToolInfoState: SessionToolInfoState;
}
export declare function buildHostEmbeddedAgentOptions(input: BuildHostEmbeddedAgentOptionsInput): BuildHostEmbeddedAgentOptionsResult;
//# sourceMappingURL=host-runtime-options.d.ts.map