@evaafi/sdk 0.5.3 → 0.5.5
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.d.ts +11 -8
- package/dist/api/math.js +77 -35
- package/dist/api/parser.d.ts +4 -4
- package/dist/api/parser.js +42 -50
- package/dist/api/prices.d.ts +1 -1
- package/dist/api/prices.js +5 -5
- package/dist/constants/assets.d.ts +16 -0
- package/dist/constants/assets.js +77 -0
- package/dist/constants/general.d.ts +38 -0
- package/dist/constants/general.js +41 -0
- package/dist/constants/pools.d.ts +5 -0
- package/dist/constants/pools.js +60 -0
- package/dist/contracts/MasterContract.d.ts +13 -11
- package/dist/contracts/MasterContract.js +39 -35
- package/dist/contracts/UserContract.d.ts +6 -7
- package/dist/contracts/UserContract.js +13 -13
- package/dist/index.d.ts +6 -3
- package/dist/index.js +44 -11
- package/dist/types/Master.d.ts +32 -2
- package/dist/types/User.d.ts +4 -3
- package/dist/utils/userJettonWallet.d.ts +2 -1
- package/dist/utils/userJettonWallet.js +45 -61
- package/package.json +9 -1
- package/src/api/math.ts +106 -39
- package/src/api/parser.ts +54 -65
- package/src/api/prices.ts +5 -5
- package/src/constants/assets.ts +117 -0
- package/src/constants/general.ts +54 -0
- package/src/constants/pools.ts +63 -0
- package/src/contracts/MasterContract.ts +51 -43
- package/src/contracts/UserContract.ts +22 -19
- package/src/index.ts +32 -3
- package/src/types/Master.ts +37 -2
- package/src/types/User.ts +4 -3
- package/src/utils/userJettonWallet.ts +67 -63
- package/src/constants.ts +0 -127
package/dist/api/math.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import { AssetConfig, AssetData, AssetInterest, ExtendedAssetData } from '../types/Master';
|
|
1
|
+
import { AssetConfig, AssetData, AssetInterest, ExtendedAssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants } from '../types/Master';
|
|
2
2
|
import { Dictionary } from '@ton/core';
|
|
3
3
|
import { LiquidationData, PredictHealthFactorArgs, UserBalance } from '../types/User';
|
|
4
4
|
export declare function mulFactor(decimal: bigint, a: bigint, b: bigint): bigint;
|
|
5
5
|
export declare function mulDiv(x: bigint, y: bigint, z: bigint): bigint;
|
|
6
|
+
export declare function mulDivC(x: bigint, y: bigint, z: bigint): bigint;
|
|
6
7
|
export declare function bigIntMax(...args: bigint[]): bigint;
|
|
7
8
|
export declare function bigIntMin(...args: bigint[]): bigint;
|
|
8
|
-
export declare function calculatePresentValue(index: bigint, principalValue: bigint): bigint;
|
|
9
|
-
export declare function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData): {
|
|
9
|
+
export declare function calculatePresentValue(index: bigint, principalValue: bigint, masterConstants: MasterConstants): bigint;
|
|
10
|
+
export declare function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): {
|
|
10
11
|
sRate: bigint;
|
|
11
12
|
bRate: bigint;
|
|
12
13
|
supplyInterest: bigint;
|
|
13
14
|
borrowInterest: bigint;
|
|
14
15
|
now: bigint;
|
|
15
16
|
};
|
|
16
|
-
export declare function calculateAssetData(assetsConfigDict:
|
|
17
|
-
export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData): AssetInterest;
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
17
|
+
export declare function calculateAssetData(assetsConfigDict: ExtendedAssetsConfig, assetsDataDict: Dictionary<bigint, AssetData>, assetId: bigint, masterConstants: MasterConstants): ExtendedAssetData;
|
|
18
|
+
export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): AssetInterest;
|
|
19
|
+
export declare function checkNotInDebtAtAll(principals: Dictionary<bigint, bigint>): boolean;
|
|
20
|
+
export declare function calculateMaximumWithdrawAmount(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants, assetId: bigint): bigint;
|
|
21
|
+
export declare function getAvailableToBorrow(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): bigint;
|
|
22
|
+
export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint, masterConstants: MasterConstants): UserBalance;
|
|
23
|
+
export declare function calculateLiquidationData(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): LiquidationData;
|
|
21
24
|
export declare function predictHealthFactor(args: PredictHealthFactorArgs): number;
|
package/dist/api/math.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.predictHealthFactor = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMin = exports.bigIntMax = exports.mulDiv = exports.mulFactor = void 0;
|
|
4
|
-
const constants_1 = require("../constants");
|
|
3
|
+
exports.predictHealthFactor = exports.calculateLiquidationData = exports.presentValue = exports.getAvailableToBorrow = exports.calculateMaximumWithdrawAmount = exports.checkNotInDebtAtAll = exports.calculateAssetInterest = exports.calculateAssetData = exports.calculateCurrentRates = exports.calculatePresentValue = exports.bigIntMin = exports.bigIntMax = exports.mulDivC = exports.mulDiv = exports.mulFactor = void 0;
|
|
5
4
|
const User_1 = require("../types/User");
|
|
6
5
|
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
7
6
|
function mulFactor(decimal, a, b) {
|
|
@@ -12,6 +11,11 @@ function mulDiv(x, y, z) {
|
|
|
12
11
|
return (x * y) / z;
|
|
13
12
|
}
|
|
14
13
|
exports.mulDiv = mulDiv;
|
|
14
|
+
function mulDivC(x, y, z) {
|
|
15
|
+
const mul = x * y;
|
|
16
|
+
return mul / z + (mul % z ? 1n : 0n);
|
|
17
|
+
}
|
|
18
|
+
exports.mulDivC = mulDivC;
|
|
15
19
|
function bigIntMax(...args) {
|
|
16
20
|
return args.reduce((m, e) => (e > m ? e : m));
|
|
17
21
|
}
|
|
@@ -20,17 +24,17 @@ function bigIntMin(...args) {
|
|
|
20
24
|
return args.reduce((m, e) => (e < m ? e : m));
|
|
21
25
|
}
|
|
22
26
|
exports.bigIntMin = bigIntMin;
|
|
23
|
-
function calculatePresentValue(index, principalValue) {
|
|
24
|
-
return (principalValue * index) /
|
|
27
|
+
function calculatePresentValue(index, principalValue, masterConstants) {
|
|
28
|
+
return (principalValue * index) / masterConstants.FACTOR_SCALE;
|
|
25
29
|
}
|
|
26
30
|
exports.calculatePresentValue = calculatePresentValue;
|
|
27
|
-
function calculateCurrentRates(assetConfig, assetData) {
|
|
31
|
+
function calculateCurrentRates(assetConfig, assetData, masterConstants) {
|
|
28
32
|
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
29
33
|
const timeElapsed = now - assetData.lastAccural;
|
|
30
|
-
const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData);
|
|
34
|
+
const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData, masterConstants);
|
|
31
35
|
if (timeElapsed > 0) {
|
|
32
|
-
const updatedSRate = assetData.sRate + mulFactor(
|
|
33
|
-
const updatedBRate = assetData.bRate + mulFactor(
|
|
36
|
+
const updatedSRate = assetData.sRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.sRate, supplyInterest * timeElapsed);
|
|
37
|
+
const updatedBRate = assetData.bRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.bRate, borrowInterest * timeElapsed);
|
|
34
38
|
return {
|
|
35
39
|
sRate: updatedSRate,
|
|
36
40
|
bRate: updatedBRate,
|
|
@@ -48,13 +52,13 @@ function calculateCurrentRates(assetConfig, assetData) {
|
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
54
|
exports.calculateCurrentRates = calculateCurrentRates;
|
|
51
|
-
function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
|
|
55
|
+
function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterConstants) {
|
|
52
56
|
const config = assetsConfigDict.get(assetId);
|
|
53
57
|
const data = assetsDataDict.get(assetId);
|
|
54
58
|
if (!data || !config) {
|
|
55
59
|
throw new Error('Asset Data or Config is not accessible');
|
|
56
60
|
}
|
|
57
|
-
const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data);
|
|
61
|
+
const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data, masterConstants);
|
|
58
62
|
data.sRate = sRate || 0n;
|
|
59
63
|
data.bRate = bRate || 0n;
|
|
60
64
|
data.lastAccural = now;
|
|
@@ -67,34 +71,75 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
|
|
|
67
71
|
};
|
|
68
72
|
}
|
|
69
73
|
exports.calculateAssetData = calculateAssetData;
|
|
70
|
-
function calculateAssetInterest(assetConfig, assetData) {
|
|
71
|
-
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply);
|
|
72
|
-
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow);
|
|
74
|
+
function calculateAssetInterest(assetConfig, assetData, masterConstants) {
|
|
75
|
+
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
|
|
76
|
+
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
|
|
73
77
|
let utilization = 0n;
|
|
74
78
|
let supplyInterest = 0n;
|
|
75
79
|
let borrowInterest = 0n;
|
|
76
80
|
if (totalSupply !== 0n) {
|
|
77
|
-
utilization = (totalBorrow *
|
|
81
|
+
utilization = (totalBorrow * masterConstants.FACTOR_SCALE) / totalSupply;
|
|
78
82
|
}
|
|
79
83
|
if (utilization <= assetConfig.targetUtilization) {
|
|
80
84
|
borrowInterest =
|
|
81
85
|
assetConfig.baseBorrowRate +
|
|
82
|
-
mulFactor(
|
|
86
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, utilization);
|
|
83
87
|
}
|
|
84
88
|
else {
|
|
85
89
|
borrowInterest =
|
|
86
90
|
assetConfig.baseBorrowRate +
|
|
87
|
-
mulFactor(
|
|
88
|
-
mulFactor(
|
|
91
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, assetConfig.targetUtilization) +
|
|
92
|
+
mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeHigh, utilization - assetConfig.targetUtilization);
|
|
89
93
|
}
|
|
90
|
-
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization,
|
|
94
|
+
supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, masterConstants.FACTOR_SCALE), masterConstants.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, masterConstants.ASSET_RESERVE_FACTOR_SCALE);
|
|
91
95
|
return {
|
|
92
96
|
supplyInterest,
|
|
93
97
|
borrowInterest,
|
|
94
98
|
};
|
|
95
99
|
}
|
|
96
100
|
exports.calculateAssetInterest = calculateAssetInterest;
|
|
97
|
-
function
|
|
101
|
+
function checkNotInDebtAtAll(principals) {
|
|
102
|
+
return principals.values().every(x => x >= 0n);
|
|
103
|
+
}
|
|
104
|
+
exports.checkNotInDebtAtAll = checkNotInDebtAtAll;
|
|
105
|
+
function calculateMaximumWithdrawAmount(assetsConfig, assetsData, principals, prices, masterConstants, assetId) {
|
|
106
|
+
let withdrawAmountMax = 0n;
|
|
107
|
+
const assetConfig = assetsConfig.get(assetId);
|
|
108
|
+
const assetData = assetsData.get(assetId);
|
|
109
|
+
const oldPrincipal = principals.get(assetId);
|
|
110
|
+
if (oldPrincipal > assetConfig.dust) {
|
|
111
|
+
const oldPresentValue = presentValue(assetData.sRate, assetData.bRate, oldPrincipal, masterConstants);
|
|
112
|
+
if (checkNotInDebtAtAll(principals)) {
|
|
113
|
+
withdrawAmountMax = oldPresentValue.amount;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
if (!prices.has(assetId)) {
|
|
117
|
+
return 0n;
|
|
118
|
+
}
|
|
119
|
+
const borrowable = getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants);
|
|
120
|
+
const price = prices.get(assetId);
|
|
121
|
+
let maxAmountToReclaim = 0n;
|
|
122
|
+
if (assetConfig.collateralFactor == 0n) {
|
|
123
|
+
maxAmountToReclaim = oldPresentValue.amount;
|
|
124
|
+
}
|
|
125
|
+
else if (price > 0) {
|
|
126
|
+
maxAmountToReclaim =
|
|
127
|
+
mulDiv(mulDivC(borrowable, masterConstants.ASSET_COEFFICIENT_SCALE, assetConfig.collateralFactor), 10n ** assetConfig.decimals, price);
|
|
128
|
+
}
|
|
129
|
+
withdrawAmountMax = bigIntMin(maxAmountToReclaim, oldPresentValue.amount);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (!prices.has(assetId)) {
|
|
134
|
+
return 0n;
|
|
135
|
+
}
|
|
136
|
+
const price = prices.get(assetId);
|
|
137
|
+
return getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) * (10n ** assetConfig.decimals) / price;
|
|
138
|
+
}
|
|
139
|
+
return withdrawAmountMax;
|
|
140
|
+
}
|
|
141
|
+
exports.calculateMaximumWithdrawAmount = calculateMaximumWithdrawAmount;
|
|
142
|
+
function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) {
|
|
98
143
|
let borrowLimit = 0n;
|
|
99
144
|
let borrowAmount = 0n;
|
|
100
145
|
for (const assetID of principals.keys()) {
|
|
@@ -103,28 +148,26 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices) {
|
|
|
103
148
|
const price = prices.get(assetID);
|
|
104
149
|
const principal = principals.get(assetID);
|
|
105
150
|
if (principal < 0) {
|
|
106
|
-
borrowAmount += (calculatePresentValue(assetData.bRate, -principal) * price) / 10n ** assetConfig.decimals;
|
|
151
|
+
borrowAmount += (calculatePresentValue(assetData.bRate, -principal, masterConstants) * price) / 10n ** assetConfig.decimals;
|
|
107
152
|
}
|
|
108
153
|
else if (principal > 0) {
|
|
109
154
|
borrowLimit +=
|
|
110
|
-
(calculatePresentValue(assetData.sRate, principal)
|
|
111
|
-
10n ** assetConfig.decimals /
|
|
112
|
-
constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE;
|
|
155
|
+
mulDivC(mulDivC(calculatePresentValue(assetData.sRate, principal, masterConstants), price, 10n ** assetConfig.decimals), assetConfig.collateralFactor, masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
113
156
|
}
|
|
114
157
|
}
|
|
115
158
|
return borrowLimit - borrowAmount;
|
|
116
159
|
}
|
|
117
160
|
exports.getAvailableToBorrow = getAvailableToBorrow;
|
|
118
|
-
function presentValue(sRate, bRate, principalValue) {
|
|
161
|
+
function presentValue(sRate, bRate, principalValue, masterConstants) {
|
|
119
162
|
if (principalValue > 0) {
|
|
120
163
|
return {
|
|
121
|
-
amount: calculatePresentValue(sRate, principalValue),
|
|
164
|
+
amount: calculatePresentValue(sRate, principalValue, masterConstants),
|
|
122
165
|
type: User_1.BalanceType.supply,
|
|
123
166
|
};
|
|
124
167
|
}
|
|
125
168
|
else if (principalValue < 0) {
|
|
126
169
|
return {
|
|
127
|
-
amount: calculatePresentValue(bRate, -principalValue),
|
|
170
|
+
amount: calculatePresentValue(bRate, -principalValue, masterConstants),
|
|
128
171
|
type: User_1.BalanceType.borrow,
|
|
129
172
|
};
|
|
130
173
|
}
|
|
@@ -136,7 +179,7 @@ function presentValue(sRate, bRate, principalValue) {
|
|
|
136
179
|
}
|
|
137
180
|
}
|
|
138
181
|
exports.presentValue = presentValue;
|
|
139
|
-
function calculateLiquidationData(assetsConfig, assetsData, principals, prices) {
|
|
182
|
+
function calculateLiquidationData(assetsConfig, assetsData, principals, prices, masterConstants) {
|
|
140
183
|
let gCollateralValue = 0n;
|
|
141
184
|
let gCollateralAsset = 0n;
|
|
142
185
|
let gLoanValue = 0n;
|
|
@@ -150,7 +193,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
150
193
|
const balance = principal > 0 ? (principal * assetData.sRate) / BigInt(1e12) : (principal * assetData.bRate) / BigInt(1e12);
|
|
151
194
|
if (balance > 0) {
|
|
152
195
|
const assetWorth = (balance * prices.get(key)) / 10n ** assetConfig.decimals;
|
|
153
|
-
totalLimit += (assetWorth * assetConfig.liquidationThreshold) /
|
|
196
|
+
totalLimit += (assetWorth * assetConfig.liquidationThreshold) / masterConstants.ASSET_COEFFICIENT_SCALE;
|
|
154
197
|
if (assetWorth > gCollateralValue) {
|
|
155
198
|
gCollateralValue = assetWorth;
|
|
156
199
|
gCollateralAsset = key;
|
|
@@ -174,7 +217,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
174
217
|
const loanDecimal = 10n ** gLoanAssetConfig.decimals;
|
|
175
218
|
values.push((bigIntMax(gCollateralValue / 2n, bigIntMin(gCollateralValue, 10000000000n)) *
|
|
176
219
|
loanDecimal *
|
|
177
|
-
|
|
220
|
+
masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
178
221
|
liquidationBonus /
|
|
179
222
|
gLoanAssetPrice);
|
|
180
223
|
values.push((gLoanValue * loanDecimal) / gLoanAssetPrice);
|
|
@@ -212,7 +255,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
|
|
|
212
255
|
}
|
|
213
256
|
exports.calculateLiquidationData = calculateLiquidationData;
|
|
214
257
|
function predictHealthFactor(args) {
|
|
215
|
-
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices);
|
|
258
|
+
const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices, args.masterConstants);
|
|
216
259
|
const tokenHash = (0, sha256BigInt_1.sha256Hash)(args.tokenSymbol);
|
|
217
260
|
const assetConfig = args.assetsConfig.get(tokenHash);
|
|
218
261
|
const assetPrice = Number(args.prices.get(tokenHash));
|
|
@@ -222,19 +265,18 @@ function predictHealthFactor(args) {
|
|
|
222
265
|
const decimals = Number(assetConfig.decimals);
|
|
223
266
|
const currentBalance = assetPrice * Number(currentAmount) / Math.pow(10, decimals);
|
|
224
267
|
const changeType = args.balanceChangeType;
|
|
225
|
-
if (currentAmount != null &&
|
|
226
|
-
Number.isFinite(currentAmount) && currentAmount != 0n) {
|
|
268
|
+
if (currentAmount != null && currentAmount != 0n) {
|
|
227
269
|
if (changeType == User_1.BalanceChangeType.Borrow) {
|
|
228
|
-
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(
|
|
270
|
+
totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(args.masterConstants.ASSET_ORIGINATION_FEE_SCALE));
|
|
229
271
|
}
|
|
230
272
|
else if (changeType == User_1.BalanceChangeType.Repay) {
|
|
231
273
|
totalBorrow -= currentBalance;
|
|
232
274
|
}
|
|
233
275
|
else if (changeType == User_1.BalanceChangeType.Withdraw) {
|
|
234
|
-
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(
|
|
276
|
+
totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
235
277
|
}
|
|
236
278
|
else if (changeType == User_1.BalanceChangeType.Supply) {
|
|
237
|
-
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(
|
|
279
|
+
totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
|
|
238
280
|
}
|
|
239
281
|
}
|
|
240
282
|
if (Number(totalLimit) == 0) {
|
package/dist/api/parser.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Dictionary, DictionaryValue } from '@ton/core';
|
|
2
|
-
import { AssetConfig, AssetData,
|
|
2
|
+
import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, MasterData, PoolAssetsConfig } from '../types/Master';
|
|
3
3
|
import { UserData, UserLiteData } from '../types/User';
|
|
4
4
|
export declare function createAssetData(): DictionaryValue<AssetData>;
|
|
5
5
|
export declare function createAssetConfig(): DictionaryValue<AssetConfig>;
|
|
6
|
-
export declare function parseMasterData(masterDataBOC: string,
|
|
7
|
-
export declare function parseUserLiteData(userDataBOC: string, assetsData:
|
|
8
|
-
export declare function parseUserData(userLiteData: UserLiteData, assetsData:
|
|
6
|
+
export declare function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants): MasterData;
|
|
7
|
+
export declare function parseUserLiteData(userDataBOC: string, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants, testnet?: boolean, applyDust?: boolean): UserLiteData;
|
|
8
|
+
export declare function parseUserData(userLiteData: UserLiteData, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>, poolAssetConfig: PoolAssetsConfig, masterConstants: MasterConstants, applyDust?: boolean): UserData;
|
package/dist/api/parser.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseUserData = exports.parseUserLiteData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
5
|
const math_1 = require("./math");
|
|
7
6
|
const helpers_1 = require("./helpers");
|
|
8
7
|
const User_1 = require("../types/User");
|
|
@@ -126,8 +125,7 @@ function createAssetConfig() {
|
|
|
126
125
|
};
|
|
127
126
|
}
|
|
128
127
|
exports.createAssetConfig = createAssetConfig;
|
|
129
|
-
function parseMasterData(masterDataBOC,
|
|
130
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
128
|
+
function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
131
129
|
const masterSlice = core_1.Cell.fromBase64(masterDataBOC).beginParse();
|
|
132
130
|
const meta = masterSlice.loadRef().beginParse().loadStringTail();
|
|
133
131
|
const upgradeConfigParser = masterSlice.loadRef().beginParse();
|
|
@@ -152,9 +150,9 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
152
150
|
supply: core_1.Dictionary.empty(),
|
|
153
151
|
borrow: core_1.Dictionary.empty(),
|
|
154
152
|
};
|
|
155
|
-
for (const [tokenSymbol,
|
|
156
|
-
const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict,
|
|
157
|
-
assetsExtendedData.set(
|
|
153
|
+
for (const [tokenSymbol, asset] of Object.entries(poolAssetsConfig)) {
|
|
154
|
+
const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict, asset.assetId, masterConstants);
|
|
155
|
+
assetsExtendedData.set(asset.assetId, assetData);
|
|
158
156
|
}
|
|
159
157
|
const masterConfig = {
|
|
160
158
|
ifActive: masterConfigSlice.loadInt(8),
|
|
@@ -164,13 +162,13 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
164
162
|
walletToMaster: (0, helpers_1.loadMaybeMyRef)(masterConfigSlice),
|
|
165
163
|
};
|
|
166
164
|
masterConfigSlice.endParse();
|
|
167
|
-
for (const [_,
|
|
168
|
-
const assetData = assetsExtendedData.get(
|
|
169
|
-
const totalSupply = (0, math_1.calculatePresentValue)(assetData.sRate, assetData.totalSupply);
|
|
170
|
-
const totalBorrow = (0, math_1.calculatePresentValue)(assetData.bRate, assetData.totalBorrow);
|
|
171
|
-
assetsReserves.set(
|
|
172
|
-
apy.supply.set(
|
|
173
|
-
apy.borrow.set(
|
|
165
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
166
|
+
const assetData = assetsExtendedData.get(asset.assetId);
|
|
167
|
+
const totalSupply = (0, math_1.calculatePresentValue)(assetData.sRate, assetData.totalSupply, masterConstants);
|
|
168
|
+
const totalBorrow = (0, math_1.calculatePresentValue)(assetData.bRate, assetData.totalBorrow, masterConstants);
|
|
169
|
+
assetsReserves.set(asset.assetId, assetData.balance - totalSupply + totalBorrow);
|
|
170
|
+
apy.supply.set(asset.assetId, (1 + (Number(assetData.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1);
|
|
171
|
+
apy.borrow.set(asset.assetId, (1 + (Number(assetData.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1);
|
|
174
172
|
}
|
|
175
173
|
return {
|
|
176
174
|
meta: meta,
|
|
@@ -183,8 +181,7 @@ function parseMasterData(masterDataBOC, testnet = false) {
|
|
|
183
181
|
};
|
|
184
182
|
}
|
|
185
183
|
exports.parseMasterData = parseMasterData;
|
|
186
|
-
function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = false, applyDust = false) {
|
|
187
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
184
|
+
function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolAssetsConfig, masterConstants, testnet = false, applyDust = false) {
|
|
188
185
|
const userSlice = core_1.Cell.fromBase64(userDataBOC).beginParse();
|
|
189
186
|
const codeVersion = userSlice.loadCoins();
|
|
190
187
|
const masterAddress = userSlice.loadAddress();
|
|
@@ -217,16 +214,16 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = fals
|
|
|
217
214
|
*/
|
|
218
215
|
userSlice.endParse();
|
|
219
216
|
const userBalances = core_1.Dictionary.empty();
|
|
220
|
-
for (const [_,
|
|
221
|
-
const assetData = assetsData.get(
|
|
222
|
-
const assetConfig = assetsConfig.get(
|
|
223
|
-
let principals = principalsDict.get(
|
|
224
|
-
|
|
217
|
+
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
218
|
+
const assetData = assetsData.get(asset.assetId);
|
|
219
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
220
|
+
let principals = principalsDict.get(asset.assetId) || 0n;
|
|
221
|
+
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
|
|
222
|
+
if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust)) { // v6 will be abs(principals) < dust
|
|
225
223
|
principals = 0n;
|
|
226
|
-
principalsDict.set(
|
|
224
|
+
principalsDict.set(asset.assetId, 0n);
|
|
227
225
|
}
|
|
228
|
-
|
|
229
|
-
userBalances.set(assetID, balance);
|
|
226
|
+
userBalances.set(asset.assetId, balance);
|
|
230
227
|
}
|
|
231
228
|
return {
|
|
232
229
|
type: 'active',
|
|
@@ -247,52 +244,47 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = fals
|
|
|
247
244
|
};
|
|
248
245
|
}
|
|
249
246
|
exports.parseUserLiteData = parseUserLiteData;
|
|
250
|
-
function parseUserData(userLiteData, assetsData, assetsConfig, prices,
|
|
251
|
-
const ASSETS_ID = testnet ? constants_1.TESTNET_ASSETS_ID : constants_1.MAINNET_ASSETS_ID;
|
|
247
|
+
function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolAssetConfig, masterConstants, applyDust = false) {
|
|
252
248
|
const withdrawalLimits = core_1.Dictionary.empty();
|
|
253
249
|
const borrowLimits = core_1.Dictionary.empty();
|
|
254
250
|
let supplyBalance = 0n;
|
|
255
251
|
let borrowBalance = 0n;
|
|
256
|
-
for (const [_,
|
|
257
|
-
const assetData = assetsData.get(
|
|
258
|
-
const assetConfig = assetsConfig.get(
|
|
259
|
-
let principals = userLiteData.principals.get(
|
|
260
|
-
|
|
252
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
253
|
+
const assetData = assetsData.get(asset.assetId);
|
|
254
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
255
|
+
let principals = userLiteData.principals.get(asset.assetId) || 0n;
|
|
256
|
+
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
|
|
257
|
+
if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust)) { // v6 will be abs(principals) < dust
|
|
261
258
|
principals = 0n;
|
|
262
|
-
userLiteData.principals.set(
|
|
259
|
+
userLiteData.principals.set(asset.assetId, 0n);
|
|
263
260
|
}
|
|
264
|
-
|
|
265
|
-
userLiteData.balances.set(assetID, balance);
|
|
261
|
+
userLiteData.balances.set(asset.assetId, balance);
|
|
266
262
|
}
|
|
267
|
-
for (const [_,
|
|
268
|
-
const assetConfig = assetsConfig.get(
|
|
269
|
-
const balance = userLiteData.balances.get(
|
|
263
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
264
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
265
|
+
const balance = userLiteData.balances.get(asset.assetId);
|
|
270
266
|
if (balance.type === User_1.BalanceType.supply) {
|
|
271
|
-
supplyBalance += (balance.amount * prices.get(
|
|
267
|
+
supplyBalance += (balance.amount * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
272
268
|
}
|
|
273
269
|
if (balance.type === User_1.BalanceType.borrow) {
|
|
274
|
-
borrowBalance += (balance.amount * prices.get(
|
|
270
|
+
borrowBalance += (balance.amount * prices.get(asset.assetId)) / 10n ** assetConfig.decimals;
|
|
275
271
|
}
|
|
276
272
|
}
|
|
277
|
-
const availableToBorrow = (0, math_1.getAvailableToBorrow)(assetsConfig, assetsData, userLiteData.principals, prices);
|
|
278
|
-
for (const [_,
|
|
279
|
-
const assetConfig = assetsConfig.get(
|
|
280
|
-
const assetData = assetsData.get(
|
|
281
|
-
const balance = userLiteData.balances.get(
|
|
273
|
+
const availableToBorrow = (0, math_1.getAvailableToBorrow)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
|
|
274
|
+
for (const [_, asset] of Object.entries(poolAssetConfig)) {
|
|
275
|
+
const assetConfig = assetsConfig.get(asset.assetId);
|
|
276
|
+
const assetData = assetsData.get(asset.assetId);
|
|
277
|
+
const balance = userLiteData.balances.get(asset.assetId);
|
|
282
278
|
if (balance.type === User_1.BalanceType.supply) {
|
|
283
|
-
withdrawalLimits.set(
|
|
284
|
-
(borrowBalance * constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE) / assetConfig.collateralFactor) *
|
|
285
|
-
10n ** assetConfig.decimals) /
|
|
286
|
-
prices.get(assetID) -
|
|
287
|
-
5n, balance.amount), 0n));
|
|
279
|
+
withdrawalLimits.set(asset.assetId, (0, math_1.calculateMaximumWithdrawAmount)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants, asset.assetId));
|
|
288
280
|
}
|
|
289
|
-
borrowLimits.set(
|
|
281
|
+
borrowLimits.set(asset.assetId, (0, math_1.bigIntMin)((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId), assetData.balance));
|
|
290
282
|
}
|
|
291
283
|
const limitUsed = borrowBalance + availableToBorrow;
|
|
292
284
|
const limitUsedPercent = limitUsed === 0n
|
|
293
285
|
? 0
|
|
294
286
|
: Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
|
|
295
|
-
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices);
|
|
287
|
+
const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
|
|
296
288
|
const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
|
|
297
289
|
return {
|
|
298
290
|
...userLiteData,
|
package/dist/api/prices.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PriceData } from '../types/Common';
|
|
2
|
-
export declare function getPrices(endpoints?: string[]): Promise<PriceData>;
|
|
2
|
+
export declare function getPrices(endpoints?: string[], nftId?: string): Promise<PriceData>;
|
package/dist/api/prices.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPrices = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
|
-
const
|
|
6
|
-
async function getPrices(endpoints = ["api.stardust-mainnet.iotaledger.net"]) {
|
|
7
|
-
return await Promise.any(endpoints.map(x => loadPrices(x)));
|
|
5
|
+
const general_1 = require("../constants/general");
|
|
6
|
+
async function getPrices(endpoints = ["api.stardust-mainnet.iotaledger.net"], nftId = general_1.MAIN_POOL_NFT_ID) {
|
|
7
|
+
return await Promise.any(endpoints.map(x => loadPrices(nftId, x)));
|
|
8
8
|
}
|
|
9
9
|
exports.getPrices = getPrices;
|
|
10
|
-
async function loadPrices(endpoint = "api.stardust-mainnet.iotaledger.net") {
|
|
11
|
-
let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${
|
|
10
|
+
async function loadPrices(nftId, endpoint = "api.stardust-mainnet.iotaledger.net") {
|
|
11
|
+
let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${nftId}`, {
|
|
12
12
|
headers: { accept: 'application/json' },
|
|
13
13
|
});
|
|
14
14
|
let outputId = (await result.json());
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PoolAssetConfig } from "../types/Master";
|
|
2
|
+
export declare const TON_MAINNET: PoolAssetConfig;
|
|
3
|
+
export declare const TON_TESTNET: import("../types/Master").PoolTonAssetConfig & {
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const JUSDT_MAINNET: PoolAssetConfig;
|
|
7
|
+
export declare const JUSDC_MAINNET: PoolAssetConfig;
|
|
8
|
+
export declare const STTON_MAINNET: PoolAssetConfig;
|
|
9
|
+
export declare const TSTON_MAINNET: PoolAssetConfig;
|
|
10
|
+
export declare const USDT_MAINNET: PoolAssetConfig;
|
|
11
|
+
export declare const JUSDT_TESTNET: PoolAssetConfig;
|
|
12
|
+
export declare const JUSDC_TESTNET: PoolAssetConfig;
|
|
13
|
+
export declare const STTON_TESTNET: PoolAssetConfig;
|
|
14
|
+
export declare const TONUSDT_DEDUST_MAINNET: PoolAssetConfig;
|
|
15
|
+
export declare const TON_STORM_MAINNET: PoolAssetConfig;
|
|
16
|
+
export declare const USDT_STORM_MAINNET: PoolAssetConfig;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
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 = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const sha256BigInt_1 = require("../utils/sha256BigInt");
|
|
6
|
+
const general_1 = require("./general");
|
|
7
|
+
exports.TON_MAINNET = {
|
|
8
|
+
name: 'TON',
|
|
9
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TON')
|
|
10
|
+
};
|
|
11
|
+
exports.TON_TESTNET = exports.TON_MAINNET;
|
|
12
|
+
exports.JUSDT_MAINNET = {
|
|
13
|
+
name: 'jUSDT',
|
|
14
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
15
|
+
jettonMasterAddress: core_1.Address.parse('EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA'),
|
|
16
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
17
|
+
};
|
|
18
|
+
exports.JUSDC_MAINNET = {
|
|
19
|
+
name: 'jUSDC',
|
|
20
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
21
|
+
jettonMasterAddress: core_1.Address.parse('EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728'),
|
|
22
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE
|
|
23
|
+
};
|
|
24
|
+
exports.STTON_MAINNET = {
|
|
25
|
+
name: 'stTON',
|
|
26
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
27
|
+
jettonMasterAddress: core_1.Address.parse('EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k'),
|
|
28
|
+
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')
|
|
29
|
+
};
|
|
30
|
+
exports.TSTON_MAINNET = {
|
|
31
|
+
name: 'tsTON',
|
|
32
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('tsTON'),
|
|
33
|
+
jettonMasterAddress: core_1.Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
|
|
34
|
+
jettonWalletCode: core_1.Cell.fromBase64('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')
|
|
35
|
+
};
|
|
36
|
+
exports.USDT_MAINNET = {
|
|
37
|
+
name: 'USDT',
|
|
38
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('USDT'),
|
|
39
|
+
jettonMasterAddress: core_1.Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'),
|
|
40
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e', 'hex'))[0],
|
|
41
|
+
};
|
|
42
|
+
exports.JUSDT_TESTNET = {
|
|
43
|
+
name: 'jUSDT',
|
|
44
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
45
|
+
jettonMasterAddress: core_1.Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
|
|
46
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
47
|
+
};
|
|
48
|
+
exports.JUSDC_TESTNET = {
|
|
49
|
+
name: 'jUSDC',
|
|
50
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
51
|
+
jettonMasterAddress: core_1.Address.parse('kQDaY5yUatYnHei73HBqRX_Ox9LK2XnR7XuCY9MFC2INbfYI'),
|
|
52
|
+
jettonWalletCode: general_1.JETTON_WALLET_STANDART_CODE_TESTNET
|
|
53
|
+
};
|
|
54
|
+
exports.STTON_TESTNET = {
|
|
55
|
+
name: 'stTON',
|
|
56
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
57
|
+
jettonMasterAddress: core_1.Address.parse('kQC3Duw3dg8k98xf5S7Bm7YOWVJ5QW8hm3iLqFfJfa_g9h07'),
|
|
58
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7201021201000362000114ff00f4a413f4bcf2c80b0102016202030202cc0405001ba0f605da89a1f401f481f481a8610201d40607020120090a01cf0831c02497c138007434c0c05c6c2544d7c0fc03383e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7c8608403e29fa96ea54c4d167c027808608405e351466ea58c511100fc02b80860841657c1ef2ea54c4d167c02f80517c1300138c08c2103fcbc200800113e910c30003cb85360007ced44d0fa00fa40fa40d43010235f03018208989680a16d801072226eb32091719170e203c8cb055006cf165004fa02cb6a039358cc019130e201c901fb000201200b0c0081d40106b90f6a2687d007d207d206a1802698f90c1080bc6a28cdd0141083deecbef5d0958f97064699f98fd001809d02811e428027d012c678b00e78b6664f6aa401f1503d33ffa00fa4021f001ed44d0fa00fa40fa40d4305136a1522ac705f2e2c128c2fff2e2c254344270542013541403c85004fa0258cf1601cf16ccc922c8cb0112f400f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f40431fa0020d749c200f2e2c4778018c8cb055008cf1670fa0217cb6b13cc80d0201200e0f009e8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a0820a625a00a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5402f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a019ad8228608239387028062849e5c412440e0dd7c138c34975c2c060101100c90c3b51343e803e903e90350c01b4cffe800c145128548df1c17cb8b04970bffcb8b0812082e4e1c02fbcb8b160841ef765f7b232c7c532cfd63e808873c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b552000705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023007cc30023c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed54', 'hex'))[0],
|
|
59
|
+
};
|
|
60
|
+
exports.TONUSDT_DEDUST_MAINNET = {
|
|
61
|
+
name: 'TONUSDT_DEDUST',
|
|
62
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TONUSDT_DEDUST'),
|
|
63
|
+
jettonMasterAddress: core_1.Address.parse('EQA-X_yo3fzzbDbJ_0bzFWKqtRuZFIRa1sJsveZJ1YpViO3r'),
|
|
64
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021201000334000114ff00f4a413f4bcf2c80b0102016202110202cc03060201d4040500c30831c02497c138007434c0c05c6c2544d7c0fc02f83e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7e08403e29fa954882ea54c4d167c0238208405e3514654882ea58c511100fc02780d60841657c1ef2ea4d67c02b817c12103fcbc2000113e910c1c2ebcb85360020148070e020120080a01f100f4cffe803e90087c007b51343e803e903e90350c144da8548ab1c17cb8b04a30bffcb8b0950d109c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c032483e401c1d3232c0b281f2fff274013e903d010c7e800835d270803cb8b11de0063232c1540233c59c3e8085f2dac4f3200900ae8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a08208e4e1c0aa008208989680a0a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5403f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a020822625a004ad8228608239387028062849f8c3c975c2c070c008e00b0c0d00705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023000e10491038375f040076c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed540201200f1000db3b51343e803e903e90350c01f4cffe803e900c145468549271c17cb8b049f0bffcb8b0a0823938702a8005a805af3cb8b0e0841ef765f7b232c7c572cfd400fe8088b3c58073c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b55200083200835c87b51343e803e903e90350c0134c7e08405e3514654882ea0841ef765f784ee84ac7cb8b174cfcc7e800c04e81408f214013e809633c58073c5b3327b5520001ba0f605da89a1f401f481f481a861f0a7d84b', 'hex'))[0],
|
|
65
|
+
};
|
|
66
|
+
exports.TON_STORM_MAINNET = {
|
|
67
|
+
name: 'TON_STORM',
|
|
68
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('TON_STORM'),
|
|
69
|
+
jettonMasterAddress: core_1.Address.parse('EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F'),
|
|
70
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
71
|
+
};
|
|
72
|
+
exports.USDT_STORM_MAINNET = {
|
|
73
|
+
name: 'USDT_STORM',
|
|
74
|
+
assetId: (0, sha256BigInt_1.sha256Hash)('USDT_STORM'),
|
|
75
|
+
jettonMasterAddress: core_1.Address.parse('EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW'),
|
|
76
|
+
jettonWalletCode: core_1.Cell.fromBoc(Buffer.from('b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d', 'hex'))[0],
|
|
77
|
+
};
|