import type { ChatProvider, ProviderId, ModelProviderDefinition, ProviderStreamHandler, AttachmentToolDefinition } from './types';
export declare class ProviderRegistry {
    private readonly providers;
    private readonly modelDefinitions;
    private readonly streamHandlers;
    private attachmentToolDefinitionsResolver;
    registerProvider(provider: ChatProvider): void;
    hasProvider(kind: ProviderId): boolean;
    listProviders(): ChatProvider[];
    registerModelDefinition(definition: ModelProviderDefinition): void;
    registerStreamHandler(kind: ProviderId, handler: ProviderStreamHandler): void;
    setAttachmentToolDefinitionsResolver(resolver: () => AttachmentToolDefinition[]): void;
    hasAttachmentToolDefinitionsResolver(): boolean;
    getModelDefinition(kind: ProviderId): ModelProviderDefinition | undefined;
    listModelDefinitions(): ModelProviderDefinition[];
    getStreamHandler(kind: ProviderId): ProviderStreamHandler | undefined;
    getAttachmentToolDefinitions(): AttachmentToolDefinition[];
    getProvider(kind: ProviderId): ChatProvider;
    findProvider(kind: ProviderId): ChatProvider | undefined;
}
export declare const providerRegistry: ProviderRegistry;
export declare const registerProvider: (provider: ChatProvider) => void;
export declare const hasProvider: (kind: ProviderId) => boolean;
export declare const listProviders: () => ChatProvider[];
export declare const getRegisteredProvider: (kind: ProviderId) => ChatProvider;
export declare const getOptionalRegisteredProvider: (kind: ProviderId) => ChatProvider | undefined;
export declare const registerModelDefinition: (definition: ModelProviderDefinition) => void;
export declare const getRegisteredModelDefinition: (kind: ProviderId) => ModelProviderDefinition | undefined;
export declare const listModelDefinitions: () => ModelProviderDefinition[];
export declare const registerStreamHandler: (kind: ProviderId, handler: ProviderStreamHandler) => void;
export declare const getRegisteredStreamHandler: (kind: ProviderId) => ProviderStreamHandler | undefined;
export declare const setAttachmentToolDefinitionsResolver: (resolver: () => AttachmentToolDefinition[]) => void;
export declare const getAttachmentToolDefinitions: () => AttachmentToolDefinition[];
export declare const hasAttachmentToolDefinitionsResolver: () => boolean;
//# sourceMappingURL=registry.d.ts.map