@evaafi/sdk 0.6.4 → 0.9.0
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/feeds.d.ts +30 -0
- package/dist/api/feeds.js +73 -0
- package/dist/api/liquidation.js +1 -1
- package/dist/api/math.js +1 -1
- package/dist/api/parser.d.ts +4 -2
- package/dist/api/parser.js +39 -18
- package/dist/api/parsers/AbstractOracleParser.d.ts +11 -0
- package/dist/api/parsers/AbstractOracleParser.js +9 -0
- package/dist/api/parsers/ClassicOracleParser.d.ts +10 -0
- package/dist/api/parsers/ClassicOracleParser.js +16 -0
- package/dist/api/parsers/PythOracleParser.d.ts +17 -0
- package/dist/api/parsers/PythOracleParser.js +22 -0
- package/dist/api/parsers/index.d.ts +3 -0
- package/dist/api/parsers/index.js +19 -0
- package/dist/api/prices.d.ts +6 -6
- package/dist/api/prices.js +37 -46
- package/dist/api/pyth.d.ts +16 -0
- package/dist/api/pyth.js +35 -0
- package/dist/constants/assets/assetId.d.ts +22 -0
- package/dist/constants/assets/assetId.js +29 -0
- package/dist/constants/assets/index.d.ts +3 -0
- package/dist/constants/assets/index.js +19 -0
- package/dist/constants/assets/mainnet.d.ts +19 -0
- package/dist/constants/assets/mainnet.js +114 -0
- package/dist/constants/assets/testnet.d.ts +14 -0
- package/dist/constants/assets/testnet.js +54 -0
- package/dist/constants/assets.d.ts +3 -0
- package/dist/constants/assets.js +14 -1
- package/dist/constants/general/index.d.ts +65 -0
- package/dist/constants/general/index.js +93 -0
- package/dist/constants/general/mainnet.d.ts +24 -0
- package/dist/constants/general/mainnet.js +53 -0
- package/dist/constants/general/testnet.d.ts +12 -0
- package/dist/constants/general/testnet.js +15 -0
- package/dist/constants/general.d.ts +4 -4
- package/dist/constants/general.js +6 -6
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.js +19 -0
- package/dist/constants/pools/index.d.ts +2 -0
- package/dist/constants/pools/index.js +18 -0
- package/dist/constants/pools/mainnet.d.ts +14 -0
- package/dist/constants/pools/mainnet.js +145 -0
- package/dist/constants/pools/testnet.d.ts +9 -0
- package/dist/constants/pools/testnet.js +57 -0
- package/dist/constants/pools.js +9 -9
- package/dist/contracts/AbstractMaster.d.ts +185 -0
- package/dist/contracts/AbstractMaster.js +179 -0
- package/dist/contracts/ClassicMaster.d.ts +34 -0
- package/dist/contracts/ClassicMaster.js +87 -0
- package/dist/contracts/PythMaster.d.ts +61 -0
- package/dist/contracts/PythMaster.js +179 -0
- package/dist/contracts/UserContract.d.ts +1 -7
- package/dist/contracts/UserContract.js +1 -19
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.js +21 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.js +20 -60
- package/dist/prices/Oracle.interface.d.ts +9 -0
- package/dist/prices/Oracle.interface.js +2 -0
- package/dist/prices/Prices.d.ts +5 -3
- package/dist/prices/Prices.js +13 -3
- package/dist/prices/PricesCollector.d.ts +17 -7
- package/dist/prices/PricesCollector.js +67 -51
- package/dist/prices/PythCollector.d.ts +22 -0
- package/dist/prices/PythCollector.js +217 -0
- package/dist/prices/Types.d.ts +17 -2
- package/dist/prices/Types.js +8 -1
- package/dist/prices/index.d.ts +4 -3
- package/dist/prices/index.js +4 -3
- package/dist/prices/sources/Backend.d.ts +5 -4
- package/dist/prices/sources/Backend.js +16 -13
- package/dist/prices/sources/Icp.d.ts +2 -1
- package/dist/prices/sources/Icp.js +12 -9
- package/dist/prices/sources/PriceSource.d.ts +7 -6
- package/dist/prices/utils.d.ts +10 -9
- package/dist/prices/utils.js +32 -46
- package/dist/rewards/RewardMaster.d.ts +0 -1
- package/dist/rewards/RewardUser.d.ts +0 -1
- package/dist/types/Master.d.ts +10 -31
- package/dist/types/Master.js +3 -0
- package/dist/types/MasterRewards.d.ts +0 -1
- package/dist/types/UserRewards.d.ts +0 -1
- package/dist/utils/sha256BigInt.d.ts +0 -1
- package/dist/utils/userJettonWallet.js +0 -8
- package/dist/utils/utils.d.ts +8 -1
- package/dist/utils/utils.js +31 -2
- package/package.json +4 -3
- package/src/api/feeds.ts +90 -0
- package/src/api/liquidation.ts +1 -1
- package/src/api/math.ts +1 -1
- package/src/api/parser.ts +100 -38
- package/src/api/parsers/AbstractOracleParser.ts +16 -0
- package/src/api/parsers/ClassicOracleParser.ts +20 -0
- package/src/api/parsers/PythOracleParser.ts +34 -0
- package/src/api/parsers/index.ts +3 -0
- package/src/api/prices.ts +32 -41
- package/src/constants/assets/assetId.ts +30 -0
- package/src/constants/assets/index.ts +3 -0
- package/src/constants/{assets.ts → assets/mainnet.ts} +27 -94
- package/src/constants/assets/testnet.ts +74 -0
- package/src/constants/general/index.ts +91 -0
- package/src/constants/{general.ts → general/mainnet.ts} +48 -72
- package/src/constants/general/testnet.ts +25 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/pools/index.ts +2 -0
- package/src/constants/pools/mainnet.ts +218 -0
- package/src/constants/pools/testnet.ts +75 -0
- package/src/contracts/AbstractMaster.ts +450 -0
- package/src/contracts/ClassicMaster.ts +149 -0
- package/src/contracts/PythMaster.ts +313 -0
- package/src/contracts/UserContract.ts +7 -28
- package/src/contracts/index.ts +7 -0
- package/src/index.ts +18 -85
- package/src/prices/Oracle.interface.ts +18 -0
- package/src/prices/Prices.ts +17 -4
- package/src/prices/PricesCollector.ts +91 -68
- package/src/prices/PythCollector.ts +294 -0
- package/src/prices/Types.ts +28 -6
- package/src/prices/index.ts +4 -3
- package/src/prices/sources/Backend.ts +21 -19
- package/src/prices/sources/Icp.ts +13 -10
- package/src/prices/sources/PriceSource.ts +6 -5
- package/src/prices/utils.ts +65 -68
- package/src/types/Master.ts +29 -52
- package/src/types/User.ts +15 -7
- package/src/utils/userJettonWallet.ts +0 -8
- package/src/utils/utils.ts +41 -2
- package/src/constants/pools.ts +0 -175
- package/src/contracts/MasterContract.ts +0 -410
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Dictionary } from '@ton/ton';
|
|
3
|
+
import { Buffer } from 'buffer';
|
|
4
|
+
export declare const PYTH_TON_PRICE_FEED_ID = "0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026";
|
|
5
|
+
export declare const PYTH_USDT_PRICE_FEED_ID = "0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b";
|
|
6
|
+
export declare const PYTH_STTON_PRICE_FEED_ID = "0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002";
|
|
7
|
+
export declare const PYTH_TSTON_PRICE_FEED_ID = "0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25";
|
|
8
|
+
export declare const PYTH_USDC_PRICE_FEED_ID = "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a";
|
|
9
|
+
export declare const PYTH_USDE_PRICE_FEED_ID = "0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d";
|
|
10
|
+
export declare const PYTH_TSUSDE_PRICE_FEED_ID = "0xcbe184846426619a60f51056d26efecb0537ad3a73b1e965fe695d06a257cb19";
|
|
11
|
+
export declare function bigintToBuffer(value: bigint, size: number): Buffer;
|
|
12
|
+
export declare const packConnectedFeeds: (evaa_id: bigint, reffered_id: bigint) => Buffer;
|
|
13
|
+
export declare const EVAA_TON_PRICE_FEED_ID: bigint;
|
|
14
|
+
export declare const EVAA_NOT_PRICE_FEED_ID: bigint;
|
|
15
|
+
export declare const EVAA_DOGS_PRICE_FEED_ID: bigint;
|
|
16
|
+
export declare const EVAA_USDT_PRICE_FEED_ID: bigint;
|
|
17
|
+
export declare const EVAA_STTON_PRICE_FEED_ID: bigint;
|
|
18
|
+
export declare const EVAA_TSTON_PRICE_FEED_ID: bigint;
|
|
19
|
+
export declare const EVAA_JUSDC_PRICE_FEED_ID: bigint;
|
|
20
|
+
export declare const EVAA_JUSDT_PRICE_FEED_ID: bigint;
|
|
21
|
+
export declare const EVAA_USDE_PRICE_FEED_ID: bigint;
|
|
22
|
+
export declare const EVAA_TSUSDE_PRICE_FEED_ID: bigint;
|
|
23
|
+
export declare const MAIN_POOL_FEEDS_MAP: Dictionary<bigint, Buffer>;
|
|
24
|
+
export type FeedMapItem = {
|
|
25
|
+
evaaId: bigint;
|
|
26
|
+
referredPythFeed: bigint;
|
|
27
|
+
};
|
|
28
|
+
export declare function parseFeedsMapDict(dict: Dictionary<bigint, Buffer>): Map<bigint, FeedMapItem>;
|
|
29
|
+
export declare const TESTNET_ALLOWED_REF_TOKENS: Dictionary<bigint, bigint>;
|
|
30
|
+
export declare const TESTNET_FEEDS_MAP: Dictionary<bigint, Buffer>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TESTNET_FEEDS_MAP = exports.TESTNET_ALLOWED_REF_TOKENS = exports.parseFeedsMapDict = exports.MAIN_POOL_FEEDS_MAP = exports.EVAA_TSUSDE_PRICE_FEED_ID = exports.EVAA_USDE_PRICE_FEED_ID = exports.EVAA_JUSDT_PRICE_FEED_ID = exports.EVAA_JUSDC_PRICE_FEED_ID = exports.EVAA_TSTON_PRICE_FEED_ID = exports.EVAA_STTON_PRICE_FEED_ID = exports.EVAA_USDT_PRICE_FEED_ID = exports.EVAA_DOGS_PRICE_FEED_ID = exports.EVAA_NOT_PRICE_FEED_ID = exports.EVAA_TON_PRICE_FEED_ID = exports.packConnectedFeeds = exports.bigintToBuffer = exports.PYTH_TSUSDE_PRICE_FEED_ID = exports.PYTH_USDE_PRICE_FEED_ID = exports.PYTH_USDC_PRICE_FEED_ID = exports.PYTH_TSTON_PRICE_FEED_ID = exports.PYTH_STTON_PRICE_FEED_ID = exports.PYTH_USDT_PRICE_FEED_ID = exports.PYTH_TON_PRICE_FEED_ID = void 0;
|
|
4
|
+
const ton_1 = require("@ton/ton");
|
|
5
|
+
const buffer_1 = require("buffer");
|
|
6
|
+
const assets_1 = require("../constants/assets");
|
|
7
|
+
exports.PYTH_TON_PRICE_FEED_ID = '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026';
|
|
8
|
+
exports.PYTH_USDT_PRICE_FEED_ID = '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b';
|
|
9
|
+
exports.PYTH_STTON_PRICE_FEED_ID = '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002';
|
|
10
|
+
exports.PYTH_TSTON_PRICE_FEED_ID = '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25';
|
|
11
|
+
exports.PYTH_USDC_PRICE_FEED_ID = '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a';
|
|
12
|
+
exports.PYTH_USDE_PRICE_FEED_ID = '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d';
|
|
13
|
+
exports.PYTH_TSUSDE_PRICE_FEED_ID = '0xcbe184846426619a60f51056d26efecb0537ad3a73b1e965fe695d06a257cb19';
|
|
14
|
+
function bigintToBuffer(value, size) {
|
|
15
|
+
if (value < 0n) {
|
|
16
|
+
throw new Error('Only non-negative bigint is supported');
|
|
17
|
+
}
|
|
18
|
+
// it's questionable whether it stores in LE or BE
|
|
19
|
+
// and what option will TVM use, now by default it's BE
|
|
20
|
+
const hex = value.toString(16);
|
|
21
|
+
const padded = hex.padStart(size * 2, '0');
|
|
22
|
+
return buffer_1.Buffer.from(padded, 'hex');
|
|
23
|
+
}
|
|
24
|
+
exports.bigintToBuffer = bigintToBuffer;
|
|
25
|
+
const packConnectedFeeds = (evaa_id, reffered_id) => {
|
|
26
|
+
return buffer_1.Buffer.concat([bigintToBuffer(evaa_id, 32), bigintToBuffer(reffered_id, 32)]);
|
|
27
|
+
};
|
|
28
|
+
exports.packConnectedFeeds = packConnectedFeeds;
|
|
29
|
+
exports.EVAA_TON_PRICE_FEED_ID = assets_1.ASSET_ID.TON;
|
|
30
|
+
exports.EVAA_NOT_PRICE_FEED_ID = assets_1.ASSET_ID.NOT;
|
|
31
|
+
exports.EVAA_DOGS_PRICE_FEED_ID = assets_1.ASSET_ID.DOGS;
|
|
32
|
+
exports.EVAA_USDT_PRICE_FEED_ID = assets_1.ASSET_ID.USDT;
|
|
33
|
+
exports.EVAA_STTON_PRICE_FEED_ID = assets_1.ASSET_ID.stTON;
|
|
34
|
+
exports.EVAA_TSTON_PRICE_FEED_ID = assets_1.ASSET_ID.tsTON;
|
|
35
|
+
exports.EVAA_JUSDC_PRICE_FEED_ID = assets_1.ASSET_ID.jUSDC;
|
|
36
|
+
exports.EVAA_JUSDT_PRICE_FEED_ID = assets_1.ASSET_ID.jUSDT;
|
|
37
|
+
exports.EVAA_USDE_PRICE_FEED_ID = assets_1.ASSET_ID.USDe;
|
|
38
|
+
exports.EVAA_TSUSDE_PRICE_FEED_ID = assets_1.ASSET_ID.tsUSDe;
|
|
39
|
+
exports.MAIN_POOL_FEEDS_MAP = (() => {
|
|
40
|
+
const map = ton_1.Dictionary.empty();
|
|
41
|
+
map.set(BigInt(exports.PYTH_TON_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_TON_PRICE_FEED_ID, 0n));
|
|
42
|
+
map.set(BigInt(exports.PYTH_USDT_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_USDT_PRICE_FEED_ID, 0n));
|
|
43
|
+
map.set(BigInt(exports.PYTH_STTON_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_STTON_PRICE_FEED_ID, BigInt(exports.PYTH_TON_PRICE_FEED_ID)));
|
|
44
|
+
map.set(BigInt(exports.PYTH_TSTON_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_TSTON_PRICE_FEED_ID, BigInt(exports.PYTH_TON_PRICE_FEED_ID)));
|
|
45
|
+
map.set(BigInt(exports.PYTH_USDC_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_JUSDC_PRICE_FEED_ID, 0n));
|
|
46
|
+
map.set(BigInt(exports.PYTH_USDT_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_JUSDT_PRICE_FEED_ID, 0n));
|
|
47
|
+
map.set(BigInt(exports.PYTH_USDE_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_USDE_PRICE_FEED_ID, 0n));
|
|
48
|
+
map.set(BigInt(exports.PYTH_TSUSDE_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_TSUSDE_PRICE_FEED_ID, 0n));
|
|
49
|
+
return map;
|
|
50
|
+
})();
|
|
51
|
+
function parseFeedsMapDict(dict) {
|
|
52
|
+
const parsedData = new Map();
|
|
53
|
+
for (const key of dict.keys()) {
|
|
54
|
+
const buffer = dict.get(key);
|
|
55
|
+
const hex1 = '0x' + buffer.toString('hex', 0, 32);
|
|
56
|
+
const hex2 = '0x' + buffer.toString('hex', 32);
|
|
57
|
+
const evaaId = BigInt(hex1);
|
|
58
|
+
const referredPythFeed = BigInt(hex2);
|
|
59
|
+
parsedData.set(key, { evaaId, referredPythFeed });
|
|
60
|
+
}
|
|
61
|
+
return parsedData;
|
|
62
|
+
}
|
|
63
|
+
exports.parseFeedsMapDict = parseFeedsMapDict;
|
|
64
|
+
exports.TESTNET_ALLOWED_REF_TOKENS = (() => {
|
|
65
|
+
const map = ton_1.Dictionary.empty();
|
|
66
|
+
map.set(BigInt(exports.EVAA_JUSDT_PRICE_FEED_ID), BigInt(exports.EVAA_USDT_PRICE_FEED_ID));
|
|
67
|
+
return map;
|
|
68
|
+
})();
|
|
69
|
+
exports.TESTNET_FEEDS_MAP = (() => {
|
|
70
|
+
const map = ton_1.Dictionary.empty();
|
|
71
|
+
map.set(BigInt(exports.PYTH_TON_PRICE_FEED_ID), (0, exports.packConnectedFeeds)(exports.EVAA_TON_PRICE_FEED_ID, 0n));
|
|
72
|
+
return map;
|
|
73
|
+
})();
|
package/dist/api/liquidation.js
CHANGED
|
@@ -118,7 +118,7 @@ principalsDict, pricesDict, assetsDataDict, assetsConfigDict, masterConstants) {
|
|
|
118
118
|
let allowedCollateralValue = toAssetWorth(collateralInfo.balance, collateralInfo.scale, collateralInfo.price);
|
|
119
119
|
const _isBadDebt = isBadDebt(supplyAmount, borrowAmount, liquidationBonus, masterConstants);
|
|
120
120
|
if (!_isBadDebt) {
|
|
121
|
-
allowedCollateralValue = math_1.BigMath.min(allowedCollateralValue, math_1.BigMath.max(allowedCollateralValue /
|
|
121
|
+
allowedCollateralValue = math_1.BigMath.min(allowedCollateralValue, math_1.BigMath.max(allowedCollateralValue / 3n, collateralThreshold));
|
|
122
122
|
}
|
|
123
123
|
const loanValue = toAssetWorth(loanInfo.balance, loanInfo.scale, loanInfo.price);
|
|
124
124
|
const baseLiquidationValue = math_1.BigMath.min(loanValue, deductLiquidationBonus(allowedCollateralValue, liquidationBonus, liquidationBonusScale));
|
package/dist/api/math.js
CHANGED
|
@@ -331,7 +331,7 @@ function calculateLiquidationData(assetsConfig, assetsData, principals, prices,
|
|
|
331
331
|
const loanAssetConfig = assetsConfig.get(loanAsset.assetId);
|
|
332
332
|
const liquidationBonus = collateralAssetConfig.liquidationBonus;
|
|
333
333
|
const loanScale = 10n ** loanAssetConfig.decimals;
|
|
334
|
-
values.push((bigIntMax(collateralValue /
|
|
334
|
+
values.push((bigIntMax(collateralValue / 3n, bigIntMin(collateralValue, COLLATERAL_WORTH_THRESHOLD)) *
|
|
335
335
|
loanScale *
|
|
336
336
|
poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE) /
|
|
337
337
|
liquidationBonus /
|
package/dist/api/parser.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Dictionary, DictionaryValue } from '@ton/core';
|
|
2
|
-
import {
|
|
2
|
+
import { MasterConfig, MasterData, OracleInfo } from '../contracts/AbstractMaster';
|
|
3
|
+
import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, PoolAssetsConfig, PoolConfig } from '../types/Master';
|
|
3
4
|
import { UserData, UserLiteData, UserRewards } from '../types/User';
|
|
5
|
+
import { OracleParser } from './parsers/AbstractOracleParser';
|
|
4
6
|
export declare function createUserRewards(): DictionaryValue<UserRewards>;
|
|
5
7
|
export declare function createAssetData(): DictionaryValue<AssetData>;
|
|
6
8
|
export declare function createAssetConfig(): DictionaryValue<AssetConfig>;
|
|
7
|
-
export declare function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants): MasterData
|
|
9
|
+
export declare function parseMasterData(masterDataBOC: string, poolAssetsConfig: PoolAssetsConfig, masterConstants: MasterConstants, oracleParser: OracleParser): MasterData<MasterConfig<OracleInfo>>;
|
|
8
10
|
export declare function parseUserLiteData(userDataBOC: string, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, poolConfig: PoolConfig, applyDust?: boolean): UserLiteData;
|
|
9
11
|
export declare function parseUserData(userLiteData: UserLiteData, assetsData: ExtendedAssetsData, assetsConfig: ExtendedAssetsConfig, prices: Dictionary<bigint, bigint>, poolConfig: PoolConfig, applyDust?: boolean): UserData;
|
package/dist/api/parser.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseUserData = exports.parseUserLiteData = exports.parseMasterData = exports.createAssetConfig = exports.createAssetData = exports.createUserRewards = void 0;
|
|
4
4
|
const core_1 = require("@ton/core");
|
|
5
|
-
const math_1 = require("./math");
|
|
6
|
-
const helpers_1 = require("./helpers");
|
|
7
5
|
const User_1 = require("../types/User");
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
|
+
const math_1 = require("./math");
|
|
8
8
|
function createUserRewards() {
|
|
9
9
|
return {
|
|
10
10
|
serialize: (src, buidler) => {
|
|
@@ -42,7 +42,17 @@ function createAssetData() {
|
|
|
42
42
|
const trackingSupplyIndex = BigInt(src.loadUintBig(64));
|
|
43
43
|
const trackingBorrowIndex = BigInt(src.loadUintBig(64));
|
|
44
44
|
const awaitedSupply = BigInt(src.loadUintBig(64));
|
|
45
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
sRate,
|
|
47
|
+
bRate,
|
|
48
|
+
totalSupply,
|
|
49
|
+
totalBorrow,
|
|
50
|
+
lastAccural,
|
|
51
|
+
balance,
|
|
52
|
+
trackingSupplyIndex,
|
|
53
|
+
trackingBorrowIndex,
|
|
54
|
+
awaitedSupply,
|
|
55
|
+
};
|
|
46
56
|
},
|
|
47
57
|
};
|
|
48
58
|
}
|
|
@@ -50,7 +60,7 @@ exports.createAssetData = createAssetData;
|
|
|
50
60
|
function createAssetConfig() {
|
|
51
61
|
return {
|
|
52
62
|
serialize: (src, builder) => {
|
|
53
|
-
builder.storeUint(src.
|
|
63
|
+
builder.storeUint(src.jwAddress, 256);
|
|
54
64
|
builder.storeUint(src.decimals, 8);
|
|
55
65
|
const refBuild = (0, core_1.beginCell)();
|
|
56
66
|
refBuild.storeUint(src.collateralFactor, 16);
|
|
@@ -70,10 +80,14 @@ function createAssetConfig() {
|
|
|
70
80
|
refBuild.storeUint(src.minPrincipalForRewards, 64);
|
|
71
81
|
refBuild.storeUint(src.baseTrackingSupplySpeed, 64);
|
|
72
82
|
refBuild.storeUint(src.baseTrackingBorrowSpeed, 64);
|
|
83
|
+
refBuild.storeInt(src.borrowCap, 64);
|
|
84
|
+
refBuild.storeUint(src.heCategory, 8);
|
|
85
|
+
refBuild.storeUint(src.heCollateralFactor, 16);
|
|
86
|
+
refBuild.storeUint(src.heLiquidationThreshold, 16);
|
|
73
87
|
builder.storeRef(refBuild.endCell());
|
|
74
88
|
},
|
|
75
89
|
parse: (src) => {
|
|
76
|
-
const
|
|
90
|
+
const jwAddress = src.loadUintBig(256);
|
|
77
91
|
const decimals = BigInt(src.loadUint(8));
|
|
78
92
|
const ref = src.loadRef().beginParse();
|
|
79
93
|
const collateralFactor = ref.loadUintBig(16);
|
|
@@ -93,8 +107,12 @@ function createAssetConfig() {
|
|
|
93
107
|
const minPrincipalForRewards = ref.loadUintBig(64);
|
|
94
108
|
const baseTrackingSupplySpeed = ref.loadUintBig(64);
|
|
95
109
|
const baseTrackingBorrowSpeed = ref.loadUintBig(64);
|
|
110
|
+
const borrowCap = ref.loadInt(64);
|
|
111
|
+
const heCategory = ref.loadUint(8);
|
|
112
|
+
const heCollateralFactor = ref.loadUint(16);
|
|
113
|
+
const heLiquidationThreshold = ref.loadUint(16);
|
|
96
114
|
return {
|
|
97
|
-
|
|
115
|
+
jwAddress,
|
|
98
116
|
decimals,
|
|
99
117
|
collateralFactor,
|
|
100
118
|
liquidationThreshold,
|
|
@@ -112,13 +130,17 @@ function createAssetConfig() {
|
|
|
112
130
|
liquidationReserveFactor,
|
|
113
131
|
minPrincipalForRewards,
|
|
114
132
|
baseTrackingSupplySpeed,
|
|
115
|
-
baseTrackingBorrowSpeed
|
|
133
|
+
baseTrackingBorrowSpeed,
|
|
134
|
+
borrowCap,
|
|
135
|
+
heCategory,
|
|
136
|
+
heCollateralFactor,
|
|
137
|
+
heLiquidationThreshold,
|
|
116
138
|
};
|
|
117
139
|
},
|
|
118
140
|
};
|
|
119
141
|
}
|
|
120
142
|
exports.createAssetConfig = createAssetConfig;
|
|
121
|
-
function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
143
|
+
function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants, oracleParser) {
|
|
122
144
|
const masterSlice = core_1.Cell.fromBase64(masterDataBOC).beginParse();
|
|
123
145
|
const meta = masterSlice.loadRef().beginParse().loadStringTail();
|
|
124
146
|
const upgradeConfigParser = masterSlice.loadRef().beginParse();
|
|
@@ -142,19 +164,18 @@ function parseMasterData(masterDataBOC, poolAssetsConfig, masterConstants) {
|
|
|
142
164
|
supply: core_1.Dictionary.empty(),
|
|
143
165
|
borrow: core_1.Dictionary.empty(),
|
|
144
166
|
};
|
|
145
|
-
for (const [
|
|
167
|
+
for (const [, asset] of Object.entries(poolAssetsConfig)) {
|
|
146
168
|
const assetData = (0, math_1.calculateAssetData)(assetsConfigDict, assetsDataDict, asset.assetId, masterConstants);
|
|
147
169
|
assetsExtendedData.set(asset.assetId, assetData);
|
|
148
170
|
}
|
|
171
|
+
const ifActive = oracleParser.getIfActive(masterConfigSlice);
|
|
172
|
+
const oraclesInfo = oracleParser.parseOracleConfig(masterConfigSlice);
|
|
149
173
|
const masterConfig = {
|
|
150
|
-
ifActive
|
|
174
|
+
ifActive,
|
|
151
175
|
admin: masterConfigSlice.loadAddress(),
|
|
152
|
-
oraclesInfo
|
|
153
|
-
numOracles: masterConfigSlice.loadUint(16),
|
|
154
|
-
threshold: masterConfigSlice.loadUint(16),
|
|
155
|
-
oracles: (0, helpers_1.loadMaybeMyRef)(masterConfigSlice)
|
|
156
|
-
},
|
|
176
|
+
oraclesInfo,
|
|
157
177
|
tokenKeys: (0, helpers_1.loadMaybeMyRef)(masterConfigSlice),
|
|
178
|
+
supervisor: masterConfigSlice.loadMaybeAddress(),
|
|
158
179
|
};
|
|
159
180
|
masterConfigSlice.endParse();
|
|
160
181
|
for (const [_, asset] of Object.entries(poolAssetsConfig)) {
|
|
@@ -212,7 +233,7 @@ function parseUserLiteData(userDataBOC, assetsData, assetsConfig, poolConfig, ap
|
|
|
212
233
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
213
234
|
let principal = realPrincipals.get(asset.assetId) || 0n;
|
|
214
235
|
let balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principal, masterConstants);
|
|
215
|
-
if (applyDust &&
|
|
236
|
+
if (applyDust && principal > 0 && principal < assetConfig.dust) {
|
|
216
237
|
principal = 0n;
|
|
217
238
|
balance = {
|
|
218
239
|
amount: 0n,
|
|
@@ -267,7 +288,7 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfi
|
|
|
267
288
|
const assetConfig = assetsConfig.get(asset.assetId);
|
|
268
289
|
let principal = userLiteData.principals.get(asset.assetId) || 0n;
|
|
269
290
|
const balance = (0, math_1.presentValue)(assetData.sRate, assetData.bRate, principal, masterConstants);
|
|
270
|
-
if (applyDust &&
|
|
291
|
+
if (applyDust && principal > 0 && principal < assetConfig.dust) {
|
|
271
292
|
principal = 0n;
|
|
272
293
|
userLiteData.principals.set(asset.assetId, 0n);
|
|
273
294
|
}
|
|
@@ -324,7 +345,7 @@ function parseUserData(userLiteData, assetsData, assetsConfig, prices, poolConfi
|
|
|
324
345
|
limitUsed: limitUsed,
|
|
325
346
|
liquidationData: liquidationData,
|
|
326
347
|
healthFactor: healthFactor,
|
|
327
|
-
havePrincipalWithoutPrice: havePrincipalWithoutPrice
|
|
348
|
+
havePrincipalWithoutPrice: havePrincipalWithoutPrice,
|
|
328
349
|
};
|
|
329
350
|
}
|
|
330
351
|
exports.parseUserData = parseUserData;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Slice } from '@ton/core';
|
|
2
|
+
import { ClassicOracleInfo } from './ClassicOracleParser';
|
|
3
|
+
import { PythOracleInfo } from './PythOracleParser';
|
|
4
|
+
export interface OracleParser {
|
|
5
|
+
parseOracleConfig(masterConfigSlice: Slice): ClassicOracleInfo | PythOracleInfo;
|
|
6
|
+
getIfActive(masterConfigSlice: Slice): number;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class AbstractOracleParser implements OracleParser {
|
|
9
|
+
abstract parseOracleConfig(masterConfigSlice: Slice): ClassicOracleInfo | PythOracleInfo;
|
|
10
|
+
getIfActive(masterConfigSlice: Slice): number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractOracleParser = void 0;
|
|
4
|
+
class AbstractOracleParser {
|
|
5
|
+
getIfActive(masterConfigSlice) {
|
|
6
|
+
return masterConfigSlice.loadInt(8);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.AbstractOracleParser = AbstractOracleParser;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Cell, Slice } from '@ton/core';
|
|
2
|
+
import { AbstractOracleParser } from './AbstractOracleParser';
|
|
3
|
+
export type ClassicOracleInfo = {
|
|
4
|
+
numOracles: number;
|
|
5
|
+
threshold: number;
|
|
6
|
+
oracles: Cell | null;
|
|
7
|
+
};
|
|
8
|
+
export declare class ClassicOracleParser extends AbstractOracleParser {
|
|
9
|
+
parseOracleConfig(masterConfigSlice: Slice): ClassicOracleInfo;
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassicOracleParser = void 0;
|
|
4
|
+
const helpers_1 = require("../helpers");
|
|
5
|
+
const AbstractOracleParser_1 = require("./AbstractOracleParser");
|
|
6
|
+
class ClassicOracleParser extends AbstractOracleParser_1.AbstractOracleParser {
|
|
7
|
+
parseOracleConfig(masterConfigSlice) {
|
|
8
|
+
const oraclesSlice = masterConfigSlice.loadRef().beginParse();
|
|
9
|
+
return {
|
|
10
|
+
numOracles: oraclesSlice.loadUint(16),
|
|
11
|
+
threshold: oraclesSlice.loadUint(16),
|
|
12
|
+
oracles: (0, helpers_1.loadMaybeMyRef)(oraclesSlice),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ClassicOracleParser = ClassicOracleParser;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Address, Dictionary, Slice } from '@ton/core';
|
|
3
|
+
import { AbstractOracleParser } from './AbstractOracleParser';
|
|
4
|
+
export type OracleConfig = {
|
|
5
|
+
pythAddress: Address;
|
|
6
|
+
feedsMap: Dictionary<bigint, Buffer>;
|
|
7
|
+
allowedRefTokens: Dictionary<bigint, bigint>;
|
|
8
|
+
};
|
|
9
|
+
export type PythOracleInfo = OracleConfig & {
|
|
10
|
+
pricesTtl: number;
|
|
11
|
+
pythComputeBaseGas: bigint;
|
|
12
|
+
pythComputePerUpdateGas: bigint;
|
|
13
|
+
pythSingleUpdateFee: bigint;
|
|
14
|
+
};
|
|
15
|
+
export declare class PythOracleParser extends AbstractOracleParser {
|
|
16
|
+
parseOracleConfig(masterConfigSlice: Slice): PythOracleInfo;
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PythOracleParser = void 0;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
const AbstractOracleParser_1 = require("./AbstractOracleParser");
|
|
6
|
+
class PythOracleParser extends AbstractOracleParser_1.AbstractOracleParser {
|
|
7
|
+
parseOracleConfig(masterConfigSlice) {
|
|
8
|
+
const oraclesSlice = masterConfigSlice.loadRef().beginParse();
|
|
9
|
+
const feedDataCell = oraclesSlice.loadRef();
|
|
10
|
+
const feedDataSlice = feedDataCell.beginParse();
|
|
11
|
+
return {
|
|
12
|
+
pythAddress: oraclesSlice.loadAddress(),
|
|
13
|
+
feedsMap: feedDataSlice.loadDict(core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.Buffer(64)),
|
|
14
|
+
allowedRefTokens: feedDataSlice.loadDict(core_1.Dictionary.Keys.BigUint(256), core_1.Dictionary.Values.BigUint(256)),
|
|
15
|
+
pricesTtl: oraclesSlice.loadUint(32),
|
|
16
|
+
pythComputeBaseGas: oraclesSlice.loadUintBig(64),
|
|
17
|
+
pythComputePerUpdateGas: oraclesSlice.loadUintBig(64),
|
|
18
|
+
pythSingleUpdateFee: oraclesSlice.loadUintBig(64),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.PythOracleParser = PythOracleParser;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AbstractOracleParser"), exports);
|
|
18
|
+
__exportStar(require("./ClassicOracleParser"), exports);
|
|
19
|
+
__exportStar(require("./PythOracleParser"), exports);
|
package/dist/api/prices.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare function
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { HexString } from '@pythnetwork/hermes-client';
|
|
3
|
+
import { Cell } from '@ton/core';
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
export declare function composeFeedsCell(feeds: HexString[]): Cell;
|
|
6
|
+
export declare function packPythUpdatesData(pythUpdates: Buffer | Cell): Cell;
|
package/dist/api/prices.js
CHANGED
|
@@ -1,56 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (endpoints.length == 0) {
|
|
11
|
-
throw new Error("Empty endpoint list");
|
|
3
|
+
exports.packPythUpdatesData = exports.composeFeedsCell = void 0;
|
|
4
|
+
const pyth_ton_js_1 = require("@pythnetwork/pyth-ton-js");
|
|
5
|
+
const core_1 = require("@ton/core");
|
|
6
|
+
const ton_1 = require("@ton/ton");
|
|
7
|
+
function composeFeedsCell(feeds) {
|
|
8
|
+
if (feeds.length === 0) {
|
|
9
|
+
return (0, ton_1.beginCell)().storeUint(0, 8).endCell();
|
|
12
10
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
let acceptedPrices: RawPriceData[] = prices.filter(verifyPrices(poolConfig.poolAssetsConfig));
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (acceptedPrices.length < poolConfig.minimalOracles) {
|
|
28
|
-
throw new Error("Prices are outdated");
|
|
11
|
+
const reversedTail = feeds.slice(1).reverse();
|
|
12
|
+
const packedTail = reversedTail.reduce((prev, curr) => {
|
|
13
|
+
const builder = (0, ton_1.beginCell)().storeUint(BigInt(curr), 256);
|
|
14
|
+
if (prev !== null)
|
|
15
|
+
builder.storeRef(prev);
|
|
16
|
+
return builder.endCell();
|
|
17
|
+
}, null);
|
|
18
|
+
const firstFeed = feeds[0];
|
|
19
|
+
const builder = (0, ton_1.beginCell)().storeUint(feeds.length, 8).storeUint(BigInt(firstFeed), 256);
|
|
20
|
+
if (packedTail !== null) {
|
|
21
|
+
builder.storeRef(packedTail);
|
|
29
22
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
return builder.endCell();
|
|
24
|
+
}
|
|
25
|
+
exports.composeFeedsCell = composeFeedsCell;
|
|
26
|
+
function packPythUpdatesData(pythUpdates) {
|
|
27
|
+
return pythUpdates instanceof core_1.Cell ? pythUpdates : (0, pyth_ton_js_1.createCellChain)(pythUpdates);
|
|
28
|
+
}
|
|
29
|
+
exports.packPythUpdatesData = packPythUpdatesData;
|
|
30
|
+
/*
|
|
31
|
+
old code:
|
|
32
|
+
export async function getPrices(endpoints: string[] = ["api.stardust-mainnet.iotaledger.net"], poolConfig: PoolConfig = MAINNET_POOL_CONFIG): Promise<PriceData> {
|
|
33
|
+
if (endpoints.length == 0) {
|
|
34
|
+
throw new Error("Empty endpoint list");
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
acceptedPrices = newerPrices.sort((a, b) => a.oracleId - b.oracleId);
|
|
37
|
+
const sources: PriceSourcesConfig = {
|
|
38
|
+
icpEndpoints: DefaultPriceSourcesConfig.icpEndpoints,
|
|
39
|
+
backendEndpoints: DefaultPriceSourcesConfig.backendEndpoints,
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
const priceCollector = new PricesCollector(poolConfig, sources);
|
|
43
|
+
const prices = await priceCollector.getPrices();
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
const packedMedianData = packAssetsData(medianData);
|
|
44
|
-
|
|
45
|
-
const oraclesData = acceptedPrices.map(x => ({oracle: {id: x.oracleId, pubkey: x.pubkey}, data: {timestamp: x.timestamp, prices: x.dict}, signature: x.signature}));
|
|
46
|
-
const packedOracleData = packOraclesData(oraclesData, poolConfig.poolAssetsConfig.map(x => x.assetId));
|
|
47
|
-
|
|
48
|
-
const dict = Dictionary.empty<bigint, bigint>();
|
|
49
|
-
medianData.forEach(x => dict.set(x.assetId, x.medianPrice));
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
dict: dict,
|
|
53
|
-
dataCell: packPrices(packedMedianData, packedOracleData)
|
|
54
|
-
};*/
|
|
45
|
+
return { dict: prices.dict, dataCell: prices.dataCell };
|
|
55
46
|
}
|
|
56
|
-
|
|
47
|
+
*/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Address } from "@ton/ton";
|
|
2
|
+
import { Cell } from "@ton/core";
|
|
3
|
+
export declare function makePythProxyMessage(targetAddress: Address, priceUpdateData: Cell, targetPythFeeds: Cell, minPublishTime: number | bigint, maxPublishTime: number | bigint, operationPayload: Cell): Cell;
|
|
4
|
+
/**
|
|
5
|
+
* This operation jetton transfer notification sends to master address
|
|
6
|
+
* @param args
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeOnchainGetterMasterMessage(args: {
|
|
9
|
+
queryId: number | bigint;
|
|
10
|
+
opCode: number | bigint;
|
|
11
|
+
updateDataCell: Cell;
|
|
12
|
+
targetFeedsCell: Cell;
|
|
13
|
+
publishGap: number | bigint;
|
|
14
|
+
maxStaleness: number | bigint;
|
|
15
|
+
operationPayload: Cell;
|
|
16
|
+
}): Cell;
|
package/dist/api/pyth.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeOnchainGetterMasterMessage = exports.makePythProxyMessage = void 0;
|
|
4
|
+
// user --> pyth --> target
|
|
5
|
+
const ton_1 = require("@ton/ton");
|
|
6
|
+
function makePythProxyMessage(targetAddress, priceUpdateData, targetPythFeeds, minPublishTime, maxPublishTime, operationPayload) {
|
|
7
|
+
return (0, ton_1.beginCell)()
|
|
8
|
+
.storeUint(5, 32) // pyth::op_parse_price_feed_updates
|
|
9
|
+
.storeRef(priceUpdateData)
|
|
10
|
+
.storeRef(targetPythFeeds)
|
|
11
|
+
.storeUint(minPublishTime, 64)
|
|
12
|
+
.storeUint(maxPublishTime, 64)
|
|
13
|
+
.storeAddress(targetAddress) // inform pyth where to send positive response
|
|
14
|
+
.storeRef(operationPayload)
|
|
15
|
+
.endCell();
|
|
16
|
+
}
|
|
17
|
+
exports.makePythProxyMessage = makePythProxyMessage;
|
|
18
|
+
/**
|
|
19
|
+
* This operation jetton transfer notification sends to master address
|
|
20
|
+
* @param args
|
|
21
|
+
*/
|
|
22
|
+
function makeOnchainGetterMasterMessage(args) {
|
|
23
|
+
return (0, ton_1.beginCell)()
|
|
24
|
+
.storeUint(args.opCode, 32)
|
|
25
|
+
.storeUint(args.queryId, 64)
|
|
26
|
+
.storeRef((0, ton_1.beginCell)()
|
|
27
|
+
.storeRef(args.updateDataCell)
|
|
28
|
+
.storeRef(args.targetFeedsCell)
|
|
29
|
+
.storeUint(args.publishGap, 64)
|
|
30
|
+
.storeUint(args.maxStaleness, 64)
|
|
31
|
+
.endCell())
|
|
32
|
+
.storeRef(args.operationPayload)
|
|
33
|
+
.endCell();
|
|
34
|
+
}
|
|
35
|
+
exports.makeOnchainGetterMasterMessage = makeOnchainGetterMasterMessage;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const ASSET_ID: {
|
|
2
|
+
TON: bigint;
|
|
3
|
+
USDT: bigint;
|
|
4
|
+
jUSDT: bigint;
|
|
5
|
+
jUSDC: bigint;
|
|
6
|
+
stTON: bigint;
|
|
7
|
+
tsTON: bigint;
|
|
8
|
+
tgBTC: bigint;
|
|
9
|
+
USDe: bigint;
|
|
10
|
+
tsUSDe: bigint;
|
|
11
|
+
PT_tsUSDe_01Sep2025: bigint;
|
|
12
|
+
TONUSDT_DEDUST: bigint;
|
|
13
|
+
TONUSDT_STONFI: bigint;
|
|
14
|
+
TON_STORM: bigint;
|
|
15
|
+
USDT_STORM: bigint;
|
|
16
|
+
NOT: bigint;
|
|
17
|
+
DOGS: bigint;
|
|
18
|
+
CATI: bigint;
|
|
19
|
+
STON: bigint;
|
|
20
|
+
EUSDT: bigint;
|
|
21
|
+
EUSDC: bigint;
|
|
22
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ASSET_ID = void 0;
|
|
4
|
+
const sha256BigInt_1 = require("../../utils/sha256BigInt");
|
|
5
|
+
exports.ASSET_ID = {
|
|
6
|
+
TON: (0, sha256BigInt_1.sha256Hash)('TON'),
|
|
7
|
+
USDT: (0, sha256BigInt_1.sha256Hash)('USDT'),
|
|
8
|
+
jUSDT: (0, sha256BigInt_1.sha256Hash)('jUSDT'),
|
|
9
|
+
jUSDC: (0, sha256BigInt_1.sha256Hash)('jUSDC'),
|
|
10
|
+
stTON: (0, sha256BigInt_1.sha256Hash)('stTON'),
|
|
11
|
+
tsTON: (0, sha256BigInt_1.sha256Hash)('tsTON'),
|
|
12
|
+
tgBTC: (0, sha256BigInt_1.sha256Hash)('tgBTC'),
|
|
13
|
+
USDe: (0, sha256BigInt_1.sha256Hash)('USDe'),
|
|
14
|
+
tsUSDe: (0, sha256BigInt_1.sha256Hash)('tsUSDe'),
|
|
15
|
+
PT_tsUSDe_01Sep2025: (0, sha256BigInt_1.sha256Hash)('PT_tsUSDe_01Sep2025'),
|
|
16
|
+
// LP
|
|
17
|
+
TONUSDT_DEDUST: (0, sha256BigInt_1.sha256Hash)('TONUSDT_DEDUST'),
|
|
18
|
+
TONUSDT_STONFI: (0, sha256BigInt_1.sha256Hash)('TONUSDT_STONFI'),
|
|
19
|
+
TON_STORM: (0, sha256BigInt_1.sha256Hash)('TON_STORM'),
|
|
20
|
+
USDT_STORM: (0, sha256BigInt_1.sha256Hash)('USDT_STORM'),
|
|
21
|
+
// ALTS
|
|
22
|
+
NOT: (0, sha256BigInt_1.sha256Hash)('NOT'),
|
|
23
|
+
DOGS: (0, sha256BigInt_1.sha256Hash)('DOGS'),
|
|
24
|
+
CATI: (0, sha256BigInt_1.sha256Hash)('CATI'),
|
|
25
|
+
STON: (0, sha256BigInt_1.sha256Hash)('STON'),
|
|
26
|
+
// Testnet assets, faucet t.me/evaabuidl
|
|
27
|
+
EUSDT: (0, sha256BigInt_1.sha256Hash)('EUSDT'),
|
|
28
|
+
EUSDC: (0, sha256BigInt_1.sha256Hash)('EUSDC'),
|
|
29
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./assetId"), exports);
|
|
18
|
+
__exportStar(require("./mainnet"), exports);
|
|
19
|
+
__exportStar(require("./testnet"), exports);
|