@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.
Files changed (129) hide show
  1. package/dist/api/feeds.d.ts +30 -0
  2. package/dist/api/feeds.js +73 -0
  3. package/dist/api/liquidation.js +1 -1
  4. package/dist/api/math.js +1 -1
  5. package/dist/api/parser.d.ts +4 -2
  6. package/dist/api/parser.js +39 -18
  7. package/dist/api/parsers/AbstractOracleParser.d.ts +11 -0
  8. package/dist/api/parsers/AbstractOracleParser.js +9 -0
  9. package/dist/api/parsers/ClassicOracleParser.d.ts +10 -0
  10. package/dist/api/parsers/ClassicOracleParser.js +16 -0
  11. package/dist/api/parsers/PythOracleParser.d.ts +17 -0
  12. package/dist/api/parsers/PythOracleParser.js +22 -0
  13. package/dist/api/parsers/index.d.ts +3 -0
  14. package/dist/api/parsers/index.js +19 -0
  15. package/dist/api/prices.d.ts +6 -6
  16. package/dist/api/prices.js +37 -46
  17. package/dist/api/pyth.d.ts +16 -0
  18. package/dist/api/pyth.js +35 -0
  19. package/dist/constants/assets/assetId.d.ts +22 -0
  20. package/dist/constants/assets/assetId.js +29 -0
  21. package/dist/constants/assets/index.d.ts +3 -0
  22. package/dist/constants/assets/index.js +19 -0
  23. package/dist/constants/assets/mainnet.d.ts +19 -0
  24. package/dist/constants/assets/mainnet.js +114 -0
  25. package/dist/constants/assets/testnet.d.ts +14 -0
  26. package/dist/constants/assets/testnet.js +54 -0
  27. package/dist/constants/assets.d.ts +3 -0
  28. package/dist/constants/assets.js +14 -1
  29. package/dist/constants/general/index.d.ts +65 -0
  30. package/dist/constants/general/index.js +93 -0
  31. package/dist/constants/general/mainnet.d.ts +24 -0
  32. package/dist/constants/general/mainnet.js +53 -0
  33. package/dist/constants/general/testnet.d.ts +12 -0
  34. package/dist/constants/general/testnet.js +15 -0
  35. package/dist/constants/general.d.ts +4 -4
  36. package/dist/constants/general.js +6 -6
  37. package/dist/constants/index.d.ts +3 -0
  38. package/dist/constants/index.js +19 -0
  39. package/dist/constants/pools/index.d.ts +2 -0
  40. package/dist/constants/pools/index.js +18 -0
  41. package/dist/constants/pools/mainnet.d.ts +14 -0
  42. package/dist/constants/pools/mainnet.js +145 -0
  43. package/dist/constants/pools/testnet.d.ts +9 -0
  44. package/dist/constants/pools/testnet.js +57 -0
  45. package/dist/constants/pools.js +9 -9
  46. package/dist/contracts/AbstractMaster.d.ts +185 -0
  47. package/dist/contracts/AbstractMaster.js +179 -0
  48. package/dist/contracts/ClassicMaster.d.ts +34 -0
  49. package/dist/contracts/ClassicMaster.js +87 -0
  50. package/dist/contracts/PythMaster.d.ts +61 -0
  51. package/dist/contracts/PythMaster.js +179 -0
  52. package/dist/contracts/UserContract.d.ts +1 -7
  53. package/dist/contracts/UserContract.js +1 -19
  54. package/dist/contracts/index.d.ts +5 -0
  55. package/dist/contracts/index.js +21 -0
  56. package/dist/index.d.ts +14 -14
  57. package/dist/index.js +20 -60
  58. package/dist/prices/Oracle.interface.d.ts +9 -0
  59. package/dist/prices/Oracle.interface.js +2 -0
  60. package/dist/prices/Prices.d.ts +5 -3
  61. package/dist/prices/Prices.js +13 -3
  62. package/dist/prices/PricesCollector.d.ts +17 -7
  63. package/dist/prices/PricesCollector.js +67 -51
  64. package/dist/prices/PythCollector.d.ts +22 -0
  65. package/dist/prices/PythCollector.js +217 -0
  66. package/dist/prices/Types.d.ts +17 -2
  67. package/dist/prices/Types.js +8 -1
  68. package/dist/prices/index.d.ts +4 -3
  69. package/dist/prices/index.js +4 -3
  70. package/dist/prices/sources/Backend.d.ts +5 -4
  71. package/dist/prices/sources/Backend.js +16 -13
  72. package/dist/prices/sources/Icp.d.ts +2 -1
  73. package/dist/prices/sources/Icp.js +12 -9
  74. package/dist/prices/sources/PriceSource.d.ts +7 -6
  75. package/dist/prices/utils.d.ts +10 -9
  76. package/dist/prices/utils.js +32 -46
  77. package/dist/rewards/RewardMaster.d.ts +0 -1
  78. package/dist/rewards/RewardUser.d.ts +0 -1
  79. package/dist/types/Master.d.ts +10 -31
  80. package/dist/types/Master.js +3 -0
  81. package/dist/types/MasterRewards.d.ts +0 -1
  82. package/dist/types/UserRewards.d.ts +0 -1
  83. package/dist/utils/sha256BigInt.d.ts +0 -1
  84. package/dist/utils/userJettonWallet.js +0 -8
  85. package/dist/utils/utils.d.ts +8 -1
  86. package/dist/utils/utils.js +31 -2
  87. package/package.json +4 -3
  88. package/src/api/feeds.ts +90 -0
  89. package/src/api/liquidation.ts +1 -1
  90. package/src/api/math.ts +1 -1
  91. package/src/api/parser.ts +100 -38
  92. package/src/api/parsers/AbstractOracleParser.ts +16 -0
  93. package/src/api/parsers/ClassicOracleParser.ts +20 -0
  94. package/src/api/parsers/PythOracleParser.ts +34 -0
  95. package/src/api/parsers/index.ts +3 -0
  96. package/src/api/prices.ts +32 -41
  97. package/src/constants/assets/assetId.ts +30 -0
  98. package/src/constants/assets/index.ts +3 -0
  99. package/src/constants/{assets.ts → assets/mainnet.ts} +27 -94
  100. package/src/constants/assets/testnet.ts +74 -0
  101. package/src/constants/general/index.ts +91 -0
  102. package/src/constants/{general.ts → general/mainnet.ts} +48 -72
  103. package/src/constants/general/testnet.ts +25 -0
  104. package/src/constants/index.ts +3 -0
  105. package/src/constants/pools/index.ts +2 -0
  106. package/src/constants/pools/mainnet.ts +218 -0
  107. package/src/constants/pools/testnet.ts +75 -0
  108. package/src/contracts/AbstractMaster.ts +450 -0
  109. package/src/contracts/ClassicMaster.ts +149 -0
  110. package/src/contracts/PythMaster.ts +313 -0
  111. package/src/contracts/UserContract.ts +7 -28
  112. package/src/contracts/index.ts +7 -0
  113. package/src/index.ts +18 -85
  114. package/src/prices/Oracle.interface.ts +18 -0
  115. package/src/prices/Prices.ts +17 -4
  116. package/src/prices/PricesCollector.ts +91 -68
  117. package/src/prices/PythCollector.ts +294 -0
  118. package/src/prices/Types.ts +28 -6
  119. package/src/prices/index.ts +4 -3
  120. package/src/prices/sources/Backend.ts +21 -19
  121. package/src/prices/sources/Icp.ts +13 -10
  122. package/src/prices/sources/PriceSource.ts +6 -5
  123. package/src/prices/utils.ts +65 -68
  124. package/src/types/Master.ts +29 -52
  125. package/src/types/User.ts +15 -7
  126. package/src/utils/userJettonWallet.ts +0 -8
  127. package/src/utils/utils.ts +41 -2
  128. package/src/constants/pools.ts +0 -175
  129. 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
+ })();
@@ -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 / 2n, collateralThreshold));
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 / 2n, bigIntMin(collateralValue, COLLATERAL_WORTH_THRESHOLD)) *
334
+ values.push((bigIntMax(collateralValue / 3n, bigIntMin(collateralValue, COLLATERAL_WORTH_THRESHOLD)) *
335
335
  loanScale *
336
336
  poolConfig.masterConstants.ASSET_COEFFICIENT_SCALE) /
337
337
  liquidationBonus /
@@ -1,9 +1,11 @@
1
1
  import { Dictionary, DictionaryValue } from '@ton/core';
2
- import { AssetConfig, AssetData, ExtendedAssetsConfig, ExtendedAssetsData, MasterConstants, MasterData, PoolAssetsConfig, PoolConfig } from '../types/Master';
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;
@@ -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 { sRate, bRate, totalSupply, totalBorrow, lastAccural, balance, trackingSupplyIndex, trackingBorrowIndex, awaitedSupply };
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.oracle, 256);
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 oracle = src.loadUintBig(256);
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
- oracle,
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 [tokenSymbol, asset] of Object.entries(poolAssetsConfig)) {
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: masterConfigSlice.loadInt(8),
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 && (principal > 0 && (principal < assetConfig.dust))) {
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 && (principal > 0 && (principal < assetConfig.dust))) {
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,3 @@
1
+ export * from './AbstractOracleParser';
2
+ export * from './ClassicOracleParser';
3
+ export * from './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);
@@ -1,6 +1,6 @@
1
- import { PoolConfig } from '../types/Master';
2
- import { PriceData } from '../prices';
3
- /**
4
- * @deprecated Use PriceCollector istead of getPrices
5
- */
6
- export declare function getPrices(endpoints?: string[], poolConfig?: PoolConfig): Promise<PriceData>;
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;
@@ -1,56 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPrices = void 0;
4
- const pools_1 = require("../constants/pools");
5
- const prices_1 = require("../prices");
6
- /**
7
- * @deprecated Use PriceCollector istead of getPrices
8
- */
9
- async function getPrices(endpoints = ["api.stardust-mainnet.iotaledger.net"], poolConfig = pools_1.MAINNET_POOL_CONFIG) {
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 sources = {
14
- icpEndpoints: prices_1.DefaultPriceSourcesConfig.icpEndpoints,
15
- backendEndpoints: prices_1.DefaultPriceSourcesConfig.backendEndpoints,
16
- };
17
- const priceCollector = new prices_1.PricesCollector(poolConfig, sources);
18
- const prices = await priceCollector.getPrices();
19
- return { dict: prices.dict, dataCell: prices.dataCell };
20
- /*
21
- Old code
22
- const prices = await Promise.all(poolConfig.oracles.map(async x => await parsePrices(await loadPrices(x.address, endpoints), x.id)));
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
- if (acceptedPrices.length > poolConfig.minimalOracles && acceptedPrices.length % 2 == 0) {
32
- acceptedPrices = acceptedPrices.slice(0, acceptedPrices.length - 1); // to reduce fees, MINIMAL_ORACLES_NUMBER is odd
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
- if (acceptedPrices.length != poolConfig.minimalOracles) {
36
- const sortedByTimestamp = acceptedPrices.slice().sort((a, b) => b.timestamp - a.timestamp);
37
- const newerPrices = sortedByTimestamp.slice(0, poolConfig.minimalOracles);
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
- const medianData = poolConfig.poolAssetsConfig.map(asset => ({ assetId: asset.assetId, medianPrice: getMedianPrice(acceptedPrices, asset.assetId)}));
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
- exports.getPrices = getPrices;
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;
@@ -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,3 @@
1
+ export * from './assetId';
2
+ export * from './mainnet';
3
+ export * from './testnet';
@@ -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);