@evaafi/sdk 0.6.0-a → 0.6.1-a

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
  }
@@ -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 < 0) {
182
+ if (principal < 0n) {
177
183
  borrowAmount += mulDiv(calculatePresentValue(assetData.bRate, -principal, masterConstants), price, 10n ** assetConfig.decimals);
178
184
  }
179
- else if (principal > 0) {
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 assetsConfig
211
- * @param assetsData
212
- * @param principals
213
- * @param prices
214
- * @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
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 ? (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;
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, 100000000000n)) *
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 / collateralDecimal >= 0n) { // todo back to 1
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 liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.principals, args.prices, args.poolConfig);
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(liquidationData.totalLimit);
302
- let totalBorrow = Number(liquidationData.totalDebt);
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);
@@ -30,9 +30,7 @@ function createAssetData() {
30
30
  buidler.storeUint(src.balance, 64);
31
31
  buidler.storeUint(src.trackingSupplyIndex, 64);
32
32
  buidler.storeUint(src.trackingBorrowIndex, 64);
33
- if (src.awaitedSupply) {
34
- buidler.storeUint(src.awaitedSupply, 64);
35
- }
33
+ buidler.storeUint(src.awaitedSupply, 64);
36
34
  },
37
35
  parse: (src) => {
38
36
  const sRate = BigInt(src.loadInt(64));
@@ -43,10 +41,7 @@ function createAssetData() {
43
41
  const balance = BigInt(src.loadInt(64));
44
42
  const trackingSupplyIndex = BigInt(src.loadUint(64));
45
43
  const trackingBorrowIndex = BigInt(src.loadUint(64));
46
- let awaitedSupply = undefined;
47
- if (src.remainingBits == 64) {
48
- awaitedSupply = BigInt(src.loadUint(64));
49
- }
44
+ const awaitedSupply = BigInt(src.loadUint(64));
50
45
  return { sRate, bRate, totalSupply, totalBorrow, lastAccural, balance, trackingSupplyIndex, trackingBorrowIndex, awaitedSupply };
51
46
  },
52
47
  };
@@ -181,7 +176,7 @@ function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
181
176
  };
182
177
  }
183
178
  exports.parseMasterData = parseMasterData;
184
- function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolConfig, applyDust = true) {
179
+ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolConfig, applyDust = false) {
185
180
  const poolAssetsConfig = poolConfig.poolAssetsConfig;
186
181
  const masterConstants = poolConfig.masterConstants;
187
182
  const userSlice = core_1.Cell.fromBase64(userDataBOC).beginParse();
@@ -244,7 +239,7 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolConfig, ap
244
239
  };
245
240
  }
246
241
  exports.parseUserLiteData = parseUserLiteData;
247
- function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfig, applyDust = true) {
242
+ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfig, applyDust = false) {
248
243
  const poolAssetsConfig = poolConfig.poolAssetsConfig;
249
244
  const masterConstants = poolConfig.masterConstants;
250
245
  const withdrawalLimits = core_1.Dictionary.empty();
@@ -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('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')
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;
@@ -16,7 +19,7 @@ export declare const MAINNET_VERSION = 6;
16
19
  export declare const EVAA_MASTER_TESTNET: Address;
17
20
  export declare const TESTNET_VERSION = 0;
18
21
  export declare const EVAA_LP_MAINNET: Address;
19
- export declare const EVAA_LP_MAINNET_VERSION = 2;
22
+ export declare const EVAA_LP_MAINNET_VERSION = 3;
20
23
  export declare const ORACLES_MAINNET: OracleNFT[];
21
24
  export declare const ORACLES_TESTNET: OracleNFT[];
22
25
  export declare const ORACLES_LP: OracleNFT[];
@@ -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');
@@ -18,7 +22,7 @@ exports.MAINNET_VERSION = 6;
18
22
  exports.EVAA_MASTER_TESTNET = core_1.Address.parse('EQDLsg3w-iBj26Gww7neYoJAxiT2t77Zo8ro56b0yuHsPp3C');
19
23
  exports.TESTNET_VERSION = 0;
20
24
  exports.EVAA_LP_MAINNET = core_1.Address.parse('EQBIlZX2URWkXCSg3QF2MJZU-wC5XkBoLww-hdWk2G37Jc6N');
21
- exports.EVAA_LP_MAINNET_VERSION = 2;
25
+ exports.EVAA_LP_MAINNET_VERSION = 3;
22
26
  exports.ORACLES_MAINNET = [
23
27
  { id: 0, address: '0xd3a8c0b9fd44fd25a49289c631e3ac45689281f2f8cf0744400b4c65bed38e5d' },
24
28
  { id: 1, address: '0x2c21cabdaa89739de16bde7bc44e86401fac334a3c7e55305fe5e7563043e191' },
@@ -26,13 +30,10 @@ exports.ORACLES_MAINNET = [
26
30
  { id: 3, address: '0xf9a0769954b4430bca95149fb3d876deb7799d8f74852e0ad4ccc5778ce68b52' },
27
31
  ];
28
32
  exports.ORACLES_TESTNET = [
29
- { id: 0, address: '0x3bb147a37b7a7f874c39320440f352bddd2c9337e31a778731910f0266391650' },
30
- { id: 1, address: '0x676767e93b05a21aec9023a65f73cffe1c725709c3c964a7c3f0fd4229089bfe' },
31
- { id: 2, address: '0x9c9e65951b0c5920c286bdb3410babcaf21f85bc9c90c13172988630f1244e0f' },
32
- { id: 3, address: '0x9dcf880229bfb68d7344fd294624b64f1e0b43b9d858f0fdb1bc6434616c08f5' },
33
- { id: 4, address: '0x4d1afcf7c0426ca61c405c8cfaef0053a0f0d143740ffed04c8716beb99cd614' },
34
- { id: 5, address: '0x11c6baa608ed10733051fd74134441d384e471722fbc496b43ea4e3c6652485f' },
35
- { id: 6, address: '0x2b685672f38dc2fce59013bb740bf24c6037049a1c267bb3b5f6f55d5b195f5f' },
33
+ { id: 0, address: '0xd3a8c0b9fd44fd25a49289c631e3ac45689281f2f8cf0744400b4c65bed38e5d' },
34
+ { id: 1, address: '0x2c21cabdaa89739de16bde7bc44e86401fac334a3c7e55305fe5e7563043e191' },
35
+ { id: 2, address: '0x2eb258ce7b5d02466ab8a178ad8b0ba6ffa7b58ef21de3dc3b6dd359a1e16af0' },
36
+ { id: 3, address: '0xf9a0769954b4430bca95149fb3d876deb7799d8f74852e0ad4ccc5778ce68b52' },
36
37
  ];
37
38
  exports.ORACLES_LP = [
38
39
  { id: 0, address: '0xd3a8c0b9fd44fd25a49289c631e3ac45689281f2f8cf0744400b4c65bed38e5d' },
@@ -24,7 +24,7 @@ exports.TESTNET_POOL_CONFIG = {
24
24
  masterVersion: general_1.TESTNET_VERSION,
25
25
  masterConstants: general_1.MASTER_CONSTANTS,
26
26
  oracles: general_1.ORACLES_TESTNET,
27
- minimalOracles: 5,
27
+ minimalOracles: 3,
28
28
  poolAssetsConfig: [
29
29
  assets_1.TON_MAINNET,
30
30
  assets_1.JUSDT_TESTNET,
@@ -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
  };
@@ -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 poolConfig;
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.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
@@ -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,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);