UNPKG

blub-sdk

Version:

A modular SDK for interacting with the BLUB ecosystem on the Sui blockchain.

44 lines (43 loc) 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryRewardManager = queryRewardManager; exports.queryRewardInfo = queryRewardInfo; const sui_1 = require("../utils/sui"); async function queryRewardManager(client, rewardManagerId) { const resq = await client.getObject({ id: rewardManagerId, options: { showContent: true }, }); const fields = (0, sui_1.getObjectFields)(resq); if (!fields) { throw new Error("fields is null"); } const rewardsInfos = new Map(); fields.rewards_infos.fields.contents.forEach((item) => { const rewardCoinType = (0, sui_1.completionCoin)(item.fields.key.fields.name); const rewardInfo = parseRewardInfo(item.fields.value.fields); rewardsInfos.set(rewardCoinType, rewardInfo); }); const rewardManager = { id: rewardManagerId, totalStakedAmount: BigInt(fields.total_staked_amount), rewardsInfos, userPositionsRecordId: fields.user_positions_record.fields.id.id, }; return rewardManager; } function parseRewardInfo(fields) { const rewardInfo = { rewardCoinType: (0, sui_1.completionCoin)(fields.reward_coin_type.fields.name), accRewardPerShare: BigInt(fields.acc_reward_per_share), lastRewardTime: BigInt(fields.last_reward_time), }; return rewardInfo; } async function queryRewardInfo(client, rewardManagerId, rewardCoinType) { const rewardManager = await queryRewardManager(client, rewardManagerId); if (!rewardManager) { return null; } return rewardManager.rewardsInfos.get((0, sui_1.completionCoin)(rewardCoinType)) ?? null; }