import type { LocalModelConfig } from "../config.js";
import type { ChatMessage, OpenAICompletionEvent, OpenAIStreamOptions, OpenAIToolDefinition } from "../providers/openai.js";
export interface RegisteredModel {
    id: string;
    displayName: string;
    baseUrl: string;
    apiKey: string;
    contextTokenLimit: number;
    provider: ModelProvider;
}
export interface ModelProvider {
    readonly name: string;
    streamCompletion(messages: ChatMessage[], options?: OpenAIStreamOptions): AsyncGenerator<string>;
    streamCompletionEvents?(messages: ChatMessage[], tools?: OpenAIToolDefinition[], options?: OpenAIStreamOptions): AsyncGenerator<OpenAICompletionEvent>;
}
export declare class ModelRegistry {
    private readonly models;
    register(model: RegisteredModel): void;
    get(id: string | undefined): RegisteredModel | undefined;
    list(): RegisteredModel[];
}
export declare function registerConfiguredModels(registry: ModelRegistry, configs: LocalModelConfig[], providerFactory: (config: LocalModelConfig) => ModelProvider): void;
