@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/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,
|
|
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,
|
|
168
|
-
const assetData = calculateAssetData(assetsConfigDict, assetsDataDict,
|
|
169
|
-
assetsExtendedData.set(
|
|
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 [_,
|
|
183
|
-
const assetData = assetsExtendedData.get(
|
|
184
|
-
const totalSupply = calculatePresentValue(assetData.sRate, assetData.totalSupply);
|
|
185
|
-
const totalBorrow = calculatePresentValue(assetData.bRate, assetData.totalBorrow);
|
|
186
|
-
assetsReserves.set(
|
|
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(
|
|
189
|
-
apy.borrow.set(
|
|
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:
|
|
206
|
-
assetsConfig:
|
|
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 [_,
|
|
247
|
-
const assetData = assetsData.get(
|
|
248
|
-
const assetConfig = assetsConfig.get(
|
|
249
|
-
let principals = principalsDict.get(
|
|
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 &&
|
|
252
|
+
if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust)) { // v6 will be abs(principals) < dust
|
|
252
253
|
principals = 0n;
|
|
253
|
-
principalsDict.set(
|
|
254
|
+
principalsDict.set(asset.assetId, 0n);
|
|
254
255
|
}
|
|
255
|
-
|
|
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:
|
|
281
|
-
assetsConfig:
|
|
280
|
+
assetsData: ExtendedAssetsData,
|
|
281
|
+
assetsConfig: ExtendedAssetsConfig,
|
|
282
282
|
prices: Dictionary<bigint, bigint>,
|
|
283
|
-
|
|
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 [_,
|
|
293
|
-
const assetData = assetsData.get(
|
|
294
|
-
const assetConfig = assetsConfig.get(
|
|
295
|
-
let principals = userLiteData.principals.get(
|
|
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 &&
|
|
298
|
+
if (applyDust && (principals > -assetConfig.dust && balance.amount < assetConfig.dust )) { // v6 will be abs(principals) < dust
|
|
298
299
|
principals = 0n;
|
|
299
|
-
userLiteData.principals.set(
|
|
300
|
+
userLiteData.principals.set(asset.assetId, 0n);
|
|
300
301
|
}
|
|
301
302
|
|
|
302
|
-
|
|
303
|
-
userLiteData.balances.set(assetID, balance);
|
|
303
|
+
userLiteData.balances.set(asset.assetId, balance);
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
for (const [_,
|
|
307
|
-
const assetConfig = assetsConfig.get(
|
|
308
|
-
const balance = userLiteData.balances.get(
|
|
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(
|
|
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(
|
|
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 [_,
|
|
320
|
-
const assetConfig = assetsConfig.get(
|
|
321
|
-
const assetData = assetsData.get(
|
|
322
|
-
const balance = userLiteData.balances.get(
|
|
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
|
-
|
|
327
|
-
|
|
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
|
-
|
|
343
|
-
bigIntMin((availableToBorrow * 10n ** assetConfig.decimals) / prices.get(
|
|
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:
|
|
47
|
-
let result = await fetch(`https://${endpoint}/api/indexer/v1/outputs/nft/${
|
|
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
|
+
'te6cckECIQEAB38AART/APSkE/S88sgLAQIBYgIDAgLLBAUCASAWFwSz0IMcAkl8E4AHQ0wMBcbCOhRNfA9s84PpA+kAx+gAx9AQx+gAx+gAwc6m0AALTHwEgghAPin6luo6FMDRZ2zzgIIIQF41FGbqOhjBERAPbPOA1JIIQWV8HvLqBgcICQATov0iGGAAeXCmwADCgCDXIe1E0PoA+kD6QNT6ANMvMCD4I7mXMBSgcFQUAN4G0x8BggD/8CGCEBeNRRm6AoIQe92X3roSsfL00z8BMPoAMBWgBRA0QTDIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAL2A9M/AQH6APpAIfAV7UTQ+gD6QPpA1PoA0y8wIPgjuZcwFKBwVBQA3lFYoVJMxwXy4sEqwv/y4sJUNiFwVHAAJBA1EEcQNlnIUAb6AlAEzxZYzxbMAfoCAQHLL8kiyMsBEvQA9ADLAMkg2zwG+kD0BDH6ACDXScIA8uLEGwoC9u1E0PoA+kD6QNT6ANMvMCD4I7mXMBSgcFQUAN4lnSLXZZjII9DPFsn7BN/fCtM/AQH6AFFxoAf6QPpAU33HBVRzh3BUcAAkEDUQRxA2WchQBvoCUATPFljPFswB+gIBAcsvySLIywES9AD0AMsAyds8UA/HBR6x8uLDDBsLA/6OhDRZ2zzgbCLtRND6APpA+kDU+gDTLzAg+CO5lzAUoHBUFADeKIIQbY5ePLqOPRBFXwUzUiLHBfLiwYIImJaAcPsCyIAQAcsFWM8WcPoCcAHLaoIQ1TJ22wHLHwHTPwESAcs/AdHJgQCC+wDgKIIQdopQsrrjAiiCEGn7MGy6DQ4PANzIghAXjUUZAcsfUAwByz9QCvoCJc8WAc8WKPoCUAnPFsnIgBgBywVQBs8WcPoCQIV3UAPLa8zMJZFykXHiUAqoFaCCCfeKQKAWvPLixQbJgED7AFAEBQPIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAH4+gBRyqEhjjlSHKAaociCEHNi0JwByx8kAcs/UAP6AgHPFlAKzxbJyIAQAcsFJs8WUAj6AlAHcVjLaszJcfsAEFeVEEw7XwTiBoIImJaAtgly+wIn1wsBwwAFwgAVsJI1NeMNUCXIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAwATsiAEAHLBVAHzxZw+gJwActqghDVMnbbAcsfUAUByz/JgQCC+wAQNAH27UTQ+gD6QPpA1PoA0y8wIPgjuZcwFKBwVBQA3gnTPwEB+gD6QPQEMFGCoVJ8xwXy4sEqwv/y4sIIggle88CgghAstBeAoBm88uLHyIIQe92X3gHLHwEByz9QB/oCI88WUAXPFhP0AMnIgBgBywUjzxZw+gIBcVjLaszJEACkEEVfBTNSIscF8uLB0z8BAfpA+gD0BNHIgBgBywVQA88WcPoCyIIQD4p+pQHLH1AEAcs/AfoCI88WUAPPFhL0AHD6AnABygDJcVjLaszJgED7AAT+4wJfAzIkghAxjv8Xuo5YNFrHBfLixgHTPwEB0z8BMNMvAQHUgQ8Q+COCCCeNAKAkvPL0+CMjufLg+dHIgBgBywVQBM8WcPoCcAHLaoIQHH+aGgHLH1gByz8BAcsvzHAByz/JgED7AOAkgguaN0664wIEghDDnwvmuuMCXwSEDxESExQAPIBA+wAEUDXIUAb6AlAEzxZYzxbMAfoCAQHLL8ntVAP+OFI3xwXy4sYE0z8BAfpA0y8BgQ8Q+COCCCeNAKAivPL0+CMhufLg+QHSAAEB0gABAdH4KIhBUAJwAshYzxYBzxZw+gJw+gLJIcjLARP0ABL0AMsAySDbPFCooCJwDLYJyIAYAcsFUAnPFiv6AlAKdljLa8yCECvWNwQByx9QBBobFQBcNFjHBfLixtM/AQHRyIAQAcsFWM8WcPoCcAHLaoIQX+m4ygHLHwEByz/JgED7AABmWMcF8uLG0z8BAfpA0ciAEAHLBVADzxZw+gJwActqghAsy6AGAcsfAQHLPwHPFsmAQPsAAATy8ABmAcs/Jc8WAQHLLyf6AlgBygABAcoAyYBA+wBDQ8hQBvoCUATPFljPFswB+gIBAcsvye1UAgFYGBkAPb9rz2omh9AH0gfSBqfQBpl5gQfBHcy5gKUDgqCgBvQCTbQCXwURAkBOAFkLGeLAOeLOH0BOH0BZJDkZYCJ+gAJegBlgGTtnkBobAD+3YF2omh9AH0gfSBqfQBpl5gQfBHcy5gKUDgqCgBvLcAEU/wD0pBP0vPLICxwAHPkAdMjLAnABygfL/8nQAgFiHR4BQtAzMdDTAwFxsJFb4PpAMAHTHwGCECvWNwS64wJbhA/y8B8AHaFxl9qJofSB9IH0AfQAYQH+7UTQ+kD6QPoA+gAwUjbHBfLh9APTPwEB+kDTLwEB+gDSAAEB0gABMVEooSmhIZNRiKCVUZmgCQjiKML/8uH1ggiYloBw+wImEDhAGshQBM8WWM8WAfoCAfoCye1UyIAQAcsFUATPFnD6AnABy2qCEG7bGIkByx9YAcs/Ac8WASAAJgHLL1j6AlgBygABAcoAyYMG+wDZ+GMW'
|
|
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
|
+
};
|