/**
 * Provider Registry — declarative metadata for LLM providers.
 *
 * Centralizes provider knowledge (API key env vars, model name keywords,
 * capabilities, local vs cloud) into a single lookup table. Adding a new
 * provider is a single data entry — no new classes needed.
 *
 * Inspired by Nanobot's 2-step provider registry pattern.
 *
 * @module
 */
export type ProviderCapabilities = {
    /** Whether this provider supports native function/tool calling. */
    nativeToolCalling: boolean;
    /** Whether this provider supports vision (image inputs). */
    vision: boolean;
    /** Whether this provider supports streaming responses. */
    streaming: boolean;
};
export type ProviderSpec = {
    /** Internal name (matches config field, e.g. "anthropic"). */
    name: string;
    /** Human-readable display name. */
    displayName: string;
    /** Model name keyword prefixes for matching (e.g. ["claude"] matches "claude-sonnet-4"). */
    keywords: string[];
    /** Environment variable for the API key (empty string for keyless providers). */
    envKey: string;
    /** Default API base URL. */
    defaultApiBase: string;
    /** Whether this is a local model provider (Ollama, LM Studio, etc.). */
    isLocal: boolean;
    /** Provider capabilities. */
    capabilities: ProviderCapabilities;
};
/**
 * Find a provider by its name (e.g. "anthropic", "ollama").
 */
export declare function findByName(name: string): ProviderSpec | undefined;
/**
 * Find a provider by matching a model ID against keyword prefixes.
 *
 * For a model ID like "claude-sonnet-4", this checks if any provider's
 * keywords array has a matching prefix. Returns the first match.
 */
export declare function findByModel(modelId: string): ProviderSpec | undefined;
/**
 * Find a provider by its default API base URL.
 */
export declare function findByApiBase(baseUrl: string): ProviderSpec | undefined;
/**
 * Get all registered providers.
 */
export declare function getAllProviders(): readonly ProviderSpec[];
/**
 * Get all local providers.
 */
export declare function getLocalProviders(): ProviderSpec[];
/**
 * Check if a provider supports native tool calling.
 */
export declare function supportsToolCalling(providerName: string): boolean;
/**
 * Check if a provider supports vision (image inputs).
 */
export declare function supportsVision(providerName: string): boolean;
