/**
 * Maps existing provider doctor payloads onto the shared {@link ProviderHealth}
 * shape. This is additive: callers keep their original JSON keys and embed the
 * result under a `health` key.
 *
 * Only type imports are used so the module has no runtime dependencies and can
 * be unit-tested in isolation. The mapper never surfaces secret values — it
 * relies on boolean signals (e.g. `apiKeySet`) and environment-variable *names*.
 */
import type { ProviderHealth } from "../contracts/provider-health.js";
import type { ProviderDoctorStatus } from "./model-registry.js";
/** DeepSeek `provider doctor` JSON object shape (balance preflight + config). */
export interface DeepSeekDoctorHealthInput {
    provider: string;
    available: boolean;
    enabled?: boolean;
    apiKeySet?: boolean;
    checkedAt?: number;
    reason?: string;
    balance?: {
        is_available?: boolean;
    } | null;
}
/** Union of the doctor payloads the mapper understands. */
export type ProviderHealthInput = ProviderDoctorStatus | DeepSeekDoctorHealthInput;
/** Optional extra context (never carries secrets). */
export interface ProviderHealthExtras {
    /** Resolvable model override (used when the input lacks a `model`). */
    model?: string;
    /** ISO timestamp override (mainly for deterministic tests). */
    checkedAt?: string;
}
/**
 * Maps a provider doctor payload onto the shared {@link ProviderHealth} shape.
 *
 * @param status A {@link ProviderDoctorStatus} or DeepSeek doctor object.
 * @param extras Optional non-sensitive context overrides.
 */
export declare function toProviderHealth(status: ProviderHealthInput, extras?: ProviderHealthExtras): ProviderHealth;
