import { type Address } from 'viem';
export interface StCeloValidatorGroup {
    /** Validator-group address (checksummed) to pass as the deposit's
     *  `options.validatorGroup`. */
    group: Address;
    /** Receivable-vote capacity, raw CELO (wei) as string. The amount of new
     *  stake this group can still absorb before it overflows. */
    receivableVotes: string;
}
/**
 * Fetch the currently-depositable StakedCelo validator groups on-chain,
 * ranked by remaining capacity (descending).
 *
 * Rotates through the configured Celo RPCs (`maxRpcTries`) so one flaky
 * endpoint doesn't fail the read. Throws only if every RPC fails.
 */
export declare const getStCeloValidatorGroups: (maxRpcTries?: number) => Promise<StCeloValidatorGroup[]>;
/** StakedCelo `Manager` on Celo mainnet (42220), lowercased. */
export declare const STCELO_MANAGER_ADDRESS = "0x0239b96d10a434a56cc9e09383077a0490cf9398";
/**
 * Decide which validator group (if any) a stCELO deposit should set via
 * `changeStrategy` before `deposit()` — the value to pass as the builder's
 * `options.validatorGroup`. Resolution order:
 *
 *  1. An explicit `requestedGroup` is honoured verbatim (the zero address
 *     means "use the default strategy" → returns `undefined`, no
 *     `changeStrategy`). `changeStrategy` validates eligibility on-chain.
 *  2. Otherwise the caller's current strategy is read: if it is already a
 *     specific group (`getAddressStrategy != 0`, which the Manager keeps
 *     non-zero only while the group stays healthy), the plain `deposit()`
 *     works and `undefined` is returned.
 *  3. If the caller is on the **default** strategy — which currently reverts
 *     `Not validator group` on mainnet — the best-capacity eligible group is
 *     returned so the deposit is routed somewhere valid.
 *
 * Best-effort: returns `undefined` if the chain reads fail, leaving the
 * deposit unchanged rather than throwing.
 */
export declare const resolveStCeloDepositGroup: (user: Address, requestedGroup?: string, maxRpcTries?: number) => Promise<Address | undefined>;
//# sourceMappingURL=celoValidatorGroups.d.ts.map