@evaafi/sdk 0.5.3 → 0.5.4

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.
@@ -1,21 +1,21 @@
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
6
  export declare function bigIntMax(...args: bigint[]): bigint;
7
7
  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): {
8
+ export declare function calculatePresentValue(index: bigint, principalValue: bigint, masterConstants: MasterConstants): bigint;
9
+ export declare function calculateCurrentRates(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): {
10
10
  sRate: bigint;
11
11
  bRate: bigint;
12
12
  supplyInterest: bigint;
13
13
  borrowInterest: bigint;
14
14
  now: bigint;
15
15
  };
16
- export declare function calculateAssetData(assetsConfigDict: Dictionary<bigint, AssetConfig>, assetsDataDict: Dictionary<bigint, AssetData>, assetId: bigint): ExtendedAssetData;
17
- export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData): AssetInterest;
18
- export declare function getAvailableToBorrow(assetsConfig: Dictionary<bigint, AssetConfig>, assetsData: Dictionary<bigint, ExtendedAssetData>, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>): bigint;
19
- export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint): UserBalance;
20
- export declare function calculateLiquidationData(assetsConfig: Dictionary<bigint, AssetConfig>, assetsData: Dictionary<bigint, ExtendedAssetData>, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>): LiquidationData;
16
+ export declare function calculateAssetData(assetsConfigDict: ExtendedAssetsConfig, assetsDataDict: Dictionary<bigint, AssetData>, assetId: bigint, masterConstants: MasterConstants): ExtendedAssetData;
17
+ export declare function calculateAssetInterest(assetConfig: AssetConfig, assetData: AssetData, masterConstants: MasterConstants): AssetInterest;
18
+ export declare function getAvailableToBorrow(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): bigint;
19
+ export declare function presentValue(sRate: bigint, bRate: bigint, principalValue: bigint, masterConstants: MasterConstants): UserBalance;
20
+ export declare function calculateLiquidationData(assetsConfig: ExtendedAssetsConfig, assetsData: ExtendedAssetsData, principals: Dictionary<bigint, bigint>, prices: Dictionary<bigint, bigint>, masterConstants: MasterConstants): LiquidationData;
21
21
  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
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");
5
4
  const User_1 = require("../types/User");
6
5
  const sha256BigInt_1 = require("../utils/sha256BigInt");
7
6
  function mulFactor(decimal, a, b) {
@@ -20,17 +19,17 @@ function bigIntMin(...args) {
20
19
  return args.reduce((m, e) => (e < m ? e : m));
21
20
  }
22
21
  exports.bigIntMin = bigIntMin;
23
- function calculatePresentValue(index, principalValue) {
24
- return (principalValue * index) / constants_1.MASTER_CONSTANTS.FACTOR_SCALE;
22
+ function calculatePresentValue(index, principalValue, masterConstants) {
23
+ return (principalValue * index) / masterConstants.FACTOR_SCALE;
25
24
  }
26
25
  exports.calculatePresentValue = calculatePresentValue;
27
- function calculateCurrentRates(assetConfig, assetData) {
26
+ function calculateCurrentRates(assetConfig, assetData, masterConstants) {
28
27
  const now = BigInt(Math.floor(Date.now() / 1000));
29
28
  const timeElapsed = now - assetData.lastAccural;
30
- const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData);
29
+ const { supplyInterest, borrowInterest } = calculateAssetInterest(assetConfig, assetData, masterConstants);
31
30
  if (timeElapsed > 0) {
32
- const updatedSRate = assetData.sRate + mulFactor(constants_1.MASTER_CONSTANTS.FACTOR_SCALE, assetData.sRate, supplyInterest * timeElapsed);
33
- const updatedBRate = assetData.bRate + mulFactor(constants_1.MASTER_CONSTANTS.FACTOR_SCALE, assetData.bRate, borrowInterest * timeElapsed);
31
+ const updatedSRate = assetData.sRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.sRate, supplyInterest * timeElapsed);
32
+ const updatedBRate = assetData.bRate + mulFactor(masterConstants.FACTOR_SCALE, assetData.bRate, borrowInterest * timeElapsed);
34
33
  return {
35
34
  sRate: updatedSRate,
36
35
  bRate: updatedBRate,
@@ -48,13 +47,13 @@ function calculateCurrentRates(assetConfig, assetData) {
48
47
  };
49
48
  }
50
49
  exports.calculateCurrentRates = calculateCurrentRates;
51
- function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
50
+ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId, masterConstants) {
52
51
  const config = assetsConfigDict.get(assetId);
53
52
  const data = assetsDataDict.get(assetId);
54
53
  if (!data || !config) {
55
54
  throw new Error('Asset Data or Config is not accessible');
56
55
  }
57
- const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data);
56
+ const { sRate, bRate, supplyInterest, borrowInterest, now } = calculateCurrentRates(config, data, masterConstants);
58
57
  data.sRate = sRate || 0n;
59
58
  data.bRate = bRate || 0n;
60
59
  data.lastAccural = now;
@@ -67,34 +66,34 @@ function calculateAssetData(assetsConfigDict, assetsDataDict, assetId) {
67
66
  };
68
67
  }
69
68
  exports.calculateAssetData = calculateAssetData;
70
- function calculateAssetInterest(assetConfig, assetData) {
71
- const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply);
72
- const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow);
69
+ function calculateAssetInterest(assetConfig, assetData, masterConstants) {
70
+ const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
71
+ const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
73
72
  let utilization = 0n;
74
73
  let supplyInterest = 0n;
75
74
  let borrowInterest = 0n;
76
75
  if (totalSupply !== 0n) {
77
- utilization = (totalBorrow * constants_1.MASTER_CONSTANTS.FACTOR_SCALE) / totalSupply;
76
+ utilization = (totalBorrow * masterConstants.FACTOR_SCALE) / totalSupply;
78
77
  }
79
78
  if (utilization <= assetConfig.targetUtilization) {
80
79
  borrowInterest =
81
80
  assetConfig.baseBorrowRate +
82
- mulFactor(constants_1.MASTER_CONSTANTS.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, utilization);
81
+ mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, utilization);
83
82
  }
84
83
  else {
85
84
  borrowInterest =
86
85
  assetConfig.baseBorrowRate +
87
- mulFactor(constants_1.MASTER_CONSTANTS.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, assetConfig.targetUtilization) +
88
- mulFactor(constants_1.MASTER_CONSTANTS.FACTOR_SCALE, assetConfig.borrowRateSlopeHigh, utilization - assetConfig.targetUtilization);
86
+ mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeLow, assetConfig.targetUtilization) +
87
+ mulFactor(masterConstants.FACTOR_SCALE, assetConfig.borrowRateSlopeHigh, utilization - assetConfig.targetUtilization);
89
88
  }
90
- supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, constants_1.MASTER_CONSTANTS.FACTOR_SCALE), constants_1.MASTER_CONSTANTS.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, constants_1.MASTER_CONSTANTS.ASSET_RESERVE_FACTOR_SCALE);
89
+ supplyInterest = mulDiv(mulDiv(borrowInterest, utilization, masterConstants.FACTOR_SCALE), masterConstants.ASSET_RESERVE_FACTOR_SCALE - assetConfig.reserveFactor, masterConstants.ASSET_RESERVE_FACTOR_SCALE);
91
90
  return {
92
91
  supplyInterest,
93
92
  borrowInterest,
94
93
  };
95
94
  }
96
95
  exports.calculateAssetInterest = calculateAssetInterest;
97
- function getAvailableToBorrow(assetsConfig, assetsData, principals, prices) {
96
+ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices, masterConstants) {
98
97
  let borrowLimit = 0n;
99
98
  let borrowAmount = 0n;
100
99
  for (const assetID of principals.keys()) {
@@ -103,28 +102,28 @@ function getAvailableToBorrow(assetsConfig, assetsData, principals, prices) {
103
102
  const price = prices.get(assetID);
104
103
  const principal = principals.get(assetID);
105
104
  if (principal < 0) {
106
- borrowAmount += (calculatePresentValue(assetData.bRate, -principal) * price) / 10n ** assetConfig.decimals;
105
+ borrowAmount += (calculatePresentValue(assetData.bRate, -principal, masterConstants) * price) / 10n ** assetConfig.decimals;
107
106
  }
108
107
  else if (principal > 0) {
109
108
  borrowLimit +=
110
- (calculatePresentValue(assetData.sRate, principal) * price * assetConfig.collateralFactor) /
109
+ (calculatePresentValue(assetData.sRate, principal, masterConstants) * price * assetConfig.collateralFactor) /
111
110
  10n ** assetConfig.decimals /
112
- constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE;
111
+ masterConstants.ASSET_COEFFICIENT_SCALE;
113
112
  }
114
113
  }
115
114
  return borrowLimit - borrowAmount;
116
115
  }
117
116
  exports.getAvailableToBorrow = getAvailableToBorrow;
118
- function presentValue(sRate, bRate, principalValue) {
117
+ function presentValue(sRate, bRate, principalValue, masterConstants) {
119
118
  if (principalValue > 0) {
120
119
  return {
121
- amount: calculatePresentValue(sRate, principalValue),
120
+ amount: calculatePresentValue(sRate, principalValue, masterConstants),
122
121
  type: User_1.BalanceType.supply,
123
122
  };
124
123
  }
125
124
  else if (principalValue < 0) {
126
125
  return {
127
- amount: calculatePresentValue(bRate, -principalValue),
126
+ amount: calculatePresentValue(bRate, -principalValue, masterConstants),
128
127
  type: User_1.BalanceType.borrow,
129
128
  };
130
129
  }
@@ -136,7 +135,7 @@ function presentValue(sRate, bRate, principalValue) {
136
135
  }
137
136
  }
138
137
  exports.presentValue = presentValue;
139
- function calculateLiquidationData(assetsConfig, assetsData, principals, prices) {
138
+ function calculateLiquidationData(assetsConfig, assetsData, principals, prices, masterConstants) {
140
139
  let gCollateralValue = 0n;
141
140
  let gCollateralAsset = 0n;
142
141
  let gLoanValue = 0n;
@@ -150,7 +149,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
150
149
  const balance = principal > 0 ? (principal * assetData.sRate) / BigInt(1e12) : (principal * assetData.bRate) / BigInt(1e12);
151
150
  if (balance > 0) {
152
151
  const assetWorth = (balance * prices.get(key)) / 10n ** assetConfig.decimals;
153
- totalLimit += (assetWorth * assetConfig.liquidationThreshold) / constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE;
152
+ totalLimit += (assetWorth * assetConfig.liquidationThreshold) / masterConstants.ASSET_COEFFICIENT_SCALE;
154
153
  if (assetWorth > gCollateralValue) {
155
154
  gCollateralValue = assetWorth;
156
155
  gCollateralAsset = key;
@@ -174,7 +173,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
174
173
  const loanDecimal = 10n ** gLoanAssetConfig.decimals;
175
174
  values.push((bigIntMax(gCollateralValue / 2n, bigIntMin(gCollateralValue, 10000000000n)) *
176
175
  loanDecimal *
177
- constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE) /
176
+ masterConstants.ASSET_COEFFICIENT_SCALE) /
178
177
  liquidationBonus /
179
178
  gLoanAssetPrice);
180
179
  values.push((gLoanValue * loanDecimal) / gLoanAssetPrice);
@@ -212,7 +211,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices)
212
211
  }
213
212
  exports.calculateLiquidationData = calculateLiquidationData;
214
213
  function predictHealthFactor(args) {
215
- const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices);
214
+ const liquidationData = calculateLiquidationData(args.assetsConfig, args.assetsData, args.balances, args.prices, args.masterConstants);
216
215
  const tokenHash = (0, sha256BigInt_1.sha256Hash)(args.tokenSymbol);
217
216
  const assetConfig = args.assetsConfig.get(tokenHash);
218
217
  const assetPrice = Number(args.prices.get(tokenHash));
@@ -222,19 +221,18 @@ function predictHealthFactor(args) {
222
221
  const decimals = Number(assetConfig.decimals);
223
222
  const currentBalance = assetPrice * Number(currentAmount) / Math.pow(10, decimals);
224
223
  const changeType = args.balanceChangeType;
225
- if (currentAmount != null && !Number.isNaN(currentAmount) &&
226
- Number.isFinite(currentAmount) && currentAmount != 0n) {
224
+ if (currentAmount != null && currentAmount != 0n) {
227
225
  if (changeType == User_1.BalanceChangeType.Borrow) {
228
- totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(constants_1.MASTER_CONSTANTS.ASSET_ORIGINATION_FEE_SCALE));
226
+ totalBorrow += currentBalance * (1 + Number(assetConfig.originationFee) / Number(args.masterConstants.ASSET_ORIGINATION_FEE_SCALE));
229
227
  }
230
228
  else if (changeType == User_1.BalanceChangeType.Repay) {
231
229
  totalBorrow -= currentBalance;
232
230
  }
233
231
  else if (changeType == User_1.BalanceChangeType.Withdraw) {
234
- totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE);
232
+ totalLimit -= currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
235
233
  }
236
234
  else if (changeType == User_1.BalanceChangeType.Supply) {
237
- totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE);
235
+ totalLimit += currentBalance * Number(assetConfig.liquidationThreshold) / Number(args.masterConstants.ASSET_COEFFICIENT_SCALE);
238
236
  }
239
237
  }
240
238
  if (Number(totalLimit) == 0) {
@@ -1,8 +1,8 @@
1
1
  import { Dictionary, DictionaryValue } from '@ton/core';
2
- import { AssetConfig, AssetData, ExtendedAssetData, MasterData } from '../types/Master';
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, testnet?: boolean): MasterData;
7
- export declare function parseUserLiteData(userDataBOC: string, assetsData: Dictionary<bigint, ExtendedAssetData>, assetsConfig: Dictionary<bigint, AssetConfig>, testnet?: boolean, applyDust?: boolean): UserLiteData;
8
- export declare function parseUserData(userLiteData: UserLiteData, assetsData: Dictionary<bigint, ExtendedAssetData>, assetsConfig: Dictionary<bigint, AssetConfig>, prices: Dictionary<bigint, bigint>, testnet?: boolean, applyDust?: boolean): UserData;
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;
@@ -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, testnet = false) {
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, assetID] of Object.entries(ASSETS_ID)) {
156
- const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict, assetID);
157
- assetsExtendedData.set(assetID, assetData);
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 [_, assetID] of Object.entries(ASSETS_ID)) {
168
- const assetData = assetsExtendedData.get(assetID);
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(assetID, assetData.balance - totalSupply + totalBorrow);
172
- apy.supply.set(assetID, (1 + (Number(assetData.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1);
173
- apy.borrow.set(assetID, (1 + (Number(assetData.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1);
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 [_, assetID] of Object.entries(ASSETS_ID)) {
221
- const assetData = assetsData.get(assetID);
222
- const assetConfig = assetsConfig.get(assetID);
223
- let principals = principalsDict.get(assetID) || 0n;
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;
224
221
  if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust)) { // abs(principals) < dust
225
222
  principals = 0n;
226
- principalsDict.set(assetID, 0n);
223
+ principalsDict.set(asset.assetId, 0n);
227
224
  }
228
- const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals);
229
- userBalances.set(assetID, balance);
225
+ const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
226
+ userBalances.set(asset.assetId, balance);
230
227
  }
231
228
  return {
232
229
  type: 'active',
@@ -247,52 +244,51 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, testnet = fals
247
244
  };
248
245
  }
249
246
  exports.parseUserLiteData = parseUserLiteData;
250
- function parseUserData(userLiteData, assetsData, assetsConfig, prices, testnet = false, applyDust = false) {
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 [_, assetID] of Object.entries(ASSETS_ID)) {
257
- const assetData = assetsData.get(assetID);
258
- const assetConfig = assetsConfig.get(assetID);
259
- let principals = userLiteData.principals.get(assetID) || 0n;
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;
260
256
  if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust)) { // abs(principals) < dust
261
257
  principals = 0n;
262
- userLiteData.principals.set(assetID, 0n);
258
+ userLiteData.principals.set(asset.assetId, 0n);
263
259
  }
264
- const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals);
265
- userLiteData.balances.set(assetID, balance);
260
+ const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principals, masterConstants);
261
+ userLiteData.balances.set(asset.assetId, balance);
266
262
  }
267
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
268
- const assetConfig = assetsConfig.get(assetID);
269
- const balance = userLiteData.balances.get(assetID);
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(assetID)) / 10n ** assetConfig.decimals;
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(assetID)) / 10n ** assetConfig.decimals;
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 [_, assetID] of Object.entries(ASSETS_ID)) {
279
- const assetConfig = assetsConfig.get(assetID);
280
- const assetData = assetsData.get(assetID);
281
- const balance = userLiteData.balances.get(assetID);
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(assetID, (0, math_1.bigIntMax)((0, math_1.bigIntMin)(assetData.balance, ((supplyBalance -
284
- (borrowBalance * constants_1.MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE) / assetConfig.collateralFactor) *
279
+ withdrawalLimits.set(asset.assetId, (0, math_1.bigIntMax)((0, math_1.bigIntMin)(assetData.balance, ((supplyBalance -
280
+ (borrowBalance * masterConstants.ASSET_COEFFICIENT_SCALE) / assetConfig.collateralFactor) *
285
281
  10n ** assetConfig.decimals) /
286
- prices.get(assetID) -
282
+ prices.get(asset.assetId) -
287
283
  5n, balance.amount), 0n));
288
284
  }
289
- borrowLimits.set(assetID, (0, math_1.bigIntMin)((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(assetID), assetData.balance));
285
+ borrowLimits.set(asset.assetId, (0, math_1.bigIntMin)((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId), assetData.balance));
290
286
  }
291
287
  const limitUsed = borrowBalance + availableToBorrow;
292
288
  const limitUsedPercent = limitUsed === 0n
293
289
  ? 0
294
290
  : Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
295
- const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices);
291
+ const liquidationData = (0, math_1.calculateLiquidationData)(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
296
292
  const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
297
293
  return {
298
294
  ...userLiteData,
@@ -1,2 +1,2 @@
1
1
  import { PriceData } from '../types/Common';
2
- export declare function getPrices(endpoints?: string[]): Promise<PriceData>;
2
+ export declare function getPricesByNft(nftId: string, endpoints?: string[]): Promise<PriceData>;
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPrices = void 0;
3
+ exports.getPricesByNft = void 0;
4
4
  const core_1 = require("@ton/core");
5
- const constants_1 = require("../constants");
6
- async function getPrices(endpoints = ["api.stardust-mainnet.iotaledger.net"]) {
7
- return await Promise.any(endpoints.map(x => loadPrices(x)));
5
+ async function getPricesByNft(nftId, endpoints = ["api.stardust-mainnet.iotaledger.net"]) {
6
+ return await Promise.any(endpoints.map(x => loadPrices(nftId, x)));
8
7
  }
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/${constants_1.NFT_ID}`, {
8
+ exports.getPricesByNft = getPricesByNft;
9
+ async function loadPrices(nftId, endpoint = "api.stardust-mainnet.iotaledger.net") {
10
+ let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${nftId}`, {
12
11
  headers: { accept: 'application/json' },
13
12
  });
14
13
  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
+ };
@@ -0,0 +1,38 @@
1
+ import { Address, Cell } from '@ton/core';
2
+ export declare const MASTER_CONSTANTS: {
3
+ FACTOR_SCALE: bigint;
4
+ ASSET_COEFFICIENT_SCALE: bigint;
5
+ ASSET_PRICE_SCALE: bigint;
6
+ ASSET_RESERVE_FACTOR_SCALE: bigint;
7
+ ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: bigint;
8
+ ASSET_ORIGINATION_FEE_SCALE: bigint;
9
+ };
10
+ export declare const EVAA_MASTER_MAINNET: Address;
11
+ export declare const MAINNET_VERSION = 5;
12
+ export declare const EVAA_MASTER_TESTNET: Address;
13
+ export declare const TESTNET_VERSION = 5;
14
+ export declare const EVAA_LP_TESTNET: Address;
15
+ export declare const EVAA_LP_TESTNET_VERSION = 5;
16
+ export declare const EVAA_LP_MAINNET: Address;
17
+ export declare const EVAA_LP_MAINNET_VERSION = 0;
18
+ export declare const MAIN_POOL_NFT_ID = "0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5";
19
+ export declare const LP_POOL_NFT_ID = "0x85f0045998038bebd076987deb4d4c680a323cb04380491eaa7857b6469ba923";
20
+ export declare const LENDING_CODE: Cell;
21
+ export declare const JETTON_WALLET_STANDART_CODE: Cell;
22
+ export declare const JETTON_WALLET_STANDART_CODE_TESTNET: Cell;
23
+ export declare const OPCODES: {
24
+ SUPPLY: number;
25
+ WITHDRAW: number;
26
+ LIQUIDATE: number;
27
+ JETTON_TRANSFER: number;
28
+ ONCHAIN_GETTER: number;
29
+ };
30
+ export declare const FEES: {
31
+ SUPPLY: bigint;
32
+ WITHDRAW: bigint;
33
+ SUPPLY_JETTON: bigint;
34
+ SUPPLY_JETTON_FWD: bigint;
35
+ LIQUIDATION: bigint;
36
+ LIQUIDATION_JETTON: bigint;
37
+ LIQUIDATION_JETTON_FWD: bigint;
38
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FEES = exports.OPCODES = exports.JETTON_WALLET_STANDART_CODE_TESTNET = exports.JETTON_WALLET_STANDART_CODE = exports.LENDING_CODE = exports.LP_POOL_NFT_ID = exports.MAIN_POOL_NFT_ID = exports.EVAA_LP_MAINNET_VERSION = exports.EVAA_LP_MAINNET = exports.EVAA_LP_TESTNET_VERSION = exports.EVAA_LP_TESTNET = exports.TESTNET_VERSION = exports.EVAA_MASTER_TESTNET = exports.MAINNET_VERSION = exports.EVAA_MASTER_MAINNET = exports.MASTER_CONSTANTS = void 0;
4
+ const core_1 = require("@ton/core");
5
+ exports.MASTER_CONSTANTS = {
6
+ FACTOR_SCALE: BigInt(1e12),
7
+ ASSET_COEFFICIENT_SCALE: 10000n,
8
+ ASSET_PRICE_SCALE: BigInt(1e9),
9
+ ASSET_RESERVE_FACTOR_SCALE: 10000n,
10
+ ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: 10000n,
11
+ ASSET_ORIGINATION_FEE_SCALE: BigInt(1e9)
12
+ };
13
+ exports.EVAA_MASTER_MAINNET = core_1.Address.parse('EQC8rUZqR_pWV1BylWUlPNBzyiTYVoBEmQkMIQDZXICfnuRr');
14
+ exports.MAINNET_VERSION = 5;
15
+ exports.EVAA_MASTER_TESTNET = core_1.Address.parse('EQCoIxsE8m0Q_Ui9uM-2RPtVWXqHK0ttuW2Mccuaj4FfdkLl');
16
+ exports.TESTNET_VERSION = 5;
17
+ exports.EVAA_LP_TESTNET = core_1.Address.parse('EQBghPVKxgauOyrcyNYNwE2MRRnebaNpDGpVDQLbml_LIXnK');
18
+ exports.EVAA_LP_TESTNET_VERSION = 5;
19
+ exports.EVAA_LP_MAINNET = core_1.Address.parse('EQBIlZX2URWkXCSg3QF2MJZU-wC5XkBoLww-hdWk2G37Jc6N');
20
+ exports.EVAA_LP_MAINNET_VERSION = 0;
21
+ exports.MAIN_POOL_NFT_ID = '0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5';
22
+ exports.LP_POOL_NFT_ID = '0x85f0045998038bebd076987deb4d4c680a323cb04380491eaa7857b6469ba923';
23
+ exports.LENDING_CODE = core_1.Cell.fromBoc(Buffer.from('b5ee9c72c1010e0100fd000d12182a555a6065717691969efd0114ff00f4a413f4bcf2c80b010202c8050202039f740403001ff2f8276a2687d2018fd201800f883b840051d38642c678b64e4400780e58fc10802faf07f80e59fa801e78b096664c02078067c07c100627a7978402014807060007a0ddb0c60201c709080013a0fd007a026900aa90400201200b0a0031b8e1002191960aa00b9e2ca007f4042796d225e8019203f6010201200d0c000bf7c147d2218400b9d10e86981fd201840b07f8138d809797976a2687d2029116382f970fd9178089910374daf81b619fd20182c7883b8701981684100627910eba56001797a6a6ba610fd8200e8768f76a9f6aa00cc2a32a8292878809bef2f1889f883bbcdeb86f01', 'hex'))[0];
24
+ exports.JETTON_WALLET_STANDART_CODE = core_1.Cell.fromBase64('te6cckECEwEAA4UAART/APSkE/S88sgLAQIBYgIDAgLLBAUAG6D2BdqJofQB9IH0gamjAgHOBgcCAVgKCwL3CDHAJJfBOAB0NMDAXGwlRNfA/Ad4PpA+kAx+gAxcdch+gAx+gAwc6m0AALTHwHbPFsyNDQ0JIIQD4p+pbqaMGwiNl4xECPwGuAkghAXjUUZupswbCJeMhAkQwDwG+A3WzaCEFlfB7y6nwJxsPLSwFAjuvLixgHwHOBfBYAgJABE+kQwwADy4U2AAXIBP+DMgbpUwgLH4M94gbvLSmtDTBzHT/9P/9ATTB9Qw0PoA+gD6APoA+gD6ADAACIQP8vACAVgMDQIBSBESAfcBdM/AQH6APpAIfAB7UTQ+gD6QPpA1NFRNqFSLMcF8uLBKsL/8uLCVDRCcFQgE1QUA8hQBPoCWM8WAc8WzMkiyMsBEvQA9ADLAMkgcAH5AHTIywISygfL/8nQBPpA9AQx+gAg10nCAPLixMiAGAHLBVAHzxZw+gJ3ActrgDgLzO1E0PoA+kD6QNTRCtM/AQH6AFFRoAX6QPpAU13HBVRzb3BUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJcAH5AHTIywISygfL/8nQUA/HBR6x8uLDDPoAUcqhKbYIGaFQB6AYoSaSbFXjDSXXCwHDACHCALCAPEACqE8zIghAXjUUZWAoCyx/LP1AH+gIizxZQBs8WJfoCUAPPFslQBcwjkXKRceJQB6gToAiqAFAEoBegFLzy4sUByYBA+wBDAMhQBPoCWM8WAc8WzMntVAByUmmgGKHIghBzYtCcKQLLH8s/UAf6AlAEzxZQB88WyciAEAHLBSfPFlAE+gJxActqE8zJcfsAUEITAHSOI8iAEAHLBVAGzxZQBfoCcAHLaoIQ1TJ221gFAssfyz/JcvsAklsz4kADyFAE+gJYzxYBzxbMye1UAOs7UTQ+gD6QPpA1NEF0z8BAfoAIcIA8uLC+kD0BAHQ05/RAdFRYqFSWMcF8uLBJsL/8uLCyIIQe92X3lgEAssfyz8B+gIjzxYBzxYTy5/JyIAYAcsFI88WcPoCcQHLaszJgED7AEATyFAE+gJYzxYBzxbMye1UgAIcgCDXIe1E0PoA+kD6QNTRBNMfAYQPIYIQF41FGboCghB73ZfeuhKx8vTTPwEw+gAwE6BQI8hQBPoCWM8WAc8WzMntVINjFu1o=');
25
+ exports.JETTON_WALLET_STANDART_CODE_TESTNET = core_1.Cell.fromBase64('te6cckECEQEAAyMAART/APSkE/S88sgLAQIBYgIDAgLMBAUAG6D2BdqJofQB9IH0gahhAgHUBgcCASAICQDDCDHAJJfBOAB0NMDAXGwlRNfA/AM4PpA+kAx+gAxcdch+gAx+gAwc6m0AALTH4IQD4p+pVIgupUxNFnwCeCCEBeNRRlSILqWMUREA/AK4DWCEFlfB7y6k1nwC+BfBIQP8vCAAET6RDBwuvLhTYAIBIAoLAIPUAQa5D2omh9AH0gfSBqGAJpj8EIC8aijKkQXUEIPe7L7wndCVj5cWLpn5j9ABgJ0CgR5CgCfQEsZ4sA54tmZPaqQB8VA9M/+gD6QCHwAe1E0PoA+kD6QNQwUTahUirHBfLiwSjC//LiwlQ0QnBUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJIPkAcHTIywLKB8v/ydAE+kD0BDH6ACDXScIA8uLEd4AYyMsFUAjPFnD6AhfLaxPMgMAgEgDQ4AnoIQF41FGcjLHxnLP1AH+gIizxZQBs8WJfoCUAPPFslQBcwjkXKRceJQCKgToIIJycOAoBS88uLFBMmAQPsAECPIUAT6AljPFgHPFszJ7VQC9ztRND6APpA+kDUMAjTP/oAUVGgBfpA+kBTW8cFVHNtcFQgE1QUA8hQBPoCWM8WAc8WzMkiyMsBEvQA9ADLAMn5AHB0yMsCygfL/8nQUA3HBRyx8uLDCvoAUaihggiYloBmtgihggiYloCgGKEnlxBJEDg3XwTjDSXXCwGAPEADXO1E0PoA+kD6QNQwB9M/+gD6QDBRUaFSSccF8uLBJ8L/8uLCBYIJMS0AoBa88uLDghB73ZfeyMsfFcs/UAP6AiLPFgHPFslxgBjIywUkzxZw+gLLaszJgED7AEATyFAE+gJYzxYBzxbMye1UgAHBSeaAYoYIQc2LQnMjLH1Iwyz9Y+gJQB88WUAfPFslxgBDIywUkzxZQBvoCFctqFMzJcfsAECQQIwB8wwAjwgCwjiGCENUydttwgBDIywVQCM8WUAT6AhbLahLLHxLLP8ly+wCTNWwh4gPIUAT6AljPFgHPFszJ7VSV6u3X');
26
+ exports.OPCODES = {
27
+ SUPPLY: 0x1,
28
+ WITHDRAW: 0x2,
29
+ LIQUIDATE: 0x3,
30
+ JETTON_TRANSFER: 0xf8a7ea5,
31
+ ONCHAIN_GETTER: 0x9998,
32
+ };
33
+ exports.FEES = {
34
+ SUPPLY: (0, core_1.toNano)('0.3'),
35
+ WITHDRAW: (0, core_1.toNano)('0.5'),
36
+ SUPPLY_JETTON: (0, core_1.toNano)('0.29'),
37
+ SUPPLY_JETTON_FWD: (0, core_1.toNano)('0.5'),
38
+ LIQUIDATION: (0, core_1.toNano)('0.8'),
39
+ LIQUIDATION_JETTON: (0, core_1.toNano)('1'),
40
+ LIQUIDATION_JETTON_FWD: (0, core_1.toNano)('0.8'),
41
+ };