import type { ValidatedConfig } from '../config-schema.js';
import type { LlmProvider } from './provider-base.js';
/** Role names recognised by Stage 1 callers. Strings rather than enum so
 *  forward-compat roles (added in later stages) compile against an older
 *  agim without type errors. */
export type LlmRole = 'cheap' | 'evaluator' | 'native-chat' | string;
/**
 * Build the registry from a validated config. Idempotent — repeated
 * calls fully replace the previous state. Logs (info / warn) the load
 * outcome so operators see what landed at startup.
 */
export declare function loadFromConfig(cfg: ValidatedConfig | {
    llmBackends?: unknown;
    llmRoles?: unknown;
}): void;
/**
 * Get the provider configured for `role`, or null when no usable
 * backend is wired. Callers should NEVER throw on null — that's how the
 * registry tells them "fall back to your CLI path".
 */
export declare function getProvider(role: LlmRole): LlmProvider | null;
/** Look up a provider directly by backend name (mostly for the web
 *  "Test connection" button and unit tests). */
export declare function getProviderByName(name: string): LlmProvider | null;
/** List all configured backends — handy for the web UI roster. */
export declare function listProviders(): {
    name: string;
    providerType: string;
    model: string;
}[];
/** Test/diagnostic: clear the registry. Used by bun tests so module
 *  state doesn't leak across cases. */
export declare function _resetRegistry(): void;
/** Diagnostic snapshot for the cost dashboard's "LLM backends" tile. */
export declare function describeRegistry(): {
    backends: {
        name: string;
        providerType: string;
        model: string;
    }[];
    roles: Record<string, string>;
    unconfigured: string[];
};
//# sourceMappingURL=registry.d.ts.map