@evaafi/sdk 0.6.0-a → 0.6.1
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/liquidation.d.ts +136 -0
- package/dist/api/liquidation.js +252 -0
- package/dist/api/math.d.ts +34 -7
- package/dist/api/math.js +94 -30
- package/dist/constants/assets.d.ts +12 -0
- package/dist/constants/assets.js +25 -13
- package/dist/constants/general.d.ts +3 -0
- package/dist/constants/general.js +5 -1
- package/dist/constants/pools.js +1 -1
- package/dist/contracts/MasterContract.d.ts +5 -1
- package/dist/contracts/MasterContract.js +15 -9
- package/dist/contracts/UserContract.d.ts +1 -0
- package/dist/contracts/UserContract.js +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +20 -2
- package/dist/types/Master.d.ts +3 -0
- package/dist/types/User.d.ts +7 -0
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +6 -1
- package/package.json +2 -1
- package/src/api/liquidation.ts +346 -0
- package/src/api/math.ts +166 -75
- package/src/constants/assets.ts +26 -12
- package/src/constants/general.ts +7 -1
- package/src/constants/pools.ts +1 -1
- package/src/contracts/MasterContract.ts +18 -11
- package/src/contracts/UserContract.ts +1 -0
- package/src/index.ts +30 -6
- package/src/types/Master.ts +4 -1
- package/src/types/User.ts +8 -0
- package/src/utils/utils.ts +4 -0
package/dist/api/math.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.predictHealthFactor = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateMaximumWithdrawAmount = exports.getAgregatedBalances = exports.checkNotInDebtAtAll = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMin = exports.bigIntMax = exports.mulDivC = exports.mulDiv = exports.mulFactor = void 0;
|
|
3
|
+
exports.predictHealthFactor = exports.calculateLiquidationData = exports.calculateHealthParams = exports.presentValue = exports.getAvailableToBorrow = exports.calculateMaximumWithdrawAmount = exports.getAgregatedBalances = exports.checkNotInDebtAtAll = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.BigMath = exports.bigIntMin = exports.bigIntMax = exports.bigAbs = exports.mulDivC = exports.mulDiv = exports.mulFactor = void 0;
|
|
4
4
|
const User_1 = require("../types/User");
|
|
5
5
|
const assets_1 = require("../constants/assets");
|
|
6
|
+
const liquidation_1 = require("./liquidation");
|
|
6
7
|
function mulFactor(decimal, a, b) {
|
|
7
8
|
return (a * b) / decimal;
|
|
8
9
|
}
|
|
@@ -17,6 +18,10 @@ function mulDivC(x, y, z) {
|
|
|
17
18
|
return BigInt(Math.ceil(Number(x * y) / Number(z)));
|
|
18
19
|
}
|
|
19
20
|
exports.mulDivC = mulDivC;
|
|
21
|
+
function bigAbs(value) {
|
|
22
|
+
return value > 0n ? value : -value;
|
|
23
|
+
}
|
|
24
|
+
exports.bigAbs = bigAbs;
|
|
20
25
|
function bigIntMax(...args) {
|
|
21
26
|
return args.reduce((m, e) => (e > m ? e : m));
|
|
22
27
|
}
|
|
@@ -25,6 +30,7 @@ function bigIntMin(...args) {
|
|
|
25
30
|
return args.reduce((m, e) => (e < m ? e : m));
|
|
26
31
|
}
|
|
27
32
|
exports.bigIntMin = bigIntMin;
|
|
33
|
+
exports.BigMath = { mulFactor, mulDiv, mulDivC, abs: bigAbs, min: bigIntMin, max: bigIntMax };
|
|
28
34
|
function calculatePresentValue(index, principalValue, masterConstants) {
|
|
29
35
|
return (principalValue * index) / masterConstants.FACTOR_SCALE;
|
|
30
36
|
}
|
|
@@ -41,7 +47,7 @@ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
|
41
47
|
bRate: updatedBRate,
|
|
42
48
|
supplyInterest,
|
|
43
49
|
borrowInterest,
|
|
44
|
-
now
|
|
50
|
+
now
|
|
45
51
|
};
|
|
46
52
|
}
|
|
47
53
|
return {
|
|
@@ -49,7 +55,7 @@ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
|
49
55
|
bRate: assetData.bRate,
|
|
50
56
|
supplyInterest,
|
|
51
57
|
borrowInterest,
|
|
52
|
-
now
|
|
58
|
+
now
|
|
53
59
|
};
|
|
54
60
|
}
|
|
55
61
|
exports.calculateCurrentRates = calculateCurrentRates;
|
|
@@ -68,7 +74,7 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterCon
|
|
|
68
74
|
return {
|
|
69
75
|
...data,
|
|
70
76
|
...{ supplyInterest, borrowInterest },
|
|
71
|
-
...{ supplyApy, borrowApy }
|
|
77
|
+
...{ supplyApy, borrowApy }
|
|
72
78
|
};
|
|
73
79
|
}
|
|
74
80
|
exports.calculateAssetData = calculateAssetData;
|
|
@@ -95,7 +101,7 @@ function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
|
95
101
|
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, masterConstants.FACTOR_SCALE), masterConstants.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, masterConstants.ASSET_RESERVE_FACTOR_SCALE);
|
|
96
102
|
return {
|
|
97
103
|
supplyInterest,
|
|
98
|
-
borrowInterest
|
|
104
|
+
borrowInterest
|
|
99
105
|
};
|
|
100
106
|
}
|
|
101
107
|
exports.calculateAssetInterest = calculateAssetInterest;
|
|
@@ -173,10 +179,10 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, mast
|
|
|
173
179
|
const assetData = assetsData.get(assetID);
|
|
174
180
|
const price = prices.get(assetID);
|
|
175
181
|
const principal = principals.get(assetID);
|
|
176
|
-
if (principal <
|
|
182
|
+
if (principal < 0n) {
|
|
177
183
|
borrowAmount += mulDiv(calculatePresentValue(assetData.bRate, -principal, masterConstants), price, 10n ** assetConfig.decimals);
|
|
178
184
|
}
|
|
179
|
-
else if (principal >
|
|
185
|
+
else if (principal > 0n) {
|
|
180
186
|
borrowLimit +=
|
|
181
187
|
mulDiv(mulDiv(calculatePresentValue(assetData.sRate, principal, masterConstants), price, 10n ** assetConfig.decimals), assetConfig.collateralFactor, masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
182
188
|
}
|
|
@@ -184,34 +190,89 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, mast
|
|
|
184
190
|
return borrowLimit - borrowAmount;
|
|
185
191
|
}
|
|
186
192
|
exports.getAvailableToBorrow = getAvailableToBorrow;
|
|
193
|
+
/**
|
|
194
|
+
* Calculates balance value for asset principal.
|
|
195
|
+
* @param sRate asset supply rate
|
|
196
|
+
* @param bRate asset borrow rate
|
|
197
|
+
* @param principalValue asset principal value
|
|
198
|
+
* @param masterConstants pool constants
|
|
199
|
+
*/
|
|
187
200
|
function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
188
201
|
if (principalValue > 0) {
|
|
189
202
|
return {
|
|
190
203
|
amount: calculatePresentValue(sRate, principalValue, masterConstants),
|
|
191
|
-
type: User_1.BalanceType.supply
|
|
204
|
+
type: User_1.BalanceType.supply
|
|
192
205
|
};
|
|
193
206
|
}
|
|
194
207
|
else if (principalValue < 0) {
|
|
195
208
|
return {
|
|
196
209
|
amount: calculatePresentValue(bRate, -principalValue, masterConstants),
|
|
197
|
-
type: User_1.BalanceType.borrow
|
|
210
|
+
type: User_1.BalanceType.borrow
|
|
198
211
|
};
|
|
199
212
|
}
|
|
200
213
|
else {
|
|
201
214
|
return {
|
|
202
215
|
amount: 0n,
|
|
203
|
-
type: undefined
|
|
216
|
+
type: undefined
|
|
204
217
|
};
|
|
205
218
|
}
|
|
206
219
|
}
|
|
207
220
|
exports.presentValue = presentValue;
|
|
208
221
|
/**
|
|
209
|
-
*
|
|
210
|
-
* @param
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
* Calculates health parameters of the specified user account based on its parameters
|
|
223
|
+
* @param parameters
|
|
224
|
+
*/
|
|
225
|
+
function calculateHealthParams(parameters) {
|
|
226
|
+
const { principals, prices, assetsData, assetsConfig, poolConfig } = parameters;
|
|
227
|
+
const { ASSET_LIQUIDATION_THRESHOLD_SCALE } = poolConfig.masterConstants;
|
|
228
|
+
let totalSupply = 0n;
|
|
229
|
+
let totalDebt = 0n;
|
|
230
|
+
let totalLimit = 0n;
|
|
231
|
+
for (const asset of poolConfig.poolAssetsConfig) {
|
|
232
|
+
if (!principals.has(asset.assetId))
|
|
233
|
+
continue;
|
|
234
|
+
const assetPrincipal = principals.get(asset.assetId);
|
|
235
|
+
if (!assetsConfig.has(asset.assetId))
|
|
236
|
+
throw (`No config for ${asset.name}:${asset.assetId}`);
|
|
237
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
238
|
+
if (!assetsData.has(asset.assetId))
|
|
239
|
+
throw (`No data for asset ${asset.name}:${asset.assetId}`);
|
|
240
|
+
const assetData = assetsData.get(asset.assetId);
|
|
241
|
+
if (!prices.has(asset.assetId))
|
|
242
|
+
throw (`No price for asset ${asset.name}:${asset.assetId}`);
|
|
243
|
+
const assetPrice = prices.get(asset.assetId);
|
|
244
|
+
const assetScale = 10n ** assetConfig.decimals;
|
|
245
|
+
const { sRate, bRate } = assetData;
|
|
246
|
+
const assetBalance = presentValue(sRate, bRate, assetPrincipal, poolConfig.masterConstants);
|
|
247
|
+
const assetWorth = assetBalance.amount * assetPrice / assetScale;
|
|
248
|
+
if (assetBalance.type === User_1.BalanceType.supply) {
|
|
249
|
+
totalSupply += assetWorth;
|
|
250
|
+
totalLimit += assetWorth * assetConfig.liquidationThreshold / ASSET_LIQUIDATION_THRESHOLD_SCALE;
|
|
251
|
+
}
|
|
252
|
+
else if (assetBalance.type === User_1.BalanceType.borrow) {
|
|
253
|
+
totalDebt += assetWorth;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const _isLiquidable = totalLimit < totalDebt;
|
|
257
|
+
// the `bad debt` condition depends on certain asset's liquidation bonus parameter
|
|
258
|
+
// , so it is not a user constant, but depends on certain asset
|
|
259
|
+
const _isBadDebt = (liquidationBonus) => {
|
|
260
|
+
return (0, liquidation_1.isBadDebt)(totalSupply, totalDebt, liquidationBonus, poolConfig.masterConstants);
|
|
261
|
+
};
|
|
262
|
+
return {
|
|
263
|
+
totalDebt, totalLimit, totalSupply,
|
|
264
|
+
isLiquidatable: _isLiquidable,
|
|
265
|
+
isBadDebt: _isBadDebt
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
exports.calculateHealthParams = calculateHealthParams;
|
|
269
|
+
/**
|
|
270
|
+
* Calculates liquidation data for greatest loan and collateral assets
|
|
271
|
+
* @param assetsConfig assets config dictionary
|
|
272
|
+
* @param assetsData assets data dictionary
|
|
273
|
+
* @param principals principals dictionary
|
|
274
|
+
* @param prices prices dictionary
|
|
275
|
+
* @param poolConfig pool config
|
|
215
276
|
* @returns can return UNDEFINED_ASSET if there are no assets
|
|
216
277
|
*/
|
|
217
278
|
function calculateLiquidationData(assetsConfig, assetsData, principals, prices, poolConfig) {
|
|
@@ -221,25 +282,28 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
221
282
|
let loanAsset = assets_1.UNDEFINED_ASSET;
|
|
222
283
|
let totalDebt = 0n;
|
|
223
284
|
let totalLimit = 0n;
|
|
285
|
+
const { ASSET_SRATE_SCALE, ASSET_BRATE_SCALE, COLLATERAL_WORTH_THRESHOLD } = poolConfig.masterConstants;
|
|
224
286
|
for (const asset of poolConfig.poolAssetsConfig) {
|
|
225
|
-
if (!principals.has(asset.assetId)) {
|
|
226
|
-
continue;
|
|
227
|
-
}
|
|
228
287
|
const principal = principals.get(asset.assetId);
|
|
288
|
+
if (!principal)
|
|
289
|
+
continue;
|
|
229
290
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
230
291
|
const assetData = assetsData.get(asset.assetId);
|
|
231
|
-
const balance = principal > 0 ?
|
|
292
|
+
const balance = principal > 0 ?
|
|
293
|
+
(principal * assetData.sRate) / ASSET_SRATE_SCALE :
|
|
294
|
+
(principal * assetData.bRate) / ASSET_BRATE_SCALE;
|
|
295
|
+
const assetWorth = (bigAbs(balance) * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
232
296
|
if (balance > 0) {
|
|
233
|
-
const assetWorth = (balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
234
297
|
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
298
|
+
// get the greatest collateral
|
|
235
299
|
if (assetWorth > collateralValue) {
|
|
236
300
|
collateralValue = assetWorth;
|
|
237
301
|
collateralAsset = asset;
|
|
238
302
|
}
|
|
239
303
|
}
|
|
240
304
|
else if (balance < 0) {
|
|
241
|
-
const assetWorth = (-balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
242
305
|
totalDebt += assetWorth;
|
|
306
|
+
// get the greatest loan
|
|
243
307
|
if (assetWorth > loanValue) {
|
|
244
308
|
loanValue = assetWorth;
|
|
245
309
|
loanAsset = asset;
|
|
@@ -253,7 +317,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
253
317
|
const loanAssetConfig = assetsConfig.get(loanAsset.assetId);
|
|
254
318
|
const liquidationBonus = collateralAssetConfig.liquidationBonus;
|
|
255
319
|
const loanScale = 10n ** loanAssetConfig.decimals;
|
|
256
|
-
values.push((bigIntMax(collateralValue / 2n, bigIntMin(collateralValue,
|
|
320
|
+
values.push((bigIntMax(collateralValue / 2n, bigIntMin(collateralValue, COLLATERAL_WORTH_THRESHOLD)) *
|
|
257
321
|
loanScale *
|
|
258
322
|
poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
259
323
|
liquidationBonus /
|
|
@@ -267,7 +331,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
267
331
|
loanScale -
|
|
268
332
|
10n;
|
|
269
333
|
minCollateralAmount = (minCollateralAmount * 97n) / 100n;
|
|
270
|
-
if (minCollateralAmount
|
|
334
|
+
if (minCollateralAmount > 0n) {
|
|
271
335
|
return {
|
|
272
336
|
greatestCollateralAsset: collateralAsset,
|
|
273
337
|
greatestCollateralValue: collateralValue,
|
|
@@ -276,8 +340,8 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
276
340
|
totalDebt,
|
|
277
341
|
totalLimit,
|
|
278
342
|
liquidable: true,
|
|
279
|
-
liquidationAmount,
|
|
280
|
-
minCollateralAmount
|
|
343
|
+
liquidationAmount: (0, liquidation_1.addReserve)(liquidationAmount, loanAssetConfig.liquidationReserveFactor, poolConfig.masterConstants.ASSET_RESERVE_FACTOR_SCALE),
|
|
344
|
+
minCollateralAmount
|
|
281
345
|
};
|
|
282
346
|
}
|
|
283
347
|
}
|
|
@@ -288,18 +352,18 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
288
352
|
greatestLoanValue: loanValue,
|
|
289
353
|
totalDebt,
|
|
290
354
|
totalLimit,
|
|
291
|
-
liquidable: false
|
|
355
|
+
liquidable: false
|
|
292
356
|
};
|
|
293
357
|
}
|
|
294
358
|
exports.calculateLiquidationData = calculateLiquidationData;
|
|
295
359
|
function predictHealthFactor(args) {
|
|
296
|
-
const
|
|
360
|
+
const healthParams = calculateHealthParams(args);
|
|
297
361
|
const assetId = args.asset.assetId;
|
|
298
362
|
const assetConfig = args.assetsConfig.get(assetId);
|
|
299
363
|
const assetPrice = Number(args.prices.get(assetId));
|
|
300
364
|
const assetData = args.assetsData.get(assetId);
|
|
301
|
-
let totalLimit = Number(
|
|
302
|
-
let totalBorrow = Number(
|
|
365
|
+
let totalLimit = Number(healthParams.totalLimit);
|
|
366
|
+
let totalBorrow = Number(healthParams.totalDebt);
|
|
303
367
|
const currentAmount = args.amount;
|
|
304
368
|
const decimals = Number(assetConfig.decimals);
|
|
305
369
|
const currentBalance = assetPrice * Number(currentAmount) / Math.pow(10, decimals);
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { PoolAssetConfig } from "../types/Master";
|
|
2
|
+
export declare const ASSET_ID: {
|
|
3
|
+
TON: bigint;
|
|
4
|
+
USDT: bigint;
|
|
5
|
+
jUSDT: bigint;
|
|
6
|
+
jUSDC: bigint;
|
|
7
|
+
stTON: bigint;
|
|
8
|
+
tsTON: bigint;
|
|
9
|
+
TONUSDT_DEDUST: bigint;
|
|
10
|
+
TONUSDT_STONFI: bigint;
|
|
11
|
+
TON_STORM: bigint;
|
|
12
|
+
USDT_STORM: bigint;
|
|
13
|
+
};
|
|
2
14
|
export declare const UNDEFINED_ASSET: PoolAssetConfig;
|
|
3
15
|
export declare const TON_MAINNET: PoolAssetConfig;
|
|
4
16
|
export declare const TON_TESTNET: PoolAssetConfig;
|
package/dist/constants/assets.js
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
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 = exports.UNDEFINED_ASSET = 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 = exports.ASSET_ID = 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.ASSET_ID = {
|
|
8
|
+
TON: (0, sha256BigInt_1.sha256Hash)('TON'),
|
|
9
|
+
USDT: (0, sha256BigInt_1.sha256Hash)('USDT'),
|
|
10
|
+
jUSDT: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
11
|
+
jUSDC: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
12
|
+
stTON: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
13
|
+
tsTON: (0, sha256BigInt_1.sha256Hash)('tsTON'),
|
|
14
|
+
TONUSDT_DEDUST: (0, sha256BigInt_1.sha256Hash)('TONUSDT_DEDUST'),
|
|
15
|
+
TONUSDT_STONFI: (0, sha256BigInt_1.sha256Hash)('TONUSDT_STONFI'),
|
|
16
|
+
TON_STORM: (0, sha256BigInt_1.sha256Hash)('TON_STORM'),
|
|
17
|
+
USDT_STORM: (0, sha256BigInt_1.sha256Hash)('USDT_STORM'),
|
|
18
|
+
};
|
|
7
19
|
exports.UNDEFINED_ASSET = {
|
|
8
20
|
name: 'undefined_asset',
|
|
9
21
|
assetId: -1n,
|
|
@@ -12,74 +24,74 @@ exports.UNDEFINED_ASSET = {
|
|
|
12
24
|
};
|
|
13
25
|
exports.TON_MAINNET = {
|
|
14
26
|
name: 'TON',
|
|
15
|
-
assetId:
|
|
27
|
+
assetId: exports.ASSET_ID.TON,
|
|
16
28
|
jettonMasterAddress: general_1.NULL_ADDRESS, // fake
|
|
17
29
|
jettonWalletCode: core_1.Cell.EMPTY
|
|
18
30
|
};
|
|
19
31
|
exports.TON_TESTNET = exports.TON_MAINNET;
|
|
20
32
|
exports.JUSDT_MAINNET = {
|
|
21
33
|
name: 'jUSDT',
|
|
22
|
-
assetId:
|
|
34
|
+
assetId: exports.ASSET_ID.jUSDT,
|
|
23
35
|
jettonMasterAddress: core_1.Address.parse('EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA'),
|
|
24
36
|
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
25
37
|
};
|
|
26
38
|
exports.JUSDC_MAINNET = {
|
|
27
39
|
name: 'jUSDC',
|
|
28
|
-
assetId:
|
|
40
|
+
assetId: exports.ASSET_ID.jUSDC,
|
|
29
41
|
jettonMasterAddress: core_1.Address.parse('EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728'),
|
|
30
42
|
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
31
43
|
};
|
|
32
44
|
exports.STTON_MAINNET = {
|
|
33
45
|
name: 'stTON',
|
|
34
|
-
assetId:
|
|
46
|
+
assetId: exports.ASSET_ID.stTON,
|
|
35
47
|
jettonMasterAddress: core_1.Address.parse('EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k'),
|
|
36
48
|
jettonWalletCode: core_1.Cell.fromBase64('te6cckECEgEAA2IAART/APSkE/S88sgLAQIBYgIDAgLMBAUAG6D2BdqJofQB9IH0gahhAgHUBgcCASAJCgHPCDHAJJfBOAB0NMDAXGwlRNfA/AN4PpA+kAx+gAxcdch+gAx+gAwc6m0AALTHyGCEA+KfqW6lTE0WfAK4CGCEBeNRRm6ljFERAPwC+AhghBZXwe8upUxNFnwDOAUXwTABOMCMIQP8vCAIABE+kQwwADy4U2AAfO1E0PoA+kD6QNQwECNfAwGCCJiWgKFtgBByIm6zIJFxkXDiA8jLBVAGzxZQBPoCy2oDk1jMAZEw4gHJAfsAAgFYCwwCAUgQEQHxAPTP/oA+kAh8AHtRND6APpA+kDUMFE2oVIqxwXy4sEowv/y4sJUNEJwVCATVBQDyFAE+gJYzxYBzxbMySLIywES9AD0AMsAySD5AHB0yMsCygfL/8nQBPpA9AQx+gAg10nCAPLixHeAGMjLBVAIzxZw+gIXy2sTzIA0C9ztRND6APpA+kDUMAjTP/oAUVGgBfpA+kBTW8cFVHNtcFQgE1QUA8hQBPoCWM8WAc8WzMkiyMsBEvQA9ADLAMn5AHB0yMsCygfL/8nQUA3HBRyx8uLDCvoAUaihggiYloBmtgihggjk4cCgGKEnlxBJEDg3XwTjDSXXCwGAODwCeghAXjUUZyMsfGcs/UAf6AiLPFlAGzxYl+gJQA88WyVAFzCORcpFx4lAIqBOgggpiWgCgFLzy4sUEyYBA+wAQI8hQBPoCWM8WAc8WzMntVABwUnmgGKGCEHNi0JzIyx9SMMs/WPoCUAfPFlAHzxbJcYAQyMsFJM8WUAb6AhXLahTMyXH7ABAkECMAfMMAI8IAsI4hghDVMnbbcIAQyMsFUAjPFlAE+gIWy2oSyx8Syz/JcvsAkzVsIeIDyFAE+gJYzxYBzxbMye1UAMkMO1E0PoA+kD6QNQwBtM/+gAwUUShUjfHBfLiwSXC//LiwgSCC5OHAL7y4sWCEHvdl97Iyx8Uyz9Y+gIhzxbJcYAYyMsFJM8WcPoCy2rMyYBA+wBAE8hQBPoCWM8WAc8WzMntVIACBIAg1yHtRND6APpA+kDUMATTHyGCEBeNRRm6AoIQe92X3roSsfLgyNM/MfoAMBOgUCPIUAT6AljPFgHPFszJ7VSBpMmqD')
|
|
37
49
|
};
|
|
38
50
|
exports.TSTON_MAINNET = {
|
|
39
51
|
name: 'tsTON',
|
|
40
|
-
assetId:
|
|
52
|
+
assetId: exports.ASSET_ID.tsTON,
|
|
41
53
|
jettonMasterAddress: core_1.Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
|
|
42
54
|
jettonWalletCode: core_1.Cell.fromBase64('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')
|
|
43
55
|
};
|
|
44
56
|
exports.USDT_MAINNET = {
|
|
45
57
|
name: 'USDT',
|
|
46
|
-
assetId:
|
|
58
|
+
assetId: exports.ASSET_ID.USDT,
|
|
47
59
|
jettonMasterAddress: core_1.Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'),
|
|
48
60
|
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e', 'hex'))[0],
|
|
49
61
|
};
|
|
50
62
|
exports.JUSDT_TESTNET = {
|
|
51
63
|
name: 'jUSDT',
|
|
52
|
-
assetId:
|
|
64
|
+
assetId: exports.ASSET_ID.jUSDT,
|
|
53
65
|
jettonMasterAddress: core_1.Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
|
|
54
66
|
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
55
67
|
};
|
|
56
68
|
exports.JUSDC_TESTNET = {
|
|
57
69
|
name: 'jUSDC',
|
|
58
|
-
assetId:
|
|
70
|
+
assetId: exports.ASSET_ID.jUSDC,
|
|
59
71
|
jettonMasterAddress: core_1.Address.parse('kQDaY5yUatYnHei73HBqRX_Ox9LK2XnR7XuCY9MFC2INbfYI'),
|
|
60
72
|
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
61
73
|
};
|
|
62
74
|
exports.STTON_TESTNET = {
|
|
63
75
|
name: 'stTON',
|
|
64
|
-
assetId:
|
|
76
|
+
assetId: exports.ASSET_ID.stTON,
|
|
65
77
|
jettonMasterAddress: core_1.Address.parse('kQC3Duw3dg8k98xf5S7Bm7YOWVJ5QW8hm3iLqFfJfa_g9h07'),
|
|
66
78
|
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7201021201000362000114ff00f4a413f4bcf2c80b0102016202030202cc0405001ba0f605da89a1f401f481f481a8610201d40607020120090a01cf0831c02497c138007434c0c05c6c2544d7c0fc03383e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7c8608403e29fa96ea54c4d167c027808608405e351466ea58c511100fc02b80860841657c1ef2ea54c4d167c02f80517c1300138c08c2103fcbc200800113e910c30003cb85360007ced44d0fa00fa40fa40d43010235f03018208989680a16d801072226eb32091719170e203c8cb055006cf165004fa02cb6a039358cc019130e201c901fb000201200b0c0081d40106b90f6a2687d007d207d206a1802698f90c1080bc6a28cdd0141083deecbef5d0958f97064699f98fd001809d02811e428027d012c678b00e78b6664f6aa401f1503d33ffa00fa4021f001ed44d0fa00fa40fa40d4305136a1522ac705f2e2c128c2fff2e2c254344270542013541403c85004fa0258cf1601cf16ccc922c8cb0112f400f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f40431fa0020d749c200f2e2c4778018c8cb055008cf1670fa0217cb6b13cc80d0201200e0f009e8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a0820a625a00a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5402f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a019ad8228608239387028062849e5c412440e0dd7c138c34975c2c060101100c90c3b51343e803e903e90350c01b4cffe800c145128548df1c17cb8b04970bffcb8b0812082e4e1c02fbcb8b160841ef765f7b232c7c532cfd63e808873c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b552000705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023007cc30023c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed54', 'hex'))[0],
|
|
67
79
|
};
|
|
68
80
|
exports.TONUSDT_DEDUST_MAINNET = {
|
|
69
81
|
name: 'TONUSDT_DEDUST',
|
|
70
|
-
assetId:
|
|
82
|
+
assetId: exports.ASSET_ID.TONUSDT_DEDUST,
|
|
71
83
|
jettonMasterAddress: core_1.Address.parse('EQA-X_yo3fzzbDbJ_0bzFWKqtRuZFIRa1sJsveZJ1YpViO3r'),
|
|
72
84
|
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021201000334000114ff00f4a413f4bcf2c80b0102016202110202cc03060201d4040500c30831c02497c138007434c0c05c6c2544d7c0fc02f83e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7e08403e29fa954882ea54c4d167c0238208405e3514654882ea58c511100fc02780d60841657c1ef2ea4d67c02b817c12103fcbc2000113e910c1c2ebcb85360020148070e020120080a01f100f4cffe803e90087c007b51343e803e903e90350c144da8548ab1c17cb8b04a30bffcb8b0950d109c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c032483e401c1d3232c0b281f2fff274013e903d010c7e800835d270803cb8b11de0063232c1540233c59c3e8085f2dac4f3200900ae8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a08208e4e1c0aa008208989680a0a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5403f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a020822625a004ad8228608239387028062849f8c3c975c2c070c008e00b0c0d00705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023000e10491038375f040076c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed540201200f1000db3b51343e803e903e90350c01f4cffe803e900c145468549271c17cb8b049f0bffcb8b0a0823938702a8005a805af3cb8b0e0841ef765f7b232c7c572cfd400fe8088b3c58073c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b55200083200835c87b51343e803e903e90350c0134c7e08405e3514654882ea0841ef765f784ee84ac7cb8b174cfcc7e800c04e81408f214013e809633c58073c5b3327b5520001ba0f605da89a1f401f481f481a861f0a7d84b', 'hex'))[0],
|
|
73
85
|
};
|
|
74
86
|
exports.TON_STORM_MAINNET = {
|
|
75
87
|
name: 'TON_STORM',
|
|
76
|
-
assetId:
|
|
88
|
+
assetId: exports.ASSET_ID.TON_STORM,
|
|
77
89
|
jettonMasterAddress: core_1.Address.parse('EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F'),
|
|
78
90
|
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
79
91
|
};
|
|
80
92
|
exports.USDT_STORM_MAINNET = {
|
|
81
93
|
name: 'USDT_STORM',
|
|
82
|
-
assetId:
|
|
94
|
+
assetId: exports.ASSET_ID.USDT_STORM,
|
|
83
95
|
jettonMasterAddress: core_1.Address.parse('EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW'),
|
|
84
96
|
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
85
97
|
};
|
|
@@ -9,6 +9,9 @@ export declare const MASTER_CONSTANTS: {
|
|
|
9
9
|
ASSET_ORIGINATION_FEE_SCALE: bigint;
|
|
10
10
|
ASSET_LIQUIDATION_THRESHOLD_SCALE: bigint;
|
|
11
11
|
ASSET_LIQUIDATION_BONUS_SCALE: bigint;
|
|
12
|
+
ASSET_SRATE_SCALE: bigint;
|
|
13
|
+
ASSET_BRATE_SCALE: bigint;
|
|
14
|
+
COLLATERAL_WORTH_THRESHOLD: bigint;
|
|
12
15
|
};
|
|
13
16
|
export declare const NULL_ADDRESS: Address;
|
|
14
17
|
export declare const EVAA_MASTER_MAINNET: Address;
|
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FEES = exports.OPCODES = exports.JETTON_WALLET_STANDART_CODE_TESTNET = exports.JETTON_WALLET_STANDART_CODE = exports.LENDING_CODE = exports.ORACLES_LP = exports.ORACLES_TESTNET = exports.ORACLES_MAINNET = 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
|
+
const ASSET_PRICE_SCALE = BigInt(1e9);
|
|
5
6
|
exports.MASTER_CONSTANTS = {
|
|
6
7
|
FACTOR_SCALE: BigInt(1e12),
|
|
7
8
|
ASSET_COEFFICIENT_SCALE: 10000n,
|
|
8
|
-
ASSET_PRICE_SCALE
|
|
9
|
+
ASSET_PRICE_SCALE,
|
|
9
10
|
ASSET_RESERVE_FACTOR_SCALE: 10000n,
|
|
10
11
|
ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: 10000n,
|
|
11
12
|
ASSET_ORIGINATION_FEE_SCALE: BigInt(1e9),
|
|
12
13
|
ASSET_LIQUIDATION_THRESHOLD_SCALE: 10000n,
|
|
13
14
|
ASSET_LIQUIDATION_BONUS_SCALE: 10000n,
|
|
15
|
+
ASSET_SRATE_SCALE: BigInt(1e12),
|
|
16
|
+
ASSET_BRATE_SCALE: BigInt(1e12),
|
|
17
|
+
COLLATERAL_WORTH_THRESHOLD: 100n * ASSET_PRICE_SCALE, // literally 100$
|
|
14
18
|
};
|
|
15
19
|
exports.NULL_ADDRESS = core_1.Address.parse('UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKZ');
|
|
16
20
|
exports.EVAA_MASTER_MAINNET = core_1.Address.parse('EQC8rUZqR_pWV1BylWUlPNBzyiTYVoBEmQkMIQDZXICfnuRr');
|
package/dist/constants/pools.js
CHANGED
|
@@ -90,7 +90,7 @@ export type LiquidationParameters = LiquidationBaseData & {
|
|
|
90
90
|
*/
|
|
91
91
|
export declare class Evaa implements Contract {
|
|
92
92
|
readonly address: Address;
|
|
93
|
-
private
|
|
93
|
+
private _poolConfig;
|
|
94
94
|
private readonly debug?;
|
|
95
95
|
private _data?;
|
|
96
96
|
private lastSync;
|
|
@@ -99,6 +99,10 @@ export declare class Evaa implements Contract {
|
|
|
99
99
|
* @param parameters Evaa contract parameters
|
|
100
100
|
*/
|
|
101
101
|
constructor(parameters?: EvaaParameters);
|
|
102
|
+
/**
|
|
103
|
+
* Returns pool config
|
|
104
|
+
*/
|
|
105
|
+
get poolConfig(): PoolConfig;
|
|
102
106
|
/**
|
|
103
107
|
* Create supply message
|
|
104
108
|
* @returns supply message as a cell
|
|
@@ -18,10 +18,16 @@ class Evaa {
|
|
|
18
18
|
*/
|
|
19
19
|
constructor(parameters) {
|
|
20
20
|
this.lastSync = 0;
|
|
21
|
-
this.
|
|
22
|
-
this.address = this.
|
|
21
|
+
this._poolConfig = parameters?.poolConfig ?? __1.MAINNET_POOL_CONFIG;
|
|
22
|
+
this.address = this._poolConfig.masterAddress;
|
|
23
23
|
this.debug = parameters?.debug;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns pool config
|
|
27
|
+
*/
|
|
28
|
+
get poolConfig() {
|
|
29
|
+
return this._poolConfig;
|
|
30
|
+
}
|
|
25
31
|
/**
|
|
26
32
|
* Create supply message
|
|
27
33
|
* @returns supply message as a cell
|
|
@@ -152,7 +158,7 @@ class Evaa {
|
|
|
152
158
|
* @returns user contract
|
|
153
159
|
*/
|
|
154
160
|
openUserContract(userAddress) {
|
|
155
|
-
return UserContract_1.EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this.
|
|
161
|
+
return UserContract_1.EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this._poolConfig.lendingCode), this._poolConfig);
|
|
156
162
|
}
|
|
157
163
|
getOpenedUserContract(provider, userAddress) {
|
|
158
164
|
return provider.open(this.openUserContract(userAddress));
|
|
@@ -190,7 +196,7 @@ class Evaa {
|
|
|
190
196
|
}
|
|
191
197
|
async sendLiquidation(provider, via, value, parameters) {
|
|
192
198
|
const message = this.createLiquidationMessage(parameters);
|
|
193
|
-
if (!(0, __1.
|
|
199
|
+
if (!(0, __1.isTonAssetId)(parameters.loanAsset)) {
|
|
194
200
|
if (!via.address) {
|
|
195
201
|
throw Error('Via address is required for jetton liquidation');
|
|
196
202
|
}
|
|
@@ -226,9 +232,9 @@ class Evaa {
|
|
|
226
232
|
async getSync(provider) {
|
|
227
233
|
const state = (await provider.getState()).state;
|
|
228
234
|
if (state.type === 'active') {
|
|
229
|
-
this._data = (0, parser_1.parseMasterData)(state.data.toString('base64'), this.
|
|
230
|
-
if (this._data.upgradeConfig.masterCodeVersion !== this.
|
|
231
|
-
throw Error(`Outdated SDK pool version. It supports only master code version ${this.
|
|
235
|
+
this._data = (0, parser_1.parseMasterData)(state.data.toString('base64'), this._poolConfig.poolAssetsConfig, this._poolConfig.masterConstants);
|
|
236
|
+
if (this._data.upgradeConfig.masterCodeVersion !== this._poolConfig.masterVersion) {
|
|
237
|
+
throw Error(`Outdated SDK pool version. It supports only master code version ${this._poolConfig.masterVersion}, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`);
|
|
232
238
|
}
|
|
233
239
|
this.lastSync = Math.floor(Date.now() / 1000);
|
|
234
240
|
}
|
|
@@ -238,10 +244,10 @@ class Evaa {
|
|
|
238
244
|
}
|
|
239
245
|
async getPrices(provider, endpoints) {
|
|
240
246
|
if ((endpoints?.length ?? 0) > 0) {
|
|
241
|
-
return await (0, __1.getPrices)(endpoints, this.
|
|
247
|
+
return await (0, __1.getPrices)(endpoints, this._poolConfig);
|
|
242
248
|
}
|
|
243
249
|
else {
|
|
244
|
-
return await (0, __1.getPrices)(undefined, this.
|
|
250
|
+
return await (0, __1.getPrices)(undefined, this._poolConfig);
|
|
245
251
|
}
|
|
246
252
|
}
|
|
247
253
|
}
|
|
@@ -14,6 +14,7 @@ export declare class EvaaUser implements Contract {
|
|
|
14
14
|
/**
|
|
15
15
|
* Create user contract wrapper from address
|
|
16
16
|
* @param address user contract address
|
|
17
|
+
* @param poolConfig pool config
|
|
17
18
|
*/
|
|
18
19
|
static createFromAddress(address: Address, poolConfig?: PoolConfig): EvaaUser;
|
|
19
20
|
private constructor();
|
|
@@ -13,6 +13,7 @@ class EvaaUser {
|
|
|
13
13
|
/**
|
|
14
14
|
* Create user contract wrapper from address
|
|
15
15
|
* @param address user contract address
|
|
16
|
+
* @param poolConfig pool config
|
|
16
17
|
*/
|
|
17
18
|
static createFromAddress(address, poolConfig = pools_1.MAINNET_POOL_CONFIG) {
|
|
18
19
|
return new EvaaUser(address, poolConfig);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
export { mulFactor, mulDiv, bigIntMin, bigIntMax, calculatePresentValue, calculateCurrentRates, calculateAssetData, calculateAssetInterest, getAvailableToBorrow, calculateMaximumWithdrawAmount, presentValue, calculateLiquidationData, predictHealthFactor } from './api/math';
|
|
1
|
+
export { mulFactor, mulDiv, bigIntMin, bigIntMax, calculatePresentValue, calculateCurrentRates, calculateAssetData, calculateAssetInterest, getAvailableToBorrow, calculateMaximumWithdrawAmount, presentValue, calculateLiquidationData, predictHealthFactor, calculateHealthParams, BigMath, } from './api/math';
|
|
2
|
+
export { calculateLiquidationAmounts, calculateMinCollateralByTransferredAmount, isLiquidatable, isBadDebt, addReserve, deductReserve, addLiquidationBonus, deductLiquidationBonus, toAssetAmount, toAssetWorth, PreparedAssetInfo, PreparedAssetInfoResult, prepareAssetInfo, findAssetById, selectGreatestAssets, calculateAssetsValues, AssetsValues, SelectedAssets, } from './api/liquidation';
|
|
2
3
|
export { createAssetData, createAssetConfig, parseMasterData, parseUserData, parseUserLiteData } from './api/parser';
|
|
3
4
|
export { getPrices } from './api/prices';
|
|
4
5
|
export { JettonWallet } from './contracts/JettonWallet';
|
|
5
|
-
export { EvaaParameters, WithdrawParameters, LiquidationBaseData, LiquidationParameters, Evaa
|
|
6
|
+
export { EvaaParameters, WithdrawParameters, LiquidationBaseData, LiquidationParameters, Evaa } from './contracts/MasterContract';
|
|
6
7
|
export { EvaaUser } from './contracts/UserContract';
|
|
7
8
|
export { PriceData } from './types/Common';
|
|
8
9
|
export { UpgradeConfig, AssetConfig, MasterConfig, AssetData, AssetInterest, AssetApy, ExtendedAssetData, MasterData, PoolConfig, ExtendedAssetsData, ExtendedAssetsConfig, PoolAssetConfig, PoolAssetsConfig, MasterConstants } from './types/Master';
|
|
9
10
|
export { BalanceType, UserBalance, UserLiqudationData, LiquidableData, NonLiquidableData, LiquidationData, UserDataInactive, UserDataActive, UserData, BalanceChangeType } from './types/User';
|
|
10
11
|
export { EVAA_MASTER_MAINNET, MAINNET_VERSION, EVAA_MASTER_TESTNET, TESTNET_VERSION, LENDING_CODE, OPCODES, FEES, MASTER_CONSTANTS } from './constants/general';
|
|
11
|
-
export { MAINNET_POOL_CONFIG, TESTNET_POOL_CONFIG, MAINNET_LP_POOL_CONFIG
|
|
12
|
-
export { UNDEFINED_ASSET, TON_MAINNET, USDT_MAINNET, TONUSDT_DEDUST_MAINNET, TON_STORM_MAINNET, USDT_STORM_MAINNET, JUSDT_MAINNET, JUSDC_MAINNET, STTON_MAINNET, TSTON_MAINNET, JUSDT_TESTNET, JUSDC_TESTNET, STTON_TESTNET
|
|
12
|
+
export { MAINNET_POOL_CONFIG, TESTNET_POOL_CONFIG, MAINNET_LP_POOL_CONFIG } from './constants/pools';
|
|
13
|
+
export { ASSET_ID, UNDEFINED_ASSET, TON_MAINNET, USDT_MAINNET, TONUSDT_DEDUST_MAINNET, TON_STORM_MAINNET, USDT_STORM_MAINNET, JUSDT_MAINNET, JUSDC_MAINNET, STTON_MAINNET, TSTON_MAINNET, JUSDT_TESTNET, JUSDC_TESTNET, STTON_TESTNET } from './constants/assets';
|
|
13
14
|
export * from './constants/assets';
|
|
14
15
|
export * from './utils/utils';
|
|
15
16
|
export { getLastSentBoc, getTonConnectSender } from './utils/tonConnectSender';
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.getUserJettonWallet = void 0;
|
|
17
|
+
exports.TESTNET_POOL_CONFIG = exports.MAINNET_POOL_CONFIG = exports.MASTER_CONSTANTS = exports.FEES = exports.OPCODES = exports.LENDING_CODE = exports.TESTNET_VERSION = exports.EVAA_MASTER_TESTNET = exports.MAINNET_VERSION = exports.EVAA_MASTER_MAINNET = exports.BalanceChangeType = exports.BalanceType = exports.EvaaUser = exports.Evaa = exports.JettonWallet = exports.getPrices = exports.parseUserLiteData = exports.parseUserData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = exports.calculateAssetsValues = exports.selectGreatestAssets = exports.findAssetById = exports.prepareAssetInfo = exports.toAssetWorth = exports.toAssetAmount = exports.deductLiquidationBonus = exports.addLiquidationBonus = exports.deductReserve = exports.addReserve = exports.isBadDebt = exports.isLiquidatable = exports.calculateMinCollateralByTransferredAmount = exports.calculateLiquidationAmounts = exports.BigMath = exports.calculateHealthParams = exports.predictHealthFactor = exports.calculateLiquidationData = exports.presentValue = exports.calculateMaximumWithdrawAmount = exports.getAvailableToBorrow = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMax = exports.bigIntMin = exports.mulDiv = exports.mulFactor = void 0;
|
|
18
|
+
exports.getUserJettonWallet = exports.getTonConnectSender = exports.getLastSentBoc = exports.STTON_TESTNET = exports.JUSDC_TESTNET = exports.JUSDT_TESTNET = exports.TSTON_MAINNET = exports.STTON_MAINNET = exports.JUSDC_MAINNET = exports.JUSDT_MAINNET = exports.USDT_STORM_MAINNET = exports.TON_STORM_MAINNET = exports.TONUSDT_DEDUST_MAINNET = exports.USDT_MAINNET = exports.TON_MAINNET = exports.UNDEFINED_ASSET = exports.ASSET_ID = exports.MAINNET_LP_POOL_CONFIG = void 0;
|
|
19
19
|
// Math
|
|
20
20
|
var math_1 = require("./api/math");
|
|
21
21
|
Object.defineProperty(exports, "mulFactor", { enumerable: true, get: function () { return math_1.mulFactor; } });
|
|
@@ -31,6 +31,23 @@ Object.defineProperty(exports, "calculateMaximumWithdrawAmount", { enumerable: t
|
|
|
31
31
|
Object.defineProperty(exports, "presentValue", { enumerable: true, get: function () { return math_1.presentValue; } });
|
|
32
32
|
Object.defineProperty(exports, "calculateLiquidationData", { enumerable: true, get: function () { return math_1.calculateLiquidationData; } });
|
|
33
33
|
Object.defineProperty(exports, "predictHealthFactor", { enumerable: true, get: function () { return math_1.predictHealthFactor; } });
|
|
34
|
+
Object.defineProperty(exports, "calculateHealthParams", { enumerable: true, get: function () { return math_1.calculateHealthParams; } });
|
|
35
|
+
Object.defineProperty(exports, "BigMath", { enumerable: true, get: function () { return math_1.BigMath; } });
|
|
36
|
+
var liquidation_1 = require("./api/liquidation");
|
|
37
|
+
Object.defineProperty(exports, "calculateLiquidationAmounts", { enumerable: true, get: function () { return liquidation_1.calculateLiquidationAmounts; } });
|
|
38
|
+
Object.defineProperty(exports, "calculateMinCollateralByTransferredAmount", { enumerable: true, get: function () { return liquidation_1.calculateMinCollateralByTransferredAmount; } });
|
|
39
|
+
Object.defineProperty(exports, "isLiquidatable", { enumerable: true, get: function () { return liquidation_1.isLiquidatable; } });
|
|
40
|
+
Object.defineProperty(exports, "isBadDebt", { enumerable: true, get: function () { return liquidation_1.isBadDebt; } });
|
|
41
|
+
Object.defineProperty(exports, "addReserve", { enumerable: true, get: function () { return liquidation_1.addReserve; } });
|
|
42
|
+
Object.defineProperty(exports, "deductReserve", { enumerable: true, get: function () { return liquidation_1.deductReserve; } });
|
|
43
|
+
Object.defineProperty(exports, "addLiquidationBonus", { enumerable: true, get: function () { return liquidation_1.addLiquidationBonus; } });
|
|
44
|
+
Object.defineProperty(exports, "deductLiquidationBonus", { enumerable: true, get: function () { return liquidation_1.deductLiquidationBonus; } });
|
|
45
|
+
Object.defineProperty(exports, "toAssetAmount", { enumerable: true, get: function () { return liquidation_1.toAssetAmount; } });
|
|
46
|
+
Object.defineProperty(exports, "toAssetWorth", { enumerable: true, get: function () { return liquidation_1.toAssetWorth; } });
|
|
47
|
+
Object.defineProperty(exports, "prepareAssetInfo", { enumerable: true, get: function () { return liquidation_1.prepareAssetInfo; } });
|
|
48
|
+
Object.defineProperty(exports, "findAssetById", { enumerable: true, get: function () { return liquidation_1.findAssetById; } });
|
|
49
|
+
Object.defineProperty(exports, "selectGreatestAssets", { enumerable: true, get: function () { return liquidation_1.selectGreatestAssets; } });
|
|
50
|
+
Object.defineProperty(exports, "calculateAssetsValues", { enumerable: true, get: function () { return liquidation_1.calculateAssetsValues; } });
|
|
34
51
|
// Parser
|
|
35
52
|
var parser_1 = require("./api/parser");
|
|
36
53
|
Object.defineProperty(exports, "createAssetData", { enumerable: true, get: function () { return parser_1.createAssetData; } });
|
|
@@ -66,6 +83,7 @@ Object.defineProperty(exports, "MAINNET_POOL_CONFIG", { enumerable: true, get: f
|
|
|
66
83
|
Object.defineProperty(exports, "TESTNET_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.TESTNET_POOL_CONFIG; } });
|
|
67
84
|
Object.defineProperty(exports, "MAINNET_LP_POOL_CONFIG", { enumerable: true, get: function () { return pools_1.MAINNET_LP_POOL_CONFIG; } });
|
|
68
85
|
var assets_1 = require("./constants/assets");
|
|
86
|
+
Object.defineProperty(exports, "ASSET_ID", { enumerable: true, get: function () { return assets_1.ASSET_ID; } });
|
|
69
87
|
Object.defineProperty(exports, "UNDEFINED_ASSET", { enumerable: true, get: function () { return assets_1.UNDEFINED_ASSET; } });
|
|
70
88
|
Object.defineProperty(exports, "TON_MAINNET", { enumerable: true, get: function () { return assets_1.TON_MAINNET; } });
|
|
71
89
|
Object.defineProperty(exports, "USDT_MAINNET", { enumerable: true, get: function () { return assets_1.USDT_MAINNET; } });
|