@celo-tools/celo-ethers-wrapper
Version:
A minimal wrapper to make Ethers.JS compatible with the Celo network.
49 lines (48 loc) • 3.86 kB
JavaScript
import { hexlify, isBytesLike, toBeHex } from "ethers";
import { GAS_INFLATION_FACTOR } from "../../consts";
export function isEmpty(value) {
if (value === undefined || value === null || value === "0" || value === 0n) {
return true;
}
if (isBytesLike(value)) {
return hexlify(value) === "0x0";
}
return toBeHex(value) === "0x0";
}
export function isPresent(value) {
return !isEmpty(value);
}
export function isCIP64(tx) {
return (isPresent(tx.feeCurrency) &&
isEmpty(tx.maxFeeInFeeCurrency));
}
export function isCIP66(tx) {
return (isPresent(tx.feeCurrency) &&
isPresent(tx.maxFeeInFeeCurrency));
}
export function concatHex(values) {
return `0x${values.reduce((acc, x) => acc + x.replace("0x", ""), "")}`;
}
export function omit(object, ...keys) {
return Object.keys(object)
.filter((key) => !keys.includes(key))
.reduce((acc, key) => {
acc[key] = object[key];
return acc;
}, {});
}
export function adjustForGasInflation(gas) {
// NOTE: prevent floating point math
return (gas * GAS_INFLATION_FACTOR) / 100n;
}
/**
*
* @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.
*/
export function convertFromCeloToToken({ amountInCelo, ratioCELO, ratioTOKEN, }) {
return (amountInCelo * ratioCELO) / ratioTOKEN;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBT3BELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBK0M7SUFDckUsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQzFFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN0QixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7S0FDakM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBK0M7SUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxFQUFtQjtJQUN6QyxPQUFPLENBQ0wsU0FBUyxDQUFFLEVBQTJCLENBQUMsV0FBVyxDQUFDO1FBQ25ELE9BQU8sQ0FBRSxFQUEyQixDQUFDLG1CQUFtQixDQUFDLENBQzFELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxFQUFtQjtJQUN6QyxPQUFPLENBQ0wsU0FBUyxDQUFFLEVBQTJCLENBQUMsV0FBVyxDQUFDO1FBQ25ELFNBQVMsQ0FBRSxFQUEyQixDQUFDLG1CQUFtQixDQUFDLENBQzVELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFnQjtJQUN4QyxPQUFPLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLFVBQVUsSUFBSSxDQUNsQixNQUFTLEVBQ1QsR0FBRyxJQUFPO0lBSVYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN2QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFjLENBQUMsQ0FBQztTQUMvQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDbkIsR0FBRyxDQUFDLEdBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFjLENBQUMsQ0FBQztRQUM3QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFPLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQVc7SUFDL0Msb0NBQW9DO0lBQ3BDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0MsQ0FBQztBQU9EOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsRUFDckMsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEdBQ087SUFDakIsT0FBTyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDakQsQ0FBQyJ9