/**
 * HermesPoolClient — Thin wrapper over the native Hermes credential pool.
 *
 * ╔════════════════════════════════════════════════════════════════════════╗
 * ║  WHY THIS EXISTS                                                          ║
 * ║                                                                            ║
 * ║  Hermes manages API keys centrally via `hermes auth add <provider>`.        ║
 * ║  Credentials are stored in a global pool with automatic rotation            ║
 * ║  (round_robin by default) and rate-limit aware failover.                   ║
 * ║                                                                            ║
 * ║  Overmind previously wrote `.env` files with hardcoded credentials per     ║
 * ║  profile. That defeated the pool — one key per profile, no rotation,        ║
 * ║  no failover. The right approach is to add credentials to the POOL          ║
 * ║  and let Hermes resolve them per profile.                                  ║
 * ║                                                                            ║
 * ║  Providers in the pool (from `hermes auth list`):                          ║
 * ║    - anthropic, copilot, deepseek, minimax, minimax-cn,                    ║
 * ║      openai-api, qwen-oauth, xai, zai                                      ║
 * ║                                                                            ║
 * ║  Per-profile: only config.yaml's `model.provider` is needed.               ║
 * ║  Hermes resolves the credentials + base_url from the pool automatically.    ║
 * ╚════════════════════════════════════════════════════════════════════════╝
 */
export interface PoolCredential {
    /** Display label, e.g. "GLM coding 34" or "DeepSeek 7" */
    label: string;
    /** Where the credential came from: env var, manual entry, OAuth file, etc. */
    source: 'env' | 'manual' | 'oauth' | 'gh_cli' | 'unknown';
    /** Currently active in the rotation (← marker) */
    active: boolean;
    /** Raw suffix of the key for display, e.g. "sk-o...e25b" */
    preview?: string;
    /** If rate-limited, e.g. "rate-limited rate_limit_error (429) (10m 10s left)" */
    status?: string;
}
export interface PoolProvider {
    /** Canonical Hermes provider id, e.g. "zai", "minimax-cn", "deepseek" */
    id: string;
    /** Total number of credentials in this provider's pool */
    count: number;
    /** True if at least one credential is currently active (not rate-limited) */
    hasActive: boolean;
    /** All credentials in the pool, in rotation order */
    credentials: PoolCredential[];
}
export declare class HermesPoolClient {
    /**
     * List all providers and their credentials from `hermes auth list`.
     * The output format is:
     *
     *   <provider-id> (N credentials):
     *     #1  <label>  api_key <source> [<status>] [←]
     *     #2  <label>  api_key <source>
     *     ...
     */
    static list(): Promise<PoolProvider[]>;
    static parseAuthList(raw: string): PoolProvider[];
    /**
     * Get a specific provider's pool info. Returns null if provider doesn't exist.
     */
    static getProvider(providerId: string): Promise<PoolProvider | null>;
    /**
     * Add a credential to a provider's pool.
     * Wraps `hermes auth add <provider> --api-key <key> [--inference-url <url>]`.
     */
    static addCredential(providerId: string, apiKey: string, opts?: {
        label?: string;
        inferenceUrl?: string;
    }): Promise<void>;
    /**
     * Remove a credential from a provider's pool by label.
     * Hermes auth remove uses positional <provider> <label>.
     */
    static removeCredential(providerId: string, label: string): Promise<void>;
    /**
     * Sync a list of credentials into the pool, deduped by label.
     * Useful for bulk-importing from an Overmind workspace .env.
     */
    static syncCredentials(providerId: string, credentials: Array<{
        apiKey: string;
        label?: string;
        inferenceUrl?: string;
    }>): Promise<{
        added: number;
        skipped: number;
    }>;
    /**
     * Check if a provider has at least one healthy credential available.
     */
    static isProviderHealthy(providerId: string): Promise<boolean>;
    /**
     * List all healthy providers (at least one non-rate-limited credential).
     */
    static listHealthyProviders(): Promise<string[]>;
    /**
     * Compute a short summary of the pool state — useful for status embeds / dashboards.
     */
    static summary(): Promise<{
        totalProviders: number;
        totalCredentials: number;
        healthyProviders: string[];
        rateLimitedProviders: string[];
    }>;
}
//# sourceMappingURL=HermesPoolClient.d.ts.map