UNPKG

@chainlink/blockchain.com

Version:

Chainlink adapter to query BTC address balance from blockchain.com.

48 lines 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.execute = exports.inputParams = exports.Name = void 0; const object_path_1 = __importDefault(require("object-path")); const external_adapter_1 = require("@chainlink/external-adapter"); const config_1 = require("../config"); exports.Name = 'balance'; const WARNING_NO_OPERATION = 'No Operation: only btc mainnet/testnet chains are supported by blockchain.com adapter'; const WARNING_NO_OPERATION_MISSING_ADDRESS = 'No Operation: address param is missing'; const getBalanceURI = (address, confirmations) => `/q/addressbalance/${address}?confirmations=${confirmations}`; const toBalances = async (config, addresses, confirmations = config_1.DEFAULT_CONFIRMATIONS) => Promise.all(addresses.map(async (addr) => { if (!addr.address) return { ...addr, warning: WARNING_NO_OPERATION_MISSING_ADDRESS }; if (!addr.coin) addr.coin = 'btc'; if (addr.coin !== 'btc') return { ...addr, warning: WARNING_NO_OPERATION }; if (!addr.chain) addr.chain = 'mainnet'; if (addr.chain !== 'mainnet' && addr.chain !== 'testnet') return { ...addr, warning: WARNING_NO_OPERATION }; const reqConfig = { ...config.api, baseURL: config_1.getBaseURL(addr.chain), url: getBalanceURI(addr.address, confirmations), }; return { ...addr, balance: (await external_adapter_1.Requester.request(reqConfig)).data, }; })); exports.inputParams = { dataPath: false, confirmations: false, }; // Export function to integrate with Chainlink node exports.execute = async (config, request, data) => { const dataPath = data.dataPath || config_1.DEFAULT_DATA_PATH; const inputData = object_path_1.default.get(request.data, dataPath); // Check if input data is valid if (!inputData || !Array.isArray(inputData) || inputData.length === 0) throw Error(`Input, at '${dataPath}' path, must be a non-empty array.`); return await toBalances(config, inputData, data.confirmations); }; //# sourceMappingURL=balance.js.map