import type { IChatClient } from './chatClient';
/**
 * Provider preset table for OpenAI Chat Completions-compatible backends.
 * Lookup is case-insensitive on the prefix before any `/`. Entries here
 * carry only public information — base URLs and which env var to read for
 * the API key. No secrets are baked in.
 */
export interface ProviderPreset {
    /** Display name used in errors/doctor output. */
    label: string;
    /** OpenAI-compatible base URL (without trailing slash). */
    baseUrl: string;
    /** Default model used when this backend is selected as a fallback. */
    defaultModel: string;
    /** Env vars checked in order for the API key. */
    apiKeyEnvVars: string[];
    /** Whether this provider/model path can participate in agent tool loops. */
    supportsTools?: boolean;
    /** Optional homepage for "where do I get a key?" hints. */
    signupUrl?: string;
}
export declare const OPENAI_COMPATIBLE_PRESETS: Record<string, ProviderPreset>;
export declare const REPLICATE_PRESET: ProviderPreset;
export interface CreateClientConfig {
    /** Backend identifier. `ollama` (default), `replicate`, or one of OPENAI_COMPATIBLE_PRESETS. */
    backend?: string;
    /** Model identifier passed to the backend. */
    model: string;
    /** Optional override for the Ollama host (ignored by OpenAI backends). */
    host?: string;
    /** Optional context-window override (used by OpenAI backends as a hint). */
    numCtx?: number;
    /** Cycle to other configured remote providers when the selected provider hits rate/quota/request limits. */
    autoFallback?: boolean;
}
/**
 * Construct the appropriate chat client based on `backend`.
 *
 * Backend resolution order:
 *   1. Explicit `config.backend` argument.
 *   2. `HARNESS_BACKEND` environment variable.
 *   3. `ollama` (default — preserves prior behaviour).
 *
 * For OpenAI-compatible backends, the API key is read from the first env
 * var listed in the preset that has a non-empty value.
 */
export declare function createChatClient(config: CreateClientConfig): IChatClient;
/** First non-empty value among the preset's listed env var names, or undefined. */
export declare function readApiKey(preset: ProviderPreset): string | undefined;
export declare function resolveProviderBaseUrl(preset: ProviderPreset): string;
//# sourceMappingURL=chatClientFactory.d.ts.map