import { Context, Effect, Layer } from 'effect'; import type * as AiModel from '@effect/ai/Model'; import type { ProviderDefinition, ProviderConfig, ProviderModelDefaults } from './provider'; import type { EffectProviderFactory } from './base'; import { ProviderNotFoundError, ProviderRegistrationError, ProviderModelError } from './errors'; /** * ProviderRegistryService interface for Effect-based provider management */ export interface ProviderRegistryService { /** * Register a provider pack by id/package name. * Loads the pack dynamically and validates exports. * * Returns the registered definition, since the pack's declared `id` (or * an alias) often differs from `idOrPackage` when it is a package * specifier (e.g. `"@fancyrobot/fred-openai"` registers under `"openai"`) * — callers that need to look the definition back up should use the * returned value rather than re-querying by `idOrPackage`. */ register(idOrPackage: string, config?: ProviderConfig): Effect.Effect; /** * Register a pre-created factory (for programmatic use) */ registerFactory(factory: EffectProviderFactory, config?: ProviderConfig): Effect.Effect; /** * Register a pre-built provider definition directly */ registerDefinition(definition: ProviderDefinition): Effect.Effect; /** * Get a model from a registered provider */ getModel(providerId: string, modelId?: string, overrides?: ProviderModelDefaults): Effect.Effect, ProviderNotFoundError | ProviderModelError>; /** * List unique provider IDs (not aliases) */ listProviders(): Effect.Effect; /** * Get a provider definition by id or alias */ getDefinition(id: string): Effect.Effect; /** * Get all unique provider definitions */ getDefinitions(): Effect.Effect; /** * Check if a provider is registered */ hasProvider(id: string): Effect.Effect; /** * Get merged Effect Layer for all providers */ getLayer(): Effect.Effect>; /** * Mark registry as initialized (after startup loading) */ markInitialized(): Effect.Effect; /** * Check if registry is initialized */ isInitialized(): Effect.Effect; } export declare const ProviderRegistryService: Context.Tag; /** * Live layer providing ProviderRegistryService */ export declare const ProviderRegistryServiceLive: Layer.Layer; //# sourceMappingURL=service.d.ts.map