import type { LLMProvider, LLMProviderConstructor, ProviderCapabilities, ProviderConfigRegistry, ProviderFactoryConfig, ProviderFactoryResult, ProviderType, RegisterOptions } from '../types/provider/index.js';
export declare class UnknownProviderError extends Error {
    readonly providerType: string;
    constructor(providerType: string);
}
export declare class DuplicateProviderError extends Error {
    readonly providerType: string;
    constructor(providerType: string);
}
/**
 * Central registry for LLM providers.
 *
 * Provider packages (@namzu/bedrock, @namzu/openai, etc.) export a
 * `register<Vendor>()` function that calls `ProviderRegistry.register()`
 * with a vendor-specific type string, provider class, and capabilities.
 *
 * The core sdk pre-registers `MockLLMProvider` under type `'mock'`.
 *
 * @example
 * ```ts
 * import { ProviderRegistry } from '@namzu/sdk'
 * import { registerBedrock } from '@namzu/bedrock'
 *
 * registerBedrock()
 *
 * const { provider, capabilities } = ProviderRegistry.create({
 *   type: 'bedrock',
 *   region: 'us-east-1',
 * })
 * ```
 */
export declare class ProviderRegistry {
    static register<K extends ProviderType>(type: K, ctor: LLMProviderConstructor<ProviderConfigRegistry[K]>, caps: ProviderCapabilities, options?: RegisterOptions): void;
    static create(config: ProviderFactoryConfig): ProviderFactoryResult;
    static createProvider(config: ProviderFactoryConfig): LLMProvider;
    static getCapabilities(type: string): ProviderCapabilities;
    static isSupported(type: string): type is ProviderType;
    static unregister(type: ProviderType): boolean;
    static listTypes(): ProviderType[];
}
/**
 * @internal — not exported from the package barrel. Do not use in production code.
 * Available to in-tree tests via relative import (`./provider/registry.js`).
 * External consumers cannot reach this because `@namzu/sdk` only exports `.`.
 */
export declare function __resetProviderRegistryInternal(): void;
//# sourceMappingURL=registry.d.ts.map