UNPKG

@chainlink/renvm-address-set

Version:
69 lines 2.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeWithDefaults = exports.execute = void 0; const ren_1 = __importDefault(require("@renproject/ren")); const interfaces_1 = require("@renproject/interfaces"); const utils_1 = require("@renproject/utils"); const external_adapter_1 = require("@chainlink/external-adapter"); const config_1 = require("./config"); const coins_1 = require("./coins"); const inputParams = { network: false, tokenOrContract: false, }; // Export function to integrate with Chainlink node exports.execute = async (request, config) => { const validator = new external_adapter_1.Validator(request, inputParams); if (validator.error) throw validator.error; config_1.logConfig(config); const jobRunID = validator.validated.id; const { data } = validator.validated; if (config.network && config.network !== data.network) { throw Error(`Unsupported Ren network: ${config.network}.`); } const network = data.network || config_1.DEFAULT_NETWORK; if (!interfaces_1.isRenNetwork(network)) { throw Error(`Unknown Ren network: ${data.network}`); } let tokenOrContract = data.tokenOrContract || config_1.DEFAULT_TOKEN_OR_CONTRACT; tokenOrContract = tokenOrContract.length === 3 ? tokenOrContract.toUpperCase() : tokenOrContract; if (!interfaces_1.isAsset(tokenOrContract) && !interfaces_1.isRenContract(tokenOrContract)) { throw Error(`Unknown Ren tokenOrContract: ${tokenOrContract}`); } const renContract = interfaces_1.isAsset(tokenOrContract) ? utils_1.resolveInToken(tokenOrContract) : tokenOrContract; // Only BTC is supported for now if (renContract !== interfaces_1.RenContract.Btc2Eth && renContract !== interfaces_1.RenContract.Eth2Btc) { throw Error(`Unsupported token: ${tokenOrContract}`); } const bitcoinNetwork = coins_1.btc.getNetwork(network); if (!bitcoinNetwork) { throw Error(`Unknown Bitcoin network: ${network}`); } const _getAddress = async () => { const { renVM } = new ren_1.default(network, config.api.baseURL); const out = await renVM.selectPublicKey(renContract); return coins_1.btc.p2pkh(out, bitcoinNetwork).address; }; const address = await _getAddress(); const result = [ { address, coin: utils_1.getTokenName(renContract).toLowerCase(), chain: network, }, ]; return external_adapter_1.Requester.success(jobRunID, { data: { result }, result, status: 200, }); }; // Export function to integrate with Chainlink node exports.executeWithDefaults = async (request) => exports.execute(request, config_1.getConfig()); //# sourceMappingURL=adapter.js.map