UNPKG

@hyperionxyz/sdk

Version:

This SDK allows you to interact with the Hyperion API. You can use it to request data, create pools/positions and more.

56 lines (48 loc) 1.34 kB
import BigNumber from "bignumber.js"; import { HyperionSDK } from ".."; import { QueryClaimedRewards } from "../config/queries/reward.query"; BigNumber.config({ EXPONENTIAL_AT: 1e9 }); export class Reward { protected _sdk: HyperionSDK; constructor(sdk: HyperionSDK) { this._sdk = sdk; } fetchRewardsPayload({ positionId }: { positionId: string }) { return { function: `${this._sdk.sdkOptions.contractAddress}::pool_v3::get_pending_rewards`, typeArguments: [], functionArguments: [positionId], }; } /** * Fetch the history of Fee Farm claim * * @param args * @returns */ async fetchRewardHistory(args: { positionId: string; address: string }) { const ret: any = await this._sdk.requestModule.queryIndexer({ document: QueryClaimedRewards, variables: { objectId: args.positionId, ownerAddress: args.address, }, }); return ret.rewardStatement?.filter((item: any) => { return !new BigNumber(item.amount).isEqualTo(0); }); } claimRewardPayload({ positionId, recipient, }: { positionId: string; recipient: string; }) { return { function: `${this._sdk.sdkOptions.contractAddress}::router_v3::claim_rewards`, typeArguments: [], functionArguments: [positionId, recipient], }; } }