/**
 * Smart provider auto-resolution
 * 1. Check user/project config.yaml defaults (if set)
 * 2. Fall back to first provider with a configured API key
 *
 * Provider candidate lists (image / video / speech) are derived from the
 * `defineProvider` registry in `@vibeframe/ai-providers/api-keys.ts` +
 * each provider's `index.ts`. Priority order, label, and envvar mapping
 * all live there now — adding a new provider is a single declaration.
 *
 * Pre-v0.68 the IMAGE_PROVIDERS / VIDEO_PROVIDERS / SPEECH_PROVIDERS
 * arrays were hardcoded here and cross-validated against four other
 * files via `scripts/sync-counts.sh` category B. v0.68 collapsed all
 * five into a single registry; the cross-validation became structural.
 */
import { type ProviderCandidate } from "@vibeframe/ai-providers";
import type { VibeConfig } from "../config/schema.js";
export type { ProviderCandidate };
export declare function loadProviderDefaultsFromConfig(config: VibeConfig | null | undefined): void;
/**
 * Load provider defaults from config (async, cached).
 * Call once at startup if you want config-aware resolution.
 */
export declare function loadProviderDefaults(): Promise<void>;
/**
 * Resolve the best available provider for a given category.
 * Priority: 1) config defaults  2) first provider with API key
 */
export declare function resolveProvider(category: "image" | "video" | "speech"): {
    name: string;
    label: string;
} | null;
