import { type LanguageModel, type Schema } from "ai";
import type { ZodType } from "zod";
import { AIProviderName } from "../constants/enums.js";
import { BaseProvider } from "../core/baseProvider.js";
import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
/**
 * OpenRouter Provider - BaseProvider Implementation
 * Provides access to 300+ models from 60+ providers via OpenRouter unified gateway
 */
export declare class OpenRouterProvider extends BaseProvider {
    private model;
    private openRouterClient;
    private static modelsCache;
    private static modelsCacheTime;
    private static readonly MODELS_CACHE_DURATION;
    private static toolCapableModels;
    private static capabilitiesCached;
    constructor(modelName?: string, sdk?: unknown);
    protected getProviderName(): AIProviderName;
    protected getDefaultModel(): string;
    /**
     * Returns the Vercel AI SDK model instance for OpenRouter
     */
    protected getAISDKModel(): LanguageModel;
    formatProviderError(error: unknown): Error;
    /**
     * OpenRouter supports tools for compatible models
     * Checks cached model capabilities or uses known patterns as fallback
     */
    supportsTools(): boolean;
    /**
     * Provider-specific streaming implementation
     * Note: This is only used when tools are disabled
     */
    protected executeStream(options: StreamOptions, analysisSchema?: ZodType | Schema<unknown>): Promise<StreamResult>;
    /**
     * Get available models from OpenRouter API
     * Dynamically fetches from /api/v1/models endpoint with caching and fallback
     */
    getAvailableModels(): Promise<string[]>;
    /**
     * Fetch available models from OpenRouter API /api/v1/models endpoint
     * @private
     */
    private fetchModelsFromAPI;
    /**
     * Type guard to validate the models API response structure
     * @private
     */
    private isValidModelsResponse;
    /**
     * Fetch and cache model capabilities from OpenRouter API
     * Call this to enable accurate tool support detection
     */
    cacheModelCapabilities(): Promise<void>;
}
