@defillama/sdk 5.0.6 → 5.0.9

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.
@@ -39,7 +39,14 @@ export declare class ChainApi {
39
39
  removeTokenBalance(token: string): void;
40
40
  deleteToken(token: string): void;
41
41
  deleteTokens(tokens: string[]): void;
42
- erc4626Sum({ calls, tokenAbi, balanceAbi, balanceCalls, permitFailure }: any): Promise<void>;
42
+ erc4626Sum({ calls, tokenAbi, balanceAbi, balanceCalls, permitFailure, isOG4626 }: {
43
+ calls: string[];
44
+ tokenAbi?: string;
45
+ balanceAbi?: string;
46
+ balanceCalls?: any[];
47
+ permitFailure?: boolean;
48
+ isOG4626?: boolean;
49
+ }): Promise<BalancesV1>;
43
50
  sumTokens({ tokens, owners, owner, tokensAndOwners, tokensAndOwners2, blacklistedTokens, blacklistedOwners, ownerTokens, }: {
44
51
  tokens?: string[];
45
52
  owner?: string;
package/build/ChainApi.js CHANGED
@@ -155,23 +155,27 @@ var ChainApi = /** @class */ (function () {
155
155
  tokens.forEach(function (i) { return _this.deleteToken(i); });
156
156
  };
157
157
  ChainApi.prototype.erc4626Sum = function (_a) {
158
- var calls = _a.calls, _b = _a.tokenAbi, tokenAbi = _b === void 0 ? 'address:token' : _b, _c = _a.balanceAbi, balanceAbi = _c === void 0 ? 'uint256:balance' : _c, balanceCalls = _a.balanceCalls, _d = _a.permitFailure, permitFailure = _d === void 0 ? false : _d;
158
+ var calls = _a.calls, _b = _a.tokenAbi, tokenAbi = _b === void 0 ? 'address:token' : _b, _c = _a.balanceAbi, balanceAbi = _c === void 0 ? 'uint256:balance' : _c, balanceCalls = _a.balanceCalls, _d = _a.permitFailure, permitFailure = _d === void 0 ? false : _d, _e = _a.isOG4626, isOG4626 = _e === void 0 ? false : _e;
159
159
  return __awaiter(this, void 0, void 0, function () {
160
160
  var tokens, balances;
161
161
  var _this = this;
162
- return __generator(this, function (_e) {
163
- switch (_e.label) {
162
+ return __generator(this, function (_f) {
163
+ switch (_f.label) {
164
164
  case 0:
165
+ if (isOG4626) {
166
+ tokenAbi = 'asset';
167
+ balanceAbi = 'totalAssets';
168
+ }
165
169
  if (typeof tokenAbi === 'string' && (!tokenAbi.includes(':') && !tokenAbi.includes('(')))
166
170
  tokenAbi = "address:".concat(tokenAbi);
167
171
  if (typeof balanceAbi === 'string' && (!balanceAbi.includes(':') && !balanceAbi.includes('(')))
168
172
  balanceAbi = "uint256:".concat(balanceAbi);
169
173
  return [4 /*yield*/, this.multiCall({ calls: calls, abi: tokenAbi, permitFailure: permitFailure })];
170
174
  case 1:
171
- tokens = _e.sent();
175
+ tokens = _f.sent();
172
176
  return [4 /*yield*/, this.multiCall({ calls: calls !== null && calls !== void 0 ? calls : balanceCalls, abi: balanceAbi, permitFailure: permitFailure })];
173
177
  case 2:
174
- balances = _e.sent();
178
+ balances = _f.sent();
175
179
  if (!permitFailure)
176
180
  this.addTokens(tokens, balances);
177
181
  else
@@ -179,7 +183,7 @@ var ChainApi = /** @class */ (function () {
179
183
  if (i && balances[j])
180
184
  _this.addToken(i, balances[j]);
181
185
  });
182
- return [2 /*return*/];
186
+ return [2 /*return*/, this.getBalances()];
183
187
  }
184
188
  });
185
189
  });
@@ -93,6 +93,7 @@ var internal_cache_1 = require("../util/internal-cache");
93
93
  var util_1 = require("../util");
94
94
  var Tron = __importStar(require("./tron"));
95
95
  var generalUtil_1 = require("../generalUtil");
96
+ var env_1 = require("../util/env");
96
97
  var nullAddress = '0x0000000000000000000000000000000000000000';
97
98
  // https://docs.soliditylang.org/en/latest/abi-spec.html
98
99
  var knownTypes = [
@@ -101,13 +102,6 @@ var knownTypes = [
101
102
  'uint', 'uint8', 'uint16', 'uint32', 'uint64', 'uint128', 'uint256',
102
103
  ];
103
104
  (__spreadArray([], knownTypes, true)).forEach(function (i) { return knownTypes.push(i + '[]'); }); // support array type for all known types
104
- function getDefaultChunkSize(chain) {
105
- if (process.env['SDK_MULTICALL_CHUNK_SIZE_' + (chain === null || chain === void 0 ? void 0 : chain.toUpperCase())])
106
- return +process.env['SDK_MULTICALL_CHUNK_SIZE_' + (chain === null || chain === void 0 ? void 0 : chain.toUpperCase())];
107
- if (chain === 'cronos')
108
- return 200;
109
- return process.env.SDK_MULTICALL_CHUNK_SIZE ? +process.env.SDK_MULTICALL_CHUNK_SIZE : 300;
110
- }
111
105
  function resolveABI(providedAbi) {
112
106
  if (!providedAbi)
113
107
  throw new Error('Missing ABI parameter!');
@@ -271,7 +265,7 @@ function multiCall(params) {
271
265
  chunkSize = params.chunkSize;
272
266
  if (!params.chunkSize) {
273
267
  // Only a max of around 500 calls are supported by multicall, we have to split bigger batches
274
- chunkSize = getDefaultChunkSize(chain);
268
+ chunkSize = (0, env_1.getDefaultChunkSize)(chain);
275
269
  }
276
270
  if (!params.target && !params.permitFailure) {
277
271
  // check if target adddress is missing for one of the calls
@@ -70,6 +70,7 @@ var rpcCall_1 = require("./rpcCall");
70
70
  var debugLog_1 = require("../util/debugLog");
71
71
  var util_1 = require("../util");
72
72
  var Tron = __importStar(require("./tron"));
73
+ var env_1 = require("../util/env");
73
74
  exports.MULTICALL_ADDRESS_MAINNET = "0xeefba1e63905ef1d7acba5a8513c70307c1ce441";
74
75
  exports.MULTICALL_ADDRESS_KOVAN = "0x2cc8688c5f75e365aaeeb4ea8d6a480405a48d2a";
75
76
  exports.MULTICALL_ADDRESS_RINKEBY = "0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821";
@@ -228,7 +229,7 @@ function multicallAddressOrThrow(chain) {
228
229
  return __generator(this, function (_a) {
229
230
  switch (_a.label) {
230
231
  case 0:
231
- multicallEnv = process.env["".concat(chain.toUpperCase(), "_RPC_MULTICALL")];
232
+ multicallEnv = (0, env_1.getEnvMulticallAddress)(chain);
232
233
  if (multicallEnv)
233
234
  return [2 /*return*/, multicallEnv];
234
235
  return [4 /*yield*/, (0, general_1.getProvider)(chain).getNetwork()];
@@ -254,7 +255,7 @@ function networkSupportsMulticall(chain) {
254
255
  return __generator(this, function (_b) {
255
256
  switch (_b.label) {
256
257
  case 0:
257
- multicallEnv = process.env["".concat(chain.toUpperCase(), "_RPC_MULTICALL")];
258
+ multicallEnv = (0, env_1.getEnvMulticallAddress)(chain);
258
259
  if (multicallEnv)
259
260
  networkMulticallCache[chain] = true;
260
261
  if (!!networkMulticallCache.hasOwnProperty(chain)) return [3 /*break*/, 2];
@@ -50,7 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.call = void 0;
51
51
  var events_1 = require("events");
52
52
  var debugLog_1 = require("../util/debugLog");
53
- var maxParallelCalls = !!process.env.LLAMA_SDK_MAX_PARALLEL ? +process.env.LLAMA_SDK_MAX_PARALLEL : 100;
53
+ var env_1 = require("../util/env");
54
54
  var COUNTERS = {};
55
55
  var emitter = new events_1.EventEmitter();
56
56
  emitter.setMaxListeners(500000);
@@ -77,9 +77,7 @@ function call(provider, data, block, chain, options) {
77
77
  counter = getChainCounter(chain);
78
78
  currentId = counter.requestCount++;
79
79
  eventId = "".concat(chain, "-").concat(currentId);
80
- chainMaxParallelCalls = maxParallelCalls;
81
- if (['avax', 'harmony'].includes(chain))
82
- chainMaxParallelCalls = 20;
80
+ chainMaxParallelCalls = (0, env_1.getMaxParallelRequests)(chain);
83
81
  if (!(counter.activeWorkers > chainMaxParallelCalls)) return [3 /*break*/, 2];
84
82
  counter.queue.push(eventId);
85
83
  return [4 /*yield*/, (0, events_1.once)(emitter, eventId)];
package/build/abi/tron.js CHANGED
@@ -47,7 +47,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
47
47
  var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
49
49
  };
50
- var _a;
51
50
  Object.defineProperty(exports, "__esModule", { value: true });
52
51
  exports.getBalances = exports.getBalance = exports.multiCall = exports.call = void 0;
53
52
  var node_fetch_1 = __importDefault(require("node-fetch"));
@@ -58,11 +57,11 @@ var debugLog_1 = require("../util/debugLog");
58
57
  var util_1 = require("../util");
59
58
  var general_1 = require("../general");
60
59
  var p_limit_1 = __importDefault(require("p-limit"));
61
- var limitRPCCalls = (0, p_limit_1.default)(+((_a = process.env.TRON_RPC_CONCURRENCY_LIMIT) !== null && _a !== void 0 ? _a : 5));
60
+ var env_1 = require("../util/env");
61
+ var limitRPCCalls = (0, p_limit_1.default)(+(0, env_1.getEnvValue)('TRON_RPC_CONCURRENCY_LIMIT', '5'));
62
62
  var ownerAddress = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
63
- var endpoint = 'https://api.trongrid.io';
64
63
  var MULTICALL_ADDRESS = 'TGXuuKAb4bnrn137u39EKbYzKNXvdCes98';
65
- var getEndpoint = function () { var _a; return (_a = process.env.TRON_RPC) !== null && _a !== void 0 ? _a : endpoint; };
64
+ var getEndpoint = function () { return (0, env_1.getEnvRPC)('tron'); };
66
65
  function call(options) {
67
66
  var _a, _b;
68
67
  return __awaiter(this, void 0, void 0, function () {
@@ -295,14 +294,15 @@ function post(body, endpoint) {
295
294
  if (body === void 0) { body = {}; }
296
295
  if (endpoint === void 0) { endpoint = '/wallet/triggerconstantcontract'; }
297
296
  return __awaiter(this, void 0, void 0, function () {
298
- var host, headers, response;
297
+ var host, headers, apiKey, response;
299
298
  return __generator(this, function (_a) {
300
299
  switch (_a.label) {
301
300
  case 0:
302
301
  host = getEndpoint();
303
302
  headers = { 'Content-Type': 'application/json' };
304
- if (process.env.TRON_PRO_API_KEY)
305
- headers['TRON-PRO-API-KEY'] = process.env.TRON_PRO_API_KEY;
303
+ apiKey = (0, env_1.getEnvValue)('TRON_PRO_API_KEY');
304
+ if (apiKey)
305
+ headers['TRON-PRO-API-KEY'] = apiKey;
306
306
  return [4 /*yield*/, (0, node_fetch_1.default)(host + endpoint, {
307
307
  method: 'post',
308
308
  body: JSON.stringify(body),
package/build/general.js CHANGED
@@ -4,23 +4,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.setProvider = exports.ETHER_ADDRESS = exports.handleDecimals = exports.TEN = exports.getProvider = exports.providers = void 0;
7
+ var debugLog_1 = require("./util/debugLog");
7
8
  var ethers_1 = require("ethers");
8
9
  var providers_json_1 = __importDefault(require("./providers.json"));
10
+ var env_1 = require("./util/env");
9
11
  function createProvider(name, rpcString, chainId) {
10
- if (chainId === void 0) { chainId = 2424242424242422; }
12
+ chainId = (0, env_1.getChainId)(name, chainId);
11
13
  var networkish = { name: name, chainId: chainId };
12
14
  var rpcList = rpcString.split(',');
13
- if (process.env["".concat(name.toUpperCase(), "_RPC_CHAIN_ID")])
14
- chainId = +process.env["".concat(name.toUpperCase(), "_RPC_CHAIN_ID")];
15
- if (process.env.HISTORICAL) {
15
+ if ((0, env_1.getEnvValue)('HISTORICAL')) {
16
16
  if (chainId === 1) {
17
- console.log("RPC providers set to historical, only the first RPC provider will be used");
17
+ (0, debugLog_1.debugLog)("RPC providers set to historical, only the first RPC provider will be used");
18
18
  }
19
- return getProviderObject(rpcList[0]);
19
+ return getProviderObject(rpcList[0], name);
20
20
  }
21
21
  else {
22
22
  try {
23
- return new ethers_1.ethers.FallbackProvider(rpcList.map(function (url, i) { return ({ provider: getProviderObject(url), priority: i, chainId: chainId, }); }), networkish, { cacheTimeout: 5 * 1000, quorum: 1, eventQuorum: 1, });
23
+ return new ethers_1.ethers.FallbackProvider(rpcList.map(function (url, i) { return ({ provider: getProviderObject(url, name), priority: i, chainId: chainId, }); }), networkish, { cacheTimeout: 5 * 1000, quorum: 1, eventQuorum: 1, });
24
24
  }
25
25
  catch (e) {
26
26
  // debugLog(`Error creating provider for ${name} with RPCs: ${rpcList.join(', ')}`)
@@ -30,7 +30,7 @@ function createProvider(name, rpcString, chainId) {
30
30
  return null;
31
31
  }
32
32
  }
33
- function getProviderObject(url) {
33
+ function getProviderObject(url, chain) {
34
34
  /**
35
35
  * Options for configuring a [[JsonRpcApiProvider]]. Much of this
36
36
  * is targetted towards sub-classes, which often will not expose
@@ -70,7 +70,8 @@ function createProvider(name, rpcString, chainId) {
70
70
  */
71
71
  // const batchMaxSize = 10 * (1024 * 1024) // 10Mb
72
72
  // some rpcs throw error if batchMaxCount is set higher than 100
73
- var jsonRpcApiProviderOptions = { staticNetwork: true, batchStallTime: 42, batchMaxCount: 99, cacheTimeout: 5 * 1000 };
73
+ var batchMaxCount = (0, env_1.getBatchMaxCount)(chain);
74
+ var jsonRpcApiProviderOptions = { staticNetwork: true, batchStallTime: 42, batchMaxCount: batchMaxCount, cacheTimeout: 5 * 1000 };
74
75
  if (url.startsWith('wss://')) {
75
76
  delete jsonRpcApiProviderOptions.batchMaxCount;
76
77
  return new ethers_1.ethers.WebSocketProvider(url, networkish, jsonRpcApiProviderOptions);
@@ -79,23 +80,28 @@ function createProvider(name, rpcString, chainId) {
79
80
  }
80
81
  }
81
82
  exports.providers = {};
83
+ var archivalProviders = {};
82
84
  function getProvider(chain, getArchivalNode) {
83
85
  var _a, _b, _c;
84
86
  if (chain === void 0) { chain = "ethereum"; }
85
87
  if (getArchivalNode === void 0) { getArchivalNode = false; }
88
+ if (getArchivalNode) {
89
+ if (archivalProviders[chain])
90
+ return archivalProviders[chain]._provider;
91
+ var rpcList_1 = (0, env_1.getArchivalRPCs)(chain);
92
+ if (rpcList_1.length) {
93
+ // shuffle rpcList
94
+ rpcList_1 = rpcList_1.sort(function () { return Math.random() - 0.5; });
95
+ var provider = createProvider(chain, rpcList_1.join(','), (_a = providers_json_1.default[chain]) === null || _a === void 0 ? void 0 : _a.chainId);
96
+ if (rpcList_1.length === 1)
97
+ archivalProviders[chain] = { rpcList: rpcList_1[0], _provider: provider };
98
+ return provider;
99
+ }
100
+ }
86
101
  if (exports.providers[chain] && !getArchivalNode)
87
102
  return exports.providers[chain]._provider;
88
- var chainArchivalpcEnv = process.env[chain.toUpperCase() + "_ARCHIVAL_RPC"];
89
- if (getArchivalNode && typeof chainArchivalpcEnv === 'string' && chainArchivalpcEnv.length > 0) {
90
- var rpcList_1 = chainArchivalpcEnv === null || chainArchivalpcEnv === void 0 ? void 0 : chainArchivalpcEnv.split(',');
91
- // shuffle rpcList
92
- rpcList_1 = rpcList_1.sort(function () { return Math.random() - 0.5; });
93
- return createProvider(chain, rpcList_1.join(','), (_a = providers_json_1.default[chain]) === null || _a === void 0 ? void 0 : _a.chainId);
94
- }
95
103
  // use RPC from env variable if set else use RPC from providers.json
96
- var rpcList = process.env[chain.toUpperCase() + "_RPC"];
97
- if (!rpcList)
98
- rpcList = (_b = providers_json_1.default[chain]) === null || _b === void 0 ? void 0 : _b.rpc.join(',');
104
+ var rpcList = (0, env_1.getChainRPCs)(chain, (_b = providers_json_1.default[chain]) === null || _b === void 0 ? void 0 : _b.rpc);
99
105
  if (!rpcList) {
100
106
  // in case provider was set using `setProvider` function
101
107
  if (exports.providers[chain])