impermax-sdk 1.2.60 → 1.2.61

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.
Files changed (69) hide show
  1. package/lib/offchain/offchainPriceHelper.js +1 -0
  2. package/lib/offchain/query.js +247 -247
  3. package/package.json +1 -1
  4. package/lib/offchain/account/lendingPool/borrowable.d.ts +0 -14
  5. package/lib/offchain/account/lendingPool/borrowable.js +0 -73
  6. package/lib/offchain/account/lendingPool/collateral.d.ts +0 -12
  7. package/lib/offchain/account/lendingPool/collateral.js +0 -42
  8. package/lib/offchain/account/lendingVault.d.ts +0 -11
  9. package/lib/offchain/account/lendingVault.js +0 -38
  10. package/lib/offchain/account/poolToken.d.ts +0 -6
  11. package/lib/offchain/account/poolToken.js +0 -21
  12. package/lib/offchain/initializer.d.ts +0 -32
  13. package/lib/offchain/initializer.js +0 -627
  14. package/lib/offchain/lendingPool/borrowable.d.ts +0 -55
  15. package/lib/offchain/lendingPool/borrowable.js +0 -351
  16. package/lib/offchain/lendingPool/collateral.d.ts +0 -17
  17. package/lib/offchain/lendingPool/collateral.js +0 -72
  18. package/lib/offchain/lendingVault.d.ts +0 -22
  19. package/lib/offchain/lendingVault.js +0 -115
  20. package/lib/offchain/poolToken.d.ts +0 -20
  21. package/lib/offchain/poolToken.js +0 -120
  22. package/lib/offchain/priceHelper.d.ts +0 -21
  23. package/lib/offchain/priceHelper.js +0 -195
  24. package/lib/offchain/solidexHelper.d.ts +0 -16
  25. package/lib/offchain/solidexHelper.js +0 -58
  26. package/lib/offchain/types.d.ts +0 -150
  27. package/lib/offchain/types.js +0 -3
  28. package/lib/onchain/account/interactions/index.d.ts +0 -28
  29. package/lib/onchain/account/interactions/index.js +0 -158
  30. package/lib/onchain/account/interactions/lendingPool/borrowable.d.ts +0 -16
  31. package/lib/onchain/account/interactions/lendingPool/borrowable.js +0 -49
  32. package/lib/onchain/account/interactions/lendingPool/collateral.d.ts +0 -15
  33. package/lib/onchain/account/interactions/lendingPool/collateral.js +0 -33
  34. package/lib/onchain/account/interactions/lendingPool/index.d.ts +0 -41
  35. package/lib/onchain/account/interactions/lendingPool/index.js +0 -120
  36. package/lib/onchain/account/interactions/lendingVault.d.ts +0 -10
  37. package/lib/onchain/account/interactions/lendingVault.js +0 -12
  38. package/lib/onchain/account/interactions/poolToken.d.ts +0 -33
  39. package/lib/onchain/account/interactions/poolToken.js +0 -180
  40. package/lib/onchain/account/lendingPool/borrowable.d.ts +0 -29
  41. package/lib/onchain/account/lendingPool/borrowable.js +0 -135
  42. package/lib/onchain/account/lendingPool/collateral.d.ts +0 -15
  43. package/lib/onchain/account/lendingPool/collateral.js +0 -66
  44. package/lib/onchain/account/lendingVault.d.ts +0 -10
  45. package/lib/onchain/account/lendingVault.js +0 -35
  46. package/lib/onchain/account/poolToken.d.ts +0 -24
  47. package/lib/onchain/account/poolToken.js +0 -84
  48. package/lib/onchain/contractsHelper.d.ts +0 -29
  49. package/lib/onchain/contractsHelper.js +0 -52
  50. package/lib/onchain/impermaxFactory/lendingPool/borrowable.d.ts +0 -36
  51. package/lib/onchain/impermaxFactory/lendingPool/borrowable.js +0 -153
  52. package/lib/onchain/impermaxFactory/lendingPool/collateral.d.ts +0 -17
  53. package/lib/onchain/impermaxFactory/lendingPool/collateral.js +0 -59
  54. package/lib/onchain/interactions/lendingPool/borrowable.d.ts +0 -14
  55. package/lib/onchain/interactions/lendingPool/borrowable.js +0 -47
  56. package/lib/onchain/interactions/lendingPool/collateral.d.ts +0 -13
  57. package/lib/onchain/interactions/lendingPool/collateral.js +0 -31
  58. package/lib/onchain/interactions/lendingVault.d.ts +0 -8
  59. package/lib/onchain/interactions/lendingVault.js +0 -15
  60. package/lib/onchain/interactions/poolToken.d.ts +0 -31
  61. package/lib/onchain/interactions/poolToken.js +0 -181
  62. package/lib/onchain/lendingVault.d.ts +0 -17
  63. package/lib/onchain/lendingVault.js +0 -56
  64. package/lib/onchain/poolToken.d.ts +0 -32
  65. package/lib/onchain/poolToken.js +0 -121
  66. package/lib/onchain/types.d.ts +0 -45
  67. package/lib/onchain/types.js +0 -14
  68. package/lib/utils/price-from-reserves.d.ts +0 -2
  69. package/lib/utils/price-from-reserves.js +0 -19
@@ -1,627 +0,0 @@
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
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.getXimxData = exports.initializeXimxData = exports.getUserData = exports.initializeUserData = exports.fetchUserData = exports.getTvlData = exports.initializeTvlData = exports.getLendingPoolData = exports.getLendingPoolsData = exports.initializeLendingPoolsData = exports.fetchUniswapAPR = exports.fetchCurrentVolumeAndReserves = exports.fetchPastVolume = exports.fetchImpermaxChefRewardRates = exports.fetchLendingPoolsPast = exports.fetchLendingPools = exports.fetchBlockByTimestamp = exports.apolloFetcher = void 0;
39
- const apollo_client_1 = __importDefault(require("apollo-client"));
40
- const apollo_link_http_1 = require("apollo-link-http");
41
- const apollo_cache_inmemory_1 = require("apollo-cache-inmemory");
42
- const query = __importStar(require("./query"));
43
- const lendingPool_1 = __importDefault(require("./lendingPool"));
44
- const subgraphs_1 = require("../config/subgraphs");
45
- const types_1 = require("../config/types");
46
- const amms_1 = require("../config/amms");
47
- const SECONDS_IN_YEAR = 60 * 60 * 24 * 365;
48
- function apolloFetcher(subgraphUrl, query) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const client = new apollo_client_1.default({
51
- link: new apollo_link_http_1.HttpLink({
52
- uri: subgraphUrl,
53
- }),
54
- cache: new apollo_cache_inmemory_1.InMemoryCache(),
55
- });
56
- return client.query({
57
- query: query,
58
- fetchPolicy: 'cache-first',
59
- });
60
- });
61
- }
62
- exports.apolloFetcher = apolloFetcher;
63
- function fetchBlockByTimestamp(timestamp) {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- try {
66
- const result = yield this.apolloFetcher(subgraphs_1.BLOCKS_SUBGRAPH_URL[this.network], query.blockQuery(timestamp));
67
- console.log(result.data._meta.block.number);
68
- if (!result.data.blocks[0])
69
- return null;
70
- return result.data.blocks[0].number;
71
- }
72
- catch (e) {
73
- console.log("can't fetch blocks by timestamp");
74
- return null;
75
- }
76
- });
77
- }
78
- exports.fetchBlockByTimestamp = fetchBlockByTimestamp;
79
- // Fetch Lending Pools
80
- function fetchLendingPools() {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- const calls = [];
83
- let factory;
84
- for (factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
85
- const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
86
- calls.push(this.apolloFetcher(subgraph, query.lendingPoolsQuery(factory, [])));
87
- }
88
- const results = yield Promise.all(calls);
89
- const lendingPools = {};
90
- let i = 0;
91
- for (factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
92
- lendingPools[factory] = results[i++].data.lendingPools;
93
- }
94
- return lendingPools;
95
- });
96
- }
97
- exports.fetchLendingPools = fetchLendingPools;
98
- function fetchLendingPoolsPast(seconds) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- const timestamp = Math.floor((new Date).getTime() / 1000);
101
- const blockNumber = yield this.fetchBlockByTimestamp(timestamp - seconds);
102
- if (!blockNumber)
103
- return null;
104
- try {
105
- const calls = [];
106
- let factory;
107
- for (factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
108
- const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
109
- calls.push(this.apolloFetcher(subgraph, query.lendingPoolsPastQuery(blockNumber, this.whitelistedPairs[factory])));
110
- }
111
- const results = yield Promise.all(calls);
112
- const lendingPools = {};
113
- let i = 0;
114
- for (factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
115
- lendingPools[factory] = results[i++].data.lendingPools;
116
- }
117
- return lendingPools;
118
- }
119
- catch (_a) {
120
- return null;
121
- }
122
- });
123
- }
124
- exports.fetchLendingPoolsPast = fetchLendingPoolsPast;
125
- // Farming APR
126
- function fetchImpermaxChefRewardRates() {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- if (!subgraphs_1.IMPERMAX_CHEF_SUBGRAPH_URL[this.network])
129
- return null;
130
- const result = yield this.apolloFetcher(subgraphs_1.IMPERMAX_CHEF_SUBGRAPH_URL[this.network], query.impermaxChefQuery());
131
- const rewards = {};
132
- let rewardToken = result.data.impermaxChefs[0].rewardToken;
133
- let rewardPerSec = parseFloat(result.data.impermaxChefs[0].rewardPerSec);
134
- let totalAllocPoint = parseFloat(result.data.impermaxChefs[0].totalAllocPoint);
135
- const impermaxRewarders = result.data.impermaxRewarders;
136
- for (const pool of result.data.pools) {
137
- rewards[pool.id] = [];
138
- rewards[pool.id].push({
139
- rewardToken,
140
- rewardRate: parseFloat(pool.allocPoint) / totalAllocPoint * rewardPerSec
141
- });
142
- }
143
- for (const impermaxRewarder of impermaxRewarders) {
144
- rewardToken = impermaxRewarder.rewardToken;
145
- rewardPerSec = parseFloat(impermaxRewarder.rewardPerSec);
146
- totalAllocPoint = parseFloat(impermaxRewarder.totalAllocPoint);
147
- for (const pool of impermaxRewarder.pools) {
148
- if (!(pool.borrowable in rewards))
149
- rewards[pool.borrowable] = [];
150
- rewards[pool.borrowable].push({
151
- rewardToken,
152
- rewardRate: parseFloat(pool.allocPoint) / totalAllocPoint * rewardPerSec
153
- });
154
- }
155
- }
156
- return rewards;
157
- });
158
- }
159
- exports.fetchImpermaxChefRewardRates = fetchImpermaxChefRewardRates;
160
- // Uniswap APR
161
- function fetchPastVolume(amm, lendingPools, seconds) {
162
- return __awaiter(this, void 0, void 0, function* () {
163
- const timestamp = Math.floor((new Date).getTime() / 1000);
164
- const blockNumber = yield this.fetchBlockByTimestamp(timestamp - seconds);
165
- if (!blockNumber)
166
- return {};
167
- let result;
168
- const pastVolume = {};
169
- try {
170
- result = yield this.apolloFetcher(amms_1.AMM_SUBGRAPH_URLS[this.network][amm], query.pastVolumeQuery(blockNumber, lendingPools.map(lendingPool => lendingPool.pair.uniswapV2PairAddress)));
171
- for (const pair of result.data.pairs) {
172
- pastVolume[pair.id] = parseInt(pair.volumeUSD);
173
- }
174
- }
175
- catch (e) {
176
- console.error(e);
177
- }
178
- return pastVolume;
179
- });
180
- }
181
- exports.fetchPastVolume = fetchPastVolume;
182
- function fetchCurrentVolumeAndReserves(amm, lendingPools) {
183
- return __awaiter(this, void 0, void 0, function* () {
184
- let result;
185
- const currentVolume = {};
186
- const currentReserve = {};
187
- try {
188
- result = yield this.apolloFetcher(amms_1.AMM_SUBGRAPH_URLS[this.network][amm], query.currentVolumeAndReservesQuery(lendingPools.map(lendingPool => lendingPool.pair.uniswapV2PairAddress)));
189
- for (const pair of result.data.pairs) {
190
- currentVolume[pair.id] = parseInt(pair.volumeUSD);
191
- currentReserve[pair.id] = parseInt(pair.reserveUSD);
192
- }
193
- }
194
- catch (e) {
195
- console.error(e);
196
- }
197
- return { currentReserve, currentVolume };
198
- });
199
- }
200
- exports.fetchCurrentVolumeAndReserves = fetchCurrentVolumeAndReserves;
201
- function fetchUniswapAPR(lendingPoolsByAmm, seconds = 60 * 60 * 24 * 7) {
202
- return __awaiter(this, void 0, void 0, function* () {
203
- const uniswapAPR = {};
204
- const amms = Object.keys(lendingPoolsByAmm);
205
- const promises = [];
206
- for (const amm of amms) {
207
- if (!amms_1.AMM_SUBGRAPH_URLS[this.network][amm])
208
- continue;
209
- const lendingPools = lendingPoolsByAmm[amm];
210
- if (lendingPools === undefined)
211
- continue;
212
- promises.push(Promise.all([
213
- amm,
214
- this.fetchPastVolume(amm, lendingPools, seconds),
215
- this.fetchCurrentVolumeAndReserves(amm, lendingPools)
216
- ]));
217
- }
218
- const ammsData = yield Promise.all(promises);
219
- for (const data of ammsData) {
220
- const [amm, pastVolume, { currentVolume, currentReserve },] = data;
221
- const lendingPools = lendingPoolsByAmm[amm];
222
- if (lendingPools === undefined)
223
- continue;
224
- for (const lendingPool of lendingPools) {
225
- const uniswapV2PairAddress = lendingPool.pair.uniswapV2PairAddress;
226
- if (!currentReserve[uniswapV2PairAddress]) {
227
- uniswapAPR[lendingPool.id] = 0;
228
- continue;
229
- }
230
- const cumVolumePast = pastVolume[uniswapV2PairAddress] ? pastVolume[uniswapV2PairAddress] : 0;
231
- const cumVolumeNow = currentVolume[uniswapV2PairAddress];
232
- const reserveUSD = currentReserve[uniswapV2PairAddress];
233
- const volumeUSD = cumVolumeNow - cumVolumePast;
234
- const yearlyVolume = volumeUSD * SECONDS_IN_YEAR / seconds;
235
- const yearlyFee = yearlyVolume * amms_1.AMM_LP_FEE[this.network][amm];
236
- uniswapAPR[lendingPool.id] = yearlyFee / reserveUSD;
237
- }
238
- }
239
- return uniswapAPR;
240
- });
241
- }
242
- exports.fetchUniswapAPR = fetchUniswapAPR;
243
- // OffchainLendingPool Data
244
- function initializeLendingPoolsData() {
245
- return __awaiter(this, void 0, void 0, function* () {
246
- const lendingPoolsData = {};
247
- // Get raw data
248
- const [lendingPools, lendingPoolsPast24h, lendingPoolsPast7d, impermaxChefRewardRates,] = yield Promise.all([
249
- this.fetchLendingPools(),
250
- this.fetchLendingPoolsPast(24 * 3600),
251
- this.fetchLendingPoolsPast(7 * 24 * 3600),
252
- this.fetchImpermaxChefRewardRates(),
253
- ]);
254
- // Get Uniswap APR
255
- const lendingPoolsByAmm = {};
256
- for (const factory in lendingPools) {
257
- for (const lendingPool of lendingPools[factory]) {
258
- const amm = (0, amms_1.getAmmByFactory)(this.network, lendingPool.pair.uniswapV2Factory);
259
- if (!amm)
260
- continue;
261
- if (!lendingPoolsByAmm[amm])
262
- lendingPoolsByAmm[amm] = [];
263
- const lendingPoolsOfAmm = lendingPoolsByAmm[amm];
264
- lendingPoolsOfAmm.push(lendingPool);
265
- }
266
- }
267
- const uniswapAPR = yield this.fetchUniswapAPR(lendingPoolsByAmm);
268
- // Organize lending pools data
269
- for (const factory in lendingPools) {
270
- for (const lendingPool of lendingPools[factory]) {
271
- lendingPool.pair.uniswapAPR = uniswapAPR[lendingPool.id] || 0;
272
- if (impermaxChefRewardRates) {
273
- lendingPool.borrowable0.rewards = impermaxChefRewardRates[lendingPool.borrowable0.id];
274
- lendingPool.borrowable1.rewards = impermaxChefRewardRates[lendingPool.borrowable1.id];
275
- }
276
- // If one of the price of the 2 tokens is 0, fix the collateral price by doubling it
277
- if (parseFloat(lendingPool.borrowable0.underlying.derivedUSD) === 0 || parseFloat(lendingPool.borrowable1.underlying.derivedUSD) === 0) {
278
- lendingPool.pair.derivedUSD = (parseFloat(lendingPool.pair.derivedUSD) * 2).toString();
279
- }
280
- if (!lendingPoolsData[factory])
281
- lendingPoolsData[factory] = {};
282
- lendingPoolsData[factory][lendingPool.id] = lendingPool;
283
- }
284
- // Add past data
285
- if (lendingPoolsPast24h) {
286
- const lendingPoolsPast24hOfFactory = lendingPoolsPast24h[factory];
287
- if (lendingPoolsPast24hOfFactory) {
288
- for (const lendingPool of lendingPoolsPast24hOfFactory) {
289
- lendingPoolsData[factory][lendingPool.id].past24h = lendingPool;
290
- }
291
- }
292
- }
293
- if (lendingPoolsPast7d) {
294
- const lendingPoolsPast7dhOfFactory = lendingPoolsPast7d[factory];
295
- if (lendingPoolsPast7dhOfFactory) {
296
- for (const lendingPool of lendingPoolsPast7dhOfFactory) {
297
- lendingPoolsData[factory][lendingPool.id].past7d = lendingPool;
298
- }
299
- }
300
- }
301
- }
302
- // Initialize OffchainLendingPool objects
303
- this.lendingPools = {};
304
- for (const factory in lendingPools) {
305
- this.lendingPools[factory] = {};
306
- for (const lendingPool of lendingPools[factory]) {
307
- this.lendingPools[factory][lendingPool.id] =
308
- new lendingPool_1.default(this, factory, lendingPool.id);
309
- }
310
- }
311
- // Quickfix for MIM and SPELL
312
- if (this.network === types_1.Networks.Arbitrum) {
313
- //const ETH_MIM = '0xa6e69dd0c36f3b59539e2c7afd274ef91b5c70f9';
314
- //const ETH_SPELL = '0x35b44b303eacb71114aa62fe8dae6f9c5de0f680';
315
- const ETH_gGOHM = '0x6d94f7e67c6ae0b0257c35754e059fdfb249d998';
316
- const ETH_MAGIC = '0x88a0b00bbe918ee00e3482f71962070dc052984b';
317
- const ETH_RDNT = '0xfb468ad210d427d65c9a765a480649d5754ca325';
318
- const LIZ_LIZ_ETH = '0x699c5e23357ab1bf658bd0b38070d746e37671f3';
319
- const LIZ_ETH_USDC = '0x1229aac120ae75301ab1c3a2a04ec14183493584';
320
- const LIZ_ETH_BTC = '0xce009c44e1645bc6d19c90ba440c618a42ae581d';
321
- const LIZ_LIZ_USDC = '0x463ec151258370a07431068bb3bdc98b5a6ba18f';
322
- const lendingPoolsDataV2V1_1 = lendingPoolsData[types_1.Factory.V2V1_1];
323
- if (lendingPoolsDataV2V1_1) {
324
- if (lendingPoolsDataV2V1_1[ETH_gGOHM]) {
325
- //lendingPoolsData[Factory.V2V1_1][ETH_SPELL].pair.rewards[0].rewardRate = '8.44';
326
- //lendingPoolsData[Factory.V2V1_1][ETH_MIM].pair.rewards[0].rewardRate = '30.64';
327
- //lendingPoolsData[Factory.V2V1_1][ETH_gGOHM].pair.rewards[0].rewardRate = '0.000009129';
328
- lendingPoolsDataV2V1_1[ETH_MAGIC].pair.rewards[0].rewardRate = '0.135';
329
- }
330
- }
331
- const lendingPoolsDataV2V2 = lendingPoolsData[types_1.Factory.V2V2];
332
- if (lendingPoolsDataV2V2) {
333
- if (lendingPoolsDataV2V2[ETH_RDNT]) {
334
- lendingPoolsDataV2V2[ETH_RDNT].pair.rewards[0].rewardRate = (parseFloat(lendingPoolsDataV2V2[ETH_RDNT].pair.rewards[0].rewardRate) / 2).toString();
335
- }
336
- }
337
- /*if (lendingPoolsData[Factory.SOLV2][LIZ_LIZ_ETH]) {
338
- const LIZ = lendingPoolsData[Factory.SOLV2][LIZ_LIZ_ETH].borrowable0.underlying;
339
- lendingPoolsData[Factory.SOLV2][LIZ_LIZ_ETH].pair.rewards = [{
340
- id: '',
341
- rewardsToken: LIZ,
342
- rewardRate: '3.724',
343
- periodFinish: '0',
344
- }];
345
- lendingPoolsData[Factory.SOLV2][LIZ_LIZ_ETH].pair.stakedTotalSupply = '40131.19426';
346
- lendingPoolsData[Factory.SOLV2][LIZ_ETH_USDC].pair.rewards = [{
347
- id: '',
348
- rewardsToken: LIZ,
349
- rewardRate: '1.284',
350
- periodFinish: '0',
351
- }];
352
- lendingPoolsData[Factory.SOLV2][LIZ_ETH_USDC].pair.stakedTotalSupply = '0.182614';
353
- lendingPoolsData[Factory.SOLV2][LIZ_ETH_BTC].pair.rewards = [{
354
- id: '',
355
- rewardsToken: LIZ,
356
- rewardRate: '0.159',
357
- periodFinish: '0',
358
- }];
359
- lendingPoolsData[Factory.SOLV2][LIZ_ETH_BTC].pair.stakedTotalSupply = '0.002468';
360
- lendingPoolsData[Factory.SOLV2][LIZ_LIZ_USDC].pair.rewards = [{
361
- id: '',
362
- rewardsToken: LIZ,
363
- rewardRate: '1.566',
364
- periodFinish: '0',
365
- }];
366
- lendingPoolsData[Factory.SOLV2][LIZ_LIZ_USDC].pair.stakedTotalSupply = '0.568227';
367
- }*/
368
- }
369
- if (this.network === types_1.Networks.Polygon) {
370
- const lendingPoolsDataV2V2 = lendingPoolsData[types_1.Factory.V2V2];
371
- if (lendingPoolsDataV2V2) {
372
- const GNS_DAI = '0xf9221c5edc736d26ffc4ddccddfa15a4b958862e';
373
- if (lendingPoolsDataV2V2[GNS_DAI]) {
374
- const GNS = lendingPoolsDataV2V2[GNS_DAI].borrowable1.underlying;
375
- lendingPoolsDataV2V2[GNS_DAI].pair.rewards[0] = {
376
- id: '',
377
- rewardsToken: GNS,
378
- rewardRate: '0.00608',
379
- periodFinish: '0',
380
- };
381
- lendingPoolsDataV2V2[GNS_DAI].pair.stakedTotalSupply = '1640000';
382
- }
383
- }
384
- }
385
- if (this.network === types_1.Networks.Avalanche) {
386
- const lendingPoolsDataV2V1_2 = lendingPoolsData[types_1.Factory.V2V1_2];
387
- if (lendingPoolsDataV2V1_2) {
388
- const QI_AVAX = '0x3e2a4dcd46e0e339aec603080d90bd939a163062';
389
- if (lendingPoolsDataV2V1_2[QI_AVAX]) {
390
- const QI = lendingPoolsDataV2V1_2[QI_AVAX].borrowable0.underlying;
391
- lendingPoolsDataV2V1_2[QI_AVAX].pair.rewards[0] = {
392
- id: '',
393
- rewardsToken: QI,
394
- rewardRate: '4.54',
395
- periodFinish: '0',
396
- };
397
- // TODO -> this is wrong
398
- lendingPoolsDataV2V1_2[QI_AVAX].pair.stakedTotalSupply = '0.000000992210460243'; //https://snowtrace.io/token/0xe530dc2095ef5653205cf5ea79f8979a7028065c?a=0x784da19e61cf348a8c54547531795ecfee2affd1
399
- }
400
- }
401
- /*REWARD STOPPED const sAVAX_AVAX = '0x5b588f4481035b0f765393fc9f4752615a6d0498';
402
- if (lendingPoolsData[Factory.V2V1_2][sAVAX_AVAX]) {
403
- const QI = lendingPoolsData[Factory.V2V1_2][QI_AVAX].borrowable0.underlying;
404
- lendingPoolsData[Factory.V2V1_2][sAVAX_AVAX].pair.rewards[1] = {
405
- id: '',
406
- rewardsToken: QI,
407
- rewardRate: '1.74',
408
- periodFinish: '0',
409
- };
410
- }
411
- const UST_AVAX = '0xc6e68d77d0f4fa925a1cf2611dab6b10900eaf2b';
412
- if (lendingPoolsData[Factory.V2V1_2][UST_AVAX]) {
413
- const AVAX = lendingPoolsData[Factory.V2V1_2][UST_AVAX].borrowable1.underlying;
414
- lendingPoolsData[Factory.V2V1_2][UST_AVAX].pair.rewards[0].rewardRate = '0.000099';
415
- lendingPoolsData[Factory.V2V1_2][UST_AVAX].pair.rewards[2] = {
416
- id: '',
417
- rewardsToken: AVAX,
418
- rewardRate: '0.00047',
419
- periodFinish: '0',
420
- };
421
- }
422
- const UST_USDC = '0x69c1c44e8742b66d892294a7eeb9aac51891b0eb';
423
- if (lendingPoolsData[Factory.V2V1_2][UST_USDC]) {
424
- const AVAX = lendingPoolsData[Factory.V2V1_2][UST_AVAX].borrowable1.underlying;
425
- lendingPoolsData[Factory.V2V1_2][UST_USDC].pair.rewards[0].rewardRate = '0.000099';
426
- lendingPoolsData[Factory.V2V1_2][UST_USDC].pair.rewards[2] = {
427
- id: '',
428
- rewardsToken: AVAX,
429
- rewardRate: '0.00047',
430
- periodFinish: '0',
431
- };
432
- }*/
433
- }
434
- return lendingPoolsData;
435
- });
436
- }
437
- exports.initializeLendingPoolsData = initializeLendingPoolsData;
438
- function getLendingPoolsData() {
439
- return __awaiter(this, void 0, void 0, function* () {
440
- if (!this.lendingPoolsData)
441
- this.lendingPoolsData = this.initializeLendingPoolsData();
442
- return this.lendingPoolsData;
443
- });
444
- }
445
- exports.getLendingPoolsData = getLendingPoolsData;
446
- function getLendingPoolData(factory, uniswapV2PairAddress) {
447
- return __awaiter(this, void 0, void 0, function* () {
448
- const lendingPoolsData = (yield this.getLendingPoolsData())[factory];
449
- return lendingPoolsData[uniswapV2PairAddress.toLowerCase()];
450
- });
451
- }
452
- exports.getLendingPoolData = getLendingPoolData;
453
- // TVL Data
454
- function initializeTvlData() {
455
- return __awaiter(this, void 0, void 0, function* () {
456
- const networks = [
457
- types_1.Networks.Mainnet,
458
- types_1.Networks.Arbitrum,
459
- types_1.Networks.Polygon,
460
- types_1.Networks.Avalanche,
461
- types_1.Networks.Moonriver,
462
- types_1.Networks.Fantom,
463
- types_1.Networks.Canto,
464
- types_1.Networks.ZksyncEra,
465
- ]; // exclude ropsten
466
- const calls = [];
467
- for (const network of networks) {
468
- for (const factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[network]) {
469
- const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[network][factory];
470
- calls.push(this.apolloFetcher(subgraph, query.tvlQuery()));
471
- }
472
- }
473
- let results;
474
- try {
475
- results = yield Promise.all(calls);
476
- }
477
- catch (e) {
478
- console.log("can't initialize TVL data");
479
- return {
480
- crossChainTVLUSD: 0,
481
- totalBalanceUSD: 0,
482
- totalSupplyUSD: 0,
483
- totalBorrowsUSD: 0,
484
- };
485
- }
486
- let crossChainTVLUSD = 0;
487
- let thisChainTVLUSD = 0;
488
- let thisChainSupplyUSD = 0;
489
- let thisChainBorrowUSD = 0;
490
- let i = 0;
491
- for (const network of networks) {
492
- let chainTvlUSD = 0;
493
- for (const factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[network]) {
494
- const data = results[i].data.impermaxFactories[0];
495
- chainTvlUSD += parseFloat(data.totalBalanceUSD);
496
- if (network === this.network) {
497
- thisChainTVLUSD += parseFloat(data.totalBalanceUSD);
498
- thisChainSupplyUSD += parseFloat(data.totalSupplyUSD);
499
- thisChainBorrowUSD += parseFloat(data.totalBorrowsUSD);
500
- }
501
- i++;
502
- }
503
- crossChainTVLUSD += chainTvlUSD;
504
- }
505
- if (!networks.includes(this.network)) {
506
- const calls = [];
507
- for (const factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
508
- const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
509
- calls.push(this.apolloFetcher(subgraph, query.tvlQuery()));
510
- }
511
- const results = yield Promise.all(calls);
512
- i = 0;
513
- for (const factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
514
- const data = results[i].data.impermaxFactories[0];
515
- thisChainTVLUSD += parseFloat(data.totalBalanceUSD);
516
- thisChainSupplyUSD += parseFloat(data.totalSupplyUSD);
517
- thisChainBorrowUSD += parseFloat(data.totalBorrowsUSD);
518
- i++;
519
- }
520
- }
521
- return {
522
- crossChainTVLUSD,
523
- totalBalanceUSD: thisChainTVLUSD,
524
- totalSupplyUSD: thisChainSupplyUSD,
525
- totalBorrowsUSD: thisChainBorrowUSD,
526
- };
527
- });
528
- }
529
- exports.initializeTvlData = initializeTvlData;
530
- function getTvlData() {
531
- return __awaiter(this, void 0, void 0, function* () {
532
- if (!this.tvlData)
533
- this.tvlData = this.initializeTvlData();
534
- return this.tvlData;
535
- });
536
- }
537
- exports.getTvlData = getTvlData;
538
- // User Data
539
- function fetchUserData(account) {
540
- return __awaiter(this, void 0, void 0, function* () {
541
- const positions = {};
542
- for (const factory in subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network]) {
543
- const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
544
- const result = yield this.apolloFetcher(subgraph, query.userQuery(account));
545
- const user = result.data.user;
546
- if (!user)
547
- continue;
548
- positions[factory] = {
549
- collateralPositions: user.collateralPositions,
550
- supplyPositions: user.supplyPositions,
551
- borrowPositions: user.borrowPositions,
552
- };
553
- }
554
- return positions;
555
- // TODO parallelize calls
556
- });
557
- }
558
- exports.fetchUserData = fetchUserData;
559
- function initializeUserData(account) {
560
- return __awaiter(this, void 0, void 0, function* () {
561
- const result = {};
562
- const userData = yield this.fetchUserData(account);
563
- if (!userData)
564
- return null;
565
- let factory;
566
- for (factory in userData) {
567
- result[factory] = {
568
- collateralPositions: {},
569
- supplyPositions: {},
570
- borrowPositions: {},
571
- };
572
- const rawUserData = userData[factory];
573
- for (const collateralPosition of rawUserData.collateralPositions) {
574
- const resultOfFactory = result[factory];
575
- resultOfFactory.collateralPositions[collateralPosition.collateral.lendingPool.id] = collateralPosition;
576
- }
577
- for (const supplyPositions of rawUserData.supplyPositions) {
578
- const uniswapV2PairAddress = supplyPositions.borrowable.lendingPool.id;
579
- const underlyingAddress = supplyPositions.borrowable.underlying.id;
580
- const borrowableA = (yield this.getLendingPool(factory, uniswapV2PairAddress)).poolTokens[types_1.PoolTokenType.BorrowableA];
581
- const addressA = yield borrowableA.getUnderlyingAddress();
582
- const poolTokenType = underlyingAddress === addressA ? types_1.PoolTokenType.BorrowableA : types_1.PoolTokenType.BorrowableB;
583
- const resultOfFactory = result[factory];
584
- if (!(uniswapV2PairAddress in resultOfFactory.supplyPositions))
585
- resultOfFactory.supplyPositions[uniswapV2PairAddress] = {};
586
- resultOfFactory.supplyPositions[uniswapV2PairAddress][poolTokenType] = supplyPositions;
587
- }
588
- for (const borrowPositions of rawUserData.borrowPositions) {
589
- const uniswapV2PairAddress = borrowPositions.borrowable.lendingPool.id;
590
- const underlyingAddress = borrowPositions.borrowable.underlying.id;
591
- const borrowableA = (yield this.getLendingPool(factory, uniswapV2PairAddress)).poolTokens[types_1.PoolTokenType.BorrowableA];
592
- const addressA = yield borrowableA.getUnderlyingAddress();
593
- const poolTokenType = underlyingAddress === addressA ? types_1.PoolTokenType.BorrowableA : types_1.PoolTokenType.BorrowableB;
594
- const resultOfFactory = result[factory];
595
- if (!(uniswapV2PairAddress in resultOfFactory.borrowPositions))
596
- resultOfFactory.borrowPositions[uniswapV2PairAddress] = {};
597
- resultOfFactory.borrowPositions[uniswapV2PairAddress][poolTokenType] = borrowPositions;
598
- }
599
- }
600
- return result;
601
- });
602
- }
603
- exports.initializeUserData = initializeUserData;
604
- function getUserData(account) {
605
- return __awaiter(this, void 0, void 0, function* () {
606
- if (!(account in this.usersData))
607
- this.usersData[account] = this.initializeUserData(account);
608
- return this.usersData[account];
609
- });
610
- }
611
- exports.getUserData = getUserData;
612
- // IMX Staking
613
- function initializeXimxData() {
614
- return __awaiter(this, void 0, void 0, function* () {
615
- const result = yield apolloFetcher(subgraphs_1.XIMX_SUBGRAPH_URL, query.ximxQuery());
616
- return result.data.ximxes[0];
617
- });
618
- }
619
- exports.initializeXimxData = initializeXimxData;
620
- function getXimxData() {
621
- return __awaiter(this, void 0, void 0, function* () {
622
- if (!this.ximxData)
623
- this.ximxData = this.initializeXimxData();
624
- return this.ximxData;
625
- });
626
- }
627
- exports.getXimxData = getXimxData;
@@ -1,55 +0,0 @@
1
- import { BorrowablePastData, PoolTokenData } from "../types";
2
- import LendingPool from './';
3
- import { PoolTokenType } from '../../config/types';
4
- import PoolToken from '../poolToken';
5
- export default class Borrowable extends PoolToken {
6
- lendingPool: LendingPool;
7
- poolTokenType: PoolTokenType;
8
- constructor(lendingPool: LendingPool, poolTokenType: PoolTokenType);
9
- getOffchain: () => import("..").default;
10
- getPoolTokenData(): Promise<PoolTokenData>;
11
- getReserveFactor(): Promise<number>;
12
- getKinkBorrowRate(): Promise<number>;
13
- getKinkUtilizationRate(): Promise<number>;
14
- getBorrowIndex(): Promise<number>;
15
- getAccrualTimestamp(): Promise<number>;
16
- getTotalBorrows(): Promise<number>;
17
- getCurrentTotalBorrows(): Promise<number>;
18
- getTotalBorrowsUSD(): Promise<number>;
19
- getBorrowRate(): Promise<number>;
20
- getBorrowAPR(): Promise<number>;
21
- getNextBorrowRate(borrowAmount: number): Promise<number>;
22
- getNextBorrowAPR(borrowAmount: number): Promise<number>;
23
- getSupply(): Promise<number>;
24
- getCurrentSupply(): Promise<number>;
25
- getSupplyUSD(): Promise<number>;
26
- getUtilizationRate(): Promise<number>;
27
- getSupplyRate(): Promise<number>;
28
- getSupplyAPR(): Promise<number>;
29
- getNextSupplyRate(supplyAmount: number): Promise<number>;
30
- getNextSupplyAPR(supplyAmount: number): Promise<number>;
31
- getFarmingRewardsRate(): Promise<Array<{
32
- rewardToken: string;
33
- rewardRate: number;
34
- }>>;
35
- getFarmingRewards(): Promise<Array<{
36
- APR: number;
37
- symbol: string;
38
- }>>;
39
- getNextFarmingRewards(borrowAmount: number): Promise<Array<{
40
- APR: number;
41
- symbol: string;
42
- }>>;
43
- getFarmingAPR(): Promise<number>;
44
- getNextFarmingAPR(borrowAmount: number): Promise<number>;
45
- getPoolTokenDataPast24h(): Promise<BorrowablePastData | undefined>;
46
- getPoolTokenDataPast7d(): Promise<BorrowablePastData | undefined>;
47
- private getAverageBorrowAPR;
48
- getAverage24hBorrowAPR(): Promise<number>;
49
- getAverage7dBorrowAPR(): Promise<number>;
50
- private getAverageSupplyAPR;
51
- getAverage24hSupplyAPR(): Promise<number>;
52
- getAverage7dSupplyAPR(): Promise<number>;
53
- getTokenPriceFast(fallback?: boolean): Promise<number>;
54
- getTokenPriceAccurate(): Promise<number>;
55
- }