UNPKG

@iam4x/bsc-scan

Version:

An efficient BNB and token balance scanner

22 lines 2.06 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.callMultiple=exports.callSingle=exports.toNestedBalanceMap=exports.toBalanceMap=void 0;var _abi=require("@findeth/abi"),_constants=require("./constants"),_providers=require("./providers"),_utils=require("./utils");/** * Get a balance map from an array of addresses and an array of balances. * * @param {string[]} addresses * @param {bigint[]} balances * @return {BalanceMap} */const toBalanceMap=(a,b)=>b.reduce((b,c,d)=>({...b,[a[d]]:c}),{});/** * Get a nested balance map from an array of addresses, token addresses, and balances. * * @param {string[]} addresses * @param {bigint[]} tokenAddresses * @param {BalanceMap<BalanceMap>} balances */exports.toBalanceMap=toBalanceMap;const toNestedBalanceMap=(a,b,c)=>c.reduce((c,d,e)=>({...c,[a[e]]:toBalanceMap(b,d)}),{});/** * Low level API function to send a contract call that returns a single uint256 array. * * @param {ProviderLike} provider * @param {string[]} addresses * @param {Function} encodeData * @param {EthScanOptions} options * @return {Promise<BalanceMap>} */exports.toNestedBalanceMap=toNestedBalanceMap;const callSingle=async(a,b,c,d)=>{var e,f;const g=null!==(e=null===d||void 0===d?void 0:d.contractAddress)&&void 0!==e?e:_constants.CONTRACT_ADDRESS,h=null!==(f=null===d||void 0===d?void 0:d.batchSize)&&void 0!==f?f:_constants.BATCH_SIZE,i=await(0,_utils.batch)(async b=>{const d=c(b);return(0,_abi.decode)(["uint256[]"],await(0,_providers.call)(a,g,d))[0]},h,b);return toBalanceMap(b,i)};exports.callSingle=callSingle;const callMultiple=async(a,b,c,d,e)=>{var f,g;const h=null!==(f=null===e||void 0===e?void 0:e.contractAddress)&&void 0!==f?f:_constants.CONTRACT_ADDRESS,i=null!==(g=null===e||void 0===e?void 0:e.batchSize)&&void 0!==g?g:_constants.BATCH_SIZE,j=await(0,_utils.batch)(async b=>{const e=d(b,c);return(0,_abi.decode)(["uint256[][]"],await(0,_providers.call)(a,h,e))[0]},i,b);return toNestedBalanceMap(b,c,j)};exports.callMultiple=callMultiple; //# sourceMappingURL=api.js.map