import { LlamaGrammar } from "../../LlamaGrammar.js";
import { ChatModelFunctions } from "../../../types.js";
import { ChatWrapper } from "../../../ChatWrapper.js";
import { LlamaChatResponseFunctionCall } from "../LlamaChat.js";
import { Llama } from "../../../bindings/Llama.js";
export declare class FunctionCallGrammar<const Functions extends ChatModelFunctions> extends LlamaGrammar {
    private readonly _functions;
    private readonly _chatWrapper;
    constructor(llama: Llama, functions: Functions, chatWrapper: ChatWrapper, initialFunctionCallEngaged: boolean);
    parseFunctionCall(callText: string): LlamaChatResponseFunctionCall<Functions>;
    parseFunctionNameFromPartialCall(callText: string, { enableInternalBuiltinFunctions, initialFunctionCallEngaged }?: {
        enableInternalBuiltinFunctions?: boolean;
        initialFunctionCallEngaged?: boolean;
    }): keyof Functions & string;
    private _validateFunctions;
}
export declare class LlamaFunctionCallValidationError<const Functions extends ChatModelFunctions> extends Error {
    readonly functions: Functions;
    readonly chatWrapper: ChatWrapper;
    readonly callText: string;
    constructor(message: string, functions: Functions, chatWrapper: ChatWrapper, callText: string);
}
