UNPKG

blub-sdk

Version:

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

49 lines (48 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryProtocolConfig = queryProtocolConfig; exports.queryRewardConfigByCoinType = queryRewardConfigByCoinType; const sui_1 = require("../utils/sui"); function parseRewardConfig(fields) { const rewardConfig = { id: fields.id.id, startTime: BigInt(fields.start_time), endTime: BigInt(fields.end_time), emissionRate: BigInt(fields.emission_rate), coinType: (0, sui_1.completionCoin)(fields.coin_type.fields.name), }; return rewardConfig; } async function queryProtocolConfig(client, protocolConfigId) { const resq = await client.getObject({ id: protocolConfigId, options: { showContent: true }, }); // console.log("resq: ", resq); const fields = (0, sui_1.getObjectFields)(resq); if (!fields) { throw new Error("fields is null"); } const rewardConfigs = new Map(); fields.reward_configs.fields.contents.forEach((item) => { const coinType = item.fields.key.fields.name; const rewardConfig = parseRewardConfig(item.fields.value.fields); rewardConfigs.set((0, sui_1.completionCoin)(coinType), rewardConfig); }); const protocolConfig = { id: protocolConfigId, version: fields.version, openStaking: fields.open_staking, rewardConfigs, }; return protocolConfig; } async function queryRewardConfigByCoinType(client, protocolConfigId, rewardCoinType) { const coinType = (0, sui_1.completionCoin)(rewardCoinType); const rewardConfigs = await queryProtocolConfig(client, protocolConfigId); if (!rewardConfigs) { return null; } const rewardConfig = rewardConfigs.rewardConfigs.get(coinType); return rewardConfig ?? null; }