@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/src/api/parser.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { beginCell, Cell, Dictionary, DictionaryValue, Slice } from '@ton/core';
2
- import { AssetConfig, AssetData, ExtendedAssetData, MasterData } from '../types/Master';
3
- import { MAINNET_ASSETS_ID, MASTER_CONSTANTS, TESTNET_ASSETS_ID } from '../constants';
2
+ import { AssetConfig, AssetData, ExtendedAssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConfig, MasterConstants, MasterData, PoolAssetsConfig } from '../types/Master';
4
3
  import {
5
4
  bigIntMax,
6
5
  bigIntMin,
7
6
  calculateAssetData,
8
7
  calculateLiquidationData,
8
+ calculateMaximumWithdrawAmount,
9
9
  calculatePresentValue,
10
10
  getAvailableToBorrow,
11
11
  presentValue,
@@ -134,8 +134,7 @@ export function createAssetConfig(): DictionaryValue<AssetConfig> {
134
134
  };
135
135
  }
136
136
 
137
- export function parseMasterData(masterDataBOC: string, testnet: boolean = false): MasterData {
138
- const ASSETS_ID = testnet ? TESTNET_ASSETS_ID : MAINNET_ASSETS_ID;
137
+ export function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants): MasterData {
139
138
  const masterSlice = Cell.fromBase64(masterDataBOC).beginParse();
140
139
  const meta = masterSlice.loadRef().beginParse().loadStringTail();
141
140
  const upgradeConfigParser = masterSlice.loadRef().beginParse();
@@ -163,10 +162,10 @@ export function parseMasterData(masterDataBOC: string, testnet: boolean = false)
163
162
  supply: Dictionary.empty<bigint, number>(),
164
163
  borrow: Dictionary.empty<bigint, number>(),
165
164
  };
166
-
167
- for (const [tokenSymbol, assetID] of Object.entries(ASSETS_ID)) {
168
- const assetData = calculateAssetData(assetsConfigDict, assetsDataDict, assetID);
169
- assetsExtendedData.set(assetID, assetData);
165
+
166
+ for (const [tokenSymbol, asset] of Object.entries(poolAssetsConfig)) {
167
+ const assetData = calculateAssetData(assetsConfigDict, assetsDataDict, asset.assetId, masterConstants);
168
+ assetsExtendedData.set(asset.assetId, assetData);
170
169
  }
171
170
 
172
171
  const masterConfig = {
@@ -179,14 +178,14 @@ export function parseMasterData(masterDataBOC: string, testnet: boolean = false)
179
178
 
180
179
  masterConfigSlice.endParse();
181
180
 
182
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
183
- const assetData = assetsExtendedData.get(assetID) as ExtendedAssetData;
184
- const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply);
185
- const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow);
186
- assetsReserves.set(assetID, assetData.balance - totalSupply + totalBorrow);
181
+ for (const [_, asset] of Object.entries(poolAssetsConfig)) {
182
+ const assetData = assetsExtendedData.get(asset.assetId) as ExtendedAssetData;
183
+ const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply, masterConstants);
184
+ const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow, masterConstants);
185
+ assetsReserves.set(asset.assetId, assetData.balance - totalSupply + totalBorrow);
187
186
 
188
- apy.supply.set(assetID, (1 + (Number(assetData.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1);
189
- apy.borrow.set(assetID, (1 + (Number(assetData.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1);
187
+ apy.supply.set(asset.assetId, (1 + (Number(assetData.supplyInterest) / 1e12) * 24 * 3600) ** 365 - 1);
188
+ apy.borrow.set(asset.assetId, (1 + (Number(assetData.borrowInterest) / 1e12) * 24 * 3600) ** 365 - 1);
190
189
  }
191
190
 
192
191
  return {
@@ -202,12 +201,13 @@ export function parseMasterData(masterDataBOC: string, testnet: boolean = false)
202
201
 
203
202
  export function parseUserLiteData(
204
203
  userDataBOC: string,
205
- assetsData: Dictionary<bigint, ExtendedAssetData>,
206
- assetsConfig: Dictionary<bigint, AssetConfig>,
204
+ assetsData: ExtendedAssetsData,
205
+ assetsConfig: ExtendedAssetsConfig,
206
+ poolAssetsConfig: PoolAssetsConfig,
207
+ masterConstants: MasterConstants,
207
208
  testnet: boolean = false,
208
209
  applyDust: boolean = false
209
210
  ): UserLiteData {
210
- const ASSETS_ID = testnet ? TESTNET_ASSETS_ID : MAINNET_ASSETS_ID;
211
211
  const userSlice = Cell.fromBase64(userDataBOC).beginParse();
212
212
 
213
213
  const codeVersion = userSlice.loadCoins();
@@ -243,17 +243,17 @@ export function parseUserLiteData(
243
243
 
244
244
  const userBalances = Dictionary.empty<bigint, UserBalance>();
245
245
 
246
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
247
- const assetData = assetsData.get(assetID) as ExtendedAssetData;
248
- const assetConfig = assetsConfig.get(assetID) as AssetConfig;
249
- let principals = principalsDict.get(assetID) || 0n;
246
+ for (const [_, asset] of Object.entries(poolAssetsConfig)) {
247
+ const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
248
+ const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
249
+ let principals = principalsDict.get(asset.assetId) || 0n;
250
+ const balance = presentValue(assetData.sRate, assetData.bRate, principals, masterConstants);
250
251
 
251
- if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust)) { // abs(principals) < dust
252
+ if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust)) { // v6 will be abs(principals) < dust
252
253
  principals = 0n;
253
- principalsDict.set(assetID, 0n);
254
+ principalsDict.set(asset.assetId, 0n);
254
255
  }
255
- const balance = presentValue(assetData.sRate, assetData.bRate, principals);
256
- userBalances.set(assetID, balance);
256
+ userBalances.set(asset.assetId, balance);
257
257
  }
258
258
 
259
259
  return {
@@ -277,70 +277,59 @@ export function parseUserLiteData(
277
277
 
278
278
  export function parseUserData(
279
279
  userLiteData: UserLiteData,
280
- assetsData: Dictionary<bigint, ExtendedAssetData>,
281
- assetsConfig: Dictionary<bigint, AssetConfig>,
280
+ assetsData: ExtendedAssetsData,
281
+ assetsConfig: ExtendedAssetsConfig,
282
282
  prices: Dictionary<bigint, bigint>,
283
- testnet: boolean = false,
283
+ poolAssetConfig: PoolAssetsConfig,
284
+ masterConstants: MasterConstants,
284
285
  applyDust: boolean = false
285
286
  ): UserData {
286
- const ASSETS_ID = testnet ? TESTNET_ASSETS_ID : MAINNET_ASSETS_ID;
287
287
  const withdrawalLimits = Dictionary.empty<bigint, bigint>();
288
288
  const borrowLimits = Dictionary.empty<bigint, bigint>();
289
289
 
290
290
  let supplyBalance = 0n;
291
291
  let borrowBalance = 0n;
292
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
293
- const assetData = assetsData.get(assetID) as ExtendedAssetData;
294
- const assetConfig = assetsConfig.get(assetID) as AssetConfig;
295
- let principals = userLiteData.principals.get(assetID) || 0n;
292
+ for (const [_, asset] of Object.entries(poolAssetConfig)) {
293
+ const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
294
+ const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
295
+ let principals = userLiteData.principals.get(asset.assetId) || 0n;
296
+ const balance = presentValue(assetData.sRate, assetData.bRate, principals, masterConstants);
296
297
 
297
- if (applyDust && (principals > -assetConfig.dust && principals < assetConfig.dust )) { // abs(principals) < dust
298
+ if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust )) { // v6 will be abs(principals) < dust
298
299
  principals = 0n;
299
- userLiteData.principals.set(assetID, 0n);
300
+ userLiteData.principals.set(asset.assetId, 0n);
300
301
  }
301
302
 
302
- const balance = presentValue(assetData.sRate, assetData.bRate, principals);
303
- userLiteData.balances.set(assetID, balance);
303
+ userLiteData.balances.set(asset.assetId, balance);
304
304
  }
305
305
 
306
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
307
- const assetConfig = assetsConfig.get(assetID) as AssetConfig;
308
- const balance = userLiteData.balances.get(assetID) as UserBalance;
306
+ for (const [_, asset] of Object.entries(poolAssetConfig)) {
307
+ const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
308
+ const balance = userLiteData.balances.get(asset.assetId) as UserBalance;
309
309
 
310
310
  if (balance.type === BalanceType.supply) {
311
- supplyBalance += (balance.amount * prices.get(assetID)!) / 10n ** assetConfig.decimals;
311
+ supplyBalance += (balance.amount * prices.get(asset.assetId)!) / 10n ** assetConfig.decimals;
312
312
  }
313
313
  if (balance.type === BalanceType.borrow) {
314
- borrowBalance += (balance.amount * prices.get(assetID)!) / 10n ** assetConfig.decimals;
314
+ borrowBalance += (balance.amount * prices.get(asset.assetId)!) / 10n ** assetConfig.decimals;
315
315
  }
316
316
  }
317
317
 
318
- const availableToBorrow = getAvailableToBorrow(assetsConfig, assetsData, userLiteData.principals, prices);
319
- for (const [_, assetID] of Object.entries(ASSETS_ID)) {
320
- const assetConfig = assetsConfig.get(assetID) as AssetConfig;
321
- const assetData = assetsData.get(assetID) as ExtendedAssetData;
322
- const balance = userLiteData.balances.get(assetID) as UserBalance;
323
-
318
+ const availableToBorrow = getAvailableToBorrow(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
319
+ for (const [_, asset] of Object.entries(poolAssetConfig)) {
320
+ const assetConfig = assetsConfig.get(asset.assetId) as AssetConfig;
321
+ const assetData = assetsData.get(asset.assetId) as ExtendedAssetData;
322
+ const balance = userLiteData.balances.get(asset.assetId) as UserBalance;
323
+
324
324
  if (balance.type === BalanceType.supply) {
325
325
  withdrawalLimits.set(
326
- assetID,
327
- bigIntMax(
328
- bigIntMin(
329
- assetData.balance,
330
- ((supplyBalance -
331
- (borrowBalance * MASTER_CONSTANTS.ASSET_COEFFICIENT_SCALE) / assetConfig.collateralFactor) *
332
- 10n ** assetConfig.decimals) /
333
- prices.get(assetID)! -
334
- 5n,
335
- balance.amount,
336
- ),
337
- 0n,
338
- ),
326
+ asset.assetId,
327
+ calculateMaximumWithdrawAmount(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants, asset.assetId)
339
328
  );
340
329
  }
341
330
  borrowLimits.set(
342
- assetID,
343
- bigIntMin((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(assetID)!, assetData.balance),
331
+ asset.assetId,
332
+ bigIntMin((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(asset.assetId)!, assetData.balance),
344
333
  );
345
334
  }
346
335
 
@@ -350,7 +339,7 @@ export function parseUserData(
350
339
  ? 0
351
340
  : Number(BigInt(1e9) - (availableToBorrow * BigInt(1e9)) / (borrowBalance + availableToBorrow)) / 1e7;
352
341
 
353
- const liquidationData = calculateLiquidationData(assetsConfig, assetsData, userLiteData.principals, prices);
342
+ const liquidationData = calculateLiquidationData(assetsConfig, assetsData, userLiteData.principals, prices, masterConstants);
354
343
  const healthFactor = 1 - Number(liquidationData.totalDebt) / Number(liquidationData.totalLimit);
355
344
 
356
345
  return {
package/src/api/prices.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { beginCell, Cell, Dictionary } from '@ton/core';
2
- import { NFT_ID } from '../constants';
3
2
  import { PriceData } from '../types/Common';
3
+ import { MAIN_POOL_NFT_ID } from '../constants/general';
4
4
 
5
5
  type NftData = {
6
6
  ledgerIndex: number;
@@ -39,12 +39,12 @@ type OutputData = {
39
39
  };
40
40
  }
41
41
 
42
- export async function getPrices(endpoints: string[] = ["api.stardust-mainnet.iotaledger.net"]) {
43
- return await Promise.any(endpoints.map(x => loadPrices(x)));
42
+ export async function getPrices(endpoints: string[] = ["api.stardust-mainnet.iotaledger.net"], nftId: string = MAIN_POOL_NFT_ID) {
43
+ return await Promise.any(endpoints.map(x => loadPrices(nftId, x)));
44
44
  }
45
45
 
46
- async function loadPrices(endpoint: String = "api.stardust-mainnet.iotaledger.net"): Promise<PriceData> {
47
- let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${NFT_ID}`, {
46
+ async function loadPrices(nftId: string, endpoint: string = "api.stardust-mainnet.iotaledger.net"): Promise<PriceData> {
47
+ let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${nftId}`, {
48
48
  headers: { accept: 'application/json' },
49
49
  });
50
50
  let outputId = (await result.json()) as NftData;
@@ -0,0 +1,117 @@
1
+ import { Address, Cell } from "@ton/core";
2
+ import { PoolAssetConfig } from "../types/Master";
3
+ import { sha256Hash } from "../utils/sha256BigInt";
4
+ import { JETTON_WALLET_STANDART_CODE, JETTON_WALLET_STANDART_CODE_TESTNET } from "./general";
5
+
6
+ export const TON_MAINNET: PoolAssetConfig = {
7
+ name: 'TON',
8
+ assetId: sha256Hash('TON')
9
+ }
10
+
11
+ export const TON_TESTNET = TON_MAINNET;
12
+
13
+ export const JUSDT_MAINNET: PoolAssetConfig = {
14
+ name: 'jUSDT',
15
+ assetId: sha256Hash('jUSDT'),
16
+ jettonMasterAddress: Address.parse('EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA'),
17
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE
18
+ }
19
+
20
+ export const JUSDC_MAINNET: PoolAssetConfig = {
21
+ name: 'jUSDC',
22
+ assetId: sha256Hash('jUSDC'),
23
+ jettonMasterAddress: Address.parse('EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728'),
24
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE
25
+ }
26
+
27
+ export const STTON_MAINNET: PoolAssetConfig = {
28
+ name: 'stTON',
29
+ assetId: sha256Hash('stTON'),
30
+ jettonMasterAddress: Address.parse('EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k'),
31
+ jettonWalletCode: Cell.fromBase64(
32
+ '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'
33
+ )
34
+ }
35
+
36
+ export const TSTON_MAINNET: PoolAssetConfig = {
37
+ name: 'tsTON',
38
+ assetId: sha256Hash('tsTON'),
39
+ jettonMasterAddress: Address.parse('EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav'),
40
+ jettonWalletCode: Cell.fromBase64(
41
+ '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'
42
+ )
43
+ }
44
+
45
+ export const USDT_MAINNET: PoolAssetConfig = {
46
+ name: 'USDT',
47
+ assetId: sha256Hash('USDT'),
48
+ jettonMasterAddress: Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'),
49
+ jettonWalletCode: Cell.fromBoc(
50
+ Buffer.from(
51
+ 'b5ee9c7241020f010003d1000114ff00f4a413f4bcf2c80b01020162050202012004030021bc508f6a2686981fd007d207d2068af81c0027bfd8176a2686981fd007d207d206899fc152098402f8d001d0d3030171b08e48135f038020d721ed44d0d303fa00fa40fa40d104d31f01840f218210178d4519ba0282107bdd97deba12b1f2f48040d721fa003012a0401303c8cb0358fa0201cf1601cf16c9ed54e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f012082100f8a7ea5ba8e85303459db3ce0330c0602d0228210178d4519ba8e84325adb3ce034218210595f07bcba8e843101db3ce032208210eed236d3ba8e2f30018040d721d303d1ed44d0d303fa00fa40fa40d1335142c705f2e04a403303c8cb0358fa0201cf1601cf16c9ed54e06c218210d372158cbadc840ff2f0080701f2ed44d0d303fa00fa40fa40d106d33f0101fa00fa40f401d15141a15288c705f2e04926c2fff2afc882107bdd97de01cb1f5801cb3f01fa0221cf1658cf16c9c8801801cb0526cf1670fa02017158cb6accc903f839206e943081169fde718102f270f8380170f836a0811a7770f836a0bcf2b0028050fb00030903f4ed44d0d303fa00fa40fa40d12372b0c002f26d07d33f0101fa005141a004fa40fa4053bac705f82a5464e070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c9f9007074c8cb02ca07cbffc9d0500cc7051bb1f2e04a09fa0021925f04e30d26d70b01c000b393306c33e30d55020b0a09002003c8cb0358fa0201cf1601cf16c9ed54007a5054a1f82fa07381040982100966018070f837b60972fb02c8801001cb055005cf1670fa027001cb6a8210d53276db01cb1f5801cb3fc9810082fb00590060c882107362d09c01cb1f2501cb3f5004fa0258cf1658cf16c9c8801001cb0524cf1658fa02017158cb6accc98011fb0001f203d33f0101fa00fa4021fa4430c000f2e14ded44d0d303fa00fa40fa40d15309c7052471b0c00021b1f2ad522bc705500ab1f2e0495115a120c2fff2aff82a54259070546004131503c8cb0358fa0201cf1601cf16c921c8cb0113f40012f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f401fa00200d019820d70b009ad74bc00101c001b0f2b19130e2c88210178d451901cb1f500a01cb3f5008fa0223cf1601cf1626fa025007cf16c9c8801801cb055004cf1670fa024063775003cb6bccccc945370e00b42191729171e2f839206e938124279120e2216e94318128739101e25023a813a0738103a370f83ca00270f83612a00170f836a07381040982100966018070f837a0bcf2b0048050fb005803c8cb0358fa0201cf1601cf16c9ed5401f9319e',
52
+ 'hex'
53
+ )
54
+ )[0],
55
+ }
56
+
57
+ export const JUSDT_TESTNET: PoolAssetConfig = {
58
+ name: 'jUSDT',
59
+ assetId: sha256Hash('jUSDT'),
60
+ jettonMasterAddress: Address.parse('kQBe4gtSQMxM5RpMYLr4ydNY72F8JkY-icZXG1NJcsju8XM7'),
61
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET
62
+ }
63
+
64
+ export const JUSDC_TESTNET: PoolAssetConfig = {
65
+ name: 'jUSDC',
66
+ assetId: sha256Hash('jUSDC'),
67
+ jettonMasterAddress: Address.parse('kQDaY5yUatYnHei73HBqRX_Ox9LK2XnR7XuCY9MFC2INbfYI'),
68
+ jettonWalletCode: JETTON_WALLET_STANDART_CODE_TESTNET
69
+ }
70
+
71
+ export const STTON_TESTNET: PoolAssetConfig = {
72
+ name: 'stTON',
73
+ assetId: sha256Hash('stTON'),
74
+ jettonMasterAddress: Address.parse('kQC3Duw3dg8k98xf5S7Bm7YOWVJ5QW8hm3iLqFfJfa_g9h07'),
75
+ jettonWalletCode: Cell.fromBoc(
76
+ Buffer.from(
77
+ 'b5ee9c7201021201000362000114ff00f4a413f4bcf2c80b0102016202030202cc0405001ba0f605da89a1f401f481f481a8610201d40607020120090a01cf0831c02497c138007434c0c05c6c2544d7c0fc03383e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7c8608403e29fa96ea54c4d167c027808608405e351466ea58c511100fc02b80860841657c1ef2ea54c4d167c02f80517c1300138c08c2103fcbc200800113e910c30003cb85360007ced44d0fa00fa40fa40d43010235f03018208989680a16d801072226eb32091719170e203c8cb055006cf165004fa02cb6a039358cc019130e201c901fb000201200b0c0081d40106b90f6a2687d007d207d206a1802698f90c1080bc6a28cdd0141083deecbef5d0958f97064699f98fd001809d02811e428027d012c678b00e78b6664f6aa401f1503d33ffa00fa4021f001ed44d0fa00fa40fa40d4305136a1522ac705f2e2c128c2fff2e2c254344270542013541403c85004fa0258cf1601cf16ccc922c8cb0112f400f400cb00c920f9007074c8cb02ca07cbffc9d004fa40f40431fa0020d749c200f2e2c4778018c8cb055008cf1670fa0217cb6b13cc80d0201200e0f009e8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a0820a625a00a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5402f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a019ad8228608239387028062849e5c412440e0dd7c138c34975c2c060101100c90c3b51343e803e903e90350c01b4cffe800c145128548df1c17cb8b04970bffcb8b0812082e4e1c02fbcb8b160841ef765f7b232c7c532cfd63e808873c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b552000705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023007cc30023c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed54',
78
+ 'hex',
79
+ ),
80
+ )[0],
81
+ }
82
+
83
+ export const TONUSDT_DEDUST_MAINNET: PoolAssetConfig = {
84
+ name: 'TONUSDT_DEDUST',
85
+ assetId: sha256Hash('TONUSDT_DEDUST'),
86
+ jettonMasterAddress: Address.parse('EQA-X_yo3fzzbDbJ_0bzFWKqtRuZFIRa1sJsveZJ1YpViO3r'),
87
+ jettonWalletCode: Cell.fromBoc(
88
+ Buffer.from(
89
+ 'b5ee9c7241021201000334000114ff00f4a413f4bcf2c80b0102016202110202cc03060201d4040500c30831c02497c138007434c0c05c6c2544d7c0fc02f83e903e900c7e800c5c75c87e800c7e800c1cea6d0000b4c7e08403e29fa954882ea54c4d167c0238208405e3514654882ea58c511100fc02780d60841657c1ef2ea4d67c02b817c12103fcbc2000113e910c1c2ebcb85360020148070e020120080a01f100f4cffe803e90087c007b51343e803e903e90350c144da8548ab1c17cb8b04a30bffcb8b0950d109c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c032483e401c1d3232c0b281f2fff274013e903d010c7e800835d270803cb8b11de0063232c1540233c59c3e8085f2dac4f3200900ae8210178d4519c8cb1f19cb3f5007fa0222cf165006cf1625fa025003cf16c95005cc2391729171e25008a813a08208e4e1c0aa008208989680a0a014bcf2e2c504c98040fb001023c85004fa0258cf1601cf16ccc9ed5403f73b51343e803e903e90350c0234cffe80145468017e903e9014d6f1c1551cdb5c150804d50500f214013e809633c58073c5b33248b232c044bd003d0032c0327e401c1d3232c0b281f2fff274140371c1472c7cb8b0c2be80146a2860822625a020822625a004ad8228608239387028062849f8c3c975c2c070c008e00b0c0d00705279a018a182107362d09cc8cb1f5230cb3f58fa025007cf165007cf16c9718010c8cb0524cf165006fa0215cb6a14ccc971fb0010241023000e10491038375f040076c200b08e218210d53276db708010c8cb055008cf165004fa0216cb6a12cb1f12cb3fc972fb0093356c21e203c85004fa0258cf1601cf16ccc9ed540201200f1000db3b51343e803e903e90350c01f4cffe803e900c145468549271c17cb8b049f0bffcb8b0a0823938702a8005a805af3cb8b0e0841ef765f7b232c7c572cfd400fe8088b3c58073c5b25c60063232c14933c59c3e80b2dab33260103ec01004f214013e809633c58073c5b3327b55200083200835c87b51343e803e903e90350c0134c7e08405e3514654882ea0841ef765f784ee84ac7cb8b174cfcc7e800c04e81408f214013e809633c58073c5b3327b5520001ba0f605da89a1f401f481f481a861f0a7d84b',
90
+ 'hex',
91
+ ),
92
+ )[0],
93
+ }
94
+
95
+ export const TON_STORM_MAINNET: PoolAssetConfig = {
96
+ name: 'TON_STORM',
97
+ assetId: sha256Hash('TON_STORM'),
98
+ jettonMasterAddress: Address.parse('EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F'),
99
+ jettonWalletCode: Cell.fromBoc(
100
+ Buffer.from(
101
+ 'b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d',
102
+ 'hex',
103
+ ),
104
+ )[0],
105
+ }
106
+
107
+ export const USDT_STORM_MAINNET: PoolAssetConfig = {
108
+ name: 'USDT_STORM',
109
+ assetId: sha256Hash('USDT_STORM'),
110
+ jettonMasterAddress: Address.parse('EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW'),
111
+ jettonWalletCode: Cell.fromBoc(
112
+ Buffer.from(
113
+ 'b5ee9c7241021301000380000114ff00f4a413f4bcf2c80b0102016202100202cd030f04add106380792000e8698180b8d8474289af81ed9e707d207d2018fd0018b8eb90fd0018fd001839d4da0001698f90c10807c53f52dd4742989a2ced9e7010c1080bc6a28cdd474318a22201ed9e701a9041082caf83de5d40405080c00888020d721ed44d0fa00fa40fa40d74c04d31f8200fff0228210178d4519ba0382107bdd97deba13b112f2f4d33f31fa003013a05023c85004fa0258cf1601cf16ccc9ed5401f603d33ffa00fa4021f007ed44d0fa00fa40fa40d74c5136a1522ac705f2e2c128c2fff2e2c2545255705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d004fa40f40431fa0020d749c200f2e2c48210178d4519c8cb1f1acb3f5008fa0223cf1601060176cf1626fa025007cf162591729171e2500aa815a0820a43d580a016bcf2e2c57007c9103741408040db3c4300c85004fa0258cf1601cf16ccc9ed5407002e778018c8cb055005cf165005fa0213cb6bccccc901fb0002f6ed44d0fa00fa40fa40d74c08d33ffa005151a005fa40fa40547c25705202541304c85004fa0258cf1601cf16ccc921c8cb0113f40012f400cb00c97021f90074c8cb0212cb07cbffc9d031536cc7050dc7051cb1f2e2c30afa0051a8a12195104a395f04e30d048208989680b60972fb0225d70b01c30003c20013090a014c521aa018a182107362d09cc8cb1f5240cb3f5003fa0201cf165008cf16c954253071db3c10350e0158b08e948210d53276dbc8cb1f14cb3f704055810082db3c923333e25003c85004fa0258cf1601cf16ccc9ed540b0030708018c8cb055004cf165004fa0212cb6a01cf17c901fb0002a08e843059db3ce06c22ed44d0fa00fa40fa40d74c10235f030182106d8e5e3cba8ea75202c705f2e2c1820898968070fb0201d70b3f8210d53276dbc8cb1fcb3f7001c912810082db3ce05f03840ff2f00d0e01bc30ed44d0fa00fa40fa40d74c06d33ffa00fa40305151a15248c705f2e2c126c2fff2e2c20582100ee6b280b9f2d2c782107bdd97dec8cb1fcb3f5004fa0221cf1658cf167001c952308040db3c4013c85004fa0258cf1601cf16ccc9ed540e002c718018c8cb055004cf165004fa0212cb6accc901fb000011f7d22186000797163402016611120021b5fe7da89a1f401f481f481ae9826be070001bb7605da89a1f401f481f481ae990c6f31b9d',
114
+ 'hex',
115
+ ),
116
+ )[0],
117
+ }
@@ -0,0 +1,54 @@
1
+ import { Address, Cell, toNano } from '@ton/core';
2
+ import { sha256Hash } from '../utils/sha256BigInt';
3
+
4
+ export const MASTER_CONSTANTS = {
5
+ FACTOR_SCALE: BigInt(1e12),
6
+ ASSET_COEFFICIENT_SCALE: 10000n,
7
+ ASSET_PRICE_SCALE: BigInt(1e9),
8
+ ASSET_RESERVE_FACTOR_SCALE: 10000n,
9
+ ASSET_LIQUIDATION_RESERVE_FACTOR_SCALE: 10000n,
10
+ ASSET_ORIGINATION_FEE_SCALE: BigInt(1e9)
11
+ };
12
+
13
+ export const EVAA_MASTER_MAINNET = Address.parse('EQC8rUZqR_pWV1BylWUlPNBzyiTYVoBEmQkMIQDZXICfnuRr');
14
+ export const MAINNET_VERSION = 5;
15
+ export const EVAA_MASTER_TESTNET = Address.parse('EQCoIxsE8m0Q_Ui9uM-2RPtVWXqHK0ttuW2Mccuaj4FfdkLl');
16
+ export const TESTNET_VERSION = 5;
17
+ export const EVAA_LP_TESTNET = Address.parse('EQBghPVKxgauOyrcyNYNwE2MRRnebaNpDGpVDQLbml_LIXnK');
18
+ export const EVAA_LP_TESTNET_VERSION = 5;
19
+ export const EVAA_LP_MAINNET = Address.parse('EQBIlZX2URWkXCSg3QF2MJZU-wC5XkBoLww-hdWk2G37Jc6N');
20
+ export const EVAA_LP_MAINNET_VERSION = 0;
21
+
22
+ export const MAIN_POOL_NFT_ID = '0xfb9874544d76ca49c5db9cc3e5121e4c018bc8a2fb2bfe8f2a38c5b9963492f5';
23
+ export const LP_POOL_NFT_ID = '0x85f0045998038bebd076987deb4d4c680a323cb04380491eaa7857b6469ba923';
24
+
25
+ export const LENDING_CODE = Cell.fromBoc(
26
+ Buffer.from(
27
+ 'b5ee9c72c1010e0100fd000d12182a555a6065717691969efd0114ff00f4a413f4bcf2c80b010202c8050202039f740403001ff2f8276a2687d2018fd201800f883b840051d38642c678b64e4400780e58fc10802faf07f80e59fa801e78b096664c02078067c07c100627a7978402014807060007a0ddb0c60201c709080013a0fd007a026900aa90400201200b0a0031b8e1002191960aa00b9e2ca007f4042796d225e8019203f6010201200d0c000bf7c147d2218400b9d10e86981fd201840b07f8138d809797976a2687d2029116382f970fd9178089910374daf81b619fd20182c7883b8701981684100627910eba56001797a6a6ba610fd8200e8768f76a9f6aa00cc2a32a8292878809bef2f1889f883bbcdeb86f01',
28
+ 'hex',
29
+ ),
30
+ )[0];
31
+
32
+ export const JETTON_WALLET_STANDART_CODE = Cell.fromBase64(
33
+ '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=');
34
+
35
+ export const JETTON_WALLET_STANDART_CODE_TESTNET = Cell.fromBase64(
36
+ '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');
37
+
38
+ export const OPCODES = {
39
+ SUPPLY: 0x1,
40
+ WITHDRAW: 0x2,
41
+ LIQUIDATE: 0x3,
42
+ JETTON_TRANSFER: 0xf8a7ea5,
43
+ ONCHAIN_GETTER: 0x9998,
44
+ };
45
+
46
+ export const FEES = {
47
+ SUPPLY: toNano('0.3'),
48
+ WITHDRAW: toNano('0.5'),
49
+ SUPPLY_JETTON: toNano('0.29'),
50
+ SUPPLY_JETTON_FWD: toNano('0.5'),
51
+ LIQUIDATION: toNano('0.8'),
52
+ LIQUIDATION_JETTON: toNano('1'),
53
+ LIQUIDATION_JETTON_FWD: toNano('0.8'),
54
+ };
@@ -0,0 +1,63 @@
1
+ import { Address } from "@ton/core";
2
+ import { JUSDC_MAINNET, JUSDC_TESTNET, JUSDT_MAINNET, JUSDT_TESTNET, STTON_MAINNET, STTON_TESTNET, TON_MAINNET, TON_STORM_MAINNET, TONUSDT_DEDUST_MAINNET, TSTON_MAINNET, USDT_MAINNET, USDT_STORM_MAINNET } from "./assets";
3
+ import { PoolConfig } from "../types/Master";
4
+ import { EVAA_MASTER_MAINNET, EVAA_MASTER_TESTNET, LENDING_CODE, MAINNET_VERSION, MASTER_CONSTANTS, MAIN_POOL_NFT_ID, TESTNET_VERSION, LP_POOL_NFT_ID, EVAA_LP_TESTNET, EVAA_LP_TESTNET_VERSION, EVAA_LP_MAINNET, EVAA_LP_MAINNET_VERSION } from "./general";
5
+
6
+ export const MAINNET_POOL_CONFIG: PoolConfig = {
7
+ masterAddress: EVAA_MASTER_MAINNET,
8
+ masterVersion: MAINNET_VERSION,
9
+ masterConstants: MASTER_CONSTANTS,
10
+ nftId: MAIN_POOL_NFT_ID,
11
+ poolAssetsConfig: [
12
+ TON_MAINNET,
13
+ JUSDT_MAINNET,
14
+ JUSDC_MAINNET,
15
+ STTON_MAINNET,
16
+ TSTON_MAINNET,
17
+ USDT_MAINNET
18
+ ],
19
+ lendingCode: LENDING_CODE
20
+ };
21
+
22
+ export const TESTNET_POOL_CONFIG: PoolConfig = {
23
+ masterAddress: EVAA_MASTER_TESTNET,
24
+ masterVersion: TESTNET_VERSION,
25
+ masterConstants: MASTER_CONSTANTS,
26
+ nftId: MAIN_POOL_NFT_ID,
27
+ poolAssetsConfig: [
28
+ TON_MAINNET,
29
+ JUSDT_TESTNET,
30
+ JUSDC_TESTNET,
31
+ STTON_TESTNET
32
+ ],
33
+ lendingCode: LENDING_CODE
34
+ };
35
+
36
+ export const TESTNET_LP_POOL_CONFIG: PoolConfig = {
37
+ masterAddress: EVAA_LP_TESTNET,
38
+ masterVersion: EVAA_LP_TESTNET_VERSION,
39
+ masterConstants: MASTER_CONSTANTS,
40
+ nftId: LP_POOL_NFT_ID,
41
+ poolAssetsConfig: [
42
+ TON_MAINNET,
43
+ JUSDT_TESTNET,
44
+ JUSDC_TESTNET,
45
+ STTON_TESTNET
46
+ ],
47
+ lendingCode: LENDING_CODE
48
+ };
49
+
50
+ export const MAINNET_LP_POOL_CONFIG: PoolConfig = {
51
+ masterAddress: EVAA_LP_MAINNET,
52
+ masterVersion: EVAA_LP_MAINNET_VERSION,
53
+ masterConstants: MASTER_CONSTANTS,
54
+ nftId: LP_POOL_NFT_ID,
55
+ poolAssetsConfig: [
56
+ TON_MAINNET,
57
+ USDT_MAINNET,
58
+ TONUSDT_DEDUST_MAINNET,
59
+ TON_STORM_MAINNET,
60
+ USDT_STORM_MAINNET,
61
+ ],
62
+ lendingCode: LENDING_CODE
63
+ };