import { Effect, Layer } from 'effect'; import type * as AiModel from '@effect/ai/Model'; import type { ProviderConfig, ProviderDefinition, ProviderModelDefaults } from './provider'; import type { ProviderConnectionCapabilities, ProviderConnectionPrepareFactory, ProviderConnectionTestHook } from './connections'; import type { ProviderCapabilityKey } from './provider-capabilities'; import { ProviderRegistrationError } from './errors'; export { validatePackExports, isProviderFactory } from './pack-schema'; export { ProviderPackLoadError, ProviderNotFoundError, ProviderRuntimeError } from './errors'; export interface EffectProviderFactory { id: string; aliases?: string[]; capabilities?: ReadonlySet; connectionCapabilities?: ProviderConnectionCapabilities; connectionTest?: ProviderConnectionTestHook; makeConnectionPrepare?: ProviderConnectionPrepareFactory; load: (config: ProviderConfig) => Promise<{ layer: Layer.Layer; getModel: (modelId: string, options?: ProviderModelDefaults) => Effect.Effect, Error>; }>; } /** * Create a ProviderDefinition from an EffectProviderFactory. * * Validates the factory structure before use and wraps load() failures * in ProviderPackLoadError with clear remediation hints. * * @param factory - The provider factory (from pack or built-in) * @param config - Provider configuration * @returns Promise on success * @throws ProviderPackLoadError if factory validation or load() fails */ export declare function createProviderDefinition(factory: EffectProviderFactory, config: ProviderConfig): Promise; /** * Effect-based version of createProviderDefinition. * * Returns an Effect with proper error channel instead of throwing. */ export declare const createProviderDefinitionEffect: (factory: EffectProviderFactory, config: ProviderConfig) => Effect.Effect; //# sourceMappingURL=base.d.ts.map