@broxus/js-core
Version:
MobX-based JavaScript Core library
131 lines (130 loc) • 6.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GaugeAccountUtils = void 0;
const contracts_1 = require("../../models/gauge-account/contracts");
const utils_1 = require("../../utils");
class GaugeAccountUtils {
static async calculateMinGas(connection, gaugeAccountAddress, cachedState) {
const state = cachedState ?? await (0, utils_1.getFullContractState)(connection, gaugeAccountAddress);
const result = await (0, contracts_1.gaugeAccountContract)(connection, gaugeAccountAddress)
.methods.calculateMinGas({ answerId: 0 })
.call({ cachedState: state, responsible: true });
return result.min_gas;
}
static async getAverages(connection, gaugeAccountAddress, cachedState) {
const state = cachedState ?? await (0, utils_1.getFullContractState)(connection, gaugeAccountAddress);
const result = await (0, contracts_1.gaugeAccountContract)(connection, gaugeAccountAddress)
.methods.getAverages({ answerId: 0 })
.call({ cachedState: state, responsible: true });
return {
curAverageState: {
...result._curAverageState,
gaugeSupplyAveragePeriod: Number(result._curAverageState.gaugeSupplyAveragePeriod),
lockBoostedBalanceAveragePeriod: Number(result._curAverageState.lockBoostedBalanceAveragePeriod),
veAccQubeAveragePeriod: Number(result._curAverageState.veAccQubeAveragePeriod),
veQubeAveragePeriod: Number(result._curAverageState.veQubeAveragePeriod),
},
lastAverageState: {
...result._lastAverageState,
gaugeSupplyAveragePeriod: Number(result._lastAverageState.gaugeSupplyAveragePeriod),
lockBoostedBalanceAveragePeriod: Number(result._lastAverageState.lockBoostedBalanceAveragePeriod),
veAccQubeAveragePeriod: Number(result._lastAverageState.veAccQubeAveragePeriod),
veQubeAveragePeriod: Number(result._lastAverageState.veQubeAveragePeriod),
},
};
}
static async getDetails(connection, gaugeAccountAddress, cachedState) {
const state = cachedState ?? await (0, utils_1.getFullContractState)(connection, gaugeAccountAddress);
const result = await (0, contracts_1.gaugeAccountContract)(connection, gaugeAccountAddress)
.methods.getDetails({ answerId: 0 })
.call({ cachedState: state, responsible: true });
return {
balance: result._balance,
currentVersion: result._current_version,
gauge: result._gauge,
lastUpdateTime: Number(result._lastUpdateTime),
lockBoostedBalance: result._lockBoostedBalance,
lockedBalance: result._lockedBalance,
lockedDepositsNum: Number(result._lockedDepositsNum),
totalBoostedBalance: result._totalBoostedBalance,
user: result._user,
veAccount: result._veAccount,
veBoostedBalance: result._veBoostedBalance,
voteEscrow: result._voteEscrow,
};
}
static async getRewardDetails(connection, gaugeAccountAddress, cachedState) {
const state = cachedState ?? await (0, utils_1.getFullContractState)(connection, gaugeAccountAddress);
const result = await (0, contracts_1.gaugeAccountContract)(connection, gaugeAccountAddress)
.methods.getRewardDetails({ answerId: 0 })
.call({ cachedState: state, responsible: true });
return {
extraReward: result._extraReward.map(reward => ({
...reward,
lastRewardTime: Number(reward.lastRewardTime),
})),
extraVesting: result._extraVesting.map(vesting => ({
vestingPeriod: Number(vesting.vestingPeriod),
vestingRatio: Number(vesting.vestingRatio),
vestingTime: Number(vesting.vestingTime),
})),
qubeReward: {
...result._qubeReward,
lastRewardTime: Number(result._qubeReward.lastRewardTime),
},
qubeVesting: {
vestingPeriod: Number(result._qubeVesting.vestingPeriod),
vestingRatio: Number(result._qubeVesting.vestingRatio),
vestingTime: Number(result._qubeVesting.vestingTime),
},
};
}
static async pendingReward(connection, gaugeAccountAddress, params, cachedState) {
const state = cachedState ?? await (0, utils_1.getFullContractState)(connection, gaugeAccountAddress);
const result = await (0, contracts_1.gaugeAccountContract)(connection, gaugeAccountAddress)
.methods.pendingReward({
_veAccQubeAverage: params.veAccQubeAverage,
_veAccQubeAveragePeriod: params.veAccQubeAveragePeriod.toString(),
_veQubeAverage: params.veQubeAverage,
_veQubeAveragePeriod: params.veQubeAveragePeriod.toString(),
gauge_sync_data: {
depositSupply: params.gaugeSyncData.depositSupply,
depositSupplyAverage: params.gaugeSyncData.depositSupplyAverage,
depositSupplyAveragePeriod: params.gaugeSyncData.depositSupplyAveragePeriod.toString(),
extraRewardRounds: params.gaugeSyncData.extraRewardRounds.map(rewards => rewards.map(reward => ({
...reward,
endTime: reward.endTime.toString(),
startTime: reward.startTime.toString(),
}))),
poolLastRewardTime: params.gaugeSyncData.poolLastRewardTime.toString(),
qubeRewardRounds: params.gaugeSyncData.qubeRewardRounds.map(reward => ({
...reward,
endTime: reward.endTime.toString(),
startTime: reward.startTime.toString(),
})),
},
})
.call({ cachedState: state });
return {
extraReward: result._extraReward.map(reward => ({
...reward,
lastRewardTime: Number(reward.lastRewardTime),
})),
extraVesting: result._extraVesting.map(vesting => ({
vestingPeriod: Number(vesting.vestingPeriod),
vestingRatio: Number(vesting.vestingRatio),
vestingTime: Number(vesting.vestingTime),
})),
qubeReward: {
...result._qubeReward,
lastRewardTime: Number(result._qubeReward.lastRewardTime),
},
qubeVesting: {
vestingPeriod: Number(result._qubeVesting.vestingPeriod),
vestingRatio: Number(result._qubeVesting.vestingRatio),
vestingTime: Number(result._qubeVesting.vestingTime),
},
};
}
}
exports.GaugeAccountUtils = GaugeAccountUtils;