/**
 * SerpAPI key resolver.
 *
 * Three tiers, highest priority first:
 *   1. Per-agent bundle (`credentialBundle.body.serpapi.apiKey`) —
 *      delivered by the heartbeat. Authoritative when present.
 *   2. Shared in-memory heartbeat cache (`sharedKeys.serpApiKey`) —
 *      populated by `setSharedSerpApiKey` from the heartbeat shared-keys
 *      block, so a SerpAPI key configured at the onboarding service level
 *      is usable by any agent that doesn't have a per-agent bundle key.
 *   3. Local `config.serpApiKey` — manual or per-agent persisted fallback.
 *      The per-agent bundle apply overwrites this slot unconditionally;
 *      the shared-keys apply only seeds it when currently empty.
 *
 * Mirrors `gemini-credentials.ts` / `anthropic-credentials.ts` /
 * `phonecall-credentials.ts`.
 */
import type { VisionClawConfig } from "./config/types.js";
export declare function setBundleSerpApiKey(apiKey: string | undefined): boolean;
export declare function setSharedSerpApiKey(apiKey: string | undefined): boolean;
/**
 * Resolve the SerpAPI key to use.
 *
 * Precedence: per-agent bundle > shared cache > local config (offline cache).
 */
export declare function resolveSerpApiKey(config: VisionClawConfig): string | undefined;
//# sourceMappingURL=serpapi-credentials.d.ts.map