/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { HistoryService } from '../services/history/HistoryService.js';
import type { Config } from '../config/config.js';
import type { ToolRegistry } from '../tools/tool-registry.js';
import type { ProviderManager } from '../providers/ProviderManager.js';
import type { IProviderManager } from '../providers/IProviderManager.js';
import type { AgentRuntimeContext, AgentRuntimeProviderAdapter, AgentRuntimeTelemetryAdapter, ToolRegistryView, ReadonlySettingsSnapshot } from './AgentRuntimeContext.js';
import type { AgentRuntimeState } from './AgentRuntimeState.js';
import type { ProviderRuntimeContext } from './providerRuntimeContext.js';
import { type ContentGenerator, type ContentGeneratorConfig } from '../core/contentGenerator.js';
export interface AgentRuntimeProfileSnapshot {
    config: Config;
    state: AgentRuntimeState;
    settings: ReadonlySettingsSnapshot;
    providerRuntime: ProviderRuntimeContext;
    contentGeneratorConfig?: ContentGeneratorConfig;
    toolRegistry?: ToolRegistry;
    providerManager?: ProviderManager | IProviderManager;
}
export interface AgentRuntimeLoaderOverrides {
    providerAdapter?: AgentRuntimeProviderAdapter;
    telemetryAdapter?: AgentRuntimeTelemetryAdapter;
    toolsView?: ToolRegistryView;
    historyService?: HistoryService;
    contentGenerator?: ContentGenerator;
    contentGeneratorFactory?: ContentGeneratorFactory;
}
export interface AgentRuntimeLoaderOptions {
    profile: AgentRuntimeProfileSnapshot;
    overrides?: AgentRuntimeLoaderOverrides;
    signal?: AbortSignal;
}
export interface AgentRuntimeLoaderResult {
    runtimeContext: AgentRuntimeContext;
    history: HistoryService;
    providerAdapter: AgentRuntimeProviderAdapter;
    telemetryAdapter: AgentRuntimeTelemetryAdapter;
    toolsView: ToolRegistryView;
    contentGenerator: ContentGenerator;
    toolRegistry?: ToolRegistry;
    settingsSnapshot?: ReadonlySettingsSnapshot;
}
export type ContentGeneratorFactory = (config: ContentGeneratorConfig, context: Config, sessionId: string) => Promise<ContentGenerator>;
export declare function loadAgentRuntime(options: AgentRuntimeLoaderOptions): Promise<AgentRuntimeLoaderResult>;
