import { CoreInterop } from './coreInterop.js';
import { ModelLoadManager } from './modelLoadManager.js';
import { ModelInfo } from '../types.js';
import { ChatClient } from '../openai/chatClient.js';
import { AudioClient } from '../openai/audioClient.js';
import { EmbeddingClient } from '../openai/embeddingClient.js';
import { LiveAudioTranscriptionSession } from '../openai/liveAudioSession.js';
import { ResponsesClient } from '../openai/responsesClient.js';
import { IModel } from '../imodel.js';
/**
 * Represents a specific variant of a model (e.g., a specific quantization or format).
 * Contains the low-level implementation for interacting with the model.
 * @internal
 */
export declare class ModelVariant implements IModel {
    private _modelInfo;
    private coreInterop;
    private modelLoadManager;
    constructor(modelInfo: ModelInfo, coreInterop: CoreInterop, modelLoadManager: ModelLoadManager);
    /**
     * Gets the unique identifier of the model variant.
     * @returns The model ID.
     */
    get id(): string;
    /**
     * Gets the alias of the model.
     * @returns The model alias.
     */
    get alias(): string;
    /**
     * Gets the detailed information about the model variant.
     * @returns The ModelInfo object.
     */
    get info(): ModelInfo;
    /**
     * A ModelVariant is a single variant, so variants returns itself.
     */
    get variants(): IModel[];
    /**
     * SelectVariant is not supported on a ModelVariant.
     * Call Catalog.getModel() to get an IModel with all variants available.
     * @throws Error always.
     */
    selectVariant(_variant: IModel): void;
    get contextLength(): number | null;
    get inputModalities(): string | null;
    get outputModalities(): string | null;
    get capabilities(): string | null;
    get supportsToolCalling(): boolean | null;
    /**
     * Checks if the model variant is cached locally.
     * @returns True if cached, false otherwise.
     */
    get isCached(): boolean;
    /**
     * Checks if the model variant is loaded in memory.
     * @returns True if loaded, false otherwise.
     */
    isLoaded(): Promise<boolean>;
    /**
     * Downloads the model variant.
     * @param progressCallbackOrSignal - Optional progress callback (0-100) 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 model variant.
     * @returns The local file path.
     */
    get path(): string;
    /**
     * Loads the model variant into memory.
     * @returns A promise that resolves when the model is loaded.
     */
    load(): Promise<void>;
    /**
     * Removes the model variant from the local cache.
     */
    removeFromCache(): void;
    /**
     * Unloads the model 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;
}
