@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
JavaScript
;
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==