/**
 * Cloud provider registry.
 *
 * Reads the `cloud` section of agents.yaml, lazily instantiates provider
 * implementations, and exposes lookup helpers used by the `agents cloud` commands.
 */
import type { CloudProvider, CloudProviderId } from './types.js';
/**
 * The cloud provider an agent dispatches to by default. Reads the canonical
 * `cloudProvider` field on the agent registry entry — one source of truth, no
 * side map. Returns undefined for agents with no native cloud.
 */
export declare function nativeProviderForAgent(agentId: string): CloudProviderId | undefined;
/** Look up a provider by ID, throwing if the ID is unknown. */
export declare function getProvider(id: CloudProviderId): CloudProvider;
/** Return the user's configured default provider, falling back to 'rush'. */
export declare function getDefaultProviderId(): CloudProviderId;
/** Return every registered provider (used by `agents cloud providers`). */
export declare function getAllProviders(): CloudProvider[];
/**
 * Resolve the active provider for a dispatch.
 *
 * Precedence: explicit `--provider` > the agent's native cloud
 * (`cloudProvider`) > configured `cloud.default_provider` > `rush`. This is
 * what makes `agents cloud run --agent droid` land on Factory and
 * `--agent codex` land on Codex Cloud without the user naming a provider.
 *
 * Callers that already hold a concrete provider id (e.g. resolving a stored
 * task's provider) pass it as `explicit` and the agent arg is ignored.
 */
export declare function resolveProvider(explicit?: string, agentId?: string): CloudProvider;
