import { LlamaLogLevel } from "./types.js";
import { Llama } from "./Llama.js";
export type LlamaOptions = {
    /**
     * Toggle Metal support in llama.cpp.
     * Only supported on macOS.
     * Enabled by default on Apple Silicon Macs.
     */
    metal?: boolean;
    /**
     * Toggle CUDA support on llama.cpp.
     * Disabled by default.
     */
    cuda?: boolean;
    /**
     * Set the minimum log level for llama.cpp.
     * Defaults to "debug".
     */
    logLevel?: LlamaLogLevel;
    /**
     * Set a custom logger for llama.cpp logs.
     */
    logger?: (level: LlamaLogLevel, message: string) => void;
    /**
     * Set what build method to use.
     * - **`"auto"`**: If a local build is found, use it.
     * Otherwise, if a prebuilt binary is found, use it.
     * Otherwise, build from source.
     * - **`"never"`**: If a local build is found, use it.
     * Otherwise, if a prebuilt binary is found, use it.
     * Otherwise, throw a `NoBinaryFoundError` error.
     * - **`"forceRebuild"`**: Always build from source.
     * Be cautious with this option, as it will cause the build to fail on Windows when the binaries are in use by another process.
     *
     * Defaults to "auto".
     */
    build?: "auto" | "never" | "forceRebuild";
    /**
     * Set custom CMake options for llama.cpp
     */
    cmakeOptions?: Record<string, string>;
    /**
     * When a prebuilt binary is found, only use it if it was built with the same build options as the ones specified in `buildOptions`.
     * Disabled by default.
     */
    existingPrebuiltBinaryMustMatchBuildOptions?: boolean;
    /**
     * Use prebuilt binaries if they match the build options.
     * Enabled by default.
     */
    usePrebuiltBinaries?: boolean;
    /**
     * Print binary compilation progress logs.
     * Enabled by default.
     */
    progressLogs?: boolean;
    /**
     * Don't download llama.cpp source if it's not found.
     * When set to `true`, and llama.cpp source is not found, a `NoBinaryFoundError` error will be thrown.
     * Disabled by default.
     */
    skipDownload?: boolean;
};
export type LastBuildOptions = {
    /**
     * Set the minimum log level for llama.cpp.
     * Defaults to "debug".
     */
    logLevel?: LlamaLogLevel;
    /**
     * Set a custom logger for llama.cpp logs.
     */
    logger?: (level: LlamaLogLevel, message: string) => void;
};
export declare const getLlamaFunctionName = "getLlama";
/**
 * Get a llama.cpp binding.
 * Defaults to prefer a prebuilt binary, and fallbacks to building from source if a prebuilt binary is not found.
 * Pass `"lastCliBuild"` to default to use the last successful build created using the `download` or `build` CLI commands if one exists.
 */
export declare function getLlama(): Promise<Llama>;
export declare function getLlama(options: LlamaOptions, lastBuildOptions?: never): Promise<Llama>;
export declare function getLlama(type: "lastBuild", lastBuildOptions?: LastBuildOptions): Promise<Llama>;
