import { PromptForObject } from "./prompt-for-json";
/**
 * LanguageProvider is an abstract class that represents a language model and
 * its basic functionality.
 */
export declare abstract class LanguageProvider {
    readonly name: string;
    constructor(name: string);
    abstract ask(prompt: string, onResult: (result: LangResultWithString) => void): Promise<LangResultWithString>;
    abstract chat(messages: LangChatMessages, onResult: (result: LangResultWithMessages) => void): Promise<LangResultWithMessages>;
    askForObject(promptObj: PromptForObject, onResult?: (result: LangResultWithObject) => void): Promise<LangResultWithObject>;
}
interface LangProcessingResult {
    prompt: string;
    finished: boolean;
    thinking?: string;
}
export declare class LangResultWithString implements LangProcessingResult {
    prompt: string;
    answer: string;
    thinking?: string;
    finished: boolean;
    constructor(prompt: string);
    toString(): string;
    abort(): void;
}
export declare class LangResultWithObject implements LangProcessingResult {
    answerObj: object;
    answer: string;
    thinking?: string;
    prompt: string;
    finished: boolean;
    constructor(prompt: string);
    toString(): string;
}
export type LangChatMessages = {
    role: string;
    content: string;
}[];
export declare class LangResultWithMessages implements LangProcessingResult {
    prompt: string;
    answer: string;
    thinking?: string;
    messages: LangChatMessages;
    finished: boolean;
    constructor(messages: LangChatMessages);
    toString(): string;
    abort(): void;
}
export {};
