import { LanguageModelProvider } from "../types";
import { Voice } from "../voice";
import { AbstractLanguageModel } from "./AbstractLanguageModel";
import { GroqParams } from "./groq";
import { OllamaParams } from "./ollama";
import { OpenAIParams } from "./openai";
import { BaseModelParams, TelephonyContext } from "./types";
type LanguageModelConstructor<T extends BaseModelParams = BaseModelParams> = new (options: T, voice: Voice, telephonyContext: TelephonyContext) => AbstractLanguageModel;
type LanguageModelConfigMap = {
    [LanguageModelProvider.OPENAI]: OpenAIParams;
    [LanguageModelProvider.GROQ]: GroqParams;
    [LanguageModelProvider.OLLAMA]: OllamaParams;
};
declare class LanguageModelFactory {
    private static readonly languageModels;
    static registerLanguageModel<T extends BaseModelParams>(name: string, ctor: LanguageModelConstructor<T>): void;
    static getLanguageModel<T extends keyof LanguageModelConfigMap>(languageModel: T, config: LanguageModelConfigMap[T], voice: Voice, telephonyContext: TelephonyContext): AbstractLanguageModel;
}
export { LanguageModelFactory };
