@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/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 < 0) {
182
+ if (principal < 0n) {
174
183
  borrowAmount += mulDiv(calculatePresentValue(assetData.bRate, -principal, masterConstants), price, 10n ** assetConfig.decimals);
175
184
  }
176
- else if (principal > 0) {
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 assetsConfig
208
- * @param assetsData
209
- * @param principals
210
- * @param prices
211
- * @param poolConfig
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 ? (principal * assetData.sRate) / BigInt(1e12) : (principal * assetData.bRate) / BigInt(1e12);
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, 100000000000n)) *
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 / collateralDecimal >= 0n) { // todo back to 1
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 liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.principals, args.prices, args.poolConfig);
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
- let totalLimit = Number(liquidationData.totalLimit);
298
- let totalBorrow = Number(liquidationData.totalDebt);
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);
@@ -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
- const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
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;
@@ -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: (0, sha256BigInt_1.sha256Hash)('TON'),
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: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
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: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
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: (0, sha256BigInt_1.sha256Hash)('stTON'),
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: (0, sha256BigInt_1.sha256Hash)('tsTON'),
52
+ assetId: exports.ASSET_ID.tsTON,
41
53
  jettonMasterAddress: core_1.Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
42
54
  jettonWalletCode: core_1.Cell.fromBase64('te6cckECIQEAB38AART/APSkE/S88sgLAQIBYgIDAgLLBAUCASAWFwSz0IMcAkl8E4AHQ0wMBcbCOhRNfA9s84PpA+kAx+gAx9AQx+gAx+gAwc6m0AALTHwEgghAPin6luo6FMDRZ2zzgIIIQF41FGbqOhjBERAPbPOA1JIIQWV8HvLqBgcICQATov0iGGAAeXCmwADCgCDXIe1E0PoA+kD6QNT6ANMvMCD4I7mXMBSgcFQUAN4G0x8BggD/8CGCEBeNRRm6AoIQe92X3roSsfL00z8BMPoAMBWgBRA0QTDIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAL2A9M/AQH6APpAIfAV7UTQ+gD6QPpA1PoA0y8wIPgjuZcwFKBwVBQA3lFYoVJMxwXy4sEqwv/y4sJUNiFwVHAAJBA1EEcQNlnIUAb6AlAEzxZYzxbMAfoCAQHLL8kiyMsBEvQA9ADLAMkg2zwG+kD0BDH6ACDXScIA8uLEGwoC9u1E0PoA+kD6QNT6ANMvMCD4I7mXMBSgcFQUAN4lnSLXZZjII9DPFsn7BN/fCtM/AQH6AFFxoAf6QPpAU33HBVRzh3BUcAAkEDUQRxA2WchQBvoCUATPFljPFswB+gIBAcsvySLIywES9AD0AMsAyds8UA/HBR6x8uLDDBsLA/6OhDRZ2zzgbCLtRND6APpA+kDU+gDTLzAg+CO5lzAUoHBUFADeKIIQbY5ePLqOPRBFXwUzUiLHBfLiwYIImJaAcPsCyIAQAcsFWM8WcPoCcAHLaoIQ1TJ22wHLHwHTPwESAcs/AdHJgQCC+wDgKIIQdopQsrrjAiiCEGn7MGy6DQ4PANzIghAXjUUZAcsfUAwByz9QCvoCJc8WAc8WKPoCUAnPFsnIgBgBywVQBs8WcPoCQIV3UAPLa8zMJZFykXHiUAqoFaCCCfeKQKAWvPLixQbJgED7AFAEBQPIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAH4+gBRyqEhjjlSHKAaociCEHNi0JwByx8kAcs/UAP6AgHPFlAKzxbJyIAQAcsFJs8WUAj6AlAHcVjLaszJcfsAEFeVEEw7XwTiBoIImJaAtgly+wIn1wsBwwAFwgAVsJI1NeMNUCXIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAwATsiAEAHLBVAHzxZw+gJwActqghDVMnbbAcsfUAUByz/JgQCC+wAQNAH27UTQ+gD6QPpA1PoA0y8wIPgjuZcwFKBwVBQA3gnTPwEB+gD6QPQEMFGCoVJ8xwXy4sEqwv/y4sIIggle88CgghAstBeAoBm88uLHyIIQe92X3gHLHwEByz9QB/oCI88WUAXPFhP0AMnIgBgBywUjzxZw+gIBcVjLaszJEACkEEVfBTNSIscF8uLB0z8BAfpA+gD0BNHIgBgBywVQA88WcPoCyIIQD4p+pQHLH1AEAcs/AfoCI88WUAPPFhL0AHD6AnABygDJcVjLaszJgED7AAT+4wJfAzIkghAxjv8Xuo5YNFrHBfLixgHTPwEB0z8BMNMvAQHUgQ8Q+COCCCeNAKAkvPL0+CMjufLg+dHIgBgBywVQBM8WcPoCcAHLaoIQHH+aGgHLH1gByz8BAcsvzHAByz/JgED7AOAkgguaN0664wIEghDDnwvmuuMCXwSEDxESExQAPIBA+wAEUDXIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAP+OFI3xwXy4sYE0z8BAfpA0y8BgQ8Q+COCCCeNAKAivPL0+CMhufLg+QHSAAEB0gABAdH4KIhBUAJwAshYzxYBzxZw+gJw+gLJIcjLARP0ABL0AMsAySDbPFCooCJwDLYJyIAYAcsFUAnPFiv6AlAKdljLa8yCECvWNwQByx9QBBobFQBcNFjHBfLixtM/AQHRyIAQAcsFWM8WcPoCcAHLaoIQX+m4ygHLHwEByz/JgED7AABmWMcF8uLG0z8BAfpA0ciAEAHLBVADzxZw+gJwActqghAsy6AGAcsfAQHLPwHPFsmAQPsAAATy8ABmAcs/Jc8WAQHLLyf6AlgBygABAcoAyYBA+wBDQ8hQBvoCUATPFljPFswB+gIBAcsvye1UAgFYGBkAPb9rz2omh9AH0gfSBqfQBpl5gQfBHcy5gKUDgqCgBvQCTbQCXwURAkBOAFkLGeLAOeLOH0BOH0BZJDkZYCJ+gAJegBlgGTtnkBobAD+3YF2omh9AH0gfSBqfQBpl5gQfBHcy5gKUDgqCgBvLcAEU/wD0pBP0vPLICxwAHPkAdMjLAnABygfL/8nQAgFiHR4BQtAzMdDTAwFxsJFb4PpAMAHTHwGCECvWNwS64wJbhA/y8B8AHaFxl9qJofSB9IH0AfQAYQH+7UTQ+kD6QPoA+gAwUjbHBfLh9APTPwEB+kDTLwEB+gDSAAEB0gABMVEooSmhIZNRiKCVUZmgCQjiKML/8uH1ggiYloBw+wImEDhAGshQBM8WWM8WAfoCAfoCye1UyIAQAcsFUATPFnD6AnABy2qCEG7bGIkByx9YAcs/Ac8WASAAJgHLL1j6AlgBygABAcoAyYMG+wDZ+GMW')
43
55
  };
44
56
  exports.USDT_MAINNET = {
45
57
  name: 'USDT',
46
- assetId: (0, sha256BigInt_1.sha256Hash)('USDT'),
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: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
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: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
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: (0, sha256BigInt_1.sha256Hash)('stTON'),
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: (0, sha256BigInt_1.sha256Hash)('TONUSDT_DEDUST'),
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: (0, sha256BigInt_1.sha256Hash)('TON_STORM'),
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: (0, sha256BigInt_1.sha256Hash)('USDT_STORM'),
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: BigInt(1e9),
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');
@@ -44,7 +44,7 @@ exports.MAINNET_LP_POOL_CONFIG = {
44
44
  assets_1.USDT_MAINNET,
45
45
  assets_1.TONUSDT_DEDUST_MAINNET,
46
46
  assets_1.TON_STORM_MAINNET,
47
- assets_1.USDT_STORM_MAINNET,
47
+ assets_1.USDT_STORM_MAINNET
48
48
  ],
49
49
  lendingCode: general_1.LENDING_CODE
50
50
  };
@@ -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 poolConfig;
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.poolConfig = parameters?.poolConfig ?? __1.MAINNET_POOL_CONFIG;
22
- this.address = this.poolConfig.masterAddress;
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.forwardAmount ?? 0, 64) // idk .. ) todo check
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.forwardAmount ?? 0, 64) // idk .. ) todo check
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.poolConfig.lendingCode), this.poolConfig);
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.isTonAsset)(parameters.asset)) {
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.poolConfig.poolAssetsConfig, this.poolConfig.masterConstants);
230
- if (this._data.upgradeConfig.masterCodeVersion !== this.poolConfig.masterVersion) {
231
- 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}`);
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.poolConfig);
247
+ return await (0, __1.getPrices)(endpoints, this._poolConfig);
242
248
  }
243
249
  else {
244
- return await (0, __1.getPrices)(undefined, this.poolConfig);
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>): Promise<void>;
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