import { ChatMessage, ChatMessageRole, CompletionOptions, ILLM, LLMFullCompletionOptions, LLMOptions, ModelProvider, PromptLog, PromptTemplate, RequestOptions, TemplateType } from "../index.js";
export declare abstract class BaseLLM implements ILLM {
    static providerName: ModelProvider;
    static defaultOptions: Partial<LLMOptions> | undefined;
    get providerName(): ModelProvider;
    supportsImages(): boolean;
    supportsCompletions(): boolean;
    supportsPrefill(): boolean;
    uniqueId: string;
    model: string;
    title?: string;
    systemMessage?: string;
    contextLength: number;
    completionOptions: CompletionOptions;
    requestOptions?: RequestOptions;
    template?: TemplateType;
    promptTemplates?: Record<string, string>;
    templateMessages?: (messages: ChatMessage[]) => string;
    writeLog?: (str: string) => Promise<void>;
    llmRequestHook?: (model: string, prompt: string) => any;
    apiKey?: string;
    apiBase?: string;
    engine?: string;
    apiVersion?: string;
    apiType?: string;
    region?: string;
    projectId?: string;
    private _llmOptions;
    constructor(_options: LLMOptions);
    listModels(): Promise<string[]>;
    private _compileChatMessages;
    private _getSystemMessage;
    private _templatePromptLikeMessages;
    private _compileLogMessage;
    private _logTokensGenerated;
    fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;
    private _parseCompletionOptions;
    private _formatChatMessages;
    streamComplete(_prompt: string, options?: LLMFullCompletionOptions): AsyncGenerator<string, {
        prompt: string;
        completion: string;
        completionOptions: CompletionOptions;
    }, unknown>;
    complete(_prompt: string, options?: LLMFullCompletionOptions): Promise<string>;
    chat(messages: ChatMessage[], options?: LLMFullCompletionOptions): Promise<{
        role: ChatMessageRole;
        content: string;
    }>;
    streamChat(_messages: ChatMessage[], options?: LLMFullCompletionOptions): AsyncGenerator<ChatMessage, PromptLog>;
    protected _streamComplete(prompt: string, options: CompletionOptions): AsyncGenerator<string>;
    protected _streamChat(messages: ChatMessage[], options: CompletionOptions): AsyncGenerator<ChatMessage>;
    protected _complete(prompt: string, options: CompletionOptions): Promise<string>;
    countTokens(text: string): number;
    protected collectArgs(options: CompletionOptions): any;
    renderPromptTemplate(template: PromptTemplate, history: ChatMessage[], otherData: Record<string, string>, canPutWordsInModelsMouth?: boolean): string | ChatMessage[];
}
//# sourceMappingURL=index.d.ts.map