/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { Config } from '../config/config.js';
import type { SubagentManager } from '../config/subagentManager.js';
import type { ProfileManager } from '../config/profileManager.js';
import type { SubagentConfig } from '../config/types.js';
import type { Profile } from '../types/modelParams.js';
import { SubAgentScope, type PromptConfig, type RunConfig, type ToolConfig, type OutputConfig } from './subagent.js';
import { type AgentRuntimeLoaderOptions, type AgentRuntimeLoaderResult } from '../runtime/AgentRuntimeLoader.js';
type RuntimeLoader = (options: AgentRuntimeLoaderOptions) => Promise<AgentRuntimeLoaderResult>;
type ScopeFactory = typeof SubAgentScope.create;
export interface SubagentLaunchRequest {
    name: string;
    runConfig?: RunConfig;
    behaviourPrompts?: string[];
    toolConfig?: ToolConfig;
    outputConfig?: OutputConfig;
}
export interface SubagentLaunchResult {
    agentId: string;
    scope: SubAgentScope;
    dispose: () => Promise<void>;
    prompt: PromptConfig;
    profile: Profile;
    config: SubagentConfig;
    runtime: AgentRuntimeLoaderResult;
}
export interface SubagentOrchestratorOptions {
    subagentManager: SubagentManager;
    profileManager: ProfileManager;
    foregroundConfig: Config;
    runtimeLoader?: RuntimeLoader;
    scopeFactory?: ScopeFactory;
    idFactory?: () => string;
}
/**
 * Light-weight orchestrator responsible for resolving subagent configuration,
 * building isolated runtime bundles, and launching {@link SubAgentScope} instances.
 *
 * @plan PLAN-20251029-SUBAGENTORCHESTRATION
 * @requirement REQ-SUBAGENT-ORCH-001, REQ-SUBAGENT-ORCH-002
 */
export declare class SubagentOrchestrator {
    private readonly options;
    private readonly runtimeLoader;
    private readonly scopeFactory;
    private readonly idFactory;
    constructor(options: SubagentOrchestratorOptions);
    /**
     * Launches a subagent by name, returning the created {@link SubAgentScope}
     * and associated agent metadata.
     */
    launch(request: SubagentLaunchRequest, signal?: AbortSignal): Promise<SubagentLaunchResult>;
    private throwIfAborted;
    private loadSubagentConfig;
    private buildPromptConfig;
    private buildModelConfig;
    private buildRunConfig;
    private baseSessionId;
    private createRuntimeId;
    private buildContentGeneratorConfig;
    private createSettingsSnapshot;
    private populateSettingsService;
    private getNumberSetting;
    private getStringSetting;
    private getStringArraySetting;
    private getSetting;
    private createRuntimeState;
    private createRuntimeBundle;
}
export {};
