blub-sdk
Version:
A modular SDK for interacting with the BLUB ecosystem on the Sui blockchain.
44 lines (43 loc) • 1.68 kB
JavaScript
;
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;
}