@evaafi/sdk 0.6.0 → 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 +100 -32
- package/dist/api/parser.js +4 -1
- 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 +6 -1
- package/dist/contracts/MasterContract.js +17 -11
- package/dist/contracts/UserContract.d.ts +3 -2
- package/dist/contracts/UserContract.js +6 -5
- 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 +3 -2
- package/src/api/liquidation.ts +346 -0
- package/src/api/math.ts +169 -76
- package/src/api/parser.ts +4 -1
- 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 +21 -13
- package/src/contracts/UserContract.ts +8 -3
- 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
|
}
|
|
@@ -12,10 +13,15 @@ function mulDiv(x, y, z) {
|
|
|
12
13
|
}
|
|
13
14
|
exports.mulDiv = mulDiv;
|
|
14
15
|
function mulDivC(x, y, z) {
|
|
15
|
-
const mul = x * y;
|
|
16
|
-
return mul / z + (mul % z ? 1n : 0n);
|
|
16
|
+
//const mul = x * y;
|
|
17
|
+
//return mul / z + (mul % z ? 1n : 0n);
|
|
18
|
+
return BigInt(Math.ceil(Number(x * y) / Number(z)));
|
|
17
19
|
}
|
|
18
20
|
exports.mulDivC = mulDivC;
|
|
21
|
+
function bigAbs(value) {
|
|
22
|
+
return value > 0n ? value : -value;
|
|
23
|
+
}
|
|
24
|
+
exports.bigAbs = bigAbs;
|
|
19
25
|
function bigIntMax(...args) {
|
|
20
26
|
return args.reduce((m, e) => (e > m ? e : m));
|
|
21
27
|
}
|
|
@@ -24,6 +30,7 @@ function bigIntMin(...args) {
|
|
|
24
30
|
return args.reduce((m, e) => (e < m ? e : m));
|
|
25
31
|
}
|
|
26
32
|
exports.bigIntMin = bigIntMin;
|
|
33
|
+
exports.BigMath = { mulFactor, mulDiv, mulDivC, abs: bigAbs, min: bigIntMin, max: bigIntMax };
|
|
27
34
|
function calculatePresentValue(index, principalValue, masterConstants) {
|
|
28
35
|
return (principalValue * index) / masterConstants.FACTOR_SCALE;
|
|
29
36
|
}
|
|
@@ -40,7 +47,7 @@ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
|
40
47
|
bRate: updatedBRate,
|
|
41
48
|
supplyInterest,
|
|
42
49
|
borrowInterest,
|
|
43
|
-
now
|
|
50
|
+
now
|
|
44
51
|
};
|
|
45
52
|
}
|
|
46
53
|
return {
|
|
@@ -48,7 +55,7 @@ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
|
48
55
|
bRate: assetData.bRate,
|
|
49
56
|
supplyInterest,
|
|
50
57
|
borrowInterest,
|
|
51
|
-
now
|
|
58
|
+
now
|
|
52
59
|
};
|
|
53
60
|
}
|
|
54
61
|
exports.calculateCurrentRates = calculateCurrentRates;
|
|
@@ -67,7 +74,7 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterCon
|
|
|
67
74
|
return {
|
|
68
75
|
...data,
|
|
69
76
|
...{ supplyInterest, borrowInterest },
|
|
70
|
-
...{ supplyApy, borrowApy }
|
|
77
|
+
...{ supplyApy, borrowApy }
|
|
71
78
|
};
|
|
72
79
|
}
|
|
73
80
|
exports.calculateAssetData = calculateAssetData;
|
|
@@ -94,7 +101,7 @@ function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
|
94
101
|
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, masterConstants.FACTOR_SCALE), masterConstants.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, masterConstants.ASSET_RESERVE_FACTOR_SCALE);
|
|
95
102
|
return {
|
|
96
103
|
supplyInterest,
|
|
97
|
-
borrowInterest
|
|
104
|
+
borrowInterest
|
|
98
105
|
};
|
|
99
106
|
}
|
|
100
107
|
exports.calculateAssetInterest = calculateAssetInterest;
|
|
@@ -113,12 +120,14 @@ function getAgregatedBalances(assetsData, assetsConfig, principals, prices, mast
|
|
|
113
120
|
const price = prices.get(assetId);
|
|
114
121
|
const assetData = assetsData.get(assetId);
|
|
115
122
|
const assetConfig = assetsConfig.get(assetId);
|
|
123
|
+
// console.log('price', price);
|
|
116
124
|
if (principal < 0) {
|
|
117
125
|
user_total_borrow += presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).amount * price / 10n ** assetConfig.decimals;
|
|
118
126
|
}
|
|
119
127
|
else {
|
|
120
128
|
user_total_supply += presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).amount * price / 10n ** assetConfig.decimals;
|
|
121
129
|
}
|
|
130
|
+
// console.log('aggregated', assetId, presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).type, presentValue(assetData.sRate, assetData.bRate, principal, masterConstants).amount * price / 10n ** assetConfig.decimals)
|
|
122
131
|
}
|
|
123
132
|
}
|
|
124
133
|
return { totalSupply: user_total_supply, totalBorrow: user_total_borrow };
|
|
@@ -170,10 +179,10 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, mast
|
|
|
170
179
|
const assetData = assetsData.get(assetID);
|
|
171
180
|
const price = prices.get(assetID);
|
|
172
181
|
const principal = principals.get(assetID);
|
|
173
|
-
if (principal <
|
|
182
|
+
if (principal < 0n) {
|
|
174
183
|
borrowAmount += mulDiv(calculatePresentValue(assetData.bRate, -principal, masterConstants), price, 10n ** assetConfig.decimals);
|
|
175
184
|
}
|
|
176
|
-
else if (principal >
|
|
185
|
+
else if (principal > 0n) {
|
|
177
186
|
borrowLimit +=
|
|
178
187
|
mulDiv(mulDiv(calculatePresentValue(assetData.sRate, principal, masterConstants), price, 10n ** assetConfig.decimals), assetConfig.collateralFactor, masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
179
188
|
}
|
|
@@ -181,34 +190,89 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, mast
|
|
|
181
190
|
return borrowLimit - borrowAmount;
|
|
182
191
|
}
|
|
183
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
|
+
*/
|
|
184
200
|
function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
185
201
|
if (principalValue > 0) {
|
|
186
202
|
return {
|
|
187
203
|
amount: calculatePresentValue(sRate, principalValue, masterConstants),
|
|
188
|
-
type: User_1.BalanceType.supply
|
|
204
|
+
type: User_1.BalanceType.supply
|
|
189
205
|
};
|
|
190
206
|
}
|
|
191
207
|
else if (principalValue < 0) {
|
|
192
208
|
return {
|
|
193
209
|
amount: calculatePresentValue(bRate, -principalValue, masterConstants),
|
|
194
|
-
type: User_1.BalanceType.borrow
|
|
210
|
+
type: User_1.BalanceType.borrow
|
|
195
211
|
};
|
|
196
212
|
}
|
|
197
213
|
else {
|
|
198
214
|
return {
|
|
199
215
|
amount: 0n,
|
|
200
|
-
type: undefined
|
|
216
|
+
type: undefined
|
|
201
217
|
};
|
|
202
218
|
}
|
|
203
219
|
}
|
|
204
220
|
exports.presentValue = presentValue;
|
|
205
221
|
/**
|
|
206
|
-
*
|
|
207
|
-
* @param
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
|
212
276
|
* @returns can return UNDEFINED_ASSET if there are no assets
|
|
213
277
|
*/
|
|
214
278
|
function calculateLiquidationData(assetsConfig, assetsData, principals, prices, poolConfig) {
|
|
@@ -218,25 +282,28 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
218
282
|
let loanAsset = assets_1.UNDEFINED_ASSET;
|
|
219
283
|
let totalDebt = 0n;
|
|
220
284
|
let totalLimit = 0n;
|
|
285
|
+
const { ASSET_SRATE_SCALE, ASSET_BRATE_SCALE, COLLATERAL_WORTH_THRESHOLD } = poolConfig.masterConstants;
|
|
221
286
|
for (const asset of poolConfig.poolAssetsConfig) {
|
|
222
|
-
if (!principals.has(asset.assetId)) {
|
|
223
|
-
continue;
|
|
224
|
-
}
|
|
225
287
|
const principal = principals.get(asset.assetId);
|
|
288
|
+
if (!principal)
|
|
289
|
+
continue;
|
|
226
290
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
227
291
|
const assetData = assetsData.get(asset.assetId);
|
|
228
|
-
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;
|
|
229
296
|
if (balance > 0) {
|
|
230
|
-
const assetWorth = (balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
231
297
|
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
298
|
+
// get the greatest collateral
|
|
232
299
|
if (assetWorth > collateralValue) {
|
|
233
300
|
collateralValue = assetWorth;
|
|
234
301
|
collateralAsset = asset;
|
|
235
302
|
}
|
|
236
303
|
}
|
|
237
304
|
else if (balance < 0) {
|
|
238
|
-
const assetWorth = (-balance * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
239
305
|
totalDebt += assetWorth;
|
|
306
|
+
// get the greatest loan
|
|
240
307
|
if (assetWorth > loanValue) {
|
|
241
308
|
loanValue = assetWorth;
|
|
242
309
|
loanAsset = asset;
|
|
@@ -250,7 +317,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
250
317
|
const loanAssetConfig = assetsConfig.get(loanAsset.assetId);
|
|
251
318
|
const liquidationBonus = collateralAssetConfig.liquidationBonus;
|
|
252
319
|
const loanScale = 10n ** loanAssetConfig.decimals;
|
|
253
|
-
values.push((bigIntMax(collateralValue / 2n, bigIntMin(collateralValue,
|
|
320
|
+
values.push((bigIntMax(collateralValue / 2n, bigIntMin(collateralValue, COLLATERAL_WORTH_THRESHOLD)) *
|
|
254
321
|
loanScale *
|
|
255
322
|
poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
256
323
|
liquidationBonus /
|
|
@@ -264,7 +331,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
264
331
|
loanScale -
|
|
265
332
|
10n;
|
|
266
333
|
minCollateralAmount = (minCollateralAmount * 97n) / 100n;
|
|
267
|
-
if (minCollateralAmount
|
|
334
|
+
if (minCollateralAmount > 0n) {
|
|
268
335
|
return {
|
|
269
336
|
greatestCollateralAsset: collateralAsset,
|
|
270
337
|
greatestCollateralValue: collateralValue,
|
|
@@ -273,8 +340,8 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
273
340
|
totalDebt,
|
|
274
341
|
totalLimit,
|
|
275
342
|
liquidable: true,
|
|
276
|
-
liquidationAmount,
|
|
277
|
-
minCollateralAmount
|
|
343
|
+
liquidationAmount: (0, liquidation_1.addReserve)(liquidationAmount, loanAssetConfig.liquidationReserveFactor, poolConfig.masterConstants.ASSET_RESERVE_FACTOR_SCALE),
|
|
344
|
+
minCollateralAmount
|
|
278
345
|
};
|
|
279
346
|
}
|
|
280
347
|
}
|
|
@@ -285,17 +352,18 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
285
352
|
greatestLoanValue: loanValue,
|
|
286
353
|
totalDebt,
|
|
287
354
|
totalLimit,
|
|
288
|
-
liquidable: false
|
|
355
|
+
liquidable: false
|
|
289
356
|
};
|
|
290
357
|
}
|
|
291
358
|
exports.calculateLiquidationData = calculateLiquidationData;
|
|
292
359
|
function predictHealthFactor(args) {
|
|
293
|
-
const
|
|
360
|
+
const healthParams = calculateHealthParams(args);
|
|
294
361
|
const assetId = args.asset.assetId;
|
|
295
362
|
const assetConfig = args.assetsConfig.get(assetId);
|
|
296
363
|
const assetPrice = Number(args.prices.get(assetId));
|
|
297
|
-
|
|
298
|
-
let
|
|
364
|
+
const assetData = args.assetsData.get(assetId);
|
|
365
|
+
let totalLimit = Number(healthParams.totalLimit);
|
|
366
|
+
let totalBorrow = Number(healthParams.totalDebt);
|
|
299
367
|
const currentAmount = args.amount;
|
|
300
368
|
const decimals = Number(assetConfig.decimals);
|
|
301
369
|
const currentBalance = assetPrice * Number(currentAmount) / Math.pow(10, decimals);
|
package/dist/api/parser.js
CHANGED
|
@@ -287,7 +287,10 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfi
|
|
|
287
287
|
? 0
|
|
288
288
|
: Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
|
|
289
289
|
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices, poolConfig);
|
|
290
|
-
|
|
290
|
+
let healthFactor = 1;
|
|
291
|
+
if (liquidationData.totalLimit != 0n) {
|
|
292
|
+
healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
|
|
293
|
+
}
|
|
291
294
|
return {
|
|
292
295
|
...userLiteData,
|
|
293
296
|
withdrawalLimits: withdrawalLimits,
|
|
@@ -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
|
@@ -83,13 +83,14 @@ export type LiquidationParameters = LiquidationBaseData & {
|
|
|
83
83
|
includeUserCode: boolean;
|
|
84
84
|
priceData: Cell;
|
|
85
85
|
payload: Cell;
|
|
86
|
+
payloadForwardAmount: bigint;
|
|
86
87
|
};
|
|
87
88
|
/**
|
|
88
89
|
* Evaa master contract wrapper
|
|
89
90
|
*/
|
|
90
91
|
export declare class Evaa implements Contract {
|
|
91
92
|
readonly address: Address;
|
|
92
|
-
private
|
|
93
|
+
private _poolConfig;
|
|
93
94
|
private readonly debug?;
|
|
94
95
|
private _data?;
|
|
95
96
|
private lastSync;
|
|
@@ -98,6 +99,10 @@ export declare class Evaa implements Contract {
|
|
|
98
99
|
* @param parameters Evaa contract parameters
|
|
99
100
|
*/
|
|
100
101
|
constructor(parameters?: EvaaParameters);
|
|
102
|
+
/**
|
|
103
|
+
* Returns pool config
|
|
104
|
+
*/
|
|
105
|
+
get poolConfig(): PoolConfig;
|
|
101
106
|
/**
|
|
102
107
|
* Create supply message
|
|
103
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
|
|
@@ -101,7 +107,7 @@ class Evaa {
|
|
|
101
107
|
// the exact amount of transferred jettons for liquidation is known
|
|
102
108
|
.storeUint(0, 64)
|
|
103
109
|
.storeRef((0, core_1.beginCell)()
|
|
104
|
-
.storeUint(parameters.
|
|
110
|
+
.storeUint(parameters.payloadForwardAmount ?? 0, 64)
|
|
105
111
|
.storeRef(parameters.payload)
|
|
106
112
|
.endCell())
|
|
107
113
|
.storeRef(parameters.priceData)
|
|
@@ -119,7 +125,7 @@ class Evaa {
|
|
|
119
125
|
.storeInt(parameters.includeUserCode ? -1 : 0, 2)
|
|
120
126
|
.storeUint(parameters.liquidationAmount, 64)
|
|
121
127
|
.storeRef((0, core_1.beginCell)()
|
|
122
|
-
.storeUint(parameters.
|
|
128
|
+
.storeUint(parameters.payloadForwardAmount ?? 0, 64)
|
|
123
129
|
.storeRef(parameters.payload)
|
|
124
130
|
.endCell())
|
|
125
131
|
.storeRef(parameters.priceData)
|
|
@@ -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,10 +14,11 @@ 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();
|
|
20
|
-
getSyncLite(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig): Promise<void>;
|
|
21
|
+
getSyncLite(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, applyDust?: boolean): Promise<void>;
|
|
21
22
|
/**
|
|
22
23
|
* Calculate full user data from lite data and prices
|
|
23
24
|
* @param assetsData assets data
|
|
@@ -31,7 +32,7 @@ export declare class EvaaUser implements Contract {
|
|
|
31
32
|
* @param forwardPayload - payload that will be forwarded to the address which requested the data
|
|
32
33
|
*/
|
|
33
34
|
sendOnchainGetter(provider: ContractProvider, via: Sender, value: bigint, queryID: bigint, forwardPayload: Cell): Promise<void>;
|
|
34
|
-
getSync(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint
|
|
35
|
+
getSync(provider: ContractProvider, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>, applyDust?: boolean): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Get user contract lite data
|
|
37
38
|
* @returns user lite data if available, otherwise undefined
|