impermax-sdk 1.0.1 → 1.0.2
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.
- package/lib/esm/abis/ImpermaxABI.d.ts +2 -0
- package/lib/esm/abis/ImpermaxABI.js +3 -0
- package/lib/esm/abis/contracts/ClaimAggregator.json +2015 -0
- package/lib/esm/abis/contracts/IBorrowable.json +13207 -0
- package/lib/esm/abis/contracts/IClaimable.json +406 -0
- package/lib/esm/abis/contracts/ICollateral.json +8952 -0
- package/lib/esm/abis/contracts/IERC20.json +2376 -0
- package/lib/esm/abis/contracts/IFactory.json +3660 -0
- package/lib/esm/abis/contracts/IFarmingPool.json +3584 -0
- package/lib/esm/abis/contracts/IMerkleDistributor.json +1134 -0
- package/lib/esm/abis/contracts/IRouter02.json +7283 -0
- package/lib/esm/abis/contracts/ISimpleUniswapOracle.json +1469 -0
- package/lib/esm/abis/contracts/IStakedLPToken.json +7309 -0
- package/lib/esm/abis/contracts/IStakingRewards.json +1036 -0
- package/lib/esm/abis/contracts/IUniswapV2Factory.json +1690 -0
- package/lib/esm/abis/contracts/IUniswapV2Pair.json +6761 -0
- package/lib/esm/abis/contracts/ImpermaxChef.json +20945 -0
- package/lib/esm/config/amms.d.ts +25 -0
- package/lib/esm/config/amms.js +196 -0
- package/lib/esm/config/contracts/claim-aggregators.d.ts +2 -0
- package/lib/esm/config/contracts/claim-aggregators.js +18 -0
- package/lib/esm/config/contracts/impermax-chef.d.ts +2 -0
- package/lib/esm/config/contracts/impermax-chef.js +18 -0
- package/lib/esm/config/contracts/imxes.d.ts +2 -0
- package/lib/esm/config/contracts/imxes.js +18 -0
- package/lib/esm/config/contracts/merkle-distributors.d.ts +4 -0
- package/lib/esm/config/contracts/merkle-distributors.js +13 -0
- package/lib/esm/config/contracts/routers.d.ts +2 -0
- package/lib/esm/config/contracts/routers.js +38 -0
- package/lib/esm/config/contracts/simple-uniswap-oracles.d.ts +2 -0
- package/lib/esm/config/contracts/simple-uniswap-oracles.js +35 -0
- package/lib/esm/config/contracts/weths.d.ts +2 -0
- package/lib/esm/config/contracts/weths.js +19 -0
- package/lib/esm/config/debank-ids.d.ts +2 -0
- package/lib/esm/config/debank-ids.js +17 -0
- package/lib/esm/config/endpoints/merkle-distributors.d.ts +4 -0
- package/lib/esm/config/endpoints/merkle-distributors.js +13 -0
- package/lib/esm/config/eth.d.ts +3 -0
- package/lib/esm/config/eth.js +32 -0
- package/lib/esm/config/factories.d.ts +6 -0
- package/lib/esm/config/factories.js +24 -0
- package/lib/esm/config/farms.d.ts +59 -0
- package/lib/esm/config/farms.js +114 -0
- package/lib/esm/config/general.d.ts +3 -0
- package/lib/esm/config/general.js +8 -0
- package/lib/esm/config/subgraphs.d.ts +5 -0
- package/lib/esm/config/subgraphs.js +68 -0
- package/lib/esm/config/types.d.ts +67 -0
- package/lib/esm/config/types.js +54 -0
- package/lib/esm/impermax-router/Account.d.ts +31 -0
- package/lib/esm/impermax-router/Account.js +154 -0
- package/lib/esm/impermax-router/AccountBorrowable.d.ts +22 -0
- package/lib/esm/impermax-router/AccountBorrowable.js +141 -0
- package/lib/esm/impermax-router/AccountCollateral.d.ts +11 -0
- package/lib/esm/impermax-router/AccountCollateral.js +63 -0
- package/lib/esm/impermax-router/AccountLendingPool.d.ts +57 -0
- package/lib/esm/impermax-router/AccountLendingPool.js +266 -0
- package/lib/esm/impermax-router/AccountPoolToken.d.ts +29 -0
- package/lib/esm/impermax-router/AccountPoolToken.js +89 -0
- package/lib/esm/impermax-router/Borrowable.d.ts +27 -0
- package/lib/esm/impermax-router/Borrowable.js +128 -0
- package/lib/esm/impermax-router/Collateral.d.ts +9 -0
- package/lib/esm/impermax-router/Collateral.js +45 -0
- package/lib/esm/impermax-router/ContractsHelper.d.ts +28 -0
- package/lib/esm/impermax-router/ContractsHelper.js +50 -0
- package/lib/esm/impermax-router/ImpermaxFactory.d.ts +15 -0
- package/lib/esm/impermax-router/ImpermaxFactory.js +42 -0
- package/lib/esm/impermax-router/Interactions.d.ts +16 -0
- package/lib/esm/impermax-router/Interactions.js +105 -0
- package/lib/esm/impermax-router/InteractionsLendingPool.d.ts +43 -0
- package/lib/esm/impermax-router/InteractionsLendingPool.js +124 -0
- package/lib/esm/impermax-router/InteractionsPoolToken.d.ts +23 -0
- package/lib/esm/impermax-router/InteractionsPoolToken.js +194 -0
- package/lib/esm/impermax-router/LendingPool.d.ts +69 -0
- package/lib/esm/impermax-router/LendingPool.js +291 -0
- package/lib/esm/impermax-router/PoolToken.d.ts +36 -0
- package/lib/esm/impermax-router/PoolToken.js +140 -0
- package/lib/esm/impermax-router/index.d.ts +20 -0
- package/lib/esm/impermax-router/index.js +34 -0
- package/lib/esm/impermax-router/interfaces.d.ts +218 -0
- package/lib/esm/impermax-router/interfaces.js +15 -0
- package/{index.ts → lib/esm/index.d.ts} +1 -3
- package/lib/esm/index.js +10 -0
- package/lib/esm/subgraph/Account.d.ts +18 -0
- package/lib/esm/subgraph/Account.js +111 -0
- package/lib/esm/subgraph/AccountLendingPool.d.ts +19 -0
- package/lib/esm/subgraph/AccountLendingPool.js +71 -0
- package/lib/esm/subgraph/AccountPoolToken.d.ts +14 -0
- package/lib/esm/subgraph/AccountPoolToken.js +75 -0
- package/lib/esm/subgraph/LendingPool.d.ts +38 -0
- package/lib/esm/subgraph/LendingPool.js +204 -0
- package/lib/esm/subgraph/PoolToken.d.ts +64 -0
- package/lib/esm/subgraph/PoolToken.js +462 -0
- package/lib/esm/subgraph/PriceHelper.d.ts +21 -0
- package/lib/esm/subgraph/PriceHelper.js +166 -0
- package/lib/esm/subgraph/SolidexHelper.d.ts +16 -0
- package/lib/esm/subgraph/SolidexHelper.js +58 -0
- package/lib/esm/subgraph/index.d.ts +73 -0
- package/lib/esm/subgraph/index.js +185 -0
- package/lib/esm/subgraph/initializer.d.ts +34 -0
- package/lib/esm/subgraph/initializer.js +517 -0
- package/lib/esm/subgraph/query.d.ts +10 -0
- package/lib/esm/subgraph/query.js +229 -0
- package/lib/esm/utils/ether-utils.d.ts +5 -0
- package/lib/esm/utils/ether-utils.js +26 -0
- package/lib/esm/utils/index.d.ts +3 -0
- package/lib/esm/utils/index.js +16 -0
- package/package.json +9 -3
- package/.idea/impermax-sdk.iml +0 -12
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/workspace.xml +0 -642
- package/abis/ImpermaxABI.ts +0 -3
- package/abis/contracts/BAllowance.json +0 -4735
- package/abis/contracts/BDeployer.json +0 -1195
- package/abis/contracts/BInterestRateModel.json +0 -10796
- package/abis/contracts/BSetter.json +0 -6219
- package/abis/contracts/BStorage.json +0 -2613
- package/abis/contracts/Borrowable.json +0 -19937
- package/abis/contracts/CDeployer.json +0 -1104
- package/abis/contracts/CSetter.json +0 -5094
- package/abis/contracts/CStorage.json +0 -516
- package/abis/contracts/ClaimAggregator.json +0 -2015
- package/abis/contracts/Collateral.json +0 -21615
- package/abis/contracts/ERC20.json +0 -819
- package/abis/contracts/Factory.json +0 -21986
- package/abis/contracts/FarmingPool.json +0 -8601
- package/abis/contracts/IBDeployer.json +0 -351
- package/abis/contracts/IBorrowTracker.json +0 -346
- package/abis/contracts/IBorrowable.json +0 -13207
- package/abis/contracts/ICDeployer.json +0 -294
- package/abis/contracts/IClaimable.json +0 -406
- package/abis/contracts/ICollateral.json +0 -8952
- package/abis/contracts/IERC20.json +0 -2376
- package/abis/contracts/IFactory.json +0 -3660
- package/abis/contracts/IFarmingPool.json +0 -3584
- package/abis/contracts/IImpermaxCallee.json +0 -679
- package/abis/contracts/IMerkleDistributor.json +0 -1134
- package/abis/contracts/IPoolToken.json +0 -5343
- package/abis/contracts/IRouter01.json +0 -6891
- package/abis/contracts/IRouter02.json +0 -7283
- package/abis/contracts/ISimpleUniswapOracle.json +0 -1469
- package/abis/contracts/IStakedLPToken.json +0 -7309
- package/abis/contracts/IStakingRewards.json +0 -1036
- package/abis/contracts/IUniswapV2Callee.json +0 -403
- package/abis/contracts/IUniswapV2ERC20.json +0 -3155
- package/abis/contracts/IUniswapV2Factory.json +0 -1690
- package/abis/contracts/IUniswapV2Pair.json +0 -6761
- package/abis/contracts/IWETH.json +0 -561
- package/abis/contracts/ImpermaxChef.json +0 -20945
- package/abis/contracts/ImpermaxERC20.json +0 -12095
- package/abis/contracts/Math.json +0 -1966
- package/abis/contracts/MockERC20.json +0 -8884
- package/abis/contracts/PoolToken.json +0 -10784
- package/abis/contracts/Router01.json +0 -43963
- package/abis/contracts/SafeMath.json +0 -6828
- package/abis/contracts/SimpleUniswapOracle.json +0 -9640
- package/abis/contracts/TransferHelper.json +0 -4875
- package/abis/contracts/UQ112x112.json +0 -1201
- package/abis/contracts/UniswapV2ERC20.json +0 -10969
- package/abis/contracts/UniswapV2Factory.json +0 -5521
- package/abis/contracts/UniswapV2Library.json +0 -13789
- package/abis/contracts/UniswapV2Pair.json +0 -30782
- package/abis/contracts/WETH9.json +0 -6613
- package/config/amms.ts +0 -199
- package/config/contracts/claim-aggregators.ts +0 -16
- package/config/contracts/impermax-chef.ts +0 -16
- package/config/contracts/imxes.ts +0 -16
- package/config/contracts/merkle-distributors.ts +0 -13
- package/config/contracts/routers.ts +0 -36
- package/config/contracts/simple-uniswap-oracles.ts +0 -33
- package/config/contracts/weths.ts +0 -18
- package/config/debank-ids.ts +0 -15
- package/config/endpoints/merkle-distributors.ts +0 -13
- package/config/eth.ts +0 -32
- package/config/factories.ts +0 -26
- package/config/farms.ts +0 -119
- package/config/general.ts +0 -8
- package/config/subgraphs.ts +0 -69
- package/config/types.ts +0 -81
- package/impermax-router/Account.ts +0 -123
- package/impermax-router/AccountBorrowable.ts +0 -110
- package/impermax-router/AccountCollateral.ts +0 -40
- package/impermax-router/AccountLendingPool.ts +0 -231
- package/impermax-router/AccountPoolToken.ts +0 -76
- package/impermax-router/Borrowable.ts +0 -86
- package/impermax-router/Collateral.ts +0 -26
- package/impermax-router/ContractsHelper.ts +0 -64
- package/impermax-router/ImpermaxFactory.ts +0 -47
- package/impermax-router/Interactions.ts +0 -94
- package/impermax-router/InteractionsLendingPool.ts +0 -129
- package/impermax-router/InteractionsPoolToken.ts +0 -187
- package/impermax-router/LendingPool.ts +0 -256
- package/impermax-router/PoolToken.ts +0 -112
- package/impermax-router/index.ts +0 -49
- package/impermax-router/interfaces.ts +0 -233
- package/subgraph/Account.ts +0 -93
- package/subgraph/AccountLendingPool.ts +0 -60
- package/subgraph/AccountPoolToken.ts +0 -60
- package/subgraph/LendingPool.ts +0 -179
- package/subgraph/PoolToken.ts +0 -381
- package/subgraph/PriceHelper.ts +0 -150
- package/subgraph/SolidexHelper.ts +0 -54
- package/subgraph/index.ts +0 -166
- package/subgraph/initializer.ts +0 -509
- package/subgraph/query.ts +0 -224
- package/tsconfig.json +0 -16
- package/utils/ether-utils.ts +0 -22
- package/utils/index.ts +0 -12
|
@@ -0,0 +1,517 @@
|
|
|
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
|
+
const result = yield this.apolloFetcher(subgraphs_1.BLOCKS_SUBGRAPH_URL[this.network], query.blockQuery(timestamp));
|
|
66
|
+
console.log(result.data._meta.block.number);
|
|
67
|
+
return result.data.blocks[0].number;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
exports.fetchBlockByTimestamp = fetchBlockByTimestamp;
|
|
71
|
+
// Fetch Lending Pools
|
|
72
|
+
function fetchLendingPools() {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const calls = [];
|
|
75
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network])) {
|
|
76
|
+
const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
|
|
77
|
+
calls.push(this.apolloFetcher(subgraph, query.lendingPoolsQuery(factory, [])));
|
|
78
|
+
}
|
|
79
|
+
const results = yield Promise.all(calls);
|
|
80
|
+
const lendingPools = {};
|
|
81
|
+
let i = 0;
|
|
82
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network])) {
|
|
83
|
+
lendingPools[factory] = results[i++].data.lendingPools;
|
|
84
|
+
}
|
|
85
|
+
return lendingPools;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.fetchLendingPools = fetchLendingPools;
|
|
89
|
+
function fetchLendingPoolsPast(seconds) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const timestamp = Math.floor((new Date).getTime() / 1000);
|
|
92
|
+
const blockNumber = yield this.fetchBlockByTimestamp(timestamp - seconds);
|
|
93
|
+
try {
|
|
94
|
+
const calls = [];
|
|
95
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network])) {
|
|
96
|
+
const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
|
|
97
|
+
calls.push(this.apolloFetcher(subgraph, query.lendingPoolsPastQuery(blockNumber, this.whitelistedPairs[factory])));
|
|
98
|
+
}
|
|
99
|
+
const results = yield Promise.all(calls);
|
|
100
|
+
const lendingPools = {};
|
|
101
|
+
let i = 0;
|
|
102
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network])) {
|
|
103
|
+
lendingPools[factory] = results[i++].data.lendingPools;
|
|
104
|
+
}
|
|
105
|
+
return lendingPools;
|
|
106
|
+
}
|
|
107
|
+
catch (_a) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
exports.fetchLendingPoolsPast = fetchLendingPoolsPast;
|
|
113
|
+
// Farming APR
|
|
114
|
+
function fetchImpermaxChefRewardRates() {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
if (!subgraphs_1.IMPERMAX_CHEF_SUBGRAPH_URL[this.network])
|
|
117
|
+
return null;
|
|
118
|
+
const result = yield this.apolloFetcher(subgraphs_1.IMPERMAX_CHEF_SUBGRAPH_URL[this.network], query.impermaxChefQuery());
|
|
119
|
+
const rewards = {};
|
|
120
|
+
let rewardToken = result.data.impermaxChefs[0].rewardToken;
|
|
121
|
+
let rewardPerSec = parseFloat(result.data.impermaxChefs[0].rewardPerSec);
|
|
122
|
+
let totalAllocPoint = parseFloat(result.data.impermaxChefs[0].totalAllocPoint);
|
|
123
|
+
const impermaxRewarders = result.data.impermaxRewarders;
|
|
124
|
+
for (const pool of result.data.pools) {
|
|
125
|
+
rewards[pool.id] = [];
|
|
126
|
+
rewards[pool.id].push({
|
|
127
|
+
rewardToken,
|
|
128
|
+
rewardRate: parseFloat(pool.allocPoint) / totalAllocPoint * rewardPerSec
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
for (const impermaxRewarder of impermaxRewarders) {
|
|
132
|
+
rewardToken = impermaxRewarder.rewardToken;
|
|
133
|
+
rewardPerSec = parseFloat(impermaxRewarder.rewardPerSec);
|
|
134
|
+
totalAllocPoint = parseFloat(impermaxRewarder.totalAllocPoint);
|
|
135
|
+
for (const pool of impermaxRewarder.pools) {
|
|
136
|
+
if (!(pool.borrowable in rewards))
|
|
137
|
+
rewards[pool.borrowable] = [];
|
|
138
|
+
rewards[pool.borrowable].push({
|
|
139
|
+
rewardToken,
|
|
140
|
+
rewardRate: parseFloat(pool.allocPoint) / totalAllocPoint * rewardPerSec
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return rewards;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
exports.fetchImpermaxChefRewardRates = fetchImpermaxChefRewardRates;
|
|
148
|
+
// Uniswap APR
|
|
149
|
+
function fetchPastVolume(amm, lendingPools, seconds) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
const timestamp = Math.floor((new Date).getTime() / 1000);
|
|
152
|
+
const blockNumber = yield this.fetchBlockByTimestamp(timestamp - seconds);
|
|
153
|
+
let result;
|
|
154
|
+
const pastVolume = {};
|
|
155
|
+
try {
|
|
156
|
+
result = yield this.apolloFetcher(amms_1.AMM_SUBGRAPH_URLS[this.network][amm], query.pastVolumeQuery(blockNumber, lendingPools.map(lendingPool => lendingPool.pair.uniswapV2PairAddress)));
|
|
157
|
+
for (const pair of result.data.pairs) {
|
|
158
|
+
pastVolume[pair.id] = parseInt(pair.volumeUSD);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (e) {
|
|
162
|
+
console.error(e);
|
|
163
|
+
}
|
|
164
|
+
return pastVolume;
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
exports.fetchPastVolume = fetchPastVolume;
|
|
168
|
+
function fetchCurrentVolumeAndReserves(amm, lendingPools) {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
let result;
|
|
171
|
+
const currentVolume = {};
|
|
172
|
+
const currentReserve = {};
|
|
173
|
+
try {
|
|
174
|
+
result = yield this.apolloFetcher(amms_1.AMM_SUBGRAPH_URLS[this.network][amm], query.currentVolumeAndReservesQuery(lendingPools.map(lendingPool => lendingPool.pair.uniswapV2PairAddress)));
|
|
175
|
+
for (const pair of result.data.pairs) {
|
|
176
|
+
currentVolume[pair.id] = parseInt(pair.volumeUSD);
|
|
177
|
+
currentReserve[pair.id] = parseInt(pair.reserveUSD);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
console.error(e);
|
|
182
|
+
}
|
|
183
|
+
return { currentReserve, currentVolume };
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
exports.fetchCurrentVolumeAndReserves = fetchCurrentVolumeAndReserves;
|
|
187
|
+
function fetchUniswapAPR(lendingPoolsByAmm, seconds = 60 * 60 * 24 * 7) {
|
|
188
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
189
|
+
const uniswapAPR = {};
|
|
190
|
+
const amms = Object.keys(lendingPoolsByAmm);
|
|
191
|
+
const promises = [];
|
|
192
|
+
for (const amm of amms) {
|
|
193
|
+
if (!amms_1.AMM_SUBGRAPH_URLS[this.network][amm])
|
|
194
|
+
continue;
|
|
195
|
+
promises.push(Promise.all([
|
|
196
|
+
amm,
|
|
197
|
+
this.fetchPastVolume(amm, lendingPoolsByAmm[amm], seconds),
|
|
198
|
+
this.fetchCurrentVolumeAndReserves(amm, lendingPoolsByAmm[amm]),
|
|
199
|
+
]));
|
|
200
|
+
}
|
|
201
|
+
const ammsData = yield Promise.all(promises);
|
|
202
|
+
for (const data of ammsData) {
|
|
203
|
+
const [amm, pastVolume, { currentVolume, currentReserve },] = data;
|
|
204
|
+
for (const lendingPool of lendingPoolsByAmm[amm]) {
|
|
205
|
+
const uniswapV2PairAddress = lendingPool.pair.uniswapV2PairAddress;
|
|
206
|
+
if (!currentReserve[uniswapV2PairAddress]) {
|
|
207
|
+
uniswapAPR[lendingPool.id] = 0;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const cumVolumePast = pastVolume[uniswapV2PairAddress] ? pastVolume[uniswapV2PairAddress] : 0;
|
|
211
|
+
const cumVolumeNow = currentVolume[uniswapV2PairAddress];
|
|
212
|
+
const reserveUSD = currentReserve[uniswapV2PairAddress];
|
|
213
|
+
const volumeUSD = cumVolumeNow - cumVolumePast;
|
|
214
|
+
const yearlyVolume = volumeUSD * SECONDS_IN_YEAR / seconds;
|
|
215
|
+
const yearlyFee = yearlyVolume * amms_1.AMM_LP_FEE[this.network][amm];
|
|
216
|
+
uniswapAPR[lendingPool.id] = yearlyFee / reserveUSD;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return uniswapAPR;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
exports.fetchUniswapAPR = fetchUniswapAPR;
|
|
223
|
+
// LendingPool Data
|
|
224
|
+
function initializeLendingPoolsData() {
|
|
225
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
226
|
+
const lendingPoolsData = {};
|
|
227
|
+
// Get raw data
|
|
228
|
+
const [lendingPools, lendingPoolsPast24h, lendingPoolsPast7d, impermaxChefRewardRates,] = yield Promise.all([
|
|
229
|
+
this.fetchLendingPools(),
|
|
230
|
+
this.fetchLendingPoolsPast(24 * 3600),
|
|
231
|
+
this.fetchLendingPoolsPast(7 * 24 * 3600),
|
|
232
|
+
this.fetchImpermaxChefRewardRates(),
|
|
233
|
+
]);
|
|
234
|
+
// Get Uniswap APR
|
|
235
|
+
const lendingPoolsByAmm = {};
|
|
236
|
+
for (const factory of Object.keys(lendingPools)) {
|
|
237
|
+
for (const lendingPool of lendingPools[factory]) {
|
|
238
|
+
const amm = (0, amms_1.getAmmByFactory)(this.network, lendingPool.pair.uniswapV2Factory);
|
|
239
|
+
if (!amm)
|
|
240
|
+
continue;
|
|
241
|
+
if (!lendingPoolsByAmm[amm])
|
|
242
|
+
lendingPoolsByAmm[amm] = [];
|
|
243
|
+
lendingPoolsByAmm[amm].push(lendingPool);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const uniswapAPR = yield this.fetchUniswapAPR(lendingPoolsByAmm);
|
|
247
|
+
// Organize lending pools data
|
|
248
|
+
for (const factory of Object.keys(lendingPools)) {
|
|
249
|
+
for (const lendingPool of lendingPools[factory]) {
|
|
250
|
+
lendingPool.pair.uniswapAPR = uniswapAPR[lendingPool.id] || 0;
|
|
251
|
+
if (impermaxChefRewardRates) {
|
|
252
|
+
lendingPool.borrowable0.rewards = impermaxChefRewardRates[lendingPool.borrowable0.id];
|
|
253
|
+
lendingPool.borrowable1.rewards = impermaxChefRewardRates[lendingPool.borrowable1.id];
|
|
254
|
+
}
|
|
255
|
+
// If one of the price of the 2 tokens is 0, fix the collateral price by doubling it
|
|
256
|
+
if (parseFloat(lendingPool.borrowable0.underlying.derivedUSD) === 0 || parseFloat(lendingPool.borrowable1.underlying.derivedUSD) === 0) {
|
|
257
|
+
lendingPool.pair.derivedUSD = (parseFloat(lendingPool.pair.derivedUSD) * 2).toString();
|
|
258
|
+
}
|
|
259
|
+
if (!lendingPoolsData[factory])
|
|
260
|
+
lendingPoolsData[factory] = {};
|
|
261
|
+
lendingPoolsData[factory][lendingPool.id] = lendingPool;
|
|
262
|
+
}
|
|
263
|
+
// Add past data
|
|
264
|
+
if (lendingPoolsPast24h && lendingPoolsPast24h[factory]) {
|
|
265
|
+
for (const lendingPool of lendingPoolsPast24h[factory]) {
|
|
266
|
+
lendingPoolsData[factory][lendingPool.id].past24h = lendingPool;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (lendingPoolsPast7d && lendingPoolsPast7d[factory]) {
|
|
270
|
+
for (const lendingPool of lendingPoolsPast7d[factory]) {
|
|
271
|
+
lendingPoolsData[factory][lendingPool.id].past7d = lendingPool;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Initialize LendingPool objects
|
|
276
|
+
this.lendingPools = {};
|
|
277
|
+
for (const factory of Object.keys(lendingPools)) {
|
|
278
|
+
this.lendingPools[factory] = {};
|
|
279
|
+
for (const lendingPool of lendingPools[factory]) {
|
|
280
|
+
this.lendingPools[factory][lendingPool.id] = new LendingPool_1.default(this, factory, lendingPool.id);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Quickfix for MIM and SPELL
|
|
284
|
+
if (this.network === types_1.Networks.Arbitrum) {
|
|
285
|
+
//const ETH_MIM = '0xa6e69dd0c36f3b59539e2c7afd274ef91b5c70f9';
|
|
286
|
+
//const ETH_SPELL = '0x35b44b303eacb71114aa62fe8dae6f9c5de0f680';
|
|
287
|
+
const ETH_gGOHM = '0x6d94f7e67c6ae0b0257c35754e059fdfb249d998';
|
|
288
|
+
const ETH_MAGIC = '0x88a0b00bbe918ee00e3482f71962070dc052984b';
|
|
289
|
+
const ETH_RDNT = '0xfb468ad210d427d65c9a765a480649d5754ca325';
|
|
290
|
+
if (lendingPoolsData[types_1.Factory.V2V1_1][ETH_gGOHM]) {
|
|
291
|
+
//lendingPoolsData[Factory.V2V1_1][ETH_SPELL].pair.rewards[0].rewardRate = '8.44';
|
|
292
|
+
//lendingPoolsData[Factory.V2V1_1][ETH_MIM].pair.rewards[0].rewardRate = '30.64';
|
|
293
|
+
//lendingPoolsData[Factory.V2V1_1][ETH_gGOHM].pair.rewards[0].rewardRate = '0.000009129';
|
|
294
|
+
lendingPoolsData[types_1.Factory.V2V1_1][ETH_MAGIC].pair.rewards[0].rewardRate = '0.135';
|
|
295
|
+
}
|
|
296
|
+
if (lendingPoolsData[types_1.Factory.V2V2][ETH_RDNT]) {
|
|
297
|
+
lendingPoolsData[types_1.Factory.V2V2][ETH_RDNT].pair.rewards[0].rewardRate = (parseFloat(lendingPoolsData[types_1.Factory.V2V2][ETH_RDNT].pair.rewards[0].rewardRate) / 2).toString();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (this.network === types_1.Networks.Polygon) {
|
|
301
|
+
const GNS_DAI = '0xf9221c5edc736d26ffc4ddccddfa15a4b958862e';
|
|
302
|
+
if (lendingPoolsData[types_1.Factory.V2V2][GNS_DAI]) {
|
|
303
|
+
const GNS = lendingPoolsData[types_1.Factory.V2V2][GNS_DAI].borrowable1.underlying;
|
|
304
|
+
lendingPoolsData[types_1.Factory.V2V2][GNS_DAI].pair.rewards[0] = {
|
|
305
|
+
id: '',
|
|
306
|
+
rewardsToken: GNS,
|
|
307
|
+
rewardRate: '0.00608',
|
|
308
|
+
periodFinish: '0',
|
|
309
|
+
};
|
|
310
|
+
lendingPoolsData[types_1.Factory.V2V2][GNS_DAI].pair.stakedTotalSupply = '1640000';
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (this.network === types_1.Networks.Avalanche) {
|
|
314
|
+
const QI_AVAX = '0x3e2a4dcd46e0e339aec603080d90bd939a163062';
|
|
315
|
+
if (lendingPoolsData[types_1.Factory.V2V1_2][QI_AVAX]) {
|
|
316
|
+
const QI = lendingPoolsData[types_1.Factory.V2V1_2][QI_AVAX].borrowable0.underlying;
|
|
317
|
+
lendingPoolsData[types_1.Factory.V2V1_2][QI_AVAX].pair.rewards[0] = {
|
|
318
|
+
id: '',
|
|
319
|
+
rewardsToken: QI,
|
|
320
|
+
rewardRate: '4.54',
|
|
321
|
+
periodFinish: '0',
|
|
322
|
+
};
|
|
323
|
+
// TODO -> this is wrong
|
|
324
|
+
lendingPoolsData[types_1.Factory.V2V1_2][QI_AVAX].pair.stakedTotalSupply = '0.000000992210460243'; //https://snowtrace.io/token/0xe530dc2095ef5653205cf5ea79f8979a7028065c?a=0x784da19e61cf348a8c54547531795ecfee2affd1
|
|
325
|
+
}
|
|
326
|
+
/*REWARD STOPPED const sAVAX_AVAX = '0x5b588f4481035b0f765393fc9f4752615a6d0498';
|
|
327
|
+
if (lendingPoolsData[Factory.V2V1_2][sAVAX_AVAX]) {
|
|
328
|
+
const QI = lendingPoolsData[Factory.V2V1_2][QI_AVAX].borrowable0.underlying;
|
|
329
|
+
lendingPoolsData[Factory.V2V1_2][sAVAX_AVAX].pair.rewards[1] = {
|
|
330
|
+
id: '',
|
|
331
|
+
rewardsToken: QI,
|
|
332
|
+
rewardRate: '1.74',
|
|
333
|
+
periodFinish: '0',
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
const UST_AVAX = '0xc6e68d77d0f4fa925a1cf2611dab6b10900eaf2b';
|
|
337
|
+
if (lendingPoolsData[Factory.V2V1_2][UST_AVAX]) {
|
|
338
|
+
const AVAX = lendingPoolsData[Factory.V2V1_2][UST_AVAX].borrowable1.underlying;
|
|
339
|
+
lendingPoolsData[Factory.V2V1_2][UST_AVAX].pair.rewards[0].rewardRate = '0.000099';
|
|
340
|
+
lendingPoolsData[Factory.V2V1_2][UST_AVAX].pair.rewards[2] = {
|
|
341
|
+
id: '',
|
|
342
|
+
rewardsToken: AVAX,
|
|
343
|
+
rewardRate: '0.00047',
|
|
344
|
+
periodFinish: '0',
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
const UST_USDC = '0x69c1c44e8742b66d892294a7eeb9aac51891b0eb';
|
|
348
|
+
if (lendingPoolsData[Factory.V2V1_2][UST_USDC]) {
|
|
349
|
+
const AVAX = lendingPoolsData[Factory.V2V1_2][UST_AVAX].borrowable1.underlying;
|
|
350
|
+
lendingPoolsData[Factory.V2V1_2][UST_USDC].pair.rewards[0].rewardRate = '0.000099';
|
|
351
|
+
lendingPoolsData[Factory.V2V1_2][UST_USDC].pair.rewards[2] = {
|
|
352
|
+
id: '',
|
|
353
|
+
rewardsToken: AVAX,
|
|
354
|
+
rewardRate: '0.00047',
|
|
355
|
+
periodFinish: '0',
|
|
356
|
+
};
|
|
357
|
+
}*/
|
|
358
|
+
}
|
|
359
|
+
return lendingPoolsData;
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
exports.initializeLendingPoolsData = initializeLendingPoolsData;
|
|
363
|
+
function getLendingPoolsData() {
|
|
364
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
365
|
+
if (!this.lendingPoolsData)
|
|
366
|
+
this.lendingPoolsData = this.initializeLendingPoolsData();
|
|
367
|
+
return this.lendingPoolsData;
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
exports.getLendingPoolsData = getLendingPoolsData;
|
|
371
|
+
function getLendingPoolData(factory, uniswapV2PairAddress) {
|
|
372
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
373
|
+
return (yield this.getLendingPoolsData())[factory][uniswapV2PairAddress.toLowerCase()];
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
exports.getLendingPoolData = getLendingPoolData;
|
|
377
|
+
// TVL Data
|
|
378
|
+
function initializeTvlData() {
|
|
379
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
380
|
+
const networks = [
|
|
381
|
+
types_1.Networks.Mainnet,
|
|
382
|
+
types_1.Networks.Arbitrum,
|
|
383
|
+
types_1.Networks.Polygon,
|
|
384
|
+
types_1.Networks.Avalanche,
|
|
385
|
+
types_1.Networks.Moonriver,
|
|
386
|
+
types_1.Networks.Fantom
|
|
387
|
+
]; // exclude ropsten
|
|
388
|
+
const calls = [];
|
|
389
|
+
for (const network of networks) {
|
|
390
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[network])) {
|
|
391
|
+
const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[network][factory];
|
|
392
|
+
calls.push(this.apolloFetcher(subgraph, query.tvlQuery()));
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
const results = yield Promise.all(calls);
|
|
396
|
+
let crossChainTVLUSD = 0;
|
|
397
|
+
let thisChainTVLUSD = 0;
|
|
398
|
+
let thisChainSupplyUSD = 0;
|
|
399
|
+
let thisChainBorrowUSD = 0;
|
|
400
|
+
let i = 0;
|
|
401
|
+
for (const network of networks) {
|
|
402
|
+
let chainTvlUSD = 0;
|
|
403
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[network])) {
|
|
404
|
+
const data = results[i].data.impermaxFactories[0];
|
|
405
|
+
chainTvlUSD += parseFloat(data.totalBalanceUSD);
|
|
406
|
+
if (network === this.network) {
|
|
407
|
+
thisChainTVLUSD += parseFloat(data.totalBalanceUSD);
|
|
408
|
+
thisChainSupplyUSD += parseFloat(data.totalSupplyUSD);
|
|
409
|
+
thisChainBorrowUSD += parseFloat(data.totalBorrowsUSD);
|
|
410
|
+
}
|
|
411
|
+
i++;
|
|
412
|
+
}
|
|
413
|
+
crossChainTVLUSD += chainTvlUSD;
|
|
414
|
+
}
|
|
415
|
+
return {
|
|
416
|
+
crossChainTVLUSD,
|
|
417
|
+
totalBalanceUSD: thisChainTVLUSD,
|
|
418
|
+
totalSupplyUSD: thisChainSupplyUSD,
|
|
419
|
+
totalBorrowsUSD: thisChainBorrowUSD,
|
|
420
|
+
};
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
exports.initializeTvlData = initializeTvlData;
|
|
424
|
+
function getTvlData() {
|
|
425
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
426
|
+
if (!this.tvlData)
|
|
427
|
+
this.tvlData = this.initializeTvlData();
|
|
428
|
+
return this.tvlData;
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
exports.getTvlData = getTvlData;
|
|
432
|
+
// User Data
|
|
433
|
+
function fetchUserData(account) {
|
|
434
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
435
|
+
const positions = {};
|
|
436
|
+
for (const factory of Object.keys(subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network])) {
|
|
437
|
+
const subgraph = subgraphs_1.IMPERMAX_SUBGRAPH_URL[this.network][factory];
|
|
438
|
+
const result = yield this.apolloFetcher(subgraph, query.userQuery(account));
|
|
439
|
+
const user = result.data.user;
|
|
440
|
+
if (!user)
|
|
441
|
+
continue;
|
|
442
|
+
positions[factory] = {
|
|
443
|
+
collateralPositions: user.collateralPositions,
|
|
444
|
+
supplyPositions: user.supplyPositions,
|
|
445
|
+
borrowPositions: user.borrowPositions,
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
return positions;
|
|
449
|
+
// TODO parallelize calls
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
exports.fetchUserData = fetchUserData;
|
|
453
|
+
function initializeUserData(account) {
|
|
454
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
455
|
+
const result = {};
|
|
456
|
+
const userData = yield this.fetchUserData(account);
|
|
457
|
+
if (!userData)
|
|
458
|
+
return null;
|
|
459
|
+
for (const factory of Object.keys(userData)) {
|
|
460
|
+
result[factory] = {
|
|
461
|
+
collateralPositions: {},
|
|
462
|
+
supplyPositions: {},
|
|
463
|
+
borrowPositions: {},
|
|
464
|
+
};
|
|
465
|
+
const data = userData[factory];
|
|
466
|
+
for (const collateralPosition of data.collateralPositions) {
|
|
467
|
+
result[factory].collateralPositions[collateralPosition.collateral.lendingPool.id] = collateralPosition;
|
|
468
|
+
}
|
|
469
|
+
for (const supplyPositions of data.supplyPositions) {
|
|
470
|
+
const uniswapV2PairAddress = supplyPositions.borrowable.lendingPool.id;
|
|
471
|
+
const underlyingAddress = supplyPositions.borrowable.underlying.id;
|
|
472
|
+
const borrowableA = (yield this.getLendingPool(factory, uniswapV2PairAddress)).poolTokens[types_1.PoolTokenType.BorrowableA];
|
|
473
|
+
const addressA = yield borrowableA.getUnderlyingAddress();
|
|
474
|
+
const poolTokenType = underlyingAddress === addressA ? types_1.PoolTokenType.BorrowableA : types_1.PoolTokenType.BorrowableB;
|
|
475
|
+
if (!(uniswapV2PairAddress in result[factory].supplyPositions))
|
|
476
|
+
result[factory].supplyPositions[uniswapV2PairAddress] = {};
|
|
477
|
+
result[factory].supplyPositions[uniswapV2PairAddress][poolTokenType] = supplyPositions;
|
|
478
|
+
}
|
|
479
|
+
for (const borrowPositions of data.borrowPositions) {
|
|
480
|
+
const uniswapV2PairAddress = borrowPositions.borrowable.lendingPool.id;
|
|
481
|
+
const underlyingAddress = borrowPositions.borrowable.underlying.id;
|
|
482
|
+
const borrowableA = (yield this.getLendingPool(factory, uniswapV2PairAddress)).poolTokens[types_1.PoolTokenType.BorrowableA];
|
|
483
|
+
const addressA = yield borrowableA.getUnderlyingAddress();
|
|
484
|
+
const poolTokenType = underlyingAddress === addressA ? types_1.PoolTokenType.BorrowableA : types_1.PoolTokenType.BorrowableB;
|
|
485
|
+
if (!(uniswapV2PairAddress in result[factory].borrowPositions))
|
|
486
|
+
result[factory].borrowPositions[uniswapV2PairAddress] = {};
|
|
487
|
+
result[factory].borrowPositions[uniswapV2PairAddress][poolTokenType] = borrowPositions;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return result;
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
exports.initializeUserData = initializeUserData;
|
|
494
|
+
function getUserData(account) {
|
|
495
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
496
|
+
if (!(account in this.usersData))
|
|
497
|
+
this.usersData[account] = this.initializeUserData(account);
|
|
498
|
+
return this.usersData[account];
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
exports.getUserData = getUserData;
|
|
502
|
+
// IMX Staking
|
|
503
|
+
function initializeXimxData() {
|
|
504
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
505
|
+
const result = yield apolloFetcher(subgraphs_1.XIMX_SUBGRAPH_URL, query.ximxQuery());
|
|
506
|
+
return result.data.ximxes[0];
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
exports.initializeXimxData = initializeXimxData;
|
|
510
|
+
function getXimxData() {
|
|
511
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
512
|
+
if (!this.ximxData)
|
|
513
|
+
this.ximxData = this.initializeXimxData();
|
|
514
|
+
return this.ximxData;
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
exports.getXimxData = getXimxData;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Address, Factory } from '../config/types';
|
|
2
|
+
export declare function blockQuery(timestamp: number): import("graphql").DocumentNode;
|
|
3
|
+
export declare function lendingPoolsQuery(factory: Factory, addressesFilter: Address[]): import("graphql").DocumentNode;
|
|
4
|
+
export declare function lendingPoolsPastQuery(blockNumber: number, addressesFilter: Address[]): import("graphql").DocumentNode;
|
|
5
|
+
export declare function impermaxChefQuery(): import("graphql").DocumentNode;
|
|
6
|
+
export declare function pastVolumeQuery(blockNumber: number, addressesFilter: Address[]): import("graphql").DocumentNode;
|
|
7
|
+
export declare function currentVolumeAndReservesQuery(addressesFilter: Address[]): import("graphql").DocumentNode;
|
|
8
|
+
export declare function tvlQuery(): import("graphql").DocumentNode;
|
|
9
|
+
export declare function userQuery(account: Address): import("graphql").DocumentNode;
|
|
10
|
+
export declare function ximxQuery(): import("graphql").DocumentNode;
|