import { ChatHistoryItem, ChatModelFunctions, ChatModelResponse } from "./types.js";
import { LlamaText } from "./utils/LlamaText.js";
export type ChatWrapperSettings = {
    readonly functions: {
        readonly call: {
            readonly optionalPrefixSpace: boolean;
            readonly prefix: string;
            readonly paramsPrefix: string;
            readonly suffix: string;
        };
        readonly result: {
            readonly prefix: string;
            readonly suffix: string;
        };
    };
};
export declare abstract class ChatWrapper {
    abstract readonly wrapperName: string;
    readonly settings: ChatWrapperSettings;
    generateContextText(history: readonly ChatHistoryItem[], { availableFunctions, documentFunctionParams }?: {
        availableFunctions?: ChatModelFunctions;
        documentFunctionParams?: boolean;
    }): {
        contextText: LlamaText;
        stopGenerationTriggers: LlamaText[];
        ignoreStartText?: LlamaText[];
        functionCall?: {
            initiallyEngaged: boolean;
            disengageInitiallyEngaged: LlamaText[];
        };
    };
    generateFunctionCallAndResult(name: string, params: any, result: any): string;
    generateFunctionCall(name: string, params: any): string;
    generateFunctionCallResult(functionName: string, functionParams: any, result: any): string;
    generateModelResponseText(modelResponse: ChatModelResponse["response"]): string;
    generateAvailableFunctionsSystemText(availableFunctions: ChatModelFunctions, { documentParams }: {
        documentParams?: boolean;
    }): string;
    addAvailableFunctionsSystemMessageToHistory(history: readonly ChatHistoryItem[], availableFunctions?: ChatModelFunctions, { documentParams }?: {
        documentParams?: boolean;
    }): readonly ChatHistoryItem[];
    /**
     * Functions that should be made available as part of the function calling grammar and are handled by the chat wrapper
     * for grammar purposes only
     */
    getInternalBuiltinFunctions({ initialFunctionCallEngaged }: {
        initialFunctionCallEngaged: boolean;
    }): ChatModelFunctions;
}
