impermax-sdk 1.0.1 → 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 (103) hide show
  1. package/package.json +9 -3
  2. package/.idea/impermax-sdk.iml +0 -12
  3. package/.idea/misc.xml +0 -6
  4. package/.idea/modules.xml +0 -8
  5. package/.idea/workspace.xml +0 -642
  6. package/abis/ImpermaxABI.ts +0 -3
  7. package/abis/contracts/BAllowance.json +0 -4735
  8. package/abis/contracts/BDeployer.json +0 -1195
  9. package/abis/contracts/BInterestRateModel.json +0 -10796
  10. package/abis/contracts/BSetter.json +0 -6219
  11. package/abis/contracts/BStorage.json +0 -2613
  12. package/abis/contracts/Borrowable.json +0 -19937
  13. package/abis/contracts/CDeployer.json +0 -1104
  14. package/abis/contracts/CSetter.json +0 -5094
  15. package/abis/contracts/CStorage.json +0 -516
  16. package/abis/contracts/ClaimAggregator.json +0 -2015
  17. package/abis/contracts/Collateral.json +0 -21615
  18. package/abis/contracts/ERC20.json +0 -819
  19. package/abis/contracts/Factory.json +0 -21986
  20. package/abis/contracts/FarmingPool.json +0 -8601
  21. package/abis/contracts/IBDeployer.json +0 -351
  22. package/abis/contracts/IBorrowTracker.json +0 -346
  23. package/abis/contracts/IBorrowable.json +0 -13207
  24. package/abis/contracts/ICDeployer.json +0 -294
  25. package/abis/contracts/IClaimable.json +0 -406
  26. package/abis/contracts/ICollateral.json +0 -8952
  27. package/abis/contracts/IERC20.json +0 -2376
  28. package/abis/contracts/IFactory.json +0 -3660
  29. package/abis/contracts/IFarmingPool.json +0 -3584
  30. package/abis/contracts/IImpermaxCallee.json +0 -679
  31. package/abis/contracts/IMerkleDistributor.json +0 -1134
  32. package/abis/contracts/IPoolToken.json +0 -5343
  33. package/abis/contracts/IRouter01.json +0 -6891
  34. package/abis/contracts/IRouter02.json +0 -7283
  35. package/abis/contracts/ISimpleUniswapOracle.json +0 -1469
  36. package/abis/contracts/IStakedLPToken.json +0 -7309
  37. package/abis/contracts/IStakingRewards.json +0 -1036
  38. package/abis/contracts/IUniswapV2Callee.json +0 -403
  39. package/abis/contracts/IUniswapV2ERC20.json +0 -3155
  40. package/abis/contracts/IUniswapV2Factory.json +0 -1690
  41. package/abis/contracts/IUniswapV2Pair.json +0 -6761
  42. package/abis/contracts/IWETH.json +0 -561
  43. package/abis/contracts/ImpermaxChef.json +0 -20945
  44. package/abis/contracts/ImpermaxERC20.json +0 -12095
  45. package/abis/contracts/Math.json +0 -1966
  46. package/abis/contracts/MockERC20.json +0 -8884
  47. package/abis/contracts/PoolToken.json +0 -10784
  48. package/abis/contracts/Router01.json +0 -43963
  49. package/abis/contracts/SafeMath.json +0 -6828
  50. package/abis/contracts/SimpleUniswapOracle.json +0 -9640
  51. package/abis/contracts/TransferHelper.json +0 -4875
  52. package/abis/contracts/UQ112x112.json +0 -1201
  53. package/abis/contracts/UniswapV2ERC20.json +0 -10969
  54. package/abis/contracts/UniswapV2Factory.json +0 -5521
  55. package/abis/contracts/UniswapV2Library.json +0 -13789
  56. package/abis/contracts/UniswapV2Pair.json +0 -30782
  57. package/abis/contracts/WETH9.json +0 -6613
  58. package/config/amms.ts +0 -199
  59. package/config/contracts/claim-aggregators.ts +0 -16
  60. package/config/contracts/impermax-chef.ts +0 -16
  61. package/config/contracts/imxes.ts +0 -16
  62. package/config/contracts/merkle-distributors.ts +0 -13
  63. package/config/contracts/routers.ts +0 -36
  64. package/config/contracts/simple-uniswap-oracles.ts +0 -33
  65. package/config/contracts/weths.ts +0 -18
  66. package/config/debank-ids.ts +0 -15
  67. package/config/endpoints/merkle-distributors.ts +0 -13
  68. package/config/eth.ts +0 -32
  69. package/config/factories.ts +0 -26
  70. package/config/farms.ts +0 -119
  71. package/config/general.ts +0 -8
  72. package/config/subgraphs.ts +0 -69
  73. package/config/types.ts +0 -81
  74. package/impermax-router/Account.ts +0 -123
  75. package/impermax-router/AccountBorrowable.ts +0 -110
  76. package/impermax-router/AccountCollateral.ts +0 -40
  77. package/impermax-router/AccountLendingPool.ts +0 -231
  78. package/impermax-router/AccountPoolToken.ts +0 -76
  79. package/impermax-router/Borrowable.ts +0 -86
  80. package/impermax-router/Collateral.ts +0 -26
  81. package/impermax-router/ContractsHelper.ts +0 -64
  82. package/impermax-router/ImpermaxFactory.ts +0 -47
  83. package/impermax-router/Interactions.ts +0 -94
  84. package/impermax-router/InteractionsLendingPool.ts +0 -129
  85. package/impermax-router/InteractionsPoolToken.ts +0 -187
  86. package/impermax-router/LendingPool.ts +0 -256
  87. package/impermax-router/PoolToken.ts +0 -112
  88. package/impermax-router/index.ts +0 -49
  89. package/impermax-router/interfaces.ts +0 -233
  90. package/index.ts +0 -5
  91. package/subgraph/Account.ts +0 -93
  92. package/subgraph/AccountLendingPool.ts +0 -60
  93. package/subgraph/AccountPoolToken.ts +0 -60
  94. package/subgraph/LendingPool.ts +0 -179
  95. package/subgraph/PoolToken.ts +0 -381
  96. package/subgraph/PriceHelper.ts +0 -150
  97. package/subgraph/SolidexHelper.ts +0 -54
  98. package/subgraph/index.ts +0 -166
  99. package/subgraph/initializer.ts +0 -509
  100. package/subgraph/query.ts +0 -224
  101. package/tsconfig.json +0 -16
  102. package/utils/ether-utils.ts +0 -22
  103. package/utils/index.ts +0 -12
@@ -1,93 +0,0 @@
1
- import { UserData } from "../impermax-router/interfaces";
2
-
3
- import Subgraph from ".";
4
- import AccountLendingPool from "./AccountLendingPool";
5
- import { Address, Factory, FactoryIndex, LendingPoolIndex, PoolTokenType } from '../config/types';
6
-
7
- export default class Account {
8
- subgraph: Subgraph;
9
- account: Address;
10
- accountLLPs: LendingPoolIndex<Promise<AccountLendingPool>>;
11
-
12
- constructor(subgraph: Subgraph, account: Address) {
13
- this.subgraph = subgraph;
14
- this.account = account;
15
- this.accountLLPs = {}
16
- }
17
-
18
- private async initializeAccountLendingPool(factory: Factory, pair: Address) : Promise<AccountLendingPool> {
19
- const lendingPool = await this.subgraph.getLendingPool(factory, pair);
20
- return new AccountLendingPool(this, lendingPool);
21
- }
22
- async getAccountLendingPool(factory: Factory, pair: Address) : Promise<AccountLendingPool> {
23
- if (!this.accountLLPs[factory]) this.accountLLPs[factory] = {};
24
- if (!this.accountLLPs[factory][pair]) this.accountLLPs[factory][pair] = this.initializeAccountLendingPool(factory, pair);
25
- return this.accountLLPs[factory][pair];
26
- }
27
-
28
- async getUserData() : Promise<FactoryIndex<UserData>> {
29
- return this.subgraph.getUserData(this.account);
30
- }
31
-
32
- async getBorrowPositions() : Promise<FactoryIndex<Address[]>> {
33
- const result: FactoryIndex<Address[]> = {};
34
- const userData = await this.getUserData();
35
- for (const factory of Object.keys(userData) as Factory[]) {
36
- result[factory] = Object.keys(userData[factory].collateralPositions);
37
- }
38
- return result;
39
- }
40
-
41
- async getSupplyPositions() : Promise<FactoryIndex<Address[]>> {
42
- const result: FactoryIndex<Address[]> = {};
43
- const userData = await this.getUserData();
44
- for (const factory of Object.keys(userData) as Factory[]) {
45
- result[factory] = Object.keys(userData[factory].supplyPositions);
46
- }
47
- return result;
48
- }
49
-
50
- async getAccountTotalValueLocked() : Promise<number> {
51
- const borrowPositions = await this.getBorrowPositions();
52
- const supplyPositions = await this.getSupplyPositions();
53
- let tvl = 0;
54
- for (const factory of Object.keys(borrowPositions) as Factory[]) {
55
- for (const uniswapV2PairAddress of borrowPositions[factory]) {
56
- const accountLendingPool = await this.getAccountLendingPool(factory, uniswapV2PairAddress);
57
- tvl += await accountLendingPool.getBorrowerEquityValue();
58
- }
59
- for (const uniswapV2PairAddress of supplyPositions[factory]) {
60
- const accountLendingPool = await this.getAccountLendingPool(factory, uniswapV2PairAddress);
61
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableA].getSuppliedValue();
62
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableB].getSuppliedValue();
63
- }
64
- }
65
- return tvl;
66
- }
67
-
68
- async getAccountTotalValueSupplied() : Promise<number> {
69
- const supplyPositions = await this.getSupplyPositions();
70
- let tvl = 0;
71
- for (const factory of Object.keys(supplyPositions) as Factory[]) {
72
- for (const uniswapV2PairAddress of supplyPositions[factory]) {
73
- const accountLendingPool = await this.getAccountLendingPool(factory, uniswapV2PairAddress);
74
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableA].getSuppliedValue();
75
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableB].getSuppliedValue();
76
- }
77
- }
78
- return tvl;
79
- }
80
-
81
- async getAccountTotalValueBorrowed() : Promise<number> {
82
- const borrowPositions = await this.getBorrowPositions();
83
- let tvl = 0;
84
- for (const factory of Object.keys(borrowPositions) as Factory[]) {
85
- for (const uniswapV2PairAddress of borrowPositions[factory]) {
86
- const accountLendingPool = await this.getAccountLendingPool(factory, uniswapV2PairAddress);
87
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableA].getBorrowedValue();
88
- tvl += await accountLendingPool.accountPoolTokens[PoolTokenType.BorrowableB].getBorrowedValue();
89
- }
90
- }
91
- return tvl;
92
- }
93
- }
@@ -1,60 +0,0 @@
1
- import { CollateralPosition, UserData } from "../impermax-router/interfaces";
2
- import Account from "./Account";
3
- import AccountPoolToken from "./AccountPoolToken";
4
-
5
- import LendingPool from "./LendingPool";
6
- import { PoolTokenType } from '../config/types';
7
-
8
- export default class AccountLendingPool {
9
- account: Account;
10
- lendingPool: LendingPool;
11
- accountPoolTokens: {
12
- [key in PoolTokenType]?: AccountPoolToken
13
- }
14
-
15
- constructor(account: Account, lendingPool: LendingPool) {
16
- this.account = account;
17
- this.lendingPool = lendingPool;
18
- this.accountPoolTokens = {};
19
- this.accountPoolTokens[PoolTokenType.Collateral] = new AccountPoolToken(this, PoolTokenType.Collateral);
20
- this.accountPoolTokens[PoolTokenType.BorrowableA] = new AccountPoolToken(this, PoolTokenType.BorrowableA);
21
- this.accountPoolTokens[PoolTokenType.BorrowableB] = new AccountPoolToken(this, PoolTokenType.BorrowableB);
22
- }
23
-
24
- getAccountPoolToken(poolTokenType: PoolTokenType) : AccountPoolToken {
25
- return this.accountPoolTokens[poolTokenType];
26
- }
27
-
28
- async getUserData() : Promise<UserData> {
29
- const userData = await this.account.getUserData();
30
- if(!userData) return null;
31
- return userData[this.lendingPool.factory];
32
- }
33
-
34
- async getCollateralPosition() : Promise<CollateralPosition> {
35
- const userData = await this.getUserData();
36
- if(!userData) return null;
37
- return userData.collateralPositions[this.lendingPool.pairAddress];
38
- }
39
-
40
- async getCollateralAmount() : Promise<number> {
41
- const collateralPosition = await this.getCollateralPosition();
42
- if(!collateralPosition) return 0;
43
- const exchangeRate = await this.lendingPool.poolTokens[PoolTokenType.Collateral].getExchangeRate();
44
- const collateralBalance = parseFloat(collateralPosition.balance);
45
- return collateralBalance * exchangeRate;
46
- }
47
-
48
- async getCollateralValue() : Promise<number> {
49
- const tokenPrice = await this.lendingPool.poolTokens[PoolTokenType.Collateral].getTokenPriceAccurate();
50
- const collateralAmount = await this.getCollateralAmount();
51
- return collateralAmount * tokenPrice;
52
- }
53
-
54
- async getBorrowerEquityValue() : Promise<number> {
55
- const collateralValue = await this.getCollateralValue();
56
- const borrowedValueA = await this.accountPoolTokens[PoolTokenType.BorrowableA].getBorrowedValue();
57
- const borrowedValueB = await this.accountPoolTokens[PoolTokenType.BorrowableB].getBorrowedValue();
58
- return collateralValue - borrowedValueA - borrowedValueB;
59
- }
60
- }
@@ -1,60 +0,0 @@
1
- import { BorrowPosition, SupplyPosition } from "../impermax-router/interfaces";
2
- import AccountLendingPool from "./AccountLendingPool";
3
-
4
- import PoolToken from "./PoolToken";
5
- import { PoolTokenType } from '../config/types';
6
-
7
- export default class AccountPoolToken {
8
- accountLendingPool: AccountLendingPool;
9
- poolToken: PoolToken;
10
-
11
- constructor(accountLendingPool: AccountLendingPool, poolTokenType: PoolTokenType) {
12
- this.accountLendingPool = accountLendingPool;
13
- this.poolToken = accountLendingPool.lendingPool.poolTokens[poolTokenType];
14
- }
15
-
16
- private async getBorrowPosition() : Promise<BorrowPosition> {
17
- const userData = await this.accountLendingPool.getUserData();
18
- if(!userData) return null;
19
- const borrowPositions = userData.borrowPositions[this.poolToken.lendingPool.pairAddress];
20
- if(!borrowPositions) return null;
21
- return borrowPositions[this.poolToken.poolTokenType];
22
- }
23
-
24
- private async getSupplyPosition() : Promise<SupplyPosition> {
25
- const userData = await this.accountLendingPool.getUserData();
26
- if(!userData) return null;
27
- const supplyPositions = userData.supplyPositions[this.poolToken.lendingPool.pairAddress];
28
- if(!supplyPositions) return null;
29
- return supplyPositions[this.poolToken.poolTokenType];
30
- }
31
-
32
- async getBorrowedAmount() : Promise<number> {
33
- const borrowPosition = await this.getBorrowPosition();
34
- const borrowIndex = await this.poolToken.getBorrowIndex();
35
- if(!borrowPosition) return 0;
36
- const borrowBalance = parseFloat(borrowPosition.borrowBalance);
37
- const userBorrowIndex = parseFloat(borrowPosition.borrowIndex);
38
- return borrowBalance * borrowIndex / userBorrowIndex;
39
- }
40
-
41
- async getBorrowedValue() : Promise<number> {
42
- const tokenPrice = await this.poolToken.getTokenPriceAccurate();
43
- const borrowedAmount = await this.getBorrowedAmount();
44
- return borrowedAmount * tokenPrice;
45
- }
46
-
47
- async getSuppliedAmount() : Promise<number> {
48
- const supplyPosition = await this.getSupplyPosition();
49
- if(!supplyPosition) return 0;
50
- const exchangeRate = await this.poolToken.getExchangeRate();
51
- const supplyBalance = parseFloat(supplyPosition.balance);
52
- return supplyBalance * exchangeRate;
53
- }
54
-
55
- async getSuppliedValue() : Promise<number> {
56
- const tokenPrice = await this.poolToken.getTokenPriceAccurate();
57
- const suppliedAmount = await this.getSuppliedAmount();
58
- return suppliedAmount * tokenPrice;
59
- }
60
- }
@@ -1,179 +0,0 @@
1
- import { LendingPoolData, LendingPoolPastData } from "../impermax-router/interfaces";
2
-
3
- import Subgraph from ".";
4
- import PoolToken from "./PoolToken";
5
- import { toAPR } from "../utils";
6
- import { Address, Amms, Factory, PoolTokenType } from '../config/types';
7
- import { getAmmByFactory } from '../config/amms';
8
- import { OLD_KINK_MULTIPLIER_FACTORIES } from '../config/factories';
9
- import { Farms, getFarmByStakedLPFactory } from '../config/farms';
10
-
11
- export default class LendingPool {
12
- subgraph: Subgraph;
13
- factory: Factory;
14
- pairAddress: Address;
15
- poolTokens: {
16
- [key in PoolTokenType]?: PoolToken
17
- };
18
-
19
- constructor(subgraph: Subgraph, factory: Factory, pairAddress: Address) {
20
- this.subgraph = subgraph;
21
- this.factory = factory;
22
- this.pairAddress = pairAddress;
23
- this.poolTokens = {};
24
- this.poolTokens[PoolTokenType.Collateral] = new PoolToken(this, PoolTokenType.Collateral);
25
- this.poolTokens[PoolTokenType.BorrowableA] = new PoolToken(this, PoolTokenType.BorrowableA);
26
- this.poolTokens[PoolTokenType.BorrowableB] = new PoolToken(this, PoolTokenType.BorrowableB);
27
- }
28
-
29
- getPoolToken(poolTokenType: PoolTokenType) : PoolToken {
30
- return this.poolTokens[poolTokenType];
31
- }
32
-
33
- // Subgraph calls
34
- async getLendingPoolData() : Promise<LendingPoolData> {
35
- return this.subgraph.getLendingPoolData(this.factory, this.pairAddress);
36
- }
37
-
38
- // Safety Margin
39
- async getSafetyMargin() : Promise<number> {
40
- const lendingPoolData = await this.getLendingPoolData();
41
- return parseFloat(lendingPoolData[PoolTokenType.Collateral].safetyMargin);
42
- }
43
-
44
- // Liquidation Penalty
45
- async getLiquidationIncentive() : Promise<number> {
46
- const lendingPoolData = await this.getLendingPoolData();
47
- return parseFloat(lendingPoolData[PoolTokenType.Collateral].liquidationIncentive);
48
- }
49
- async getLiquidationFee() : Promise<number> {
50
- const lendingPoolData = await this.getLendingPoolData();
51
- const liquidationFee = lendingPoolData[PoolTokenType.Collateral].liquidationFee;
52
- return liquidationFee ? parseFloat(liquidationFee) : 0;
53
- }
54
- async getLiquidationPenalty() : Promise<number> {
55
- return await this.getLiquidationIncentive() + await this.getLiquidationFee();
56
- }
57
-
58
- // Uniswap APR
59
- async getUniswapAPR() : Promise<number> {
60
- const lendingPoolData = await this.getLendingPoolData();
61
- return lendingPoolData.pair.uniswapAPR;
62
- }
63
-
64
- // Staking
65
- async isStakedLPToken() : Promise<boolean> {
66
- const lendingPoolData = await this.getLendingPoolData();
67
- return lendingPoolData.pair.isStakedLPToken;
68
- }
69
- async getStakedLPExchangeRate() : Promise<number> {
70
- const lendingPoolData = await this.getLendingPoolData();
71
- return parseFloat(lendingPoolData.pair.exchangeRate);
72
- }
73
- async getStakingRewards(): Promise<Array<{
74
- APR: number,
75
- symbol: string,
76
- }>> {
77
- const farm = await this.getFarm();
78
- const lendingPoolData = await this.getLendingPoolData();
79
-
80
- if (farm === Farms.solidex || farm === Farms.solidexB || farm === Farms.solidexUSDC || farm === Farms.solidexUSDCB) {
81
- const solidexLPDetails = await this.subgraph.solidexHelper.getSolidexLPDetails();
82
- const result = solidexLPDetails[lendingPoolData.pair.uniswapV2PairAddress];
83
- if (result) return result;
84
- }
85
-
86
- const FINISH_DELAY = 3600 * 24 * 1;
87
- const rewards = [];
88
- const stakedTotalSupply = parseFloat(lendingPoolData.pair.stakedTotalSupply);
89
- const underlyingLPPrice = await this.getUnderlyingLPPrice(true);
90
- for(const reward of lendingPoolData.pair.rewards) {
91
- const multiplier = farm === Farms.traderJoeV2 ? 0.5 : 1;
92
- const periodFinish = parseInt(reward.periodFinish);
93
- if ((new Date).getTime() / 1000 - FINISH_DELAY > periodFinish && periodFinish !== 0) continue;
94
- let rewardRate = parseFloat(reward.rewardRate);
95
- if (farm == Farms.traderJoeV4) rewardRate = rewardRate * 0.45;
96
- const rewardPrice = await this.subgraph.priceHelper.getDebankTokenPrice(reward.rewardsToken.id);
97
- rewards.push({
98
- APR: toAPR((rewardPrice * rewardRate) / (stakedTotalSupply * underlyingLPPrice) * multiplier),
99
- symbol: reward.rewardsToken.symbol,
100
- });
101
- }
102
- return rewards;
103
- }
104
- async getStakingAPR() : Promise<number> {
105
- const rewards = await this.getStakingRewards();
106
- let APR = 0;
107
- for (const reward of rewards) {
108
- APR += reward.APR
109
- }
110
- return APR;
111
- }
112
-
113
- //Shown Leverage
114
- async getShownLeverage() : Promise<number> {
115
- const safetyMargin = await this.getSafetyMargin();
116
- if (safetyMargin < 1.25) return 20;
117
- if (safetyMargin < 1.51) return 10;
118
- if (safetyMargin < 2.01) return 5;
119
- return 3;
120
- }
121
-
122
- // Past Data
123
- async getLendingPoolDataPast24h() : Promise<LendingPoolPastData> {
124
- return (await this.getLendingPoolData()).past24h;
125
- }
126
- async getLendingPoolDataPast7d() : Promise<LendingPoolPastData> {
127
- return (await this.getLendingPoolData()).past7d;
128
- }
129
-
130
- // Amms and farms
131
- async getAmm() : Promise<Amms> {
132
- const lendingPoolData = await this.getLendingPoolData();
133
- return getAmmByFactory(this.subgraph.network, lendingPoolData.pair.uniswapV2Factory);
134
- }
135
- async getFarm() : Promise<Farms> {
136
- const lendingPoolData = await this.getLendingPoolData();
137
- return getFarmByStakedLPFactory(this.subgraph.network, lendingPoolData.pair.factory);
138
- }
139
-
140
- // getCollateralPrice -> returns the price of the collateral, not necessarily of the underlying LP
141
- private calculateCollateralPrice(reserve0: number, reserve1: number, totalSupply: number, price0: number, price1: number) : number {
142
- if (totalSupply === 0) return 0;
143
- const reserve0USD = reserve0 * price0;
144
- const reserve1USD = reserve1 * price1;
145
- // adjust reserves taking the latest price passed as parameters
146
- const adjustedReserveUSD = Math.sqrt(reserve0USD * reserve1USD) * 2;
147
- return adjustedReserveUSD / totalSupply;
148
- }
149
- async getCollateralPrice(fast: boolean = true) : Promise<number> {
150
- const lendingPoolData = await this.getLendingPoolData();
151
- return this.calculateCollateralPrice(
152
- parseFloat(lendingPoolData.pair.reserve0),
153
- parseFloat(lendingPoolData.pair.reserve1),
154
- parseFloat(lendingPoolData.pair.totalSupply),
155
- fast ?
156
- await this.poolTokens[PoolTokenType.BorrowableA].getTokenPriceFast() :
157
- await this.poolTokens[PoolTokenType.BorrowableA].getTokenPriceAccurate(),
158
- fast ?
159
- await this.poolTokens[PoolTokenType.BorrowableB].getTokenPriceFast() :
160
- await this.poolTokens[PoolTokenType.BorrowableB].getTokenPriceAccurate(),
161
- );
162
- }
163
- async getUnderlyingLPPrice(fast: boolean = true) {
164
- return await this.getCollateralPrice(fast) / await this.getStakedLPExchangeRate();
165
- }
166
-
167
- // Kink Multiplier
168
- getKinkMultiplier() {
169
- if (OLD_KINK_MULTIPLIER_FACTORIES.includes(this.factory)) return 5;
170
- return 2;
171
- }
172
-
173
- // Stats
174
- async getTotalBorrowsUSD() {
175
- const totalBorrowsUSDA = await this.poolTokens[PoolTokenType.BorrowableA].getTotalBorrowsUSD();
176
- const totalBorrowsUSDB = await this.poolTokens[PoolTokenType.BorrowableB].getTotalBorrowsUSD();
177
- return totalBorrowsUSDA + totalBorrowsUSDB;
178
- }
179
- }