@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.
- package/CHANGELOG.md +57 -17
- package/README.md +2 -1
- package/dist/api/math.d.ts +12 -2
- package/dist/api/math.js +56 -4
- package/dist/api/parser.js +48 -20
- package/dist/constants/assets.d.ts +9 -1
- package/dist/constants/assets.js +38 -9
- package/dist/constants/general.d.ts +18 -0
- package/dist/constants/general.js +20 -2
- package/dist/constants/pools.d.ts +7 -1
- package/dist/constants/pools.js +60 -26
- package/dist/index.d.ts +10 -3
- package/dist/index.js +26 -2
- package/dist/prices/PricesCollector.d.ts +2 -2
- package/dist/prices/PricesCollector.js +8 -6
- package/dist/prices/utils.js +1 -1
- package/dist/rewards/EvaaRewards.d.ts +10 -0
- package/dist/rewards/EvaaRewards.js +21 -0
- package/dist/rewards/JettonMinter.d.ts +30 -0
- package/dist/rewards/JettonMinter.js +83 -0
- package/dist/rewards/JettonWallet.d.ts +23 -0
- package/dist/rewards/JettonWallet.js +60 -0
- package/dist/rewards/RewardMaster.d.ts +26 -0
- package/dist/rewards/RewardMaster.js +83 -0
- package/dist/rewards/RewardUser.d.ts +23 -0
- package/dist/rewards/RewardUser.js +70 -0
- package/dist/types/MasterRewards.d.ts +13 -0
- package/dist/types/User.d.ts +11 -1
- package/dist/types/UserRewards.d.ts +10 -0
- package/dist/types/UserRewards.js +2 -0
- package/dist/utils/sha256BigInt.d.ts +2 -0
- package/dist/utils/sha256BigInt.js +9 -1
- package/dist/utils/userJettonWallet.js +17 -0
- package/package.json +42 -42
- package/src/api/math.ts +78 -3
- package/src/api/parser.ts +57 -22
- package/src/constants/assets.ts +117 -65
- package/src/constants/general.ts +33 -2
- package/src/constants/pools.ts +110 -28
- package/src/index.ts +24 -2
- package/src/prices/PricesCollector.ts +10 -6
- package/src/prices/utils.ts +1 -1
- package/src/rewards/EvaaRewards.ts +23 -0
- package/src/rewards/JettonMinter.ts +113 -0
- package/src/rewards/JettonWallet.ts +77 -0
- package/src/rewards/RewardMaster.ts +110 -0
- package/src/rewards/RewardUser.ts +90 -0
- package/src/types/Master.ts +1 -1
- package/src/types/MasterRewards.ts +13 -0
- package/src/types/User.ts +13 -3
- package/src/types/UserRewards.ts +10 -0
- package/src/utils/sha256BigInt.ts +8 -0
- package/src/utils/userJettonWallet.ts +43 -27
- package/dist/config.d.ts +0 -1
- package/dist/config.js +0 -4
- package/dist/constants.d.ts +0 -69
- package/dist/constants.js +0 -83
- package/dist/types/Common.d.ts +0 -14
- package/dist/utils/priceUtils.d.ts +0 -55
- package/dist/utils/priceUtils.js +0 -117
- /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(
|
|
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.
|
|
36
|
-
buidler.
|
|
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.
|
|
45
|
-
const bRate = BigInt(src.
|
|
46
|
-
const totalSupply = BigInt(src.
|
|
47
|
-
const totalBorrow = BigInt(src.
|
|
48
|
-
const lastAccural = BigInt(src.
|
|
49
|
-
const balance = BigInt(src.
|
|
50
|
-
const trackingSupplyIndex = BigInt(src.
|
|
51
|
-
const trackingBorrowIndex = BigInt(src.
|
|
52
|
-
const awaitedSupply = BigInt(src.
|
|
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
|
|
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 =
|
|
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.
|
|
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.
|
|
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)!,
|
|
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
|
-
|
|
345
|
-
|
|
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
|
}
|
package/src/constants/assets.ts
CHANGED
|
@@ -1,103 +1,109 @@
|
|
|
1
|
-
import { Address, Cell } from
|
|
2
|
-
import { PoolAssetConfig } from
|
|
3
|
-
import { sha256Hash } from
|
|
4
|
-
import { JETTON_WALLET_STANDART_CODE, JETTON_WALLET_STANDART_CODE_TESTNET, NULL_ADDRESS } from
|
|
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:
|
|
8
|
-
USDT:
|
|
9
|
-
jUSDT:
|
|
10
|
-
jUSDC:
|
|
11
|
-
stTON:
|
|
12
|
-
tsTON:
|
|
13
|
-
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:
|
|
19
|
-
USDT_STORM:
|
|
21
|
+
TON_STORM: sha256Hash('TON_STORM'),
|
|
22
|
+
USDT_STORM: sha256Hash('USDT_STORM'),
|
|
20
23
|
|
|
21
24
|
// ALTS
|
|
22
|
-
NOT:
|
|
23
|
-
DOGS:
|
|
24
|
-
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,
|
|
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,
|
|
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
|
-
'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'
|
|
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
|
-
|
|
81
|
-
|
|
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
|
+
};
|