@evaafi/sdk 0.5.5 → 0.5.6
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/dist/api/helpers.js +2 -3
- package/dist/api/math.d.ts +22 -3
- package/dist/api/math.js +146 -63
- package/dist/api/parser.d.ts +3 -3
- package/dist/api/parser.js +37 -21
- package/dist/api/prices.js +1 -2
- package/dist/config.d.ts +2 -0
- package/dist/config.js +5 -0
- package/dist/constants/assets.d.ts +2 -3
- package/dist/constants/assets.js +10 -2
- package/dist/constants/general.d.ts +3 -2
- package/dist/constants/general.js +6 -5
- package/dist/constants/pools.d.ts +0 -1
- package/dist/constants/pools.js +1 -14
- package/dist/constants.d.ts +5 -34
- package/dist/constants.js +90 -37
- package/dist/contracts/MasterContract.d.ts +13 -45
- package/dist/contracts/MasterContract.js +8 -10
- package/dist/contracts/UserContract.js +7 -7
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -2
- package/dist/types/Master.d.ts +8 -7
- package/dist/types/User.d.ts +5 -5
- package/dist/utils/merkleProof.d.ts +4 -0
- package/dist/utils/merkleProof.js +107 -0
- package/dist/utils/priceUtils.d.ts +55 -0
- package/dist/utils/priceUtils.js +117 -0
- package/dist/utils/sha256BigInt.js +1 -2
- package/dist/utils/tonConnectSender.js +2 -3
- package/dist/utils/userJettonWallet.d.ts +2 -2
- package/dist/utils/userJettonWallet.js +5 -2
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.js +6 -0
- package/package.json +2 -3
- package/src/api/math.ts +162 -49
- package/src/api/parser.ts +50 -25
- package/src/constants/assets.ts +11 -3
- package/src/constants/general.ts +6 -4
- package/src/constants/pools.ts +1 -15
- package/src/contracts/MasterContract.ts +23 -65
- package/src/contracts/UserContract.ts +8 -10
- package/src/index.ts +2 -6
- package/src/types/Master.ts +9 -8
- package/src/types/User.ts +5 -5
- package/src/utils/userJettonWallet.ts +6 -2
- package/src/utils/utils.ts +6 -0
package/dist/api/helpers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.loadMyRef = loadMyRef;
|
|
4
|
+
exports.loadMaybeMyRef = loadMaybeMyRef;
|
|
4
5
|
const core_1 = require("@ton/core");
|
|
5
6
|
class MyCell extends core_1.Cell {
|
|
6
7
|
toString() {
|
|
@@ -18,7 +19,6 @@ function loadMyRef(slice) {
|
|
|
18
19
|
refs: cell.refs,
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
exports.loadMyRef = loadMyRef;
|
|
22
22
|
function loadMaybeMyRef(slice) {
|
|
23
23
|
const cell = slice.loadMaybeRef();
|
|
24
24
|
if (cell === null) {
|
|
@@ -30,4 +30,3 @@ function loadMaybeMyRef(slice) {
|
|
|
30
30
|
refs: cell.refs,
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
exports.loadMaybeMyRef = loadMaybeMyRef;
|
package/dist/api/math.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetConfig, AssetData, AssetInterest, ExtendedAssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants } from '../types/Master';
|
|
1
|
+
import { AgregatedBalances, AssetConfig, AssetData, AssetInterest, ExtendedAssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, PoolConfig } from '../types/Master';
|
|
2
2
|
import { Dictionary } from '@ton/core';
|
|
3
3
|
import { LiquidationData, PredictHealthFactorArgs, UserBalance } from '../types/User';
|
|
4
4
|
export declare function mulFactor(decimal: bigint, a: bigint, b: bigint): bigint;
|
|
@@ -17,8 +17,27 @@ export declare function calculateCurrentRates(assetConfig: AssetConfig, assetDat
|
|
|
17
17
|
export declare function calculateAssetData(assetsConfigDict: ExtendedAssetsConfig, assetsDataDict: Dictionary<bigint, AssetData>, assetId: bigint, masterConstants: MasterConstants): ExtendedAssetData;
|
|
18
18
|
export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): AssetInterest;
|
|
19
19
|
export declare function checkNotInDebtAtAll(principals: Dictionary<bigint, bigint>): boolean;
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function getAgregatedBalances(assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): AgregatedBalances;
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated The method should be used only for main contract v5
|
|
23
|
+
*/
|
|
24
|
+
export declare function isV5MainPoolContract(poolConfig: PoolConfig): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated The method should be used only for main contract v5
|
|
27
|
+
*/
|
|
28
|
+
export declare function calculateMaximumWithdrawAmountOld(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants, assetId: bigint): bigint;
|
|
29
|
+
export declare function calculateMaximumWithdrawAmount(// todo v6 ifelse dust not debt at all is fixed?
|
|
30
|
+
assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants, assetId: bigint): bigint;
|
|
21
31
|
export declare function getAvailableToBorrow(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): bigint;
|
|
22
32
|
export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint, masterConstants: MasterConstants): UserBalance;
|
|
23
|
-
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @param assetsConfig
|
|
36
|
+
* @param assetsData
|
|
37
|
+
* @param principals
|
|
38
|
+
* @param prices
|
|
39
|
+
* @param poolConfig
|
|
40
|
+
* @returns can return UNDEFINED_ASSET if there are no assets
|
|
41
|
+
*/
|
|
42
|
+
export declare function calculateLiquidationData(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, poolConfig: PoolConfig): LiquidationData;
|
|
24
43
|
export declare function predictHealthFactor(args: PredictHealthFactorArgs): number;
|
package/dist/api/math.js
CHANGED
|
@@ -1,33 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mulFactor = mulFactor;
|
|
4
|
+
exports.mulDiv = mulDiv;
|
|
5
|
+
exports.mulDivC = mulDivC;
|
|
6
|
+
exports.bigIntMax = bigIntMax;
|
|
7
|
+
exports.bigIntMin = bigIntMin;
|
|
8
|
+
exports.calculatePresentValue = calculatePresentValue;
|
|
9
|
+
exports.calculateCurrentRates = calculateCurrentRates;
|
|
10
|
+
exports.calculateAssetData = calculateAssetData;
|
|
11
|
+
exports.calculateAssetInterest = calculateAssetInterest;
|
|
12
|
+
exports.checkNotInDebtAtAll = checkNotInDebtAtAll;
|
|
13
|
+
exports.getAgregatedBalances = getAgregatedBalances;
|
|
14
|
+
exports.isV5MainPoolContract = isV5MainPoolContract;
|
|
15
|
+
exports.calculateMaximumWithdrawAmountOld = calculateMaximumWithdrawAmountOld;
|
|
16
|
+
exports.calculateMaximumWithdrawAmount = calculateMaximumWithdrawAmount;
|
|
17
|
+
exports.getAvailableToBorrow = getAvailableToBorrow;
|
|
18
|
+
exports.presentValue = presentValue;
|
|
19
|
+
exports.calculateLiquidationData = calculateLiquidationData;
|
|
20
|
+
exports.predictHealthFactor = predictHealthFactor;
|
|
4
21
|
const User_1 = require("../types/User");
|
|
5
22
|
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
23
|
+
const assets_1 = require("../constants/assets");
|
|
24
|
+
const __1 = require("..");
|
|
6
25
|
function mulFactor(decimal, a, b) {
|
|
7
26
|
return (a * b) / decimal;
|
|
8
27
|
}
|
|
9
|
-
exports.mulFactor = mulFactor;
|
|
10
28
|
function mulDiv(x, y, z) {
|
|
11
29
|
return (x * y) / z;
|
|
12
30
|
}
|
|
13
|
-
exports.mulDiv = mulDiv;
|
|
14
31
|
function mulDivC(x, y, z) {
|
|
15
32
|
const mul = x * y;
|
|
16
33
|
return mul / z + (mul % z ? 1n : 0n);
|
|
17
34
|
}
|
|
18
|
-
exports.mulDivC = mulDivC;
|
|
19
35
|
function bigIntMax(...args) {
|
|
20
36
|
return args.reduce((m, e) => (e > m ? e : m));
|
|
21
37
|
}
|
|
22
|
-
exports.bigIntMax = bigIntMax;
|
|
23
38
|
function bigIntMin(...args) {
|
|
24
39
|
return args.reduce((m, e) => (e < m ? e : m));
|
|
25
40
|
}
|
|
26
|
-
exports.bigIntMin = bigIntMin;
|
|
27
41
|
function calculatePresentValue(index, principalValue, masterConstants) {
|
|
28
42
|
return (principalValue * index) / masterConstants.FACTOR_SCALE;
|
|
29
43
|
}
|
|
30
|
-
exports.calculatePresentValue = calculatePresentValue;
|
|
31
44
|
function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
32
45
|
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
33
46
|
const timeElapsed = now - assetData.lastAccural;
|
|
@@ -51,7 +64,6 @@ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
|
51
64
|
now,
|
|
52
65
|
};
|
|
53
66
|
}
|
|
54
|
-
exports.calculateCurrentRates = calculateCurrentRates;
|
|
55
67
|
function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterConstants) {
|
|
56
68
|
const config = assetsConfigDict.get(assetId);
|
|
57
69
|
const data = assetsDataDict.get(assetId);
|
|
@@ -70,7 +82,6 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterCon
|
|
|
70
82
|
...{ supplyApy, borrowApy },
|
|
71
83
|
};
|
|
72
84
|
}
|
|
73
|
-
exports.calculateAssetData = calculateAssetData;
|
|
74
85
|
function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
75
86
|
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
|
|
76
87
|
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
|
|
@@ -97,12 +108,77 @@ function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
|
97
108
|
borrowInterest,
|
|
98
109
|
};
|
|
99
110
|
}
|
|
100
|
-
exports.calculateAssetInterest = calculateAssetInterest;
|
|
101
111
|
function checkNotInDebtAtAll(principals) {
|
|
102
112
|
return principals.values().every(x => x >= 0n);
|
|
103
113
|
}
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
function getAgregatedBalances(assetsData, assetsConfig, principals, prices, masterConstants) {
|
|
115
|
+
let user_total_supply = 0n;
|
|
116
|
+
let user_total_borrow = 0n;
|
|
117
|
+
for (const [assetId, principal] of principals) {
|
|
118
|
+
if (principal) {
|
|
119
|
+
if (!prices.has(assetId)) {
|
|
120
|
+
return { totalSupply: 0n, totalBorrow: 0n };
|
|
121
|
+
}
|
|
122
|
+
const price = prices.get(assetId);
|
|
123
|
+
const assetData = assetsData.get(assetId);
|
|
124
|
+
const assetConfig = assetsConfig.get(assetId);
|
|
125
|
+
if (principal < 0) {
|
|
126
|
+
user_total_borrow += presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).amount * price / 10n ** assetConfig.decimals;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
user_total_supply += presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).amount * price / 10n ** assetConfig.decimals;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return { totalSupply: user_total_supply, totalBorrow: user_total_borrow };
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @deprecated The method should be used only for main contract v5
|
|
137
|
+
*/
|
|
138
|
+
function isV5MainPoolContract(poolConfig) {
|
|
139
|
+
if ((poolConfig.masterAddress == __1.MAINNET_POOL_CONFIG.masterAddress && poolConfig.masterVersion == 5) ||
|
|
140
|
+
(poolConfig.masterAddress == __1.TESTNET_POOL_CONFIG.masterAddress && poolConfig.masterVersion == 5)) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @deprecated The method should be used only for main contract v5
|
|
149
|
+
*/
|
|
150
|
+
function calculateMaximumWithdrawAmountOld(assetsConfig, assetsData, principals, prices, masterConstants, assetId) {
|
|
151
|
+
let withdrawAmountMax = 0n;
|
|
152
|
+
const assetConfig = assetsConfig.get(assetId);
|
|
153
|
+
const assetData = assetsData.get(assetId);
|
|
154
|
+
const oldPrincipal = principals.get(assetId);
|
|
155
|
+
const oldPresentValue = presentValue(assetData.sRate, assetData.bRate, oldPrincipal, masterConstants);
|
|
156
|
+
if (oldPresentValue.amount > assetConfig.dust) {
|
|
157
|
+
if (checkNotInDebtAtAll(principals)) {
|
|
158
|
+
withdrawAmountMax = oldPresentValue.amount;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (!prices.has(assetId)) {
|
|
162
|
+
return 0n;
|
|
163
|
+
}
|
|
164
|
+
//const borrowable = getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants);
|
|
165
|
+
const price = prices.get(assetId);
|
|
166
|
+
const agregatedBalances = getAgregatedBalances(assetsData, assetsConfig, principals, principals, masterConstants);
|
|
167
|
+
let maxAmountToReclaim = mulDiv(agregatedBalances.totalSupply - mulDivC(agregatedBalances.totalBorrow, masterConstants.ASSET_COEFFICIENT_SCALE, assetConfig.collateralFactor), 10n ** assetConfig.decimals, price);
|
|
168
|
+
withdrawAmountMax = bigIntMin(maxAmountToReclaim, oldPresentValue.amount);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
if (!prices.has(assetId)) {
|
|
173
|
+
return 0n;
|
|
174
|
+
}
|
|
175
|
+
const price = prices.get(assetId);
|
|
176
|
+
return getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) * (10n ** assetConfig.decimals) / price;
|
|
177
|
+
}
|
|
178
|
+
return withdrawAmountMax;
|
|
179
|
+
}
|
|
180
|
+
function calculateMaximumWithdrawAmount(// todo v6 ifelse dust not debt at all is fixed?
|
|
181
|
+
assetsConfig, assetsData, principals, prices, masterConstants, assetId) {
|
|
106
182
|
let withdrawAmountMax = 0n;
|
|
107
183
|
const assetConfig = assetsConfig.get(assetId);
|
|
108
184
|
const assetData = assetsData.get(assetId);
|
|
@@ -138,7 +214,6 @@ function calculateMaximumWithdrawAmount(assetsConfig, assetsData, principals, pr
|
|
|
138
214
|
}
|
|
139
215
|
return withdrawAmountMax;
|
|
140
216
|
}
|
|
141
|
-
exports.calculateMaximumWithdrawAmount = calculateMaximumWithdrawAmount;
|
|
142
217
|
function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) {
|
|
143
218
|
let borrowLimit = 0n;
|
|
144
219
|
let borrowAmount = 0n;
|
|
@@ -157,7 +232,6 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, mast
|
|
|
157
232
|
}
|
|
158
233
|
return borrowLimit - borrowAmount;
|
|
159
234
|
}
|
|
160
|
-
exports.getAvailableToBorrow = getAvailableToBorrow;
|
|
161
235
|
function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
162
236
|
if (principalValue > 0) {
|
|
163
237
|
return {
|
|
@@ -178,63 +252,74 @@ function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
|
178
252
|
};
|
|
179
253
|
}
|
|
180
254
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
255
|
+
/**
|
|
256
|
+
*
|
|
257
|
+
* @param assetsConfig
|
|
258
|
+
* @param assetsData
|
|
259
|
+
* @param principals
|
|
260
|
+
* @param prices
|
|
261
|
+
* @param poolConfig
|
|
262
|
+
* @returns can return UNDEFINED_ASSET if there are no assets
|
|
263
|
+
*/
|
|
264
|
+
function calculateLiquidationData(assetsConfig, assetsData, principals, prices, poolConfig) {
|
|
265
|
+
let collateralValue = 0n;
|
|
266
|
+
let collateralAsset = assets_1.UNDEFINED_ASSET;
|
|
267
|
+
let loanValue = 0n;
|
|
268
|
+
let loanAsset = assets_1.UNDEFINED_ASSET;
|
|
187
269
|
let totalDebt = 0n;
|
|
188
270
|
let totalLimit = 0n;
|
|
189
|
-
for (const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
271
|
+
for (const asset of poolConfig.poolAssetsConfig) {
|
|
272
|
+
if (!principals.has(asset.assetId)) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
const principal = principals.get(asset.assetId);
|
|
276
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
277
|
+
const assetData = assetsData.get(asset.assetId);
|
|
193
278
|
const balance = principal > 0 ? (principal * assetData.sRate) / BigInt(1e12) : (principal * assetData.bRate) / BigInt(1e12);
|
|
194
279
|
if (balance > 0) {
|
|
195
|
-
const assetWorth = (balance * prices.get(
|
|
196
|
-
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
197
|
-
if (assetWorth >
|
|
198
|
-
|
|
199
|
-
|
|
280
|
+
const assetWorth = (balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
281
|
+
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
282
|
+
if (assetWorth > collateralValue) {
|
|
283
|
+
collateralValue = assetWorth;
|
|
284
|
+
collateralAsset = asset;
|
|
200
285
|
}
|
|
201
286
|
}
|
|
202
287
|
else if (balance < 0) {
|
|
203
|
-
const assetWorth = (-balance * prices.get(
|
|
288
|
+
const assetWorth = (-balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
204
289
|
totalDebt += assetWorth;
|
|
205
|
-
if (assetWorth >
|
|
206
|
-
|
|
207
|
-
|
|
290
|
+
if (assetWorth > loanValue) {
|
|
291
|
+
loanValue = assetWorth;
|
|
292
|
+
loanAsset = asset;
|
|
208
293
|
}
|
|
209
294
|
}
|
|
210
295
|
}
|
|
211
|
-
if (totalLimit < totalDebt) {
|
|
212
|
-
const
|
|
296
|
+
if (collateralAsset.assetId !== assets_1.UNDEFINED_ASSET.assetId && totalLimit < totalDebt) {
|
|
297
|
+
const loanAssetPrice = prices.get(loanAsset.assetId);
|
|
213
298
|
const values = [];
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const liquidationBonus =
|
|
217
|
-
const
|
|
218
|
-
values.push((bigIntMax(
|
|
219
|
-
|
|
220
|
-
masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
299
|
+
const collateralAssetConfig = assetsConfig.get(collateralAsset.assetId);
|
|
300
|
+
const loanAssetConfig = assetsConfig.get(loanAsset.assetId);
|
|
301
|
+
const liquidationBonus = collateralAssetConfig.liquidationBonus;
|
|
302
|
+
const loanScale = 10n ** loanAssetConfig.decimals;
|
|
303
|
+
values.push((bigIntMax(collateralValue / 2n, bigIntMin(collateralValue, 100000000000n)) *
|
|
304
|
+
loanScale *
|
|
305
|
+
poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
221
306
|
liquidationBonus /
|
|
222
|
-
|
|
223
|
-
values.push((
|
|
307
|
+
loanAssetPrice);
|
|
308
|
+
values.push((loanValue * loanScale) / loanAssetPrice);
|
|
224
309
|
const liquidationAmount = bigIntMin(...values) - 5n;
|
|
225
|
-
const
|
|
226
|
-
const collateralDecimal = 10n **
|
|
227
|
-
let minCollateralAmount = (((liquidationAmount *
|
|
228
|
-
|
|
229
|
-
|
|
310
|
+
const collateralAssetPrice = prices.get(collateralAsset.assetId);
|
|
311
|
+
const collateralDecimal = 10n ** collateralAssetConfig.decimals;
|
|
312
|
+
let minCollateralAmount = (((liquidationAmount * loanAssetPrice * liquidationBonus) / poolConfig.masterConstants.ASSET_LIQUIDATION_BONUS_SCALE) * collateralDecimal) /
|
|
313
|
+
collateralAssetPrice /
|
|
314
|
+
loanScale -
|
|
230
315
|
10n;
|
|
231
316
|
minCollateralAmount = (minCollateralAmount * 97n) / 100n;
|
|
232
317
|
if (minCollateralAmount / collateralDecimal >= 1n) {
|
|
233
318
|
return {
|
|
234
|
-
greatestCollateralAsset:
|
|
235
|
-
greatestCollateralValue:
|
|
236
|
-
greatestLoanAsset:
|
|
237
|
-
greatestLoanValue:
|
|
319
|
+
greatestCollateralAsset: collateralAsset,
|
|
320
|
+
greatestCollateralValue: collateralValue,
|
|
321
|
+
greatestLoanAsset: loanAsset,
|
|
322
|
+
greatestLoanValue: loanValue,
|
|
238
323
|
totalDebt,
|
|
239
324
|
totalLimit,
|
|
240
325
|
liquidable: true,
|
|
@@ -244,18 +329,17 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
244
329
|
}
|
|
245
330
|
}
|
|
246
331
|
return {
|
|
247
|
-
greatestCollateralAsset:
|
|
248
|
-
greatestCollateralValue:
|
|
249
|
-
greatestLoanAsset:
|
|
250
|
-
greatestLoanValue:
|
|
332
|
+
greatestCollateralAsset: collateralAsset,
|
|
333
|
+
greatestCollateralValue: collateralValue,
|
|
334
|
+
greatestLoanAsset: loanAsset,
|
|
335
|
+
greatestLoanValue: loanValue,
|
|
251
336
|
totalDebt,
|
|
252
337
|
totalLimit,
|
|
253
338
|
liquidable: false,
|
|
254
339
|
};
|
|
255
340
|
}
|
|
256
|
-
exports.calculateLiquidationData = calculateLiquidationData;
|
|
257
341
|
function predictHealthFactor(args) {
|
|
258
|
-
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.
|
|
342
|
+
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.principals, args.prices, args.poolConfig);
|
|
259
343
|
const tokenHash = (0, sha256BigInt_1.sha256Hash)(args.tokenSymbol);
|
|
260
344
|
const assetConfig = args.assetsConfig.get(tokenHash);
|
|
261
345
|
const assetPrice = Number(args.prices.get(tokenHash));
|
|
@@ -267,16 +351,16 @@ function predictHealthFactor(args) {
|
|
|
267
351
|
const changeType = args.balanceChangeType;
|
|
268
352
|
if (currentAmount != null && currentAmount != 0n) {
|
|
269
353
|
if (changeType == User_1.BalanceChangeType.Borrow) {
|
|
270
|
-
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(args.masterConstants.ASSET_ORIGINATION_FEE_SCALE));
|
|
354
|
+
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(args.poolConfig.masterConstants.ASSET_ORIGINATION_FEE_SCALE));
|
|
271
355
|
}
|
|
272
356
|
else if (changeType == User_1.BalanceChangeType.Repay) {
|
|
273
357
|
totalBorrow -= currentBalance;
|
|
274
358
|
}
|
|
275
359
|
else if (changeType == User_1.BalanceChangeType.Withdraw) {
|
|
276
|
-
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
360
|
+
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
277
361
|
}
|
|
278
362
|
else if (changeType == User_1.BalanceChangeType.Supply) {
|
|
279
|
-
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
363
|
+
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
280
364
|
}
|
|
281
365
|
}
|
|
282
366
|
if (Number(totalLimit) == 0) {
|
|
@@ -284,4 +368,3 @@ function predictHealthFactor(args) {
|
|
|
284
368
|
}
|
|
285
369
|
return Math.min(Math.max(1 - totalBorrow / totalLimit, 0), 1); // let's limit a result to zero below and one above
|
|
286
370
|
}
|
|
287
|
-
exports.predictHealthFactor = predictHealthFactor;
|
package/dist/api/parser.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Dictionary, DictionaryValue } from '@ton/core';
|
|
2
|
-
import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, MasterData, PoolAssetsConfig } from '../types/Master';
|
|
2
|
+
import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, MasterData, PoolAssetsConfig, PoolConfig } from '../types/Master';
|
|
3
3
|
import { UserData, UserLiteData } from '../types/User';
|
|
4
4
|
export declare function createAssetData(): DictionaryValue<AssetData>;
|
|
5
5
|
export declare function createAssetConfig(): DictionaryValue<AssetConfig>;
|
|
6
6
|
export declare function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants): MasterData;
|
|
7
|
-
export declare function parseUserLiteData(userDataBOC: string, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig,
|
|
8
|
-
export declare function parseUserData(userLiteData: UserLiteData, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>,
|
|
7
|
+
export declare function parseUserLiteData(userDataBOC: string, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, poolConfig: PoolConfig, applyDust?: boolean): UserLiteData;
|
|
8
|
+
export declare function parseUserData(userLiteData: UserLiteData, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>, poolConfig: PoolConfig, applyDust?: boolean): UserData;
|
package/dist/api/parser.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createAssetData = createAssetData;
|
|
4
|
+
exports.createAssetConfig = createAssetConfig;
|
|
5
|
+
exports.parseMasterData = parseMasterData;
|
|
6
|
+
exports.parseUserLiteData = parseUserLiteData;
|
|
7
|
+
exports.parseUserData = parseUserData;
|
|
4
8
|
const core_1 = require("@ton/core");
|
|
5
9
|
const math_1 = require("./math");
|
|
6
10
|
const helpers_1 = require("./helpers");
|
|
@@ -50,7 +54,6 @@ function createAssetData() {
|
|
|
50
54
|
},
|
|
51
55
|
};
|
|
52
56
|
}
|
|
53
|
-
exports.createAssetData = createAssetData;
|
|
54
57
|
function createAssetConfig() {
|
|
55
58
|
return {
|
|
56
59
|
serialize: (src, builder) => {
|
|
@@ -124,7 +127,6 @@ function createAssetConfig() {
|
|
|
124
127
|
},
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
|
-
exports.createAssetConfig = createAssetConfig;
|
|
128
130
|
function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
129
131
|
const masterSlice = core_1.Cell.fromBase64(masterDataBOC).beginParse();
|
|
130
132
|
const meta = masterSlice.loadRef().beginParse().loadStringTail();
|
|
@@ -180,8 +182,9 @@ function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
|
180
182
|
apy: apy,
|
|
181
183
|
};
|
|
182
184
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
+
function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolConfig, applyDust = true) {
|
|
186
|
+
const poolAssetsConfig = poolConfig.poolAssetsConfig;
|
|
187
|
+
const masterConstants = poolConfig.masterConstants;
|
|
185
188
|
const userSlice = core_1.Cell.fromBase64(userDataBOC).beginParse();
|
|
186
189
|
const codeVersion = userSlice.loadCoins();
|
|
187
190
|
const masterAddress = userSlice.loadAddress();
|
|
@@ -213,14 +216,20 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolAssetsConf
|
|
|
213
216
|
}
|
|
214
217
|
*/
|
|
215
218
|
userSlice.endParse();
|
|
219
|
+
const isV5Main = (0, math_1.isV5MainPoolContract)(poolConfig);
|
|
216
220
|
const userBalances = core_1.Dictionary.empty();
|
|
217
221
|
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
218
222
|
const assetData = assetsData.get(asset.assetId);
|
|
219
223
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
220
|
-
let
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
+
let principal = principalsDict.get(asset.assetId) || 0n;
|
|
225
|
+
let balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principal, masterConstants);
|
|
226
|
+
let leftBorder = isV5Main ? balance.amount : principal;
|
|
227
|
+
if (applyDust && (principal > 0 && (leftBorder < assetConfig.dust))) { // v6 will be abs(principals) < dust
|
|
228
|
+
principal = 0n;
|
|
229
|
+
balance = {
|
|
230
|
+
amount: 0n,
|
|
231
|
+
type: User_1.BalanceType.supply,
|
|
232
|
+
};
|
|
224
233
|
principalsDict.set(asset.assetId, 0n);
|
|
225
234
|
}
|
|
226
235
|
userBalances.set(asset.assetId, balance);
|
|
@@ -243,24 +252,27 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolAssetsConf
|
|
|
243
252
|
backupCell2: backupCell2, */
|
|
244
253
|
};
|
|
245
254
|
}
|
|
246
|
-
|
|
247
|
-
|
|
255
|
+
function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfig, applyDust = true) {
|
|
256
|
+
const poolAssetsConfig = poolConfig.poolAssetsConfig;
|
|
257
|
+
const masterConstants = poolConfig.masterConstants;
|
|
248
258
|
const withdrawalLimits = core_1.Dictionary.empty();
|
|
249
259
|
const borrowLimits = core_1.Dictionary.empty();
|
|
250
260
|
let supplyBalance = 0n;
|
|
251
261
|
let borrowBalance = 0n;
|
|
252
|
-
|
|
262
|
+
const isV5Main = (0, math_1.isV5MainPoolContract)(poolConfig);
|
|
263
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
253
264
|
const assetData = assetsData.get(asset.assetId);
|
|
254
265
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
255
|
-
let
|
|
256
|
-
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate,
|
|
257
|
-
|
|
258
|
-
|
|
266
|
+
let principal = userLiteData.principals.get(asset.assetId) || 0n;
|
|
267
|
+
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principal, masterConstants);
|
|
268
|
+
let leftBorder = isV5Main ? balance.amount : principal;
|
|
269
|
+
if (applyDust && (principal > 0 && (leftBorder < assetConfig.dust))) { // v6 will be abs(principals) < dust
|
|
270
|
+
principal = 0n;
|
|
259
271
|
userLiteData.principals.set(asset.assetId, 0n);
|
|
260
272
|
}
|
|
261
273
|
userLiteData.balances.set(asset.assetId, balance);
|
|
262
274
|
}
|
|
263
|
-
for (const [_, asset] of Object.entries(
|
|
275
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
264
276
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
265
277
|
const balance = userLiteData.balances.get(asset.assetId);
|
|
266
278
|
if (balance.type === User_1.BalanceType.supply) {
|
|
@@ -271,12 +283,17 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolAsset
|
|
|
271
283
|
}
|
|
272
284
|
}
|
|
273
285
|
const availableToBorrow = (0, math_1.getAvailableToBorrow)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
|
|
274
|
-
for (const [_, asset] of Object.entries(
|
|
286
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
275
287
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
276
288
|
const assetData = assetsData.get(asset.assetId);
|
|
277
289
|
const balance = userLiteData.balances.get(asset.assetId);
|
|
278
290
|
if (balance.type === User_1.BalanceType.supply) {
|
|
279
|
-
|
|
291
|
+
if ((0, math_1.isV5MainPoolContract)(poolConfig)) {
|
|
292
|
+
withdrawalLimits.set(asset.assetId, (0, math_1.calculateMaximumWithdrawAmountOld)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants, asset.assetId));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
withdrawalLimits.set(asset.assetId, (0, math_1.calculateMaximumWithdrawAmount)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants, asset.assetId));
|
|
296
|
+
}
|
|
280
297
|
}
|
|
281
298
|
borrowLimits.set(asset.assetId, (0, math_1.bigIntMin)((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId), assetData.balance));
|
|
282
299
|
}
|
|
@@ -284,7 +301,7 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolAsset
|
|
|
284
301
|
const limitUsedPercent = limitUsed === 0n
|
|
285
302
|
? 0
|
|
286
303
|
: Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
|
|
287
|
-
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices,
|
|
304
|
+
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices, poolConfig);
|
|
288
305
|
const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
|
|
289
306
|
return {
|
|
290
307
|
...userLiteData,
|
|
@@ -299,4 +316,3 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolAsset
|
|
|
299
316
|
healthFactor: healthFactor,
|
|
300
317
|
};
|
|
301
318
|
}
|
|
302
|
-
exports.parseUserData = parseUserData;
|
package/dist/api/prices.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPrices =
|
|
3
|
+
exports.getPrices = getPrices;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
const general_1 = require("../constants/general");
|
|
6
6
|
async function getPrices(endpoints = ["api.stardust-mainnet.iotaledger.net"], nftId = general_1.MAIN_POOL_NFT_ID) {
|
|
7
7
|
return await Promise.any(endpoints.map(x => loadPrices(nftId, x)));
|
|
8
8
|
}
|
|
9
|
-
exports.getPrices = getPrices;
|
|
10
9
|
async function loadPrices(nftId, endpoint = "api.stardust-mainnet.iotaledger.net") {
|
|
11
10
|
let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${nftId}`, {
|
|
12
11
|
headers: { accept: 'application/json' },
|
package/dist/config.d.ts
ADDED
package/dist/config.js
ADDED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { PoolAssetConfig } from "../types/Master";
|
|
2
|
+
export declare const UNDEFINED_ASSET: PoolAssetConfig;
|
|
2
3
|
export declare const TON_MAINNET: PoolAssetConfig;
|
|
3
|
-
export declare const TON_TESTNET:
|
|
4
|
-
name: string;
|
|
5
|
-
};
|
|
4
|
+
export declare const TON_TESTNET: PoolAssetConfig;
|
|
6
5
|
export declare const JUSDT_MAINNET: PoolAssetConfig;
|
|
7
6
|
export declare const JUSDC_MAINNET: PoolAssetConfig;
|
|
8
7
|
export declare const STTON_MAINNET: PoolAssetConfig;
|
package/dist/constants/assets.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.USDT_MAINNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.TON_TESTNET = exports.TON_MAINNET = void 0;
|
|
3
|
+
exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.USDT_MAINNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.TON_TESTNET = exports.TON_MAINNET = exports.UNDEFINED_ASSET = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
6
6
|
const general_1 = require("./general");
|
|
7
|
+
exports.UNDEFINED_ASSET = {
|
|
8
|
+
name: 'undefined_asset',
|
|
9
|
+
assetId: -1n,
|
|
10
|
+
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
11
|
+
jettonWalletCode: core_1.Cell.EMPTY
|
|
12
|
+
};
|
|
7
13
|
exports.TON_MAINNET = {
|
|
8
14
|
name: 'TON',
|
|
9
|
-
assetId: (0, sha256BigInt_1.sha256Hash)('TON')
|
|
15
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TON'),
|
|
16
|
+
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
17
|
+
jettonWalletCode: core_1.Cell.EMPTY
|
|
10
18
|
};
|
|
11
19
|
exports.TON_TESTNET = exports.TON_MAINNET;
|
|
12
20
|
exports.JUSDT_MAINNET = {
|
|
@@ -6,13 +6,14 @@ export declare const MASTER_CONSTANTS: {
|
|
|
6
6
|
ASSET_RESERVE_FACTOR_SCALE: bigint;
|
|
7
7
|
ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: bigint;
|
|
8
8
|
ASSET_ORIGINATION_FEE_SCALE: bigint;
|
|
9
|
+
ASSET_LIQUIDATION_THRESHOLD_SCALE: bigint;
|
|
10
|
+
ASSET_LIQUIDATION_BONUS_SCALE: bigint;
|
|
9
11
|
};
|
|
12
|
+
export declare const NULL_ADDRESS: Address;
|
|
10
13
|
export declare const EVAA_MASTER_MAINNET: Address;
|
|
11
14
|
export declare const MAINNET_VERSION = 5;
|
|
12
15
|
export declare const EVAA_MASTER_TESTNET: Address;
|
|
13
16
|
export declare const TESTNET_VERSION = 5;
|
|
14
|
-
export declare const EVAA_LP_TESTNET: Address;
|
|
15
|
-
export declare const EVAA_LP_TESTNET_VERSION = 5;
|
|
16
17
|
export declare const EVAA_LP_MAINNET: Address;
|
|
17
18
|
export declare const EVAA_LP_MAINNET_VERSION = 0;
|
|
18
19
|
export declare const MAIN_POOL_NFT_ID = "0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FEES = exports.OPCODES = exports.JETTON_WALLET_STANDART_CODE_TESTNET = exports.JETTON_WALLET_STANDART_CODE = exports.LENDING_CODE = exports.LP_POOL_NFT_ID = exports.MAIN_POOL_NFT_ID = exports.EVAA_LP_MAINNET_VERSION = exports.EVAA_LP_MAINNET = exports.
|
|
3
|
+
exports.FEES = exports.OPCODES = exports.JETTON_WALLET_STANDART_CODE_TESTNET = exports.JETTON_WALLET_STANDART_CODE = exports.LENDING_CODE = exports.LP_POOL_NFT_ID = exports.MAIN_POOL_NFT_ID = exports.EVAA_LP_MAINNET_VERSION = exports.EVAA_LP_MAINNET = exports.TESTNET_VERSION = exports.EVAA_MASTER_TESTNET = exports.MAINNET_VERSION = exports.EVAA_MASTER_MAINNET = exports.NULL_ADDRESS = exports.MASTER_CONSTANTS = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
5
|
exports.MASTER_CONSTANTS = {
|
|
6
6
|
FACTOR_SCALE: BigInt(1e12),
|
|
@@ -8,14 +8,15 @@ exports.MASTER_CONSTANTS = {
|
|
|
8
8
|
ASSET_PRICE_SCALE: BigInt(1e9),
|
|
9
9
|
ASSET_RESERVE_FACTOR_SCALE: 10000n,
|
|
10
10
|
ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: 10000n,
|
|
11
|
-
ASSET_ORIGINATION_FEE_SCALE: BigInt(1e9)
|
|
11
|
+
ASSET_ORIGINATION_FEE_SCALE: BigInt(1e9),
|
|
12
|
+
ASSET_LIQUIDATION_THRESHOLD_SCALE: 10000n,
|
|
13
|
+
ASSET_LIQUIDATION_BONUS_SCALE: 10000n,
|
|
12
14
|
};
|
|
15
|
+
exports.NULL_ADDRESS = core_1.Address.parse('UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKZ');
|
|
13
16
|
exports.EVAA_MASTER_MAINNET = core_1.Address.parse('EQC8rUZqR_pWV1BylWUlPNBzyiTYVoBEmQkMIQDZXICfnuRr');
|
|
14
17
|
exports.MAINNET_VERSION = 5;
|
|
15
|
-
exports.EVAA_MASTER_TESTNET = core_1.Address.parse('EQCoIxsE8m0Q_Ui9uM-2RPtVWXqHK0ttuW2Mccuaj4FfdkLl');
|
|
18
|
+
exports.EVAA_MASTER_TESTNET = core_1.Address.parse('EQCoIxsE8m0Q_Ui9uM-2RPtVWXqHK0ttuW2Mccuaj4FfdkLl'); // EQBghPVKxgauOyrcyNYNwE2MRRnebaNpDGpVDQLbml_LIXnK
|
|
16
19
|
exports.TESTNET_VERSION = 5;
|
|
17
|
-
exports.EVAA_LP_TESTNET = core_1.Address.parse('EQBghPVKxgauOyrcyNYNwE2MRRnebaNpDGpVDQLbml_LIXnK');
|
|
18
|
-
exports.EVAA_LP_TESTNET_VERSION = 5;
|
|
19
20
|
exports.EVAA_LP_MAINNET = core_1.Address.parse('EQBIlZX2URWkXCSg3QF2MJZU-wC5XkBoLww-hdWk2G37Jc6N');
|
|
20
21
|
exports.EVAA_LP_MAINNET_VERSION = 0;
|
|
21
22
|
exports.MAIN_POOL_NFT_ID = '0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5';
|