impermax-sdk 1.0.2 → 1.0.3

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 (108) hide show
  1. package/package.json +1 -1
  2. package/lib/esm/abis/ImpermaxABI.d.ts +0 -2
  3. package/lib/esm/abis/ImpermaxABI.js +0 -3
  4. package/lib/esm/abis/contracts/ClaimAggregator.json +0 -2015
  5. package/lib/esm/abis/contracts/IBorrowable.json +0 -13207
  6. package/lib/esm/abis/contracts/IClaimable.json +0 -406
  7. package/lib/esm/abis/contracts/ICollateral.json +0 -8952
  8. package/lib/esm/abis/contracts/IERC20.json +0 -2376
  9. package/lib/esm/abis/contracts/IFactory.json +0 -3660
  10. package/lib/esm/abis/contracts/IFarmingPool.json +0 -3584
  11. package/lib/esm/abis/contracts/IMerkleDistributor.json +0 -1134
  12. package/lib/esm/abis/contracts/IRouter02.json +0 -7283
  13. package/lib/esm/abis/contracts/ISimpleUniswapOracle.json +0 -1469
  14. package/lib/esm/abis/contracts/IStakedLPToken.json +0 -7309
  15. package/lib/esm/abis/contracts/IStakingRewards.json +0 -1036
  16. package/lib/esm/abis/contracts/IUniswapV2Factory.json +0 -1690
  17. package/lib/esm/abis/contracts/IUniswapV2Pair.json +0 -6761
  18. package/lib/esm/abis/contracts/ImpermaxChef.json +0 -20945
  19. package/lib/esm/config/amms.d.ts +0 -25
  20. package/lib/esm/config/amms.js +0 -196
  21. package/lib/esm/config/contracts/claim-aggregators.d.ts +0 -2
  22. package/lib/esm/config/contracts/claim-aggregators.js +0 -18
  23. package/lib/esm/config/contracts/impermax-chef.d.ts +0 -2
  24. package/lib/esm/config/contracts/impermax-chef.js +0 -18
  25. package/lib/esm/config/contracts/imxes.d.ts +0 -2
  26. package/lib/esm/config/contracts/imxes.js +0 -18
  27. package/lib/esm/config/contracts/merkle-distributors.d.ts +0 -4
  28. package/lib/esm/config/contracts/merkle-distributors.js +0 -13
  29. package/lib/esm/config/contracts/routers.d.ts +0 -2
  30. package/lib/esm/config/contracts/routers.js +0 -38
  31. package/lib/esm/config/contracts/simple-uniswap-oracles.d.ts +0 -2
  32. package/lib/esm/config/contracts/simple-uniswap-oracles.js +0 -35
  33. package/lib/esm/config/contracts/weths.d.ts +0 -2
  34. package/lib/esm/config/contracts/weths.js +0 -19
  35. package/lib/esm/config/debank-ids.d.ts +0 -2
  36. package/lib/esm/config/debank-ids.js +0 -17
  37. package/lib/esm/config/endpoints/merkle-distributors.d.ts +0 -4
  38. package/lib/esm/config/endpoints/merkle-distributors.js +0 -13
  39. package/lib/esm/config/eth.d.ts +0 -3
  40. package/lib/esm/config/eth.js +0 -32
  41. package/lib/esm/config/factories.d.ts +0 -6
  42. package/lib/esm/config/factories.js +0 -24
  43. package/lib/esm/config/farms.d.ts +0 -59
  44. package/lib/esm/config/farms.js +0 -114
  45. package/lib/esm/config/general.d.ts +0 -3
  46. package/lib/esm/config/general.js +0 -8
  47. package/lib/esm/config/subgraphs.d.ts +0 -5
  48. package/lib/esm/config/subgraphs.js +0 -68
  49. package/lib/esm/config/types.d.ts +0 -67
  50. package/lib/esm/config/types.js +0 -54
  51. package/lib/esm/impermax-router/Account.d.ts +0 -31
  52. package/lib/esm/impermax-router/Account.js +0 -154
  53. package/lib/esm/impermax-router/AccountBorrowable.d.ts +0 -22
  54. package/lib/esm/impermax-router/AccountBorrowable.js +0 -141
  55. package/lib/esm/impermax-router/AccountCollateral.d.ts +0 -11
  56. package/lib/esm/impermax-router/AccountCollateral.js +0 -63
  57. package/lib/esm/impermax-router/AccountLendingPool.d.ts +0 -57
  58. package/lib/esm/impermax-router/AccountLendingPool.js +0 -266
  59. package/lib/esm/impermax-router/AccountPoolToken.d.ts +0 -29
  60. package/lib/esm/impermax-router/AccountPoolToken.js +0 -89
  61. package/lib/esm/impermax-router/Borrowable.d.ts +0 -27
  62. package/lib/esm/impermax-router/Borrowable.js +0 -128
  63. package/lib/esm/impermax-router/Collateral.d.ts +0 -9
  64. package/lib/esm/impermax-router/Collateral.js +0 -45
  65. package/lib/esm/impermax-router/ContractsHelper.d.ts +0 -28
  66. package/lib/esm/impermax-router/ContractsHelper.js +0 -50
  67. package/lib/esm/impermax-router/ImpermaxFactory.d.ts +0 -15
  68. package/lib/esm/impermax-router/ImpermaxFactory.js +0 -42
  69. package/lib/esm/impermax-router/Interactions.d.ts +0 -16
  70. package/lib/esm/impermax-router/Interactions.js +0 -105
  71. package/lib/esm/impermax-router/InteractionsLendingPool.d.ts +0 -43
  72. package/lib/esm/impermax-router/InteractionsLendingPool.js +0 -124
  73. package/lib/esm/impermax-router/InteractionsPoolToken.d.ts +0 -23
  74. package/lib/esm/impermax-router/InteractionsPoolToken.js +0 -194
  75. package/lib/esm/impermax-router/LendingPool.d.ts +0 -69
  76. package/lib/esm/impermax-router/LendingPool.js +0 -291
  77. package/lib/esm/impermax-router/PoolToken.d.ts +0 -36
  78. package/lib/esm/impermax-router/PoolToken.js +0 -140
  79. package/lib/esm/impermax-router/index.d.ts +0 -20
  80. package/lib/esm/impermax-router/index.js +0 -34
  81. package/lib/esm/impermax-router/interfaces.d.ts +0 -218
  82. package/lib/esm/impermax-router/interfaces.js +0 -15
  83. package/lib/esm/index.d.ts +0 -3
  84. package/lib/esm/index.js +0 -10
  85. package/lib/esm/subgraph/Account.d.ts +0 -18
  86. package/lib/esm/subgraph/Account.js +0 -111
  87. package/lib/esm/subgraph/AccountLendingPool.d.ts +0 -19
  88. package/lib/esm/subgraph/AccountLendingPool.js +0 -71
  89. package/lib/esm/subgraph/AccountPoolToken.d.ts +0 -14
  90. package/lib/esm/subgraph/AccountPoolToken.js +0 -75
  91. package/lib/esm/subgraph/LendingPool.d.ts +0 -38
  92. package/lib/esm/subgraph/LendingPool.js +0 -204
  93. package/lib/esm/subgraph/PoolToken.d.ts +0 -64
  94. package/lib/esm/subgraph/PoolToken.js +0 -462
  95. package/lib/esm/subgraph/PriceHelper.d.ts +0 -21
  96. package/lib/esm/subgraph/PriceHelper.js +0 -166
  97. package/lib/esm/subgraph/SolidexHelper.d.ts +0 -16
  98. package/lib/esm/subgraph/SolidexHelper.js +0 -58
  99. package/lib/esm/subgraph/index.d.ts +0 -73
  100. package/lib/esm/subgraph/index.js +0 -185
  101. package/lib/esm/subgraph/initializer.d.ts +0 -34
  102. package/lib/esm/subgraph/initializer.js +0 -517
  103. package/lib/esm/subgraph/query.d.ts +0 -10
  104. package/lib/esm/subgraph/query.js +0 -229
  105. package/lib/esm/utils/ether-utils.d.ts +0 -5
  106. package/lib/esm/utils/ether-utils.js +0 -26
  107. package/lib/esm/utils/index.d.ts +0 -3
  108. package/lib/esm/utils/index.js +0 -16
@@ -1,23 +0,0 @@
1
- import { ethers, BigNumber } from "ethers";
2
- import AccountPoolToken from "./AccountPoolToken";
3
- import InteractionsLendingPool from "./InteractionsLendingPool";
4
- import { ApprovalType, PermitData } from "./interfaces";
5
- import { PoolTokenType } from '../config/types';
6
- export default class InteractionsPoolToken {
7
- interactionsLendingPool: InteractionsLendingPool;
8
- accountPoolToken: AccountPoolToken;
9
- constructor(interactionsLendingPool: InteractionsLendingPool, poolTokenType: PoolTokenType);
10
- getImpermaxRouter: () => import(".").default;
11
- getPoolToken: () => import("./PoolToken").default;
12
- getRouterContract: () => any;
13
- send: (method: any, onTransactionHash: Function, value?: BigNumber) => Promise<any>;
14
- isWETH(): Promise<boolean>;
15
- isCollateral(): boolean;
16
- getAllowance(approvalType: ApprovalType): Promise<ethers.BigNumber>;
17
- approve(approvalType: ApprovalType, amount: BigNumber, onTransactionHash: Function): Promise<any>;
18
- getPermitData(approvalType: ApprovalType, amount: BigNumber, deadlineArg: BigNumber | null, callBack: (permitData: PermitData) => void): Promise<void>;
19
- deposit(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
20
- withdraw(tokens: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
21
- borrow(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
22
- repay(amount: BigNumber, onTransactionHash: Function): Promise<any>;
23
- }
@@ -1,194 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const ethers_1 = require("ethers");
13
- const interfaces_1 = require("./interfaces");
14
- const types_1 = require("../config/types");
15
- const weths_1 = require("../config/contracts/weths");
16
- const general_1 = require("../config/general");
17
- const MAX_UINT256 = ethers_1.ethers.constants.MaxUint256;
18
- const EIP712DOMAIN = [
19
- { name: "name", type: "string" },
20
- { name: "version", type: "string" },
21
- { name: "chainId", type: "uint256" },
22
- { name: "verifyingContract", type: "address" },
23
- ];
24
- const PERMIT = [
25
- { name: "owner", type: "address" },
26
- { name: "spender", type: "address" },
27
- { name: "value", type: "uint256" },
28
- { name: "nonce", type: "uint256" },
29
- { name: "deadline", type: "uint256" },
30
- ];
31
- const TYPES = {
32
- EIP712Domain: EIP712DOMAIN,
33
- Permit: PERMIT,
34
- BorrowPermit: PERMIT,
35
- };
36
- class InteractionsPoolToken {
37
- constructor(interactionsLendingPool, poolTokenType) {
38
- // Shortcuts
39
- this.getImpermaxRouter = () => this.interactionsLendingPool.interactions.account.router;
40
- this.getPoolToken = () => this.accountPoolToken.poolToken;
41
- this.getRouterContract = () => this.interactionsLendingPool.accountLendingPool.lendingPool.factory.getRouter();
42
- this.send = (method, onTransactionHash, value) => this.interactionsLendingPool.interactions.send(method, onTransactionHash, value);
43
- this.interactionsLendingPool = interactionsLendingPool;
44
- this.accountPoolToken = interactionsLendingPool.accountLendingPool.accountPoolTokens[poolTokenType];
45
- }
46
- isWETH() {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const token = yield this.getPoolToken().getToken();
49
- return token._address.toLowerCase() == weths_1.WETH[this.getImpermaxRouter().network].toLowerCase();
50
- });
51
- }
52
- isCollateral() {
53
- return this.getPoolToken().poolTokenType == types_1.PoolTokenType.Collateral;
54
- }
55
- getAllowance(approvalType) {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- const poolToken = yield this.getPoolToken().getPoolToken();
58
- const token = yield this.getPoolToken().getToken();
59
- if ((yield this.isWETH()) && approvalType == interfaces_1.ApprovalType.UNDERLYING)
60
- return MAX_UINT256;
61
- const { owner, spender } = this.interactionsLendingPool.getOwnerSpender();
62
- const allowance = (approvalType == interfaces_1.ApprovalType.POOL_TOKEN) ? yield poolToken.methods.allowance(owner, spender).call() :
63
- (approvalType == interfaces_1.ApprovalType.UNDERLYING) ? yield token.methods.allowance(owner, spender).call() :
64
- (approvalType == interfaces_1.ApprovalType.BORROW) ? yield poolToken.methods.borrowAllowance(owner, spender).call() : 0;
65
- return ethers_1.BigNumber.from(allowance);
66
- });
67
- }
68
- approve(approvalType, amount, onTransactionHash) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const { spender } = this.interactionsLendingPool.getOwnerSpender();
71
- const poolToken = yield this.getPoolToken().getPoolToken();
72
- const token = yield this.getPoolToken().getToken();
73
- let method;
74
- if (approvalType == interfaces_1.ApprovalType.POOL_TOKEN)
75
- method = poolToken.methods.approve(spender, amount);
76
- if (approvalType == interfaces_1.ApprovalType.UNDERLYING)
77
- method = token.methods.approve(spender, amount);
78
- if (approvalType == interfaces_1.ApprovalType.BORROW)
79
- method = poolToken.methods.borrowApprove(spender, amount);
80
- return this.send(method, onTransactionHash);
81
- });
82
- }
83
- getPermitData(approvalType, amount, deadlineArg, callBack) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- if (approvalType === interfaces_1.ApprovalType.UNDERLYING && this.getPoolToken().poolTokenType != types_1.PoolTokenType.Collateral)
86
- return callBack(null);
87
- const { owner, spender } = this.interactionsLendingPool.getOwnerSpender();
88
- const poolToken = yield this.getPoolToken().getPoolToken();
89
- const token = yield this.getPoolToken().getToken();
90
- const contract = approvalType == interfaces_1.ApprovalType.UNDERLYING ? token : poolToken;
91
- const nonce = yield contract.methods.nonces(owner).call();
92
- const name = yield contract.methods.name().call();
93
- const deadline = deadlineArg ? deadlineArg : general_1.DEADLINE;
94
- const data = JSON.stringify({
95
- types: TYPES,
96
- domain: {
97
- name: name,
98
- version: "1",
99
- chainId: this.getImpermaxRouter().chainId,
100
- verifyingContract: contract._address,
101
- },
102
- primaryType: approvalType == interfaces_1.ApprovalType.BORROW ? "BorrowPermit" : "Permit",
103
- message: {
104
- owner: owner,
105
- spender: spender,
106
- value: amount.toString(),
107
- nonce: ethers_1.BigNumber.from(nonce).toHexString(),
108
- deadline: deadline.toNumber(),
109
- }
110
- });
111
- this.getImpermaxRouter().web3.currentProvider.send({
112
- method: "eth_signTypedData_v4",
113
- params: [owner, data],
114
- from: owner
115
- }, (err, data) => {
116
- if (err) {
117
- console.error(err);
118
- return callBack(null);
119
- }
120
- const signature = data.result.substring(2);
121
- const r = "0x" + signature.substring(0, 64);
122
- const s = "0x" + signature.substring(64, 128);
123
- let v = parseInt(signature.substring(128, 130), 16);
124
- if (v == 0 || v == 1)
125
- v = v + 27;
126
- //console.log(v, r, s);
127
- const permitData = ethers_1.ethers.utils.defaultAbiCoder.encode(['bool', 'uint8', 'bytes32', 'bytes32'], [false, v, r, s]);
128
- callBack({ permitData, deadline, amount });
129
- });
130
- });
131
- }
132
- deposit(amount, permitData, onTransactionHash) {
133
- return __awaiter(this, void 0, void 0, function* () {
134
- const router = this.getRouterContract();
135
- const poolToken = yield this.getPoolToken().getPoolToken();
136
- const data = permitData ? permitData.permitData : '0x';
137
- const deadline = permitData ? permitData.deadline : general_1.DEADLINE;
138
- const account = this.accountPoolToken.getAccount();
139
- if (yield this.isWETH()) {
140
- return this.send(router.methods.mintETH(poolToken._address, account, deadline), onTransactionHash, amount);
141
- }
142
- else if (this.isCollateral()) {
143
- return this.send(router.methods.mintCollateral(poolToken._address, amount, account, deadline, data), onTransactionHash);
144
- }
145
- else {
146
- return this.send(router.methods.mint(poolToken._address, amount, account, deadline), onTransactionHash);
147
- }
148
- });
149
- }
150
- withdraw(tokens, permitData, onTransactionHash) {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- const router = this.getRouterContract();
153
- const poolToken = yield this.getPoolToken().getPoolToken();
154
- const data = permitData ? permitData.permitData : '0x';
155
- const deadline = permitData ? permitData.deadline : general_1.DEADLINE;
156
- const account = this.accountPoolToken.getAccount();
157
- if (yield this.isWETH()) {
158
- return this.send(router.methods.redeemETH(poolToken._address, tokens, account, deadline, data), onTransactionHash);
159
- }
160
- else {
161
- return this.send(router.methods.redeem(poolToken._address, tokens, account, deadline, data), onTransactionHash);
162
- }
163
- });
164
- }
165
- borrow(amount, permitData, onTransactionHash) {
166
- return __awaiter(this, void 0, void 0, function* () {
167
- const router = this.getRouterContract();
168
- const borrowable = yield this.getPoolToken().getPoolToken();
169
- const data = permitData ? permitData.permitData : '0x';
170
- const deadline = permitData ? permitData.deadline : general_1.DEADLINE;
171
- const account = this.accountPoolToken.getAccount();
172
- if (yield this.isWETH()) {
173
- return this.send(router.methods.borrowETH(borrowable._address, amount, account, deadline, data), onTransactionHash);
174
- }
175
- else {
176
- return this.send(router.methods.borrow(borrowable._address, amount, account, deadline, data), onTransactionHash);
177
- }
178
- });
179
- }
180
- repay(amount, onTransactionHash) {
181
- return __awaiter(this, void 0, void 0, function* () {
182
- const router = this.getRouterContract();
183
- const borrowable = yield this.getPoolToken().getPoolToken();
184
- const account = this.accountPoolToken.getAccount();
185
- if (yield this.isWETH()) {
186
- return this.send(router.methods.repayETH(borrowable._address, account, general_1.DEADLINE), onTransactionHash, amount);
187
- }
188
- else {
189
- return this.send(router.methods.repay(borrowable._address, amount, account, general_1.DEADLINE), onTransactionHash);
190
- }
191
- });
192
- }
193
- }
194
- exports.default = InteractionsPoolToken;
@@ -1,69 +0,0 @@
1
- import { PendingRewardUI } from "./interfaces";
2
- import PoolToken from "./PoolToken";
3
- import ImpermaxFactory from "./ImpermaxFactory";
4
- import { Contract } from "ethers";
5
- import Collateral from "./Collateral";
6
- import Borrowable from "./Borrowable";
7
- import { Address, PoolTokenType } from '../config/types';
8
- export default class LendingPool {
9
- factory: ImpermaxFactory;
10
- pairAddress: Address;
11
- poolTokens: {
12
- [PoolTokenType.Collateral]: Collateral;
13
- [PoolTokenType.BorrowableA]: Borrowable;
14
- [PoolTokenType.BorrowableB]: Borrowable;
15
- };
16
- cache: {
17
- poolTokenAddresses?: Promise<{
18
- [key in PoolTokenType]: Address;
19
- }>;
20
- isStakedLPToken?: Promise<boolean>;
21
- uniswapV2Pair?: Promise<Contract>;
22
- stakedLPToken?: Promise<Contract>;
23
- reserves?: Promise<[number, number]>;
24
- LPTotalSupply?: Promise<number>;
25
- marketPrice?: Promise<number>;
26
- priceDenomLP?: Promise<[number, number]>;
27
- TWAPPrice?: Promise<number>;
28
- pendingReward?: Promise<PendingRewardUI>;
29
- reinvestBountyFactor?: Promise<number>;
30
- stakedLPExchangeRate?: Promise<number>;
31
- };
32
- constructor(factory: ImpermaxFactory, pairAddress: Address);
33
- cleanCache(): void;
34
- pta: () => Borrowable;
35
- ptb: () => Borrowable;
36
- ptc: () => Collateral;
37
- getPoolToken(poolTokenType: PoolTokenType): PoolToken;
38
- getSubgraphLendingPool(): Promise<import("../subgraph/LendingPool").default>;
39
- private initializePoolTokenAddresses;
40
- getPoolTokenAddresses(): Promise<{
41
- collateral: string;
42
- borrowable0: string;
43
- borrowable1: string;
44
- }>;
45
- private initializeIsStakedLPToken;
46
- getIsStakedLPToken(): Promise<boolean>;
47
- private initializeStakedLPToken;
48
- getStakedLPToken(): Promise<Contract>;
49
- private initializeUniswapV2Pair;
50
- getUniswapV2Pair(): Promise<Contract>;
51
- private initializeReserves;
52
- getReserves(): Promise<[number, number]>;
53
- private initializeLPTotalSupply;
54
- getLPTotalSupply(): Promise<number>;
55
- private initializePriceDenomLP;
56
- getPriceDenomLP(): Promise<[number, number]>;
57
- getMarketPriceDenomLP(): Promise<[number, number]>;
58
- getMarketPrice(): Promise<number>;
59
- private initializeTWAPPrice;
60
- getTWAPPrice(): Promise<number>;
61
- private initializeStakedLPExchangeRate;
62
- getStakedLPExchangeRate(): Promise<number>;
63
- private initializePendingReward;
64
- getPendingReward(): Promise<PendingRewardUI>;
65
- private initializeReinvestBountyFactor;
66
- getReinvestBountyFactor(): Promise<number>;
67
- getReinvestBounty(): Promise<number>;
68
- hasFarming(): Promise<boolean>;
69
- }
@@ -1,291 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const Collateral_1 = __importDefault(require("./Collateral"));
16
- const Borrowable_1 = __importDefault(require("./Borrowable"));
17
- const types_1 = require("../config/types");
18
- const factories_1 = require("../config/factories");
19
- class LendingPool {
20
- constructor(factory, pairAddress) {
21
- this.cache = {};
22
- // Shortcuts
23
- this.pta = () => this.poolTokens[types_1.PoolTokenType.BorrowableA];
24
- this.ptb = () => this.poolTokens[types_1.PoolTokenType.BorrowableB];
25
- this.ptc = () => this.poolTokens[types_1.PoolTokenType.Collateral];
26
- this.factory = factory;
27
- this.pairAddress = pairAddress;
28
- this.poolTokens = {
29
- [types_1.PoolTokenType.Collateral]: new Collateral_1.default(this, types_1.PoolTokenType.Collateral),
30
- [types_1.PoolTokenType.BorrowableA]: new Borrowable_1.default(this, types_1.PoolTokenType.BorrowableA),
31
- [types_1.PoolTokenType.BorrowableB]: new Borrowable_1.default(this, types_1.PoolTokenType.BorrowableB),
32
- };
33
- }
34
- cleanCache() {
35
- this.cache = {};
36
- this.pta().cleanCache();
37
- this.ptb().cleanCache();
38
- this.ptc().cleanCache();
39
- }
40
- getPoolToken(poolTokenType) {
41
- return this.poolTokens[poolTokenType];
42
- }
43
- getSubgraphLendingPool() {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- return this.factory.router.subgraph.getLendingPool(this.factory.factory, this.pairAddress);
46
- });
47
- }
48
- initializePoolTokenAddresses() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const lPool = yield this.factory.getRouter().methods.getLendingPool(this.pairAddress).call();
51
- return {
52
- [types_1.PoolTokenType.Collateral]: lPool.collateral,
53
- [types_1.PoolTokenType.BorrowableA]: lPool.borrowableA,
54
- [types_1.PoolTokenType.BorrowableB]: lPool.borrowableB,
55
- };
56
- });
57
- }
58
- getPoolTokenAddresses() {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- if (!this.cache.poolTokenAddresses)
61
- this.cache.poolTokenAddresses = this.initializePoolTokenAddresses();
62
- return this.cache.poolTokenAddresses;
63
- });
64
- }
65
- initializeIsStakedLPToken() {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- try {
68
- return yield this.factory.getRouter().methods.isStakedLPToken(this.pairAddress).call();
69
- }
70
- catch (e) {
71
- return false;
72
- }
73
- });
74
- }
75
- getIsStakedLPToken() {
76
- return __awaiter(this, void 0, void 0, function* () {
77
- if (!this.cache.isStakedLPToken)
78
- this.cache.isStakedLPToken = this.initializeIsStakedLPToken();
79
- return this.cache.isStakedLPToken;
80
- });
81
- }
82
- initializeStakedLPToken() {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- if (!(yield this.getIsStakedLPToken()))
85
- return null;
86
- return this.factory.router.contractsHelper.newStakedLPToken(this.pairAddress);
87
- });
88
- }
89
- getStakedLPToken() {
90
- return __awaiter(this, void 0, void 0, function* () {
91
- if (!this.cache.stakedLPToken)
92
- this.cache.stakedLPToken = this.initializeStakedLPToken();
93
- return this.cache.stakedLPToken;
94
- });
95
- }
96
- initializeUniswapV2Pair() {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- return this.factory.router.contractsHelper.newUniswapV2Pair((yield this.getIsStakedLPToken())
99
- ? yield (yield this.getStakedLPToken()).methods.underlying().call()
100
- : this.pairAddress);
101
- });
102
- }
103
- getUniswapV2Pair() {
104
- return __awaiter(this, void 0, void 0, function* () {
105
- if (!this.cache.uniswapV2Pair)
106
- this.cache.uniswapV2Pair = this.initializeUniswapV2Pair();
107
- return this.cache.uniswapV2Pair;
108
- });
109
- }
110
- // Reserves
111
- initializeReserves() {
112
- return __awaiter(this, void 0, void 0, function* () {
113
- const uniswapV2Pair = yield this.getUniswapV2Pair();
114
- const { reserve0, reserve1 } = yield uniswapV2Pair.methods.getReserves().call();
115
- return [
116
- yield this.pta().normalize(reserve0),
117
- yield this.ptb().normalize(reserve1),
118
- ];
119
- });
120
- }
121
- getReserves() {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- if (!this.cache.reserves)
124
- this.cache.reserves = this.initializeReserves();
125
- return this.cache.reserves;
126
- });
127
- }
128
- // LP Total Supply
129
- initializeLPTotalSupply() {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- const uniswapV2Pair = yield this.getUniswapV2Pair();
132
- const totalSupply = yield uniswapV2Pair.methods.totalSupply().call();
133
- return this.ptc().normalize(totalSupply);
134
- });
135
- }
136
- getLPTotalSupply() {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- if (!this.cache.LPTotalSupply)
139
- this.cache.LPTotalSupply = this.initializeLPTotalSupply();
140
- return this.cache.LPTotalSupply;
141
- });
142
- }
143
- // Price Denom LP
144
- initializePriceDenomLP() {
145
- return __awaiter(this, void 0, void 0, function* () {
146
- const collateral = yield this.ptc().getPoolToken();
147
- const { price0, price1 } = yield collateral.methods.getPrices().call();
148
- const decimalsA = yield this.pta().getDecimals();
149
- const decimalsB = yield this.ptb().getDecimals();
150
- let stakedLPExchangeRate = yield this.getStakedLPExchangeRate();
151
- return [
152
- price0 / 1e18 / 1e18 * Math.pow(10, decimalsA) * stakedLPExchangeRate,
153
- price1 / 1e18 / 1e18 * Math.pow(10, decimalsB) * stakedLPExchangeRate
154
- ];
155
- });
156
- }
157
- getPriceDenomLP() {
158
- return __awaiter(this, void 0, void 0, function* () {
159
- if (!this.cache.priceDenomLP)
160
- this.cache.priceDenomLP = this.initializePriceDenomLP();
161
- return this.cache.priceDenomLP;
162
- });
163
- }
164
- getMarketPriceDenomLP() {
165
- return __awaiter(this, void 0, void 0, function* () {
166
- const [reserve0, reserve1] = yield this.getReserves();
167
- const totalSupply = yield this.getLPTotalSupply();
168
- return [
169
- totalSupply / reserve0 / 2,
170
- totalSupply / reserve1 / 2,
171
- ];
172
- });
173
- }
174
- // Market Price
175
- getMarketPrice() {
176
- return __awaiter(this, void 0, void 0, function* () {
177
- const [reserve0, reserve1] = yield this.getReserves();
178
- return this.factory.router.priceInverted ? 1 * reserve0 / reserve1 : 1 * reserve1 / reserve0;
179
- });
180
- }
181
- // TWAP Price
182
- initializeTWAPPrice() {
183
- return __awaiter(this, void 0, void 0, function* () {
184
- try {
185
- let price;
186
- if (factories_1.SOLIDEX_FACTORIES.includes(this.factory.factory)) {
187
- const collateral = yield this.ptc().getPoolToken();
188
- price = yield collateral.methods.getTwapPrice112x112().call();
189
- }
190
- else {
191
- price = (yield this.factory.getSimpleUniswapOracle().methods.getResult(this.pairAddress).call()).price;
192
- }
193
- const decimalsA = yield this.pta().getDecimals();
194
- const decimalsB = yield this.ptb().getDecimals();
195
- return price / Math.pow(2, 112) * Math.pow(10, decimalsA) / Math.pow(10, decimalsB);
196
- }
197
- catch (e) {
198
- // Oracle is not initialized yet
199
- return 0;
200
- }
201
- });
202
- }
203
- getTWAPPrice() {
204
- return __awaiter(this, void 0, void 0, function* () {
205
- if (!this.cache.TWAPPrice)
206
- this.cache.TWAPPrice = this.initializeTWAPPrice();
207
- return !this.factory.router.priceInverted ? (yield this.cache.TWAPPrice) : 1 / (yield this.cache.TWAPPrice);
208
- });
209
- }
210
- // Exchange rate
211
- initializeStakedLPExchangeRate() {
212
- return __awaiter(this, void 0, void 0, function* () {
213
- if (!(yield this.getIsStakedLPToken()))
214
- return 1;
215
- const stakedLPToken = yield this.getStakedLPToken();
216
- return (yield stakedLPToken.methods.exchangeRate().call()) / 1e18;
217
- });
218
- }
219
- getStakedLPExchangeRate() {
220
- return __awaiter(this, void 0, void 0, function* () {
221
- if (!this.cache.stakedLPExchangeRate)
222
- this.cache.stakedLPExchangeRate = this.initializeStakedLPExchangeRate();
223
- return this.cache.stakedLPExchangeRate;
224
- });
225
- }
226
- // Pending Reward
227
- initializePendingReward() {
228
- return __awaiter(this, void 0, void 0, function* () {
229
- const stakedLPToken = yield this.getStakedLPToken();
230
- const rewardTokenAddress = yield stakedLPToken.methods.rewardsToken().call();
231
- const rewardToken = this.factory.router.contractsHelper.newERC20(rewardTokenAddress);
232
- const decimals = yield rewardToken.methods.decimals().call();
233
- let result = {
234
- amount: 0,
235
- symbol: yield rewardToken.methods.symbol().call(),
236
- };
237
- try {
238
- const pendingReward = yield stakedLPToken.methods.getReward().call();
239
- result.amount = pendingReward / Math.pow(10, decimals);
240
- }
241
- catch (_a) {
242
- try {
243
- const stakingRewardsAddress = yield stakedLPToken.methods.stakingRewards().call();
244
- const stakingRewards = this.factory.router.contractsHelper.newStakingRewards(stakingRewardsAddress);
245
- const earned = yield stakingRewards.methods.earned(stakedLPToken._address).call();
246
- result.amount = earned / Math.pow(10, decimals);
247
- }
248
- catch (_b) { }
249
- }
250
- return result;
251
- });
252
- }
253
- getPendingReward() {
254
- return __awaiter(this, void 0, void 0, function* () {
255
- if (!this.cache.pendingReward)
256
- this.cache.pendingReward = this.initializePendingReward();
257
- return this.cache.pendingReward;
258
- });
259
- }
260
- // Reinvest Bounty Factor
261
- initializeReinvestBountyFactor() {
262
- return __awaiter(this, void 0, void 0, function* () {
263
- if (!(yield this.getIsStakedLPToken()))
264
- return 0;
265
- const stakedLPToken = yield this.getStakedLPToken();
266
- return (yield stakedLPToken.methods.REINVEST_BOUNTY().call()) / 1e18;
267
- });
268
- }
269
- getReinvestBountyFactor() {
270
- return __awaiter(this, void 0, void 0, function* () {
271
- if (!this.cache.reinvestBountyFactor)
272
- this.cache.reinvestBountyFactor = this.initializeReinvestBountyFactor();
273
- return this.cache.reinvestBountyFactor;
274
- });
275
- }
276
- // Reinvest Bounty
277
- getReinvestBounty() {
278
- return __awaiter(this, void 0, void 0, function* () {
279
- const pendingReward = yield this.getPendingReward();
280
- const reinvestBountyFactor = yield this.getReinvestBountyFactor();
281
- return pendingReward.amount * reinvestBountyFactor;
282
- });
283
- }
284
- // Has Farming
285
- hasFarming() {
286
- return __awaiter(this, void 0, void 0, function* () {
287
- return (yield this.pta().hasFarming()) || (yield this.ptb().hasFarming());
288
- });
289
- }
290
- }
291
- exports.default = LendingPool;
@@ -1,36 +0,0 @@
1
- import { BigNumber } from "ethers";
2
- import { Contract } from "./interfaces";
3
- import LendingPool from "./LendingPool";
4
- import { Address, PoolTokenType } from '../config/types';
5
- export default abstract class PoolToken {
6
- lendingPool: LendingPool;
7
- poolTokenType: PoolTokenType;
8
- cache: {
9
- token?: Promise<Contract>;
10
- poolToken?: Promise<Contract>;
11
- exchangeRate?: Promise<number>;
12
- totalBalance?: Promise<number>;
13
- };
14
- constructor(lendingPool: LendingPool, poolTokenType: PoolTokenType);
15
- cleanCache(): void;
16
- getContractHelper: () => import("./ContractsHelper").default;
17
- getSubgraphPoolToken(): Promise<import("../subgraph/PoolToken").default>;
18
- protected getPoolTokenAddressFromLendingPool(): Promise<string>;
19
- abstract initializePoolToken(): Promise<Contract>;
20
- getPoolToken(): Promise<any>;
21
- getPoolTokenAddress(): Promise<Address>;
22
- abstract initializeToken(): Promise<Contract>;
23
- getToken(): Promise<any>;
24
- getTokenAddress(): Promise<any>;
25
- getDecimals(): Promise<number>;
26
- normalize(amount: number): Promise<number>;
27
- toBigNumber(amount: number): Promise<BigNumber>;
28
- toNumber(amount: BigNumber): Promise<number>;
29
- toTokens(amount: number): Promise<BigNumber>;
30
- fromTokens(amount: BigNumber): Promise<number>;
31
- private initializeTotalBalance;
32
- getTotalBalance(): Promise<number>;
33
- getTotalBalanceUSD(): Promise<number>;
34
- protected initializeExchangeRate(): Promise<number>;
35
- getExchangeRate(): Promise<number>;
36
- }