import { CompletionOptions, CompletionResponse, EmbeddingOptions, EmbeddingResponse, GenericClient, AudioTranscriptionOptions, AudioTranscriptionResponse, AudioGenerationOptions, AudioGenerationResponse, ImageGenerationOptions, ImageGenerationResponse, VideoGenerationOptions, VideoGenerationResponse, VideoStatusOptions, VideoStatusResponse, FileUploadOptions, FileUploadResponse, FileDownloadOptions, FileDownloadResponse } from "./types";
import { ModelProvider } from "../types";
import { OpenAiTextPricing } from "./pricing/openai";
import { AnthropicTextPricing } from "./pricing/anthropic";
import { GeminiPricing } from "./pricing/google";
import { XaiTextPricing, XaiImagePricing, XaiVideoPricing } from "./pricing/xai";
import type { ModelCatalogEntry } from "./pricing/types";
export { OpenAiTextPricing, AnthropicTextPricing, GeminiPricing, XaiTextPricing, XaiImagePricing, XaiVideoPricing, };
export type { ModelPricing, ModelType, ModelCatalogEntry, } from "./pricing/types";
type ProviderRegistryEntry = {
    clientClass?: new (arg1?: string, arg2?: string) => GenericClient;
    createClient?: (entry: ModelProvider) => GenericClient | null;
};
export declare class AIClient {
    clients: Record<string, GenericClient>;
    completionModels: Record<string, string[]>;
    embeddingModels: Record<string, string[]>;
    clientModels: Record<string, string[]>;
    imageModels: Record<string, string[]>;
    audioModels: Record<string, string[]>;
    videoModels: Record<string, string[]>;
    private providerRegistry;
    constructor();
    private _initDefaultProviders;
    resolveClient(entry: ModelProvider): GenericClient | null;
    private _registerClientModalities;
    private _mergeModels;
    registerModelProviders(providers: ModelProvider[]): Promise<void>;
    registerConfiguredModels(): Promise<void>;
    unregisterProvider(provider: string): void;
    registerClientClass(provider: string, entry: ProviderRegistryEntry): void;
    getClient(provider: string, model?: string): {
        client: GenericClient;
        provider: string;
        model: string;
    };
    registerClient(provider: string, client: GenericClient): void;
    setKey(provider: string, apiKey: string): void;
    loadProviderModels(provider: string): Promise<void>;
    registerModels(provider: string, models: string[]): void;
    registerClientProviderModels(client: GenericClient, providerModels: Record<string, string[]>): void;
    registerEmbeddingModels(provider: string, models: string[]): void;
    registerImageModels(provider: string, models: string[]): void;
    registerAudioModels(provider: string, models: string[]): void;
    registerVideoModels(provider: string, models: string[]): void;
    providerHasModel(provider: string, model: string): boolean;
    findModel(modelPrefix: string): any;
    private static normalizeModelId;
    findModelFuzzy(modelQuery: string, provider?: string): {
        provider: string;
        model: string;
    } | undefined;
    detectProviderModel(provider: string, model?: string): any;
    createCompletion(provider: string, options: CompletionOptions): Promise<CompletionResponse>;
    createEmbedding(provider: string, options: EmbeddingOptions): Promise<EmbeddingResponse>;
    createAudioTranscription(provider: string, options: AudioTranscriptionOptions): Promise<AudioTranscriptionResponse>;
    createAudioGeneration(provider: string, options: AudioGenerationOptions): Promise<AudioGenerationResponse>;
    createImageGeneration(provider: string, options: ImageGenerationOptions): Promise<ImageGenerationResponse>;
    createVideoGeneration(provider: string, options: VideoGenerationOptions): Promise<VideoGenerationResponse>;
    getVideoStatus(provider: string, options: VideoStatusOptions): Promise<VideoStatusResponse>;
    downloadVideo(provider: string, options: FileDownloadOptions): Promise<FileDownloadResponse>;
    uploadFile(provider: string, options: FileUploadOptions): Promise<FileUploadResponse>;
    downloadFile(provider: string, options: FileDownloadOptions): Promise<FileDownloadResponse>;
    getRegisteredModels(provider: string): string[];
    listAllModels(): Record<string, string[]>;
    listAllModelsWithProvider(): {
        id: string;
    }[];
    parseProviderPrefixedModels(client: GenericClient, knownProvider?: string): Promise<Record<string, string[]>>;
    listAllEmbeddingModels(): Record<string, string[]>;
    listAllCompletionModels(): Record<string, string[]>;
    listAllProviders(): string[];
    listAllImageModels(): Record<string, string[]>;
    listAllAudioModels(): Record<string, string[]>;
    listAllVideoModels(): Record<string, string[]>;
    getContextLimit(provider: string, model: string): {
        contextLimit: number;
        threshold: number;
    } | undefined;
    getPrices(modelId?: string): ModelCatalogEntry[];
}
export declare const Clients: AIClient;
export * from "./types";
export * from "./http";
export * from "./openai";
export * from "./anthropic";
export * from "./knowhow";
export * from "./gemini";
export * from "./contextLimits";
export * from "./xai";
export * from "./knowhowMcp";
export * from "./groq";
export * from "./github";
export * from "./nvidia";
export * from "./openrouter";
export * from "./deepseek";
export * from "./mistral";
export * from "./llama";
export * from "./copilot";
export * from "./fireworks";
