import { type ConfigResolutionContext, type ConfigResolver } from '../../builtin/config/config-resolver'; import { type AgentApiKeyConfig, type AgentLlmAdapter, type AgentLlmAdapterConfig, type AgentLlmBuiltinConfig, type AgentLlmConfig, type WithConfig } from '../../common'; export type { ConfigResolver } from '../../builtin/config/config-resolver'; /** * Interface for provider registry (DI). */ export interface ProviderResolver { /** * Get a provider by token. */ get(token: symbol | { new (...args: unknown[]): T; }): T; /** * Try to get a provider, returning undefined if not found. */ tryGet(token: symbol | { new (...args: unknown[]): T; }): T | undefined; } /** * Resolve an API key from various sources. * * @param config - API key configuration (string, env var, or WithConfig) * @param configResolver - Optional config resolver for WithConfig values * @param entityContext - Optional entity context for auto-fallbacks */ export declare function resolveApiKey(config: AgentApiKeyConfig, configResolver?: ConfigResolver, entityContext?: ConfigResolutionContext): string; /** * Resolve a string value that may be a WithConfig reference. * * @param value - String or WithConfig reference * @param configResolver - Optional config resolver * @param entityContext - Optional entity context for auto-fallbacks */ export declare function resolveStringValue(value: string | WithConfig, configResolver?: ConfigResolver, entityContext?: ConfigResolutionContext): string; /** * Check if config is a built-in provider config. */ export declare function isBuiltinConfig(config: AgentLlmConfig): config is AgentLlmBuiltinConfig; /** * Check if config is a direct adapter config. */ export declare function isAdapterConfig(config: AgentLlmConfig): config is AgentLlmAdapterConfig; /** * Check if config is a DI token. */ export declare function isTokenConfig(config: AgentLlmConfig): config is symbol; /** * Check if value is an AgentLlmAdapter instance. */ export declare function isAdapterInstance(value: unknown): value is AgentLlmAdapter; /** * Options for creating an LLM adapter. */ export interface CreateAdapterOptions { /** * Configuration resolver for WithConfig values. */ configResolver?: ConfigResolver; /** * Provider resolver for DI token resolution. */ providerResolver?: ProviderResolver; /** * Entity context for auto-fallback resolution. * When provided, WithConfig values without explicit fallbacks will * automatically try entity-specific paths first. * * @example * ```typescript * entityContext: { * entityType: 'agents', * entityName: 'research-agent', * } * // For openaiKey, tries: agents.research_agent.openaiKey → agents.openaiKey → openaiKey * ``` */ entityContext?: ConfigResolutionContext; } /** * Create an LLM adapter from configuration. * * Supported configuration types: * - Provider shorthand (`{ provider: 'openai', model: 'gpt-4o', ... }`) - recommended * - Direct adapter instance (`{ adapter: new OpenAIAdapter(...) }`) * - Factory function (`{ adapter: (providers) => new OpenAIAdapter(...) }`) * - DI token (`LLM_ADAPTER` symbol) * * @example Provider shorthand (recommended) * ```typescript * const adapter = createAdapter({ * provider: 'openai', * model: 'gpt-4o', * apiKey: { env: 'OPENAI_API_KEY' }, * }); * ``` * * @example Direct adapter instance * ```typescript * import { OpenAIAdapter } from '@frontmcp/sdk'; * * const adapter = createAdapter({ * adapter: new OpenAIAdapter({ * model: 'gpt-4o', * apiKey: process.env.OPENAI_API_KEY, * }), * }); * ``` */ export declare function createAdapter(config: AgentLlmConfig, options?: CreateAdapterOptions): AgentLlmAdapter; //# sourceMappingURL=adapter.factory.d.ts.map