@evaafi/sdk 0.6.2 → 0.6.3-b

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.
Files changed (61) hide show
  1. package/CHANGELOG.md +57 -17
  2. package/README.md +2 -1
  3. package/dist/api/math.d.ts +12 -2
  4. package/dist/api/math.js +56 -4
  5. package/dist/api/parser.js +48 -20
  6. package/dist/constants/assets.d.ts +9 -1
  7. package/dist/constants/assets.js +38 -9
  8. package/dist/constants/general.d.ts +18 -0
  9. package/dist/constants/general.js +20 -2
  10. package/dist/constants/pools.d.ts +7 -1
  11. package/dist/constants/pools.js +60 -26
  12. package/dist/index.d.ts +10 -3
  13. package/dist/index.js +26 -2
  14. package/dist/prices/PricesCollector.d.ts +2 -2
  15. package/dist/prices/PricesCollector.js +8 -6
  16. package/dist/prices/utils.js +1 -1
  17. package/dist/rewards/EvaaRewards.d.ts +10 -0
  18. package/dist/rewards/EvaaRewards.js +21 -0
  19. package/dist/rewards/JettonMinter.d.ts +30 -0
  20. package/dist/rewards/JettonMinter.js +83 -0
  21. package/dist/rewards/JettonWallet.d.ts +23 -0
  22. package/dist/rewards/JettonWallet.js +60 -0
  23. package/dist/rewards/RewardMaster.d.ts +26 -0
  24. package/dist/rewards/RewardMaster.js +83 -0
  25. package/dist/rewards/RewardUser.d.ts +23 -0
  26. package/dist/rewards/RewardUser.js +70 -0
  27. package/dist/types/MasterRewards.d.ts +13 -0
  28. package/dist/types/User.d.ts +11 -1
  29. package/dist/types/UserRewards.d.ts +10 -0
  30. package/dist/types/UserRewards.js +2 -0
  31. package/dist/utils/sha256BigInt.d.ts +2 -0
  32. package/dist/utils/sha256BigInt.js +9 -1
  33. package/dist/utils/userJettonWallet.js +17 -0
  34. package/package.json +42 -42
  35. package/src/api/math.ts +78 -3
  36. package/src/api/parser.ts +57 -22
  37. package/src/constants/assets.ts +117 -65
  38. package/src/constants/general.ts +33 -2
  39. package/src/constants/pools.ts +110 -28
  40. package/src/index.ts +24 -2
  41. package/src/prices/PricesCollector.ts +10 -6
  42. package/src/prices/utils.ts +1 -1
  43. package/src/rewards/EvaaRewards.ts +23 -0
  44. package/src/rewards/JettonMinter.ts +113 -0
  45. package/src/rewards/JettonWallet.ts +77 -0
  46. package/src/rewards/RewardMaster.ts +110 -0
  47. package/src/rewards/RewardUser.ts +90 -0
  48. package/src/types/Master.ts +1 -1
  49. package/src/types/MasterRewards.ts +13 -0
  50. package/src/types/User.ts +13 -3
  51. package/src/types/UserRewards.ts +10 -0
  52. package/src/utils/sha256BigInt.ts +8 -0
  53. package/src/utils/userJettonWallet.ts +43 -27
  54. package/dist/config.d.ts +0 -1
  55. package/dist/config.js +0 -4
  56. package/dist/constants.d.ts +0 -69
  57. package/dist/constants.js +0 -83
  58. package/dist/types/Common.d.ts +0 -14
  59. package/dist/utils/priceUtils.d.ts +0 -55
  60. package/dist/utils/priceUtils.js +0 -117
  61. /package/dist/types/{Common.js → MasterRewards.js} +0 -0
package/src/api/math.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  AgregatedBalances,
3
+ AssetApy,
3
4
  AssetConfig,
4
5
  AssetData,
5
6
  AssetInterest,
@@ -15,6 +16,7 @@ import {
15
16
  BalanceType,
16
17
  HealthParamsArgs,
17
18
  LiquidationData,
19
+ PredictAPYArgs,
18
20
  PredictHealthFactorArgs,
19
21
  UserBalance
20
22
  } from '../types/User';
@@ -53,6 +55,12 @@ export function calculatePresentValue(index: bigint, principalValue: bigint, mas
53
55
  return (principalValue * index) / masterConstants.FACTOR_SCALE;
54
56
  }
55
57
 
58
+ export function getAssetLiquidityMinusReserves(assetData: AssetData, masterConstants: MasterConstants) {
59
+ const total_supply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
60
+ const total_borrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
61
+ return bigIntMin(total_supply - total_borrow, assetData.balance);
62
+ }
63
+
56
64
  export function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants) {
57
65
  const now = BigInt(Math.floor(Date.now() / 1000));
58
66
  const timeElapsed = now - assetData.lastAccural;
@@ -109,9 +117,28 @@ export function calculateAssetData(
109
117
  };
110
118
  }
111
119
 
112
- export function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): AssetInterest {
120
+ export function calculateAssetInterest(
121
+ assetConfig: AssetConfig,
122
+ assetData: AssetData,
123
+ masterConstants: MasterConstants
124
+ ): AssetInterest {
113
125
  const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
114
126
  const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
127
+
128
+ return calculateInterestWithSupplyBorrow(
129
+ totalSupply,
130
+ totalBorrow,
131
+ assetConfig,
132
+ masterConstants
133
+ );
134
+ }
135
+
136
+ export function calculateInterestWithSupplyBorrow(
137
+ totalSupply: bigint,
138
+ totalBorrow: bigint,
139
+ assetConfig: AssetConfig,
140
+ masterConstants: MasterConstants
141
+ ): AssetInterest {
115
142
  let utilization = 0n;
116
143
  let supplyInterest = 0n;
117
144
  let borrowInterest = 0n;
@@ -147,6 +174,7 @@ export function calculateAssetInterest(assetConfig: AssetConfig, assetData: Asse
147
174
  };
148
175
  }
149
176
 
177
+
150
178
  export function checkNotInDebtAtAll(principals: Dictionary<bigint, bigint>): boolean {
151
179
  return principals.values().every(x => x >= 0n);
152
180
  }
@@ -250,10 +278,19 @@ export function getAvailableToBorrow(
250
278
  let borrowAmount = 0n;
251
279
 
252
280
  for (const assetID of principals.keys()) {
281
+ const principal = principals.get(assetID) as bigint;
282
+
283
+ if (principal == 0n) {
284
+ continue;
285
+ }
286
+
287
+ if (!prices.has(assetID)) {
288
+ return 0n;
289
+ }
290
+
253
291
  const assetConfig = assetsConfig.get(assetID) as AssetConfig;
254
292
  const assetData = assetsData.get(assetID) as ExtendedAssetData;
255
293
  const price = prices.get(assetID) as bigint;
256
- const principal = principals.get(assetID) as bigint;
257
294
 
258
295
  if (principal < 0n) {
259
296
  borrowAmount += mulDiv(calculatePresentValue(assetData.bRate, -principal, masterConstants), price, 10n ** assetConfig.decimals);
@@ -464,7 +501,6 @@ export function predictHealthFactor(args: PredictHealthFactorArgs): number {
464
501
 
465
502
  const assetConfig = args.assetsConfig.get(assetId)!;
466
503
  const assetPrice = Number(args.prices.get(assetId)!);
467
- const assetData = args.assetsData.get(assetId)!;
468
504
 
469
505
  let totalLimit = Number(healthParams.totalLimit);
470
506
  let totalBorrow = Number(healthParams.totalDebt);
@@ -493,3 +529,42 @@ const assetData = args.assetsData.get(assetId)!;
493
529
 
494
530
  return Math.min(Math.max(1 - totalBorrow / totalLimit, 0), 1); // let's limit a result to zero below and one above
495
531
  }
532
+
533
+ /**
534
+ * Predicts how APY will change as a result of one of the actions Borrow, Supply, Withdraw or Repay.
535
+ *
536
+ * Used on the front-end.
537
+ *
538
+ * @returns Estimated APYs for Supply and Borrow
539
+ */
540
+ export function predictAPY(args: PredictAPYArgs): AssetInterest & AssetApy {
541
+ const assetConfig = args.assetConfig;
542
+ const assetData = args.assetData;
543
+ const masterConstants = args.masterConstants;
544
+
545
+ let totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
546
+ let totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
547
+
548
+ const currentAmount = args.amount;
549
+ const changeType = args.balanceChangeType;
550
+
551
+ if (currentAmount != null && currentAmount != 0n) {
552
+ if (changeType == BalanceChangeType.Borrow) {
553
+ totalBorrow += currentAmount;
554
+ } else if (changeType == BalanceChangeType.Repay) {
555
+ totalBorrow -= currentAmount;
556
+ } else if (changeType == BalanceChangeType.Withdraw) {
557
+ totalSupply -= currentAmount;
558
+ } else if (changeType == BalanceChangeType.Supply) {
559
+ totalSupply += currentAmount;
560
+ }
561
+ }
562
+
563
+ const interest = calculateInterestWithSupplyBorrow(totalSupply, totalBorrow, assetConfig, masterConstants);
564
+
565
+ return {
566
+ ...interest,
567
+ supplyApy: (1 + (Number(interest.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1,
568
+ borrowApy: (1 + (Number(interest.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1
569
+ }
570
+ }
package/src/api/parser.ts CHANGED
@@ -7,11 +7,13 @@ import {
7
7
  calculateLiquidationData,
8
8
  calculateMaximumWithdrawAmount,
9
9
  calculatePresentValue,
10
+ getAssetLiquidityMinusReserves,
10
11
  getAvailableToBorrow,
11
12
  presentValue,
12
13
  } from './math';
13
14
  import { loadMaybeMyRef, loadMyRef } from './helpers';
14
15
  import { BalanceType, UserBalance, UserData, UserLiteData, UserRewards } from '../types/User';
16
+ import { checkNotInDebtAtAll } from "../api/math";
15
17
 
16
18
  export function createUserRewards(): DictionaryValue<UserRewards> {
17
19
  return {
@@ -32,8 +34,8 @@ export function createAssetData(): DictionaryValue<AssetData> {
32
34
  serialize: (src: any, buidler: any) => {
33
35
  buidler.storeUint(src.sRate, 64);
34
36
  buidler.storeUint(src.bRate, 64);
35
- buidler.storeUint(src.totalSupply, 64);
36
- buidler.storeUint(src.totalBorrow, 64);
37
+ buidler.storeInt(src.totalSupply, 64);
38
+ buidler.storeInt(src.totalBorrow, 64);
37
39
  buidler.storeUint(src.lastAccural, 32);
38
40
  buidler.storeUint(src.balance, 64);
39
41
  buidler.storeUint(src.trackingSupplyIndex, 64);
@@ -41,15 +43,15 @@ export function createAssetData(): DictionaryValue<AssetData> {
41
43
  buidler.storeUint(src.awaitedSupply, 64);
42
44
  },
43
45
  parse: (src: Slice) => {
44
- const sRate = BigInt(src.loadInt(64));
45
- const bRate = BigInt(src.loadInt(64));
46
- const totalSupply = BigInt(src.loadInt(64));
47
- const totalBorrow = BigInt(src.loadInt(64));
48
- const lastAccural = BigInt(src.loadInt(32));
49
- const balance = BigInt(src.loadInt(64));
50
- const trackingSupplyIndex = BigInt(src.loadUint(64));
51
- const trackingBorrowIndex = BigInt(src.loadUint(64));
52
- const awaitedSupply = BigInt(src.loadUint(64));
46
+ const sRate = BigInt(src.loadUintBig(64));
47
+ const bRate = BigInt(src.loadUintBig(64));
48
+ const totalSupply = BigInt(src.loadIntBig(64));
49
+ const totalBorrow = BigInt(src.loadIntBig(64));
50
+ const lastAccural = BigInt(src.loadUintBig(32));
51
+ const balance = BigInt(src.loadUintBig(64));
52
+ const trackingSupplyIndex = BigInt(src.loadUintBig(64));
53
+ const trackingBorrowIndex = BigInt(src.loadUintBig(64));
54
+ const awaitedSupply = BigInt(src.loadUintBig(64));
53
55
 
54
56
  return { sRate, bRate, totalSupply, totalBorrow, lastAccural, balance, trackingSupplyIndex, trackingBorrowIndex, awaitedSupply};
55
57
  },
@@ -208,7 +210,8 @@ export function parseUserLiteData(
208
210
  const codeVersion = userSlice.loadCoins();
209
211
  const masterAddress = userSlice.loadAddress();
210
212
  const userAddress = userSlice.loadAddress();
211
- const principalsDict = userSlice.loadDict(Dictionary.Keys.BigUint(256), Dictionary.Values.BigInt(64));
213
+ const realPrincipals = userSlice.loadDict(Dictionary.Keys.BigUint(256), Dictionary.Values.BigInt(64));
214
+ const principalsDict = Dictionary.empty(Dictionary.Keys.BigUint(256), Dictionary.Values.BigInt(64));
212
215
  const userState = userSlice.loadInt(64);
213
216
 
214
217
  let trackingSupplyIndex = 0n;
@@ -237,7 +240,7 @@ export function parseUserLiteData(
237
240
  const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
238
241
  const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
239
242
 
240
- let principal = principalsDict.get(asset.assetId) || 0n;
243
+ let principal = realPrincipals.get(asset.assetId) || 0n;
241
244
  let balance = presentValue(assetData.sRate, assetData.bRate, principal, masterConstants);
242
245
 
243
246
  if (applyDust && (principal > 0 && (principal < assetConfig.dust))) {
@@ -247,6 +250,8 @@ export function parseUserLiteData(
247
250
  type: BalanceType.supply,
248
251
  };
249
252
  principalsDict.set(asset.assetId, 0n);
253
+ } else {
254
+ principalsDict.set(asset.assetId, principal);
250
255
  }
251
256
  userBalances.set(asset.assetId, balance);
252
257
  }
@@ -257,12 +262,14 @@ export function parseUserLiteData(
257
262
  masterAddress: masterAddress,
258
263
  ownerAddress: userAddress,
259
264
  principals: principalsDict,
265
+ realPrincipals: realPrincipals,
260
266
  state: userState,
261
267
  balances: userBalances,
262
268
  trackingSupplyIndex: trackingSupplyIndex,
263
269
  trackingBorrowIndex: trackingBorrowIndex,
264
270
  dutchAuctionStart: dutchAuctionStart,
265
271
  backupCell: backupCell,
272
+ fullyParsed: false,
266
273
 
267
274
  rewards: rewards,
268
275
  backupCell1: backupCell1,
@@ -278,6 +285,9 @@ export function parseUserData(
278
285
  poolConfig: PoolConfig,
279
286
  applyDust: boolean = false
280
287
  ): UserData {
288
+ userLiteData.fullyParsed = true;
289
+ let havePrincipalWithoutPrice = false;
290
+
281
291
  const poolAssetsConfig = poolConfig.poolAssetsConfig;
282
292
  const masterConstants = poolConfig.masterConstants;
283
293
 
@@ -287,6 +297,16 @@ export function parseUserData(
287
297
  let supplyBalance = 0n;
288
298
  let borrowBalance = 0n;
289
299
 
300
+ for (const [assetId, principal] of userLiteData.realPrincipals) {
301
+ if (!prices.has(assetId)) {
302
+ userLiteData.fullyParsed = false;
303
+
304
+ if (principal != 0n) {
305
+ havePrincipalWithoutPrice = true;
306
+ }
307
+ }
308
+ }
309
+
290
310
  for (const [_, asset] of Object.entries(poolAssetsConfig)) {
291
311
  const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
292
312
  const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
@@ -303,6 +323,10 @@ export function parseUserData(
303
323
  }
304
324
 
305
325
  for (const [_, asset] of Object.entries(poolAssetsConfig)) {
326
+ if (!prices.has(asset.assetId)) {
327
+ continue;
328
+ }
329
+
306
330
  const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
307
331
  const balance = userLiteData.balances.get(asset.assetId) as UserBalance;
308
332
 
@@ -314,22 +338,30 @@ export function parseUserData(
314
338
  }
315
339
  }
316
340
 
317
- const availableToBorrow = getAvailableToBorrow(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
341
+ const availableToBorrow = getAvailableToBorrow(assetsConfig, assetsData, userLiteData.realPrincipals, prices, masterConstants);
342
+
318
343
  for (const [_, asset] of Object.entries(poolAssetsConfig)) {
344
+ const balance = userLiteData.balances.get(asset.assetId) as UserBalance;
319
345
  const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
320
346
  const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
321
- const balance = userLiteData.balances.get(asset.assetId) as UserBalance;
322
347
 
348
+ const assetLiquidityMinusReserves = getAssetLiquidityMinusReserves(assetData, masterConstants);
349
+
323
350
  if (balance.type === BalanceType.supply) {
324
351
  withdrawalLimits.set(
325
352
  asset.assetId,
326
- bigIntMin(calculateMaximumWithdrawAmount(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants, asset.assetId), assetData.balance)
353
+ bigIntMin(calculateMaximumWithdrawAmount(assetsConfig, assetsData, userLiteData.realPrincipals, prices, masterConstants, asset.assetId), assetData.balance)
327
354
  );
328
355
  }
329
356
 
357
+ if (!prices.has(asset.assetId)) {
358
+ borrowLimits.set(asset.assetId, 0n);
359
+ continue;
360
+ }
361
+
330
362
  borrowLimits.set(
331
363
  asset.assetId,
332
- bigIntMax(0n, bigIntMin((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId)!, assetData.balance, assetData.totalSupply - assetData.totalBorrow)),
364
+ bigIntMax(0n, bigIntMin((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId)!, assetLiquidityMinusReserves)),
333
365
  );
334
366
  }
335
367
 
@@ -339,12 +371,14 @@ export function parseUserData(
339
371
  ? 0
340
372
  : Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
341
373
 
342
- const liquidationData = calculateLiquidationData(assetsConfig, assetsData, userLiteData.principals, prices, poolConfig);
343
374
  let healthFactor = 1;
344
- if (liquidationData.totalLimit != 0n) {
345
- healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
346
- }
347
-
375
+ let liquidationData;
376
+ if (!havePrincipalWithoutPrice) {
377
+ liquidationData = calculateLiquidationData(assetsConfig, assetsData, userLiteData.realPrincipals, prices, poolConfig);
378
+ if (liquidationData.totalLimit != 0n) {
379
+ healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
380
+ }
381
+ }
348
382
  return {
349
383
  ...userLiteData,
350
384
  withdrawalLimits: withdrawalLimits,
@@ -356,5 +390,6 @@ export function parseUserData(
356
390
  limitUsed: limitUsed,
357
391
  liquidationData: liquidationData,
358
392
  healthFactor: healthFactor,
393
+ havePrincipalWithoutPrice: havePrincipalWithoutPrice
359
394
  };
360
395
  }
@@ -1,103 +1,109 @@
1
- import { Address, Cell } from "@ton/core";
2
- import { PoolAssetConfig } from "../types/Master";
3
- import { sha256Hash } from "../utils/sha256BigInt";
4
- import { JETTON_WALLET_STANDART_CODE, JETTON_WALLET_STANDART_CODE_TESTNET, NULL_ADDRESS } from "./general";
1
+ import { Address, Cell } from '@ton/core';
2
+ import { PoolAssetConfig } from '../types/Master';
3
+ import { sha256Hash } from '../utils/sha256BigInt';
4
+ import { JETTON_WALLET_STANDART_CODE, JETTON_WALLET_STANDART_CODE_TESTNET, NULL_ADDRESS } from './general';
5
5
 
6
6
  export const ASSET_ID = {
7
- TON: sha256Hash('TON'),
8
- USDT: sha256Hash('USDT'),
9
- jUSDT: sha256Hash('jUSDT'),
10
- jUSDC: sha256Hash('jUSDC'),
11
- stTON: sha256Hash('stTON'),
12
- tsTON: sha256Hash('tsTON'),
13
- uTON: sha256Hash('uTON'),
7
+ TON: sha256Hash('TON'),
8
+ USDT: sha256Hash('USDT'),
9
+ jUSDT: sha256Hash('jUSDT'),
10
+ jUSDC: sha256Hash('jUSDC'),
11
+ stTON: sha256Hash('stTON'),
12
+ tsTON: sha256Hash('tsTON'),
13
+ uTON: sha256Hash('uTON'),
14
+ tgBTC: sha256Hash('tgBTC'),
15
+ USDe: sha256Hash('USDe'),
16
+ tsUSDe: sha256Hash('tsUSDe'),
14
17
 
15
18
  // LP
16
19
  TONUSDT_DEDUST: sha256Hash('TONUSDT_DEDUST'),
17
20
  TONUSDT_STONFI: sha256Hash('TONUSDT_STONFI'),
18
- TON_STORM: sha256Hash('TON_STORM'),
19
- USDT_STORM: sha256Hash('USDT_STORM'),
21
+ TON_STORM: sha256Hash('TON_STORM'),
22
+ USDT_STORM: sha256Hash('USDT_STORM'),
20
23
 
21
24
  // ALTS
22
- NOT: sha256Hash('NOT'),
23
- DOGS: sha256Hash('DOGS'),
24
- CATI: sha256Hash('CATI'),
25
+ NOT: sha256Hash('NOT'),
26
+ DOGS: sha256Hash('DOGS'),
27
+ CATI: sha256Hash('CATI'),
28
+
29
+ // Testnet assets
30
+ EUSDT: sha256Hash('EUSDT'),
25
31
  };
26
32
 
27
- export const UNDEFINED_ASSET: PoolAssetConfig = {
33
+ export const UNDEFINED_ASSET: PoolAssetConfig = {
28
34
  name: 'undefined_asset',
29
35
  assetId: -1n,
30
- jettonMasterAddress: NULL_ADDRESS, // fake
31
- jettonWalletCode: Cell.EMPTY
32
- }
36
+ jettonMasterAddress: NULL_ADDRESS, // fake
37
+ jettonWalletCode: Cell.EMPTY,
38
+ };
33
39
 
34
- export const TON_MAINNET: PoolAssetConfig = {
40
+ export const TON_MAINNET: PoolAssetConfig = {
35
41
  name: 'TON',
36
42
  assetId: ASSET_ID.TON,
37
- jettonMasterAddress: NULL_ADDRESS, // fake
38
- jettonWalletCode: Cell.EMPTY
39
- }
43
+ jettonMasterAddress: NULL_ADDRESS, // fake
44
+ jettonWalletCode: Cell.EMPTY,
45
+ };
40
46
  export const TON_TESTNET = TON_MAINNET;
41
47
 
42
- export const JUSDT_MAINNET: PoolAssetConfig = {
48
+ export const JUSDT_MAINNET: PoolAssetConfig = {
43
49
  name: 'jUSDT',
44
50
  assetId: ASSET_ID.jUSDT,
45
51
  jettonMasterAddress: Address.parse('EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA'),
46
- jettonWalletCode: JETTON_WALLET_STANDART_CODE
47
- }
52
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE,
53
+ };
48
54
 
49
- export const JUSDC_MAINNET: PoolAssetConfig = {
55
+ export const JUSDC_MAINNET: PoolAssetConfig = {
50
56
  name: 'jUSDC',
51
57
  assetId: ASSET_ID.jUSDC,
52
58
  jettonMasterAddress: Address.parse('EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728'),
53
- jettonWalletCode: JETTON_WALLET_STANDART_CODE
54
- }
59
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE,
60
+ };
55
61
 
56
- export const STTON_MAINNET: PoolAssetConfig = {
62
+ export const STTON_MAINNET: PoolAssetConfig = {
57
63
  name: 'stTON',
58
64
  assetId: ASSET_ID.stTON,
59
65
  jettonMasterAddress: Address.parse('EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k'),
60
66
  jettonWalletCode: Cell.fromBase64(
61
- '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'
62
- )
63
- }
67
+ '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',
68
+ ),
69
+ };
64
70
 
65
- export const TSTON_MAINNET: PoolAssetConfig = {
71
+ export const TSTON_MAINNET: PoolAssetConfig = {
66
72
  name: 'tsTON',
67
73
  assetId: ASSET_ID.tsTON,
68
74
  jettonMasterAddress: Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
69
75
  jettonWalletCode: Cell.fromBase64(
70
- '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'
71
- )
72
- }
76
+ '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',
77
+ ),
78
+ };
73
79
 
74
- export const USDT_MAINNET: PoolAssetConfig = {
80
+ export const USDT_MAINNET: PoolAssetConfig = {
75
81
  name: 'USDT',
76
82
  assetId: ASSET_ID.USDT,
77
83
  jettonMasterAddress: Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'),
78
84
  jettonWalletCode: Cell.fromBoc(
79
85
  Buffer.from(
80
- 'b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e',
81
- 'hex'
82
- )
86
+ 'b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e',
87
+ 'hex',
88
+ ),
83
89
  )[0],
84
- }
90
+ };
85
91
 
86
- export const JUSDT_TESTNET: PoolAssetConfig = {
92
+ export const JUSDT_TESTNET: PoolAssetConfig = {
87
93
  name: 'jUSDT',
88
94
  assetId: ASSET_ID.jUSDT,
89
95
  jettonMasterAddress: Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
90
- jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET
91
- }
96
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET,
97
+ };
92
98
 
93
- export const JUSDC_TESTNET: PoolAssetConfig = {
99
+ export const JUSDC_TESTNET: PoolAssetConfig = {
94
100
  name: 'jUSDC',
95
101
  assetId: ASSET_ID.jUSDC,
96
102
  jettonMasterAddress: Address.parse('kQDaY5yUatYnHei73HBqRX_Ox9LK2XnR7XuCY9MFC2INbfYI'),
97
- jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET
98
- }
103
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET,
104
+ };
99
105
 
100
- export const STTON_TESTNET: PoolAssetConfig = {
106
+ export const STTON_TESTNET: PoolAssetConfig = {
101
107
  name: 'stTON',
102
108
  assetId: ASSET_ID.stTON,
103
109
  jettonMasterAddress: Address.parse('kQC3Duw3dg8k98xf5S7Bm7YOWVJ5QW8hm3iLqFfJfa_g9h07'),
@@ -107,7 +113,7 @@ export const STTON_TESTNET: PoolAssetConfig = {
107
113
  'hex',
108
114
  ),
109
115
  )[0],
110
- }
116
+ };
111
117
 
112
118
  export const TONUSDT_DEDUST_MAINNET: PoolAssetConfig = {
113
119
  name: 'TONUSDT_DEDUST',
@@ -119,9 +125,9 @@ export const TONUSDT_DEDUST_MAINNET: PoolAssetConfig = {
119
125
  'hex',
120
126
  ),
121
127
  )[0],
122
- }
128
+ };
123
129
 
124
- export const TON_STORM_MAINNET: PoolAssetConfig = {
130
+ export const TON_STORM_MAINNET: PoolAssetConfig = {
125
131
  name: 'TON_STORM',
126
132
  assetId: ASSET_ID.TON_STORM,
127
133
  jettonMasterAddress: Address.parse('EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F'),
@@ -131,10 +137,9 @@ export const TON_STORM_MAINNET: PoolAssetConfig = {
131
137
  'hex',
132
138
  ),
133
139
  )[0],
140
+ };
134
141
 
135
- }
136
-
137
- export const USDT_STORM_MAINNET: PoolAssetConfig = {
142
+ export const USDT_STORM_MAINNET: PoolAssetConfig = {
138
143
  name: 'USDT_STORM',
139
144
  assetId: ASSET_ID.USDT_STORM,
140
145
  jettonMasterAddress: Address.parse('EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW'),
@@ -144,9 +149,9 @@ export const USDT_STORM_MAINNET: PoolAssetConfig = {
144
149
  'hex',
145
150
  ),
146
151
  )[0],
147
- }
152
+ };
148
153
 
149
- export const CATI_MAINNET: PoolAssetConfig = {
154
+ export const CATI_MAINNET: PoolAssetConfig = {
150
155
  name: 'CATI',
151
156
  assetId: ASSET_ID.CATI,
152
157
  jettonMasterAddress: Address.parse('EQD-cvR0Nz6XAyRBvbhz-abTrRC6sI5tvHvvpeQraV9UAAD7'),
@@ -156,9 +161,9 @@ export const CATI_MAINNET: PoolAssetConfig = {
156
161
  'hex',
157
162
  ),
158
163
  )[0],
159
- }
164
+ };
160
165
 
161
- export const DOGS_MAINNET: PoolAssetConfig = {
166
+ export const DOGS_MAINNET: PoolAssetConfig = {
162
167
  name: 'DOGS',
163
168
  assetId: ASSET_ID.DOGS,
164
169
  jettonMasterAddress: Address.parse('EQCvxJy4eG8hyHBFsZ7eePxrRsUQSFE_jpptRAYBmcG_DOGS'),
@@ -168,9 +173,9 @@ export const DOGS_MAINNET: PoolAssetConfig = {
168
173
  'hex',
169
174
  ),
170
175
  )[0],
171
- }
176
+ };
172
177
 
173
- export const NOT_MAINNET: PoolAssetConfig = {
178
+ export const NOT_MAINNET: PoolAssetConfig = {
174
179
  name: 'NOT',
175
180
  assetId: ASSET_ID.NOT,
176
181
  jettonMasterAddress: Address.parse('EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOT'),
@@ -180,9 +185,9 @@ export const NOT_MAINNET: PoolAssetConfig = {
180
185
  'hex',
181
186
  ),
182
187
  )[0],
183
- }
188
+ };
184
189
 
185
- export const UTON_MAINNET: PoolAssetConfig = {
190
+ export const UTON_MAINNET: PoolAssetConfig = {
186
191
  name: 'uTON',
187
192
  assetId: ASSET_ID.uTON,
188
193
  jettonMasterAddress: Address.parse('EQAfF5j3JMIpZlLmACv7Ub7RH7WmiVMuV4ivcgNYHvNnqHTz'),
@@ -192,5 +197,52 @@ export const UTON_MAINNET: PoolAssetConfig = {
192
197
  'hex',
193
198
  ),
194
199
  )[0],
195
- }
200
+ };
196
201
 
202
+ export const TGBTC_TESTNET: PoolAssetConfig = {
203
+ name: 'tgBTC',
204
+ assetId: ASSET_ID.tgBTC,
205
+ jettonMasterAddress: Address.parse('kQDoy1cUAbGq253vwfoPcqSloODVAWkDBniR12PJFUHnK6Yf'),
206
+ jettonWalletCode: Cell.fromBoc(
207
+ Buffer.from(
208
+ 'b5ee9c72010210010003ac000114ff00f4a413f4bcf2c80b01020162020302f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce03304050201200e0f01f603d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d1521ac705f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa002020d70b009ad74bc00101c001b0f2b19130e206025c228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce0135f038210d372158cbadc840ff2f008090174c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370700bc2191729171e2f839206e938123289120e2216e94318127109101e2f82f5005a05023a812a0738103a370f83ca00170f836a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5403e6ed44d0d303fa00fa40fa40d107d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020a0b0c01d2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f404d120206ef271d0d74bc000018100f8beb0f2b15152a15249c705f2e04927c2fff2afc882107bdd97de01cb1f500301cb3f01fa0222cf1601cf1612f400c9c8801801cb0526cf1670fa02017158cb6accc9030d0060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb00007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb0059002003c8cb0358fa0201cf1601cf16c9ed54006cf839206e9430811770de728106f170f8380170f836a0811b5870f836a0bcf2b0028050fb000303c8cb0358fa0201cf1601cf16c9ed540027bfd8176a2686981fd007d207d206899fc15209840021bc508f6a2686981fd007d207d2068af81c',
209
+ 'hex',
210
+ ),
211
+ )[0],
212
+ };
213
+
214
+ export const EUSDT_TESTNET: PoolAssetConfig = {
215
+ name: 'EUSDT',
216
+ assetId: ASSET_ID.EUSDT,
217
+ jettonMasterAddress: Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
218
+ jettonWalletCode: Cell.fromBoc(
219
+ Buffer.from(
220
+ 'b5ee9c7201021101000323000114ff00f4a413f4bcf2c80b0102016202030202cc0405001ba0f605da89a1f401f481f481a8610201d40607020120080900c30831c02497c138007434c0c05c6c2544d7c0fc03383e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7e08403e29fa954882ea54c4d167c0278208405e3514654882ea58c511100fc02b80d60841657c1ef2ea4d67c02f817c12103fcbc2000113e910c1c2ebcb853600201200a0b0083d40106b90f6a2687d007d207d206a1802698fc1080bc6a28ca9105d41083deecbef09dd0958f97162e99f98fd001809d02811e428027d012c678b00e78b6664f6aa401f1503d33ffa00fa4021f001ed44d0fa00fa40fa40d4305136a1522ac705f2e2c128c2fff2e2c254344270542013541403c85004fa0258cf1601cf16ccc922c8cb0112f400f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f40431fa0020d749c200f2e2c4778018c8cb055008cf1670fa0217cb6b13cc80c0201200d0e009e8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a08209c9c380a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5402f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a019ad822860822625a028062849e5c412440e0dd7c138c34975c2c0600f1000d73b51343e803e903e90350c01f4cffe803e900c145468549271c17cb8b049f0bffcb8b08160824c4b402805af3cb8b0e0841ef765f7b232c7c572cfd400fe8088b3c58073c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b552000705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023007cc30023c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed54',
221
+ 'hex',
222
+ ),
223
+ )[0],
224
+ };
225
+
226
+ export const USDE_MAINNET: PoolAssetConfig = {
227
+ name: 'USDe',
228
+ assetId: ASSET_ID.USDe,
229
+ jettonMasterAddress: Address.parse('EQAIb6KmdfdDR7CN1GBqVJuP25iCnLKCvBlJ07Evuu2dzP5f'),
230
+ jettonWalletCode: Cell.fromBoc(
231
+ Buffer.from(
232
+ 'b5ee9c7201020f010003f0000114ff00f4a413f4bcf2c80b01020162020302f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce03304050201200d0e01f603d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15305c705531ac7052571b0c00021b1f2ad523cc705500bb1f2e0495126a120c2fff2af04fa40f401fa002020d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0222cf1601cf1626fa025007cf160602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080901d0c9088e1533c8801801cb0523cf1670fa0250077158cb6accc98e4af82a54244070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d0c8801801cb0501cf1670fa024018775003cb6bccccc9e245370700b62191729171e2f839206e938124b89120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb00430003c8cb0358fa0201cf1601cf16c9ed5403f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020a0b0c01f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081180fde718102f270f8380170f836a0811ba470f836a0bcf2b0028050fb00030c0060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb00007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb0059002003c8cb0358fa0201cf1601cf16c9ed540027bfd8176a2686981fd007d207d206899fc15209840021bc508f6a2686981fd007d207d2068af81c',
233
+ 'hex',
234
+ ),
235
+ )[0],
236
+ };
237
+
238
+ export const TSUSDE_MAINNET: PoolAssetConfig = {
239
+ name: 'tsUSDe',
240
+ assetId: ASSET_ID.tsUSDe,
241
+ jettonMasterAddress: Address.parse('EQDQ5UUyPHrLcQJlPAczd_fjxn8SLrlNQwolBznxCdSlfQwr'),
242
+ jettonWalletCode: Cell.fromBoc(
243
+ Buffer.from(
244
+ 'b5ee9c72010219010006bf000114ff00f4a413f4bcf2c80b01020162020302f6d001d0d3030171b08ef0135f038020d721ed44d0d303fa00fa40fa40fa00d33fd106d31f01840f218210178d4519ba228210b2583ed5bab12282107bdd97debab1f2f4018040d721fa0030218210178d4519ba0282107bdd97deba12b18e19a0550405c8cb035004fa0258cf1601cf1601fa02cb3fc9ed54e30de004050201201516003614a004413505c8cb035004fa0258cf1601cf1601fa02cb3fc9ed5404a0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0208210d750cec9ba8e85303459db3ce033228210178d4519ba8e84325adb3ce0228210b2583ed5ba0607080901ec03d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40fa00d33fd15327c705533cc7052771b0c00021b1f2ad525ec705500db1f2e0495148a120c2fff2af06fa40f401fa002020d70b009ad74bc00101c001b0f2b19130e22d8e1170c80101ca0001cf16c971c8cb00ccc9d0de70c80a01f603d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40fa00d33fd15228c705532bc7052671b0c00021b1f2ad524dc705500cb1f2e049f82327bcf2e14e0af2e04b5196a120c2fff2af04fa40f401fa002020d70b009ad74bc00101c001b0f2b19130e27fc80101ca0001cf16c971c8cb00ccc9d00d01f4ed44d0d303fa00fa40fa40fa00d33fd12572b0c002f26d09d33f0101fa005161a006d33f31fa40fa40536cc705f82a5464907054700020103510241037102605c8cb035004fa0258cf1601cf1601fa02cb3fc921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500ec7051db1f2e04a0bfa00210f02d88e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e3b30018040d721d303d1ed44d0d303fa00fa40fa40fa00d33fd1355161c705f2e04a1045551205c8cb035004fa0258cf1601cf1601fa02cb3fc9ed54e06c218210d372158cbadc840ff2f0111202fe8210178d451901cb1f500d01cb3f500bfa021bcb3f24cf1601cf1629fa025008cf16c90a8e57f82a5426607054700020103510241037102605c8cb035004fa0258cf1601cf1601fa02cb3fc921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d0c8801801cb0501cf1670fa02401a775003cb6bccccc9e30d0b0c002a35c8801801cb0525cf1670fa0250097158cb6accc900cc47692191729171e2f839206e938126e29120e2216e9431812a169101e25023a813a0738103e770f83ca00270f83612a00170f836a07381044d82100966018070f837a0bcf2b0068050fb00103510340205c8cb035004fa0258cf1601cf1601fa02cb3fc9ed5401fe70c88210b2583ed501cb1f500b01cb3f5009fa0219cb3f22cf1601cf1627fa025006cf16c9c8801801cb0529cf1670fa02017158cb6accc947692191729171e2f839206e938126e29120e2216e9431812a169101e25023a813a0738103e770f83ca00270f83612a00170f836a07381044d82100966018070f837a0bcf2b0060e003c8050fb001035443005c8cb035004fa0258cf1601cf1601fa02cb3fc9ed5401be8e30c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0526cf1658fa02017158cb6accc98011fb00925f04e228d70b01c000b396301027353530e30d55300505c8cb035004fa0258cf1601cf1601fa02cb3fc9ed541000825076a1f82fa07381044d82100966018070f837b60972fb02c8801001cb055007cf1670fa027001cb6a8210d53276db01cb1f500401cb3fc9810082fb001024102301b8ed44d0d303fa00fa40fa40fa00d33fd1302472b0c002f26d08d33f0101fa00d33f50b2a001fa4031fa4030523ac705f2e04a28d70b01c000b39710381027365f03e30d55300505c8cb035004fa0258cf1601cf1601fa02cb3fc9ed541301f6ed44d0d303fa00fa40fa40fa00d33fd108d33f0101fa00fa40f401d15161a1524ac705f2e04928c2fff2afc882107bdd97de01cb1f5801cb3f01fa0223cf165004cf16c9c8801801cb0522cf1670fa02017158cb6accc905f839206e943081187fde718102f270f8380170f836a081203770f836a0bcf2b004805014007e5076a1f82fa07381044d82100966018070f837b60972fb02c8801001cb055007cf1670fa027001cb6a8210d53276db01cb1f500501cb3fc9810082fb0010340036fb0045130205c8cb035004fa0258cf1601cf1601fa02cb3fc9ed5402015817180029bc508f6a2686981fd007d207d207d00699fe8af82c0029b74e5da89a1a607f401f481f481f401a67fa2d88500031b7605da89a1a607f401f481f481f401a67fa2b667f05482610',
245
+ 'hex',
246
+ ),
247
+ )[0],
248
+ };