UNPKG

@chorus-one/ethereum

Version:

All-in-one toolkit for building staking dApps on Ethereum network

62 lines (57 loc) 1.91 kB
import { Hex } from 'viem' import { StakewiseConnector } from '../connector' export const getUnstakeQueue = async (params: { connector: StakewiseConnector; userAccount: Hex; vault: Hex }) => { const { connector, vault, userAccount } = params const queueData = await connector.graphqlRequest({ type: 'graph', op: 'exitQueue', query: ` query exitQueue($where: ExitRequest_filter) { exitRequests(where: $where) { receiver isClaimed timestamp totalAssets isClaimed isClaimable exitedAssets isV2Position positionTicket exitQueueIndex withdrawalTimestamp } } `, variables: { where: { vault: vault.toLowerCase(), receiver: userAccount.toLowerCase() } } }) if (!queueData.data.exitRequests) { throw new Error('Queue data is missing the exitRequests field') } const data = queueData.data.exitRequests as { timestamp: string isClaimable: boolean isClaimed: boolean totalAssets: string exitedAssets: string positionTicket: string exitQueueIndex: string | null withdrawalTimestamp: number | null }[] return data.map((queueItem) => { return { positionTicket: BigInt(queueItem.positionTicket), exitQueueIndex: queueItem.exitQueueIndex ? BigInt(queueItem.exitQueueIndex) : undefined, isWithdrawable: queueItem.isClaimable, wasWithdrawn: queueItem.isClaimed, timestamp: Number(queueItem.timestamp) * 1000, totalAssets: BigInt(queueItem.totalAssets), exitedAssets: BigInt(queueItem.exitedAssets || 0), withdrawalTimestamp: queueItem.withdrawalTimestamp !== null ? queueItem.withdrawalTimestamp * 1000 : undefined } }) }