@chainlink/blockchain.com
Version:
Chainlink adapter to query BTC address balance from blockchain.com.
48 lines • 2.24 kB
JavaScript
;
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