/**
 * Normalised shape for a single pending withdrawal request, uniform
 * across all LST protocols regardless of underlying mechanism
 * (fixed-cooldown vs queue-finalization vs ERC-7540).
 *
 * Consumers (UI, worker-api) treat the list as a single bucket;
 * protocol-specific fields like `queuePosition` are populated when
 * available and ignored otherwise.
 *
 * See [../LST_WITHDRAWAL_QUEUES.md](../LST_WITHDRAWAL_QUEUES.md) for
 * the per-protocol enumeration ABI and the
 * [GAPS.md](../../GAPS.md) section A for the design intent.
 */
export interface LstWithdrawalRequest {
    /** LST share-token address the request was made against. */
    lst: string;
    /** Brand label — `Lido`, `EtherFi`, `Renzo`, … */
    brand: string;
    /** Symbol — `wstETH`, `weETH`, `ezETH`, … */
    symbol: string;
    /** Protocol-native request identifier (NFT tokenId, queue index,
     *  ERC-7540 requestId, …). Encoded as a string for cross-protocol
     *  uniformity. */
    requestId: string;
    /** Raw underlying amount the request will return on claim. Wei-like
     *  integer string. Some protocols only know this at claim time
     *  (queue-finalization with floating finalization rate) — those
     *  surface the **expected** amount at request time. */
    amountUnderlying: string;
    /** Status discriminator. */
    status: LstWithdrawalStatus;
    /** Unix seconds when the request becomes claimable. Set for
     *  fixed-cooldown protocols where the deadline is deterministic.
     *  Unset for queue-finalization protocols (use `queuePosition` +
     *  `etaSeconds` instead) and ERC-7540 (use `status` directly). */
    readyAt?: number;
    /** Unix seconds when the claim window closes. Currently only used
     *  by sAVAX (15-day cooldown + 2-day claim window). After this
     *  timestamp the request transitions to `expired` and the unlock
     *  is forfeited unless admin recovery is triggered. */
    expiresAt?: number;
    /** Position in the protocol's queue, relative to the finalization
     *  frontier. Set for queue-finalization protocols. Positive values
     *  mean "still pending"; zero or negative means "finalized". */
    queuePosition?: number;
    /** Off-chain estimate of seconds-to-claim. Only set when the
     *  orchestrator received a finalization-rate sample (TODO: not
     *  yet wired). Frontier-based protocols can show this when
     *  available. */
    etaSeconds?: number;
}
/** Status discriminator for a withdrawal request. */
export type LstWithdrawalStatus = 
/** Submitted; not yet claimable. */
'pending'
/** Ready to claim now. */
 | 'claimable'
/** Already claimed (typically pruned from the list — kept for
 *  protocols that surface historical entries via the same getter). */
 | 'claimed'
/** Window expired without being claimed. Only meaningful for
 *  sAVAX-style protocols with a finite claim window. */
 | 'expired';
/** Withdrawal-reader implementation kind — drives which enumeration
 *  function the user is queried against. */
export type LstWithdrawalReaderKind = 'lidoQueue' | 'etherfiNft' | 'yieldNestNft' | 'staderEthxQueue' | 'staderMaticXQueue' | 'renzoQueue' | 'kelpQueue' | 'benqiSavaxQueue' | 'beetsStSQueue' | 'hyperbeatBeHype7540' | 'erc7540' | 'ethenaCooldown' | 'swellNft' | 'stakeWiseSubgraph' | 'mantleCallerSuppliedIds' | 'pufferCallerSuppliedIds' | 'trufinCallerSuppliedIds' | 'lairCallerSuppliedIds' | 'stceloAccountQueue' | 'kinetiqQueue' | 'beHypeQueue' | 'valantisBurnQueue' | 'listaQueue' | 'iberaQueue' | 'primeStakingQueue' | 'berapawRedeemQueue' | 'stellaUnbondQueue' | 'eventsOnly' | 'noQueue' | 'unverified';
/** Map keyed by lowercased LST share-token address. The orchestrator
 *  fetches all LSTs on a chain in parallel and returns this map
 *  (possibly with empty arrays for LSTs the user has no requests
 *  against). */
export type LstWithdrawalRequestsByLst = {
    [lstAddress: string]: LstWithdrawalRequest[];
};
//# sourceMappingURL=types.d.ts.map