import { ModelVariant } from './modelVariant.js';
import { ChatClient } from '../openai/chatClient.js';
import { AudioClient } from '../openai/audioClient.js';
import { EmbeddingClient } from '../openai/embeddingClient.js';
import { ResponsesClient } from '../openai/responsesClient.js';
import { LiveAudioTranscriptionSession } from '../openai/liveAudioSession.js';
import { IModel } from '../imodel.js';
import { ModelInfo } from '../types.js';
/**
 * Represents a high-level AI model that may have multiple variants (e.g., quantized versions, different formats).
 * Manages the selection and interaction with a specific model variant.
 */
export declare class Model implements IModel {
    private _alias;
    private _variants;
    private selectedVariant;
    constructor(variant: ModelVariant);
    /**
     * Adds a new variant to this model.
     * Automatically selects the new variant if it is cached and the current one is not.
     * @param variant - The model variant to add.
     * @throws Error - If the variant's alias does not match the model's alias.
     * @internal
     */
    addVariant(variant: ModelVariant): void;
    /**
     * Selects a specific variant.
     * @param variant - The model variant to select. Must be one of the variants in `variants`.
     * @throws Error - If the variant does not belong to this model.
     */
    selectVariant(variant: IModel): void;
    /**
     * Gets the ID of the currently selected variant.
     * @returns The ID of the selected variant.
     */
    get id(): string;
    /**
     * Gets the alias of the model.
     * @returns The model alias.
     */
    get alias(): string;
    /**
     * Gets the ModelInfo of the currently selected variant.
     * @returns The ModelInfo object.
     */
    get info(): ModelInfo;
    /**
     * Checks if the currently selected variant is cached locally.
     * @returns True if cached, false otherwise.
     */
    get isCached(): boolean;
    /**
     * Checks if the currently selected variant is loaded in memory.
     * @returns True if loaded, false otherwise.
     */
    isLoaded(): Promise<boolean>;
    /**
     * Gets all available variants for this model.
     * @returns An array of IModel objects.
     */
    get variants(): IModel[];
    get contextLength(): number | null;
    get inputModalities(): string | null;
    get outputModalities(): string | null;
    get capabilities(): string | null;
    get supportsToolCalling(): boolean | null;
    /**
     * Downloads the currently selected variant.
     * @param progressCallbackOrSignal - Optional progress callback or AbortSignal.
     * @param signal - Optional AbortSignal when a progress callback is provided.
     */
    download(progressCallbackOrSignal?: ((progress: number) => void) | AbortSignal, signal?: AbortSignal): Promise<void>;
    /**
     * Gets the local file path of the currently selected variant.
     * @returns The local file path.
     */
    get path(): string;
    /**
     * Loads the currently selected variant into memory.
     * @returns A promise that resolves when the model is loaded.
     */
    load(): Promise<void>;
    /**
     * Removes the currently selected variant from the local cache.
     */
    removeFromCache(): void;
    /**
     * Unloads the currently selected variant from memory.
     * @returns A promise that resolves when the model is unloaded.
     */
    unload(): Promise<void>;
    /**
     * Creates a ChatClient for interacting with the model via chat completions.
     * @returns A ChatClient instance.
     */
    createChatClient(): ChatClient;
    /**
     * Creates an AudioClient for interacting with the model via audio operations.
     * @returns An AudioClient instance.
     */
    createAudioClient(): AudioClient;
    /**
     * Creates an EmbeddingClient for generating text embeddings with the model.
     * @returns An EmbeddingClient instance.
     */
    createEmbeddingClient(): EmbeddingClient;
    /**
     * Creates a LiveAudioTranscriptionSession for real-time audio streaming ASR.
     * @returns A LiveAudioTranscriptionSession instance.
     */
    createLiveTranscriptionSession(): LiveAudioTranscriptionSession;
    /**
     * Creates a ResponsesClient for interacting with the model via the Responses API.
     * @param baseUrl - The base URL of the Foundry Local web service.
     * @returns A ResponsesClient instance.
     */
    createResponsesClient(baseUrl: string): ResponsesClient;
}
