UNPKG

@xswap-link/sdk

Version:
59 lines (53 loc) 1.73 kB
import { ADDRESSES, StakingStableAPRAbi } from "@src/contracts"; import { useBatchQuery } from "./useBatchQuery"; import { BigNumber, ethers } from "ethers"; import { useCallback } from "react"; const iface = new ethers.utils.Interface(StakingStableAPRAbi); export const useXPower = (chainId: string) => { const { batchQuery } = useBatchQuery(); return { getXPower: useCallback( async (address: string) => { if ( !ADDRESSES[chainId]?.StakingCosmicCadets || !ADDRESSES[chainId]?.StakingSolarDivision || !ADDRESSES[chainId]?.StakingIntergalacticCommand ) { return "0"; } const stakingAddresses: string[] = [ ADDRESSES[chainId]?.StakingCosmicCadets, ADDRESSES[chainId]?.StakingSolarDivision, ADDRESSES[chainId]?.StakingIntergalacticCommand, ]; const calldata = iface.encodeFunctionData("getStaker", [address]); const responses = await batchQuery( chainId, stakingAddresses, stakingAddresses.map(() => calldata), ); if (responses) { return responses .map( (stakerResponse) => ethers.utils.defaultAbiCoder.decode( [ "address", "uint256", "uint256", "uint256", "uint256", "uint256", ], stakerResponse, )[1], ) .reduce((prev, curr) => prev.add(curr), BigNumber.from(0)) .toString(); } return "0"; }, [batchQuery, chainId], ), }; };