import { OllamaChatModelId, OllamaChatSettings } from './ollama-chat-settings.js';
import { ProviderV2, LanguageModelV2, EmbeddingModelV2 } from '@ai-sdk/provider';
import { OllamaEmbeddingModelId, OllamaEmbeddingSettings } from './ollama-embedding-settings.js';
import './ollama-models-list.js';

interface OllamaProvider extends ProviderV2 {
    (modelId: OllamaChatModelId, settings?: OllamaChatSettings): LanguageModelV2;
    chat(modelId: OllamaChatModelId, settings?: OllamaChatSettings): LanguageModelV2;
    embedding(modelId: OllamaEmbeddingModelId, settings?: OllamaEmbeddingSettings): EmbeddingModelV2<string>;
    languageModel(modelId: OllamaChatModelId, settings?: OllamaChatSettings): LanguageModelV2;
    textEmbeddingModel(modelId: OllamaEmbeddingModelId, settings?: OllamaEmbeddingSettings): EmbeddingModelV2<string>;
}
interface OllamaProviderSettings {
    /**
     * Base URL for Ollama API calls.
     */
    baseURL?: 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?: typeof fetch;
    /**
     * @internal
     */
    generateId?: () => string;
    /**
     * Custom headers to include in the requests.
     */
    headers?: Record<string, string>;
}
declare function createOllama(options?: OllamaProviderSettings): OllamaProvider;
declare const ollama: OllamaProvider;

export { type OllamaProvider, type OllamaProviderSettings, createOllama, ollama };
