import { ProviderV4, LanguageModelV4, EmbeddingModelV4, SpeechModelV4 } from '@ai-sdk/provider';
import { FetchFunction } from '@ai-sdk/provider-utils';
import { z } from 'zod/v4';

type MistralChatModelId = 'ministral-3b-latest' | 'ministral-8b-latest' | 'ministral-14b-latest' | 'mistral-large-latest' | 'mistral-medium-latest' | 'mistral-medium-3' | 'mistral-large-2512' | 'mistral-medium-2508' | 'mistral-medium-2505' | 'mistral-small-2506' | 'pixtral-large-latest' | 'mistral-medium-3.5' | 'mistral-small-latest' | 'mistral-small-2603' | 'magistral-medium-latest' | 'magistral-small-latest' | 'magistral-medium-2509' | 'magistral-small-2509' | (string & {});
declare const mistralLanguageModelChatOptions: z.ZodObject<{
    safePrompt: z.ZodOptional<z.ZodBoolean>;
    documentImageLimit: z.ZodOptional<z.ZodNumber>;
    documentPageLimit: z.ZodOptional<z.ZodNumber>;
    structuredOutputs: z.ZodOptional<z.ZodBoolean>;
    strictJsonSchema: z.ZodOptional<z.ZodBoolean>;
    parallelToolCalls: z.ZodOptional<z.ZodBoolean>;
    reasoningEffort: z.ZodOptional<z.ZodEnum<{
        none: "none";
        high: "high";
    }>>;
}, z.core.$strip>;
type MistralLanguageModelChatOptions = z.infer<typeof mistralLanguageModelChatOptions>;

type MistralEmbeddingModelId = 'mistral-embed' | 'codestral-embed-2505' | (string & {});
declare const mistralEmbeddingModelOptions: z.ZodObject<{
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
    outputDimension: z.ZodOptional<z.ZodNumber>;
    outputDtype: z.ZodOptional<z.ZodEnum<{
        float: "float";
        int8: "int8";
        uint8: "uint8";
        binary: "binary";
        ubinary: "ubinary";
    }>>;
}, z.core.$strip>;
type MistralEmbeddingModelOptions = z.infer<typeof mistralEmbeddingModelOptions>;

type MistralSpeechModelId = 'voxtral-mini-tts-2603' | (string & {});
declare const mistralSpeechModelOptions: z.ZodObject<{
    refAudio: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type MistralSpeechModelOptions = z.infer<typeof mistralSpeechModelOptions>;

interface MistralProvider extends ProviderV4 {
    (modelId: MistralChatModelId): LanguageModelV4;
    /**
     * Creates a model for text generation.
     */
    languageModel(modelId: MistralChatModelId): LanguageModelV4;
    /**
     * Creates a model for text generation.
     */
    chat(modelId: MistralChatModelId): LanguageModelV4;
    /**
     * Creates a model for text embeddings.
     */
    embedding(modelId: MistralEmbeddingModelId): EmbeddingModelV4;
    /**
     * Creates a model for text embeddings.
     */
    embeddingModel: (modelId: MistralEmbeddingModelId) => EmbeddingModelV4;
    /**
     * Creates a model for speech generation (text-to-speech).
     */
    speech(modelId: MistralSpeechModelId): SpeechModelV4;
    /**
     * Creates a model for speech generation (text-to-speech).
     */
    speechModel(modelId: MistralSpeechModelId): SpeechModelV4;
    /**
     * @deprecated Use `embedding` instead.
     */
    textEmbedding(modelId: MistralEmbeddingModelId): EmbeddingModelV4;
    /**
     * @deprecated Use `embeddingModel` instead.
     */
    textEmbeddingModel(modelId: MistralEmbeddingModelId): EmbeddingModelV4;
}
interface MistralProviderSettings {
    /**
     * Use a different URL prefix for API calls, e.g. to use proxy servers.
     * The default prefix is `https://api.mistral.ai/v1`.
     */
    baseURL?: string;
    /**
     * API key that is being send using the `Authorization` header.
     * It defaults to the `MISTRAL_API_KEY` environment variable.
     */
    apiKey?: string;
    /**
     * Custom headers to include in the requests.
     */
    headers?: Record<string, string>;
    /**
     * Custom fetch implementation. You can use it as a middleware to intercept requests,
     * or to provide a custom fetch implementation for e.g. testing.
     */
    fetch?: FetchFunction;
    generateId?: () => string;
}
/**
 * Create a Mistral AI provider instance.
 */
declare function createMistral(options?: MistralProviderSettings): MistralProvider;
/**
 * Default Mistral provider instance.
 */
declare const mistral: MistralProvider;

declare const VERSION: string;

export { type MistralEmbeddingModelOptions, type MistralLanguageModelChatOptions, type MistralLanguageModelChatOptions as MistralLanguageModelOptions, type MistralProvider, type MistralProviderSettings, type MistralSpeechModelId, type MistralSpeechModelOptions, VERSION, createMistral, mistral };
