@chainlink/renvm-address-set
Version:
Chainlink adapter to query RenVM address set.
69 lines • 2.95 kB
JavaScript
;
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