tokamak-staking-lib
Version:
tokamak staking library
83 lines (82 loc) • 4.03 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTotalSupplyOfWTON = exports.getTotalSupplyOfTONWithSeig = exports.getTotalSupplyOfTON = exports.getTotalStakedAmountDiff = exports.getTotalStakedAmount = exports.getStakedAmountDiff = exports.getStakedAmount = exports.isSubmitter = exports.getOperator = exports.isLayer2 = exports.getLayer2ByIndex = exports.getNumLayer2 = exports.setNetwork = void 0;
const bn_js_1 = __importDefault(require("bn.js"));
const PrivatekeyProvider = require("truffle-privatekey-provider");
const web3_connector_1 = __importDefault(require("./common/web3-connector"));
const layer2_registry_1 = __importDefault(require("./contracts/layer2-registry"));
const seig_manager_1 = __importDefault(require("./contracts/seig-manager"));
const deposit_manager_1 = __importDefault(require("./contracts/deposit-manager"));
const layer2s_1 = __importDefault(require("./contracts/layer2s"));
const ton_1 = __importDefault(require("./contracts/ton"));
const wton_1 = __importDefault(require("./contracts/wton"));
const tot_1 = __importDefault(require("./contracts/tot"));
const util_1 = require("./common/util");
exports.setNetwork = (provider, net = "mainnet") => {
web3_connector_1.default.setNetwork(provider);
layer2_registry_1.default.setNetwork(net);
seig_manager_1.default.setNetwork(net);
deposit_manager_1.default.setNetwork(net);
ton_1.default.setNetwork(net);
wton_1.default.setNetwork(net);
};
exports.getNumLayer2 = () => {
return layer2_registry_1.default.instance().numLayer2s();
};
exports.getLayer2ByIndex = (index) => {
return layer2_registry_1.default.instance().layer2ByIndex(index);
};
exports.isLayer2 = (layer2) => {
return layer2_registry_1.default.instance().layer2s(layer2);
};
exports.getOperator = (layer2) => {
return layer2s_1.default.get(layer2).operator();
};
exports.isSubmitter = (layer2, account) => {
return layer2s_1.default.get(layer2).isSubmitter(account);
};
exports.getStakedAmount = async (layer2, account, blockNumber) => {
return seig_manager_1.default.instance().stakeOf(layer2, account, blockNumber);
};
exports.getStakedAmountDiff = async (layer2, account, fromBlockNumber, toBlockNumber) => {
const fromAmount = await seig_manager_1.default.instance().stakeOf(layer2, account, fromBlockNumber);
const toAmount = await seig_manager_1.default.instance().stakeOf(layer2, account, toBlockNumber);
return toAmount.sub(fromAmount);
};
exports.getTotalStakedAmount = async (account, blockNumber) => {
let total = new bn_js_1.default("0");
const num = await exports.getNumLayer2();
for (let i = 0; i < num; ++i) {
const layer2 = await exports.getLayer2ByIndex(i);
const amount = await exports.getStakedAmount(layer2, account, blockNumber);
total = total.add(amount);
}
return total;
};
exports.getTotalStakedAmountDiff = async (account, fromBlockNumber, toBlockNumber) => {
let total = new bn_js_1.default("0");
const num = await exports.getNumLayer2();
for (let i = 0; i < num; ++i) {
const layer2 = await exports.getLayer2ByIndex(i);
const diff = await exports.getStakedAmountDiff(layer2, account, fromBlockNumber, toBlockNumber);
total = total.add(diff);
}
return total;
};
exports.getTotalSupplyOfTON = () => {
return ton_1.default.instance().totalSupply();
};
exports.getTotalSupplyOfTONWithSeig = async () => {
const ton = ton_1.default.instance();
const tot = await tot_1.default.instance();
const totalTON = await ton.totalSupply();
const stakedTONWithSeig = util_1.toWAD(await tot.totalSupply());
const stakedTON = await ton.balanceOf(wton_1.default.address);
return totalTON.add(stakedTONWithSeig).sub(stakedTON);
};
exports.getTotalSupplyOfWTON = () => {
return wton_1.default.instance().totalSupply();
};