@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
text/typescript
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],
};
}
}