@defillama/sdk 2.3.126 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,56 +1,53 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
4
21
  };
5
22
  Object.defineProperty(exports, "__esModule", { value: true });
6
23
  var bignumber_1 = require("@ethersproject/bignumber");
7
- var lodash_1 = __importDefault(require("lodash"));
8
- function stringifyBigNumbers(result, final) {
24
+ function isNumberOrBigNumber(value) {
25
+ return bignumber_1.BigNumber.isBigNumber(value) || typeof value === "number";
26
+ }
27
+ function stringifyBigNumbers(result) {
28
+ var final = __assign({}, result);
29
+ if (Array.isArray(result))
30
+ final = __spreadArray([], result, true);
9
31
  Object.keys(result).forEach(function (key) {
10
- try {
11
- final[key] = lodash_1.default.cloneDeep(result[key]);
12
- if (bignumber_1.BigNumber.isBigNumber(result[key]) ||
13
- typeof result[key] === "number") {
14
- final[key] = result[key].toString();
15
- }
16
- if (typeof final[key] === "object") {
17
- stringifyBigNumbers(result[key], final[key]);
18
- }
19
- }
20
- catch (e) {
21
- console.log(e);
22
- }
32
+ if (isNumberOrBigNumber(result[key]))
33
+ final[key] = result[key].toString();
34
+ else if (typeof result[key] === "object")
35
+ final[key] = stringifyBigNumbers(result[key]);
36
+ else
37
+ final[key] = result[key];
23
38
  });
24
- }
25
- function containsNamedResults(obj) {
26
- return Object.keys(obj).some(function (key) { return isNaN(Number(key)); }); // Are there any non-numeric keys?
39
+ return final;
27
40
  }
28
41
  function default_1(results) {
29
- if (typeof results === "string" || typeof results === "boolean") {
42
+ var response;
43
+ if (typeof results === "string" || typeof results === "boolean")
30
44
  return results;
31
- }
32
- var convertedResults = {};
33
- if (results instanceof Array && !containsNamedResults(results)) {
34
- // Match every idiosynchrasy of the SDK
35
- convertedResults = [];
36
- }
37
- if (bignumber_1.BigNumber.isBigNumber(results) || typeof results === "number") {
38
- convertedResults = results.toString();
39
- }
40
- else {
41
- stringifyBigNumbers(results, convertedResults);
42
- }
43
- if (results instanceof Array) {
44
- if (results.length === 1) {
45
- return convertedResults[0];
46
- }
47
- else {
48
- // Some calls return the extra __length__ parameter (I think when some results are named)
49
- if (containsNamedResults(convertedResults)) {
50
- convertedResults["__length__"] = results.length;
51
- }
52
- }
53
- }
54
- return convertedResults;
45
+ if (isNumberOrBigNumber(results))
46
+ return results.toString();
47
+ response = stringifyBigNumbers(results);
48
+ if (response instanceof Array)
49
+ if (response.length === 1)
50
+ return response[0];
51
+ return response;
55
52
  }
56
53
  exports.default = default_1;
@@ -1,6 +1,6 @@
1
1
  import { Address } from "../types";
2
2
  import { Chain } from "../general";
3
- declare type CallParams = string | number | (string | number)[] | undefined;
3
+ type CallParams = string | number | (string | number)[] | undefined;
4
4
  export declare function call(params: {
5
5
  target: Address;
6
6
  abi: string | any;
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
29
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
30
  if (y = 0, t) op = [op[0] & 2, t.value];
31
31
  switch (op[0]) {
@@ -57,6 +57,7 @@ var general_1 = require("../general");
57
57
  var multicall_1 = __importDefault(require("./multicall"));
58
58
  var convertResults_1 = __importDefault(require("./convertResults"));
59
59
  var promise_pool_1 = require("@supercharge/promise-pool");
60
+ var debugLog_1 = require("../util/debugLog");
60
61
  function resolveABI(providedAbi) {
61
62
  var abi = providedAbi;
62
63
  if (typeof abi === "string") {
@@ -91,7 +92,7 @@ function call(params) {
91
92
  contractInterface = new ethers_1.ethers.utils.Interface([abi]);
92
93
  functionABI = ethers_1.ethers.utils.FunctionFragment.from(abi);
93
94
  callData = contractInterface.encodeFunctionData(functionABI, callParams);
94
- return [4 /*yield*/, general_1.getProvider(params.chain).call({
95
+ return [4 /*yield*/, (0, general_1.getProvider)(params.chain).call({
95
96
  to: params.target,
96
97
  data: callData,
97
98
  }, (_a = params.block) !== null && _a !== void 0 ? _a : "latest")];
@@ -99,7 +100,7 @@ function call(params) {
99
100
  result = _b.sent();
100
101
  decodedResult = contractInterface.decodeFunctionResult(functionABI, result);
101
102
  return [2 /*return*/, {
102
- output: convertResults_1.default(decodedResult),
103
+ output: (0, convertResults_1.default)(decodedResult),
103
104
  }];
104
105
  }
105
106
  });
@@ -132,7 +133,7 @@ function multiCall(params) {
132
133
  .process(function (calls, i) { return __awaiter(_this, void 0, void 0, function () {
133
134
  var _a;
134
135
  return __generator(this, function (_b) {
135
- return [2 /*return*/, multicall_1.default(abi, calls, (_a = params.chain) !== null && _a !== void 0 ? _a : "ethereum", params.block).then(function (calls) { return [calls, i]; })];
136
+ return [2 /*return*/, (0, multicall_1.default)(abi, calls, (_a = params.chain) !== null && _a !== void 0 ? _a : "ethereum", params.block).then(function (calls) { return [calls, i]; })];
136
137
  });
137
138
  }); })];
138
139
  case 1:
@@ -149,9 +150,8 @@ function multiCall(params) {
149
150
  return c;
150
151
  }));
151
152
  failedQueries = flatResults.filter(function (r) { return !r.success; });
152
- if (failedQueries.length && (process.env.SDK_DEBUG === "true" || process.env.LLAMA_DEBUG_MODE)) {
153
- console.log("Failed multicalls:", failedQueries.map(function (r) { return r.input; }));
154
- }
153
+ if (failedQueries.length)
154
+ (0, debugLog_1.debugLog)("Failed multicalls:", failedQueries.map(function (r) { return r.input; }));
155
155
  if (!(params.requery === true && flatResults.some(function (r) { return !r.success; }))) return [3 /*break*/, 3];
156
156
  failed = flatResults.map(function (r, i) { return [r, i]; }).filter(function (r) { return !r[0].success; });
157
157
  return [4 /*yield*/, multiCall({
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -82,7 +82,7 @@ function makeMultiCall(functionABI, calls, chain, block) {
82
82
  return [2 /*return*/, returnValues.map(function (values, index) {
83
83
  var output;
84
84
  try {
85
- output = convertResults_1.default(contractInterface.decodeFunctionResult(fd, values));
85
+ output = (0, convertResults_1.default)(contractInterface.decodeFunctionResult(fd, values));
86
86
  }
87
87
  catch (e) {
88
88
  output = null;
@@ -131,7 +131,7 @@ function executeCalls(contractCalls, chain, block) {
131
131
  to: address,
132
132
  data: callData,
133
133
  };
134
- return [4 /*yield*/, rpcCall_1.call(general_1.getProvider(chain), tx, block !== null && block !== void 0 ? block : "latest", chain)];
134
+ return [4 /*yield*/, (0, rpcCall_1.call)((0, general_1.getProvider)(chain), tx, block !== null && block !== void 0 ? block : "latest", chain)];
135
135
  case 4:
136
136
  returnData = _b.sent();
137
137
  _a = ethers_1.ethers.utils.defaultAbiCoder.decode(["uint256", "bytes[]"], returnData), blockNumber = _a[0], returnValues = _a[1];
@@ -150,7 +150,7 @@ function executeCalls(contractCalls, chain, block) {
150
150
  switch (_b.label) {
151
151
  case 0:
152
152
  _b.trys.push([0, 2, , 3]);
153
- return [4 /*yield*/, rpcCall_1.call(general_1.getProvider(chain), { to: to, data: data }, block !== null && block !== void 0 ? block : "latest", chain)];
153
+ return [4 /*yield*/, (0, rpcCall_1.call)((0, general_1.getProvider)(chain), { to: to, data: data }, block !== null && block !== void 0 ? block : "latest", chain)];
154
154
  case 1: return [2 /*return*/, _b.sent()];
155
155
  case 2:
156
156
  e_2 = _b.sent();
@@ -172,12 +172,12 @@ function multicallAddressOrThrow(chain) {
172
172
  var network, address, msg;
173
173
  return __generator(this, function (_a) {
174
174
  switch (_a.label) {
175
- case 0: return [4 /*yield*/, general_1.getProvider(chain).getNetwork()];
175
+ case 0: return [4 /*yield*/, (0, general_1.getProvider)(chain).getNetwork()];
176
176
  case 1:
177
177
  network = _a.sent();
178
178
  address = multicallAddress(network.chainId);
179
179
  if (address === null) {
180
- msg = "multicall is not available on the network " + network.chainId;
180
+ msg = "multicall is not available on the network ".concat(network.chainId);
181
181
  console.error(msg);
182
182
  throw new Error(msg);
183
183
  }
@@ -191,7 +191,7 @@ function networkSupportsMulticall(chain) {
191
191
  var network, address;
192
192
  return __generator(this, function (_a) {
193
193
  switch (_a.label) {
194
- case 0: return [4 /*yield*/, general_1.getProvider(chain).network];
194
+ case 0: return [4 /*yield*/, (0, general_1.getProvider)(chain).network];
195
195
  case 1:
196
196
  network = _a.sent();
197
197
  address = multicallAddress(network.chainId);
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -38,7 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.call = void 0;
40
40
  var events_1 = require("events");
41
- var DEBUG_MODE_ENABLED = !!process.env.LLAMA_DEBUG_MODE;
41
+ var debugLog_1 = require("../util/debugLog");
42
42
  var maxParallelCalls = !!process.env.LLAMA_SDK_MAX_PARALLEL ? +process.env.LLAMA_SDK_MAX_PARALLEL : 100;
43
43
  var COUNTERS = {};
44
44
  var emitter = new events_1.EventEmitter();
@@ -61,20 +61,20 @@ function call(provider, data, block, chain) {
61
61
  chain = 'noChain';
62
62
  counter = getChainCounter(chain);
63
63
  currentId = counter.requestCount++;
64
- eventId = chain + "-" + currentId;
64
+ eventId = "".concat(chain, "-").concat(currentId);
65
65
  if (!(counter.activeWorkers > maxParallelCalls)) return [3 /*break*/, 2];
66
66
  counter.queue.push(eventId);
67
- return [4 /*yield*/, events_1.once(emitter, eventId)];
67
+ return [4 /*yield*/, (0, events_1.once)(emitter, eventId)];
68
68
  case 1:
69
69
  _a.sent();
70
70
  _a.label = 2;
71
71
  case 2:
72
72
  counter.activeWorkers++;
73
- if (DEBUG_MODE_ENABLED) {
73
+ if (debugLog_1.DEBUG_ENABLED) {
74
74
  showEveryX = counter.queue.length > 100 ? 50 : 10 // show log fewer times if lot more are queued up
75
75
  ;
76
76
  if (currentId % showEveryX === 0)
77
- console.log("chain: " + chain + " request #: " + currentId + " queue: " + counter.queue.length + " active requests: " + counter.activeWorkers);
77
+ console.log("chain: ".concat(chain, " request #: ").concat(currentId, " queue: ").concat(counter.queue.length, " active requests: ").concat(counter.activeWorkers));
78
78
  }
79
79
  _a.label = 3;
80
80
  case 3:
package/build/api.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export * as util from "./util";
2
2
  export * as eth from "./eth";
3
3
  export * as erc20 from "./erc20";
4
- export * as cdp from "./cdp";
5
4
  export * as abi from "./abi";
6
- import { setProvider } from "./general";
5
+ import { setProvider, getProvider } from "./general";
7
6
  declare const config: {
8
7
  setProvider: typeof setProvider;
8
+ getProvider: typeof getProvider;
9
9
  };
10
10
  export { config };
package/build/api.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -19,14 +23,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
23
  return result;
20
24
  };
21
25
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.config = exports.abi = exports.cdp = exports.erc20 = exports.eth = exports.util = void 0;
26
+ exports.config = exports.abi = exports.erc20 = exports.eth = exports.util = void 0;
23
27
  exports.util = __importStar(require("./util"));
24
28
  exports.eth = __importStar(require("./eth"));
25
29
  exports.erc20 = __importStar(require("./erc20"));
26
- exports.cdp = __importStar(require("./cdp"));
27
30
  exports.abi = __importStar(require("./abi"));
28
31
  var general_1 = require("./general");
29
32
  var config = {
30
33
  setProvider: general_1.setProvider,
34
+ getProvider: general_1.getProvider,
31
35
  };
32
36
  exports.config = config;
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -127,7 +127,7 @@ function getBlock(chain, timestamp) {
127
127
  return __generator(this, function (_a) {
128
128
  switch (_a.label) {
129
129
  case 0:
130
- provider = general_1.getProvider("ethereum");
130
+ provider = (0, general_1.getProvider)("ethereum");
131
131
  return [4 /*yield*/, provider.getBlockNumber()];
132
132
  case 1:
133
133
  lastBlockNumber = _a.sent();
@@ -149,7 +149,7 @@ function getBlock(chain, timestamp) {
149
149
  _a.label = 2;
150
150
  case 2:
151
151
  _a.trys.push([2, 4, , 5]);
152
- return [4 /*yield*/, index_1.lookupBlock(timestamp, { chain: chain, })];
152
+ return [4 /*yield*/, (0, index_1.lookupBlock)(timestamp, { chain: chain, })];
153
153
  case 3:
154
154
  block = _a.sent();
155
155
  return [2 /*return*/, block];
@@ -10,7 +10,7 @@ function humanizeNumber(amount) {
10
10
  for (var _i = 0, quantifiers_1 = quantifiers; _i < quantifiers_1.length; _i++) {
11
11
  var _a = quantifiers_1[_i], denominator = _a[0], letter = _a[1];
12
12
  if (amount > denominator) {
13
- return (amount / denominator).toFixed(2) + " " + letter;
13
+ return "".concat((amount / denominator).toFixed(2), " ").concat(letter);
14
14
  }
15
15
  }
16
16
  return amount.toString();
@@ -3,7 +3,7 @@ export interface TokenPrices {
3
3
  usd: number;
4
4
  } | undefined;
5
5
  }
6
- export declare type GetCoingeckoLog = () => Promise<any>;
6
+ export type GetCoingeckoLog = () => Promise<any>;
7
7
  export declare function makeCoingeckoCall(url: string, coingeckoMaxRetries: number, getCoingeckoLock: GetCoingeckoLog): Promise<any>;
8
8
  export declare function getTokenPrices(originalIds: string[], url: string, knownTokenPrices: TokenPrices, getCoingeckoLock: GetCoingeckoLog, coingeckoMaxRetries: number, prefix?: string): Promise<TokenPrices>;
9
9
  export declare function getHistoricalTokenPrices(ids: string[], url: string, timestamp: number, getCoingeckoLock: GetCoingeckoLog, coingeckoMaxRetries: number): Promise<TokenPrices>;
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.getHistoricalTokenPrices = exports.getTokenPrices = exports.makeCoingeckoCall = void 0;
43
43
  var node_fetch_1 = __importDefault(require("node-fetch"));
44
44
  function fetchJson(url) {
45
- return node_fetch_1.default(url).then(function (res) { return res.json(); });
45
+ return (0, node_fetch_1.default)(url).then(function (res) { return res.json(); });
46
46
  }
47
47
  function makeCoingeckoCall(url, coingeckoMaxRetries, getCoingeckoLock) {
48
48
  return __awaiter(this, void 0, void 0, function () {
@@ -100,9 +100,9 @@ function getTokenPrices(originalIds, url, knownTokenPrices, getCoingeckoLock, co
100
100
  _a.label = 1;
101
101
  case 1:
102
102
  if (!(i < newIds.length)) return [3 /*break*/, 4];
103
- return [4 /*yield*/, makeCoingeckoCall("https://api.coingecko.com/api/" + url + "=" + newIds
103
+ return [4 /*yield*/, makeCoingeckoCall("https://api.coingecko.com/api/".concat(url, "=").concat(newIds
104
104
  .slice(i, i + 100)
105
- .join(",") + "&vs_currencies=usd", coingeckoMaxRetries, getCoingeckoLock)];
105
+ .join(","), "&vs_currencies=usd"), coingeckoMaxRetries, getCoingeckoLock)];
106
106
  case 2:
107
107
  tempTokenPrices = _a.sent();
108
108
  Object.assign(tokenPrices, tempTokenPrices);
@@ -133,7 +133,7 @@ function getHistoricalTokenPrices(ids, url, timestamp, getCoingeckoLock, coingec
133
133
  case 1:
134
134
  if (!(_i < ids_1.length)) return [3 /*break*/, 4];
135
135
  id = ids_1[_i];
136
- return [4 /*yield*/, makeCoingeckoCall(url + "/" + id.toLowerCase() + "/market_chart/range?vs_currency=usd&from=" + (timestamp - secondsPerHalfDay) + "&to=" + (timestamp + secondsPerHalfDay), coingeckoMaxRetries, getCoingeckoLock)];
136
+ return [4 /*yield*/, makeCoingeckoCall("".concat(url, "/").concat(id.toLowerCase(), "/market_chart/range?vs_currency=usd&from=").concat(timestamp - secondsPerHalfDay, "&to=").concat(timestamp + secondsPerHalfDay), coingeckoMaxRetries, getCoingeckoLock)];
137
137
  case 2:
138
138
  range = _d.sent();
139
139
  if (range.error === undefined && ((_a = range.prices) === null || _a === void 0 ? void 0 : _a.length) > 0) {
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -46,7 +46,7 @@ var abi = [
46
46
  "function symbol() view returns (string)",
47
47
  ];
48
48
  function getContract(address, chain) {
49
- return new ethers_1.ethers.Contract(address, abi, general_1.getProvider(chain));
49
+ return new ethers_1.ethers.Contract(address, abi, (0, general_1.getProvider)(chain));
50
50
  }
51
51
  function info(tokenAddress, chain) {
52
52
  return __awaiter(this, void 0, void 0, function () {
@@ -116,7 +116,7 @@ function totalSupply(params) {
116
116
  case 1:
117
117
  supply = _b.sent();
118
118
  return [2 /*return*/, {
119
- output: general_1.handleDecimals(supply, params.decimals),
119
+ output: (0, general_1.handleDecimals)(supply, params.decimals),
120
120
  }];
121
121
  }
122
122
  });
@@ -135,7 +135,7 @@ function balanceOf(params) {
135
135
  case 1:
136
136
  balance = _b.sent();
137
137
  return [2 /*return*/, {
138
- output: general_1.handleDecimals(balance, params.decimals),
138
+ output: (0, general_1.handleDecimals)(balance, params.decimals),
139
139
  }];
140
140
  }
141
141
  });
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -43,11 +43,11 @@ function getBalance(params) {
43
43
  var balance;
44
44
  return __generator(this, function (_a) {
45
45
  switch (_a.label) {
46
- case 0: return [4 /*yield*/, general_1.getProvider(params.chain).getBalance(params.target, params.block)];
46
+ case 0: return [4 /*yield*/, (0, general_1.getProvider)(params.chain).getBalance(params.target, params.block)];
47
47
  case 1:
48
48
  balance = _a.sent();
49
49
  return [2 /*return*/, {
50
- output: general_1.handleDecimals(balance, params.decimals),
50
+ output: (0, general_1.handleDecimals)(balance, params.decimals),
51
51
  }];
52
52
  }
53
53
  });
@@ -73,7 +73,7 @@ function getBalances(params) {
73
73
  target: target
74
74
  };
75
75
  _a = general_1.handleDecimals;
76
- return [4 /*yield*/, general_1.getProvider(params.chain).getBalance(target, params.block)];
76
+ return [4 /*yield*/, (0, general_1.getProvider)(params.chain).getBalance(target, params.block)];
77
77
  case 1: return [2 /*return*/, (_b.balance = _a.apply(void 0, [_c.sent(), params.decimals]),
78
78
  _b)];
79
79
  }
@@ -2,7 +2,7 @@ import { ethers, BigNumber } from "ethers";
2
2
  export declare const providers: {
3
3
  [chain: string]: ethers.providers.BaseProvider;
4
4
  };
5
- export declare type Chain = "ethereum" | "bsc" | "polygon" | "heco" | "fantom" | "rsk" | "tomochain" | "xdai" | "avax" | "wan" | "iotex" | "harmony" | "thundercore" | "okexchain" | "optimism" | "arbitrum" | "kcc" | "celo" | "moonriver" | "shiden" | "palm" | "energyweb" | "energi" | "songbird" | "hpb" | "gochain" | "ethereumclassic" | "xdaiarb" | "kardia" | "fuse" | "smartbch" | "elastos" | "hoo" | "fusion" | "aurora" | "ronin" | "boba" | "cronos" | "polis" | "zyx" | "telos" | "metis" | "ubiq" | "velas" | "callisto" | "csc" | "nahmii" | "liquidchain" | "meter" | "theta" | "oasis" | "syscoin" | "moonbeam" | "curio" | "astar" | "godwoken" | "evmos" | "conflux" | "milkomeda" | "milkomeda_a1" | "dfk" | "bittorrent" | "findora" | "candle" | "lachain" | "reichain" | "rei" | "clv" | "echelon" | "multivac" | "sx" | "karura_evm" | "nova" | "ontology_evm" | "jfin" | "bitkub" | "bitgert" | "canto" | "dogechain" | "posi" | "arbitrum_nova" | "ultron" | "tombchain" | "vision" | "ethpow" | "functionx" | "cube" | "xdc" | "step" | "kekchain" | "muuchain";
5
+ export type Chain = "ethereum" | "bsc" | "polygon" | "heco" | "fantom" | "rsk" | "tomochain" | "xdai" | "avax" | "wan" | "iotex" | "harmony" | "thundercore" | "okexchain" | "optimism" | "arbitrum" | "kcc" | "celo" | "moonriver" | "shiden" | "palm" | "energyweb" | "energi" | "songbird" | "hpb" | "gochain" | "ethereumclassic" | "xdaiarb" | "kardia" | "fuse" | "smartbch" | "elastos" | "hoo" | "fusion" | "aurora" | "ronin" | "boba" | "cronos" | "polis" | "zyx" | "telos" | "metis" | "ubiq" | "velas" | "callisto" | "csc" | "nahmii" | "liquidchain" | "meter" | "theta" | "oasis" | "syscoin" | "moonbeam" | "curio" | "astar" | "godwoken" | "evmos" | "conflux" | "milkomeda" | "milkomeda_a1" | "dfk" | "bittorrent" | "findora" | "candle" | "lachain" | "reichain" | "rei" | "clv" | "echelon" | "multivac" | "sx" | "karura_evm" | "nova" | "ontology_evm" | "jfin" | "bitkub" | "bitgert" | "canto" | "dogechain" | "posi" | "arbitrum_nova" | "ultron" | "tombchain" | "vision" | "ethpow" | "functionx" | "cube" | "xdc" | "step" | "kekchain" | "muuchain";
6
6
  export declare function getProvider(chain?: Chain): ethers.providers.BaseProvider;
7
7
  export declare const TEN: ethers.BigNumber;
8
8
  export declare function handleDecimals(num: BigNumber, decimals?: number): string;
@@ -1,4 +1,6 @@
1
- import computeTVL from "./computeTVL";
1
+ import { BigNumber } from "ethers";
2
+ import * as blocks from "./computeTVL/blocks";
3
+ import * as humanizeNumber from "./computeTVL/humanizeNumber";
2
4
  import type { Balances, StringNumber, Address } from "./types";
3
5
  export declare function sumMultiBalanceOf(balances: Balances, results: {
4
6
  ethCallCount?: number;
@@ -11,9 +13,10 @@ export declare function sumMultiBalanceOf(balances: Balances, results: {
11
13
  };
12
14
  }[];
13
15
  }, allCallsMustBeSuccessful?: boolean, transformAddress?: (addr: string) => string): void;
14
- export declare function sumSingleBalance(balances: Balances, token: string, balance: string | number): void;
15
- declare type ChainBlocks = {
16
+ export declare function sumSingleBalance(balances: Balances, token: string, balance: string | number | BigNumber, chain?: string): void;
17
+ export declare function mergeBalances(balances: Balances, balancesToMerge: Balances): void;
18
+ type ChainBlocks = {
16
19
  [chain: string]: number;
17
20
  };
18
21
  export declare function sumChainTvls(chainTvls: Array<(timestamp: number, ethBlock: number, chainBlocks: ChainBlocks) => Promise<Balances>>): (timestamp: number, ethBlock: number, chainBlocks: ChainBlocks) => Promise<{}>;
19
- export { computeTVL };
22
+ export { blocks, humanizeNumber, };
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -14,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
37
  function verb(n) { return function (v) { return step([n, v]); }; }
15
38
  function step(op) {
16
39
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
42
  if (y = 0, t) op = [op[0] & 2, t.value];
20
43
  switch (op[0]) {
@@ -35,14 +58,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
58
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
59
  }
37
60
  };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
61
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.computeTVL = exports.sumChainTvls = exports.sumSingleBalance = exports.sumMultiBalanceOf = void 0;
62
+ exports.humanizeNumber = exports.blocks = exports.sumChainTvls = exports.mergeBalances = exports.sumSingleBalance = exports.sumMultiBalanceOf = void 0;
43
63
  var ethers_1 = require("ethers");
44
- var computeTVL_1 = __importDefault(require("./computeTVL"));
45
- exports.computeTVL = computeTVL_1.default;
64
+ var blocks = __importStar(require("./computeTVL/blocks"));
65
+ exports.blocks = blocks;
66
+ var humanizeNumber = __importStar(require("./computeTVL/humanizeNumber"));
67
+ exports.humanizeNumber = humanizeNumber;
46
68
  // We ignore `sum` as it's never used (only in some SDK wrapper code)
47
69
  function sumMultiBalanceOf(balances, results, allCallsMustBeSuccessful, transformAddress) {
48
70
  if (allCallsMustBeSuccessful === void 0) { allCallsMustBeSuccessful = true; }
@@ -66,18 +88,32 @@ function sumMultiBalanceOf(balances, results, allCallsMustBeSuccessful, transfor
66
88
  });
67
89
  }
68
90
  exports.sumMultiBalanceOf = sumMultiBalanceOf;
69
- function sumSingleBalance(balances, token, balance) {
70
- var _a, _b;
91
+ function sumSingleBalance(balances, token, balance, chain) {
92
+ if (chain)
93
+ token = "".concat(chain, ":").concat(token);
94
+ if (typeof balance === 'object') {
95
+ if (typeof balance.toString === 'function')
96
+ balance = balance.toString();
97
+ else
98
+ throw new Error('Invalid balance value:' + balance);
99
+ }
71
100
  if (typeof balance === 'number') {
72
- var prevBalance = (_a = balances[token]) !== null && _a !== void 0 ? _a : 0;
73
- if (typeof prevBalance !== 'number') {
74
- throw new Error("Trying to merge token balance and coingecko amount for " + token);
75
- }
76
- balances[token] = prevBalance + balance;
101
+ var prevBalance = +(balances.hasOwnProperty(token) ? balances[token] : 0);
102
+ if (typeof prevBalance !== 'number' || isNaN(prevBalance))
103
+ throw new Error("Trying to merge token balance and coingecko amount for ".concat(token, " current balance: ").concat(balance, " previous balance: ").concat(balances[token]));
104
+ var value = prevBalance + balance;
105
+ isValidNumber(value);
106
+ balances[token] = value;
77
107
  }
78
108
  else {
79
- var prevBalance = ethers_1.BigNumber.from((_b = balances[token]) !== null && _b !== void 0 ? _b : "0");
80
- balances[token] = prevBalance.add(ethers_1.BigNumber.from(balance)).toString();
109
+ var prevBalance = ethers_1.BigNumber.from(balances.hasOwnProperty(token) ? balances[token] : '0');
110
+ var value = prevBalance.add(ethers_1.BigNumber.from(balance)).toString();
111
+ isValidNumber(+value);
112
+ balances[token] = value;
113
+ }
114
+ function isValidNumber(value) {
115
+ if (isNaN(value))
116
+ throw new Error("Invalid balance: ".concat(balance));
81
117
  }
82
118
  }
83
119
  exports.sumSingleBalance = sumSingleBalance;
@@ -86,6 +122,7 @@ function mergeBalances(balances, balancesToMerge) {
86
122
  sumSingleBalance(balances, balance[0], balance[1]);
87
123
  });
88
124
  }
125
+ exports.mergeBalances = mergeBalances;
89
126
  function sumChainTvls(chainTvls) {
90
127
  var _this = this;
91
128
  return function (timestamp, ethBlock, chainBlocks) { return __awaiter(_this, void 0, void 0, function () {
package/build/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];