/**
 * Alias → strategy resolver. Branches on `(mode, impl)` and dispatches to
 * the matching strategy module. The dispatcher is a pure function: no
 * state, no side effects. It owns ONE decision — given a config, which
 * strategy handles it. Strategy modules own the actual call mechanics.
 *
 * Model neutrality surface: this file branches on abstract mode names
 * (`subscription`, `api`, `local`, `mcp`) and abstract impl names
 * (`cli`, `sdk`), never on vendor identity. The provider split for `api`
 * mode reads `cfg.provider` (a user-supplied string), so even there no
 * vendor name is hardcoded — providers compare against the abstract
 * label users wrote in `models.yaml`.
 *
 * Mode coverage (post LLM.4 — all five modes now concrete):
 *   - (subscription, cli)            → subscriptionCliStrategy
 *   - (subscription, sdk)            → subscriptionSdkStrategy
 *   - (api, *), provider=anthropic   → apiAnthropicStrategy (needs secrets)
 *   - (api, *), provider=openai      → apiOpenAIStrategy    (needs secrets)
 *   - (local, *)                     → localOllamaStrategy (Ollama is the
 *                                       only Phase-1 local impl)
 *   - (mcp, *)                       → mcpStrategy (fail-fasts on missing
 *                                       server/tool at factory time)
 *
 * Secrets dependency:
 *   API strategies need a `SecretResolver` to read the user's API key.
 *   `resolveStrategy` accepts it as an optional second parameter so the
 *   existing (subscription, cli) and (subscription, sdk) callers don't
 *   have to thread it. If a user picks api mode without passing secrets,
 *   the resolver throws at resolve time — a config error, not a runtime
 *   surprise on first call.
 *
 * Imports from: ./types.js, ./strategies/*.js, ../secrets/types.js.
 * Imported by: functions/llm.ts.
 */
import type { SecretResolver } from '../secrets/types.js';
import type { ModelAliasConfig, ModelStrategy } from './types.js';
export declare function resolveStrategy(alias: string, config: ModelAliasConfig, secrets?: SecretResolver): ModelStrategy;
//# sourceMappingURL=dispatcher.d.ts.map