import type { LstRegistryEntry } from '../registry';
import { type LstReader } from './shared';
/**
 * Stader ETHx reader.
 *
 * Two calls: `ETHx.totalSupply()` + `StakePoolsManager
 * .getExchangeRate()` (returns 1e18-scaled ETH-per-ETHx rate).
 *
 * Fallback: when `readerExtras.staderStakePoolsManager` is absent,
 * fall back to `ETHx.totalSupply()` with a 1:1 placeholder rate.
 */
export declare const readerStaderEthx: (entry: LstRegistryEntry) => LstReader;
/**
 * Stader MaticX reader.
 *
 * Two calls:
 *  1. `MaticX.totalSupply()` — on the entry's chain (Ethereum
 *     L1 entry or Polygon bridge-token entry)
 *  2. `convertMaticXToMatic(1e18)` — on the **home** contract; the
 *     Polygon bridge child has no rate getter, so the call always
 *     goes to the Ethereum home contract. When
 *     `readerExtras.staderMaticXHomeContract` is set, the call is
 *     dispatched cross-chain to the home contract on
 *     `readerExtras.staderMaticXHomeChainId`. Otherwise it's a
 *     local call on `entry.address`.
 *
 * The 3-tuple return is `(amountInMatic, totalShares,
 * totalPooledMatic)`; element 0 is the 1e18-scaled rate, element 2
 * is total MATIC pooled (a stronger `totalAssets` than the derived
 * `totalSupply * rate / 1e18`, but only from the home chain — on
 * Polygon we still surface the Polygon-side `totalSupply`).
 */
export declare const readerStaderMaticX: (entry: LstRegistryEntry) => LstReader;
//# sourceMappingURL=stader.d.ts.map