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