UNPKG

@celo-tools/celo-ethers-wrapper

Version:

A minimal wrapper to make Ethers.JS compatible with the Celo network.

60 lines (59 loc) 4.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertFromCeloToToken = exports.adjustForGasInflation = exports.omit = exports.concatHex = exports.isCIP66 = exports.isCIP64 = exports.isPresent = exports.isEmpty = void 0; const ethers_1 = require("ethers"); const consts_1 = require("../../consts"); function isEmpty(value) { if (value === undefined || value === null || value === "0" || value === 0n) { return true; } if ((0, ethers_1.isBytesLike)(value)) { return (0, ethers_1.hexlify)(value) === "0x0"; } return (0, ethers_1.toBeHex)(value) === "0x0"; } exports.isEmpty = isEmpty; function isPresent(value) { return !isEmpty(value); } exports.isPresent = isPresent; function isCIP64(tx) { return (isPresent(tx.feeCurrency) && isEmpty(tx.maxFeeInFeeCurrency)); } exports.isCIP64 = isCIP64; function isCIP66(tx) { return (isPresent(tx.feeCurrency) && isPresent(tx.maxFeeInFeeCurrency)); } exports.isCIP66 = isCIP66; function concatHex(values) { return `0x${values.reduce((acc, x) => acc + x.replace("0x", ""), "")}`; } exports.concatHex = concatHex; function omit(object, ...keys) { return Object.keys(object) .filter((key) => !keys.includes(key)) .reduce((acc, key) => { acc[key] = object[key]; return acc; }, {}); } exports.omit = omit; function adjustForGasInflation(gas) { // NOTE: prevent floating point math return (gas * consts_1.GAS_INFLATION_FACTOR) / 100n; } exports.adjustForGasInflation = adjustForGasInflation; /** * * @param param0 @ConversionParams * ratioTOKEN will come from the first position (or numerator) of tuple returned from SortedOracles.medianRate * ratioCELO will come from the second position (or denominator) of tuple returned from SortedOracles.medianRate * @returns amount in token equal in value to the amountInCelo given. */ function convertFromCeloToToken({ amountInCelo, ratioCELO, ratioTOKEN, }) { return (amountInCelo * ratioCELO) / ratioTOKEN; } exports.convertFromCeloToToken = convertFromCeloToToken; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFxRTtBQUNyRSx5Q0FBb0Q7QUFPcEQsU0FBZ0IsT0FBTyxDQUFDLEtBQStDO0lBQ3JFLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtRQUMxRSxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFBLG9CQUFXLEVBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxJQUFBLGdCQUFPLEVBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxJQUFBLGdCQUFPLEVBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0FBQ2xDLENBQUM7QUFSRCwwQkFRQztBQUVELFNBQWdCLFNBQVMsQ0FBQyxLQUErQztJQUN2RSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFGRCw4QkFFQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxFQUFtQjtJQUN6QyxPQUFPLENBQ0wsU0FBUyxDQUFFLEVBQTJCLENBQUMsV0FBVyxDQUFDO1FBQ25ELE9BQU8sQ0FBRSxFQUEyQixDQUFDLG1CQUFtQixDQUFDLENBQzFELENBQUM7QUFDSixDQUFDO0FBTEQsMEJBS0M7QUFFRCxTQUFnQixPQUFPLENBQUMsRUFBbUI7SUFDekMsT0FBTyxDQUNMLFNBQVMsQ0FBRSxFQUEyQixDQUFDLFdBQVcsQ0FBQztRQUNuRCxTQUFTLENBQUUsRUFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUM1RCxDQUFDO0FBQ0osQ0FBQztBQUxELDBCQUtDO0FBRUQsU0FBZ0IsU0FBUyxDQUFDLE1BQWdCO0lBQ3hDLE9BQU8sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekUsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsSUFBSSxDQUNsQixNQUFTLEVBQ1QsR0FBRyxJQUFPO0lBSVYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN2QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFjLENBQUMsQ0FBQztTQUMvQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDbkIsR0FBRyxDQUFDLEdBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFjLENBQUMsQ0FBQztRQUM3QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFPLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBWkQsb0JBWUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxHQUFXO0lBQy9DLG9DQUFvQztJQUNwQyxPQUFPLENBQUMsR0FBRyxHQUFHLDZCQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFIRCxzREFHQztBQU9EOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxFQUNyQyxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsR0FDTztJQUNqQixPQUFPLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNqRCxDQUFDO0FBTkQsd0RBTUMifQ==