@rsksmart/rsk-contract-parser
Version:
A tool to parse/interact with contracts and decode events from the Rootstock blockchain.
38 lines (30 loc) • 1.72 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.NativeContracts = NativeContracts;exports.parseNativeContracts = exports.defaultNativeContracts = exports.default = void 0;var _rskUtils = require("@rsksmart/rsk-utils");
const defaultNativeContracts = exports.defaultNativeContracts = {
bridge: '0x0000000000000000000000000000000001000006',
remasc: '0x0000000000000000000000000000000001000008'
};
const parseNativeContracts = (nativeContracts) => {
if (typeof nativeContracts !== 'object') throw new TypeError('nativeContracts must be an object');
if (Object.keys(nativeContracts).length < 1) throw new Error('Empty native contracts list');
for (const name in nativeContracts) {
const address = nativeContracts[name];
if (!(0, _rskUtils.isAddress)(address)) throw new Error(`Address of ${name} is not an address`);
nativeContracts[name] = address.toLowerCase();
}
return nativeContracts;
};exports.parseNativeContracts = parseNativeContracts;
function NativeContracts({ nativeContracts } = {}) {
nativeContracts = parseNativeContracts(nativeContracts || defaultNativeContracts);
const names = Object.keys(nativeContracts);
const getNativeContractAddress = (contractName) => {
return nativeContracts[contractName];
};
const getNativeContractName = (address) => {
address = address.toLowerCase();
return names.find((name) => nativeContracts[name] === address);
};
const isNativeContract = (address) => !!getNativeContractName(address);
const list = () => nativeContracts;
return Object.freeze({ getNativeContractAddress, getNativeContractName, isNativeContract, list });
}var _default = exports.default =
NativeContracts;