@evaafi/sdk 0.7.0 → 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 (122) 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/general/index.d.ts +65 -0
  28. package/dist/constants/general/index.js +93 -0
  29. package/dist/constants/general/mainnet.d.ts +24 -0
  30. package/dist/constants/general/mainnet.js +53 -0
  31. package/dist/constants/general/testnet.d.ts +12 -0
  32. package/dist/constants/general/testnet.js +15 -0
  33. package/dist/constants/general.d.ts +2 -2
  34. package/dist/constants/general.js +4 -4
  35. package/dist/constants/index.d.ts +3 -0
  36. package/dist/constants/index.js +19 -0
  37. package/dist/constants/pools/index.d.ts +2 -0
  38. package/dist/constants/pools/index.js +18 -0
  39. package/dist/constants/pools/mainnet.d.ts +14 -0
  40. package/dist/constants/pools/mainnet.js +145 -0
  41. package/dist/constants/pools/testnet.d.ts +9 -0
  42. package/dist/constants/pools/testnet.js +57 -0
  43. package/dist/constants/pools.js +7 -7
  44. package/dist/contracts/AbstractMaster.d.ts +185 -0
  45. package/dist/contracts/AbstractMaster.js +179 -0
  46. package/dist/contracts/ClassicMaster.d.ts +34 -0
  47. package/dist/contracts/ClassicMaster.js +87 -0
  48. package/dist/contracts/PythMaster.d.ts +61 -0
  49. package/dist/contracts/PythMaster.js +179 -0
  50. package/dist/contracts/UserContract.d.ts +1 -7
  51. package/dist/contracts/UserContract.js +1 -19
  52. package/dist/contracts/index.d.ts +5 -0
  53. package/dist/contracts/index.js +21 -0
  54. package/dist/index.d.ts +14 -14
  55. package/dist/index.js +20 -60
  56. package/dist/prices/Oracle.interface.d.ts +9 -0
  57. package/dist/prices/Oracle.interface.js +2 -0
  58. package/dist/prices/Prices.d.ts +5 -3
  59. package/dist/prices/Prices.js +13 -3
  60. package/dist/prices/PricesCollector.d.ts +17 -7
  61. package/dist/prices/PricesCollector.js +67 -51
  62. package/dist/prices/PythCollector.d.ts +22 -0
  63. package/dist/prices/PythCollector.js +217 -0
  64. package/dist/prices/Types.d.ts +17 -1
  65. package/dist/prices/Types.js +8 -1
  66. package/dist/prices/index.d.ts +4 -3
  67. package/dist/prices/index.js +4 -3
  68. package/dist/prices/sources/Backend.d.ts +5 -4
  69. package/dist/prices/sources/Backend.js +16 -13
  70. package/dist/prices/sources/Icp.d.ts +2 -1
  71. package/dist/prices/sources/Icp.js +12 -9
  72. package/dist/prices/sources/PriceSource.d.ts +7 -6
  73. package/dist/prices/utils.d.ts +10 -8
  74. package/dist/prices/utils.js +32 -46
  75. package/dist/types/Master.d.ts +10 -30
  76. package/dist/types/Master.js +3 -0
  77. package/dist/utils/userJettonWallet.js +0 -8
  78. package/dist/utils/utils.d.ts +8 -1
  79. package/dist/utils/utils.js +31 -2
  80. package/package.json +3 -2
  81. package/src/api/feeds.ts +90 -0
  82. package/src/api/liquidation.ts +1 -1
  83. package/src/api/math.ts +1 -1
  84. package/src/api/parser.ts +100 -38
  85. package/src/api/parsers/AbstractOracleParser.ts +16 -0
  86. package/src/api/parsers/ClassicOracleParser.ts +20 -0
  87. package/src/api/parsers/PythOracleParser.ts +34 -0
  88. package/src/api/parsers/index.ts +3 -0
  89. package/src/api/prices.ts +32 -41
  90. package/src/constants/assets/assetId.ts +30 -0
  91. package/src/constants/assets/index.ts +3 -0
  92. package/src/constants/{assets.ts → assets/mainnet.ts} +3 -96
  93. package/src/constants/assets/testnet.ts +74 -0
  94. package/src/constants/general/index.ts +91 -0
  95. package/src/constants/{general.ts → general/mainnet.ts} +48 -72
  96. package/src/constants/general/testnet.ts +25 -0
  97. package/src/constants/index.ts +3 -0
  98. package/src/constants/pools/index.ts +2 -0
  99. package/src/constants/pools/mainnet.ts +218 -0
  100. package/src/constants/pools/testnet.ts +75 -0
  101. package/src/contracts/AbstractMaster.ts +450 -0
  102. package/src/contracts/ClassicMaster.ts +149 -0
  103. package/src/contracts/PythMaster.ts +313 -0
  104. package/src/contracts/UserContract.ts +7 -28
  105. package/src/contracts/index.ts +7 -0
  106. package/src/index.ts +18 -85
  107. package/src/prices/Oracle.interface.ts +18 -0
  108. package/src/prices/Prices.ts +17 -4
  109. package/src/prices/PricesCollector.ts +91 -68
  110. package/src/prices/PythCollector.ts +294 -0
  111. package/src/prices/Types.ts +28 -6
  112. package/src/prices/index.ts +4 -3
  113. package/src/prices/sources/Backend.ts +21 -19
  114. package/src/prices/sources/Icp.ts +13 -10
  115. package/src/prices/sources/PriceSource.ts +6 -5
  116. package/src/prices/utils.ts +65 -68
  117. package/src/types/Master.ts +29 -52
  118. package/src/types/User.ts +15 -7
  119. package/src/utils/userJettonWallet.ts +0 -8
  120. package/src/utils/utils.ts +41 -2
  121. package/src/constants/pools.ts +0 -177
  122. package/src/contracts/MasterContract.ts +0 -410
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALL_MAINNET_POOLS = exports.MAINNET_MASTER_USDT_REWARD_CONFIG = exports.MAINNET_MASTER_TON_REWARD_CONFIG = exports.MAINNET_V8_TOB_POOL_CONFIG = exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG = exports.MAINNET_PYTH_V8_TOB_POOL_CONFIG = exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = exports.MAINNET_ALTS_POOL_CONFIG = exports.MAINNET_LP_POOL_CONFIG = exports.MAINNET_STABLE_POOL_CONFIG = exports.MAINNET_POOL_CONFIG = exports.MAINNET_POOL_ASSETS_CONFIG = void 0;
4
+ const core_1 = require("@ton/core");
5
+ const feeds_1 = require("../../api/feeds");
6
+ const prices_1 = require("../../prices");
7
+ const assets_1 = require("../assets");
8
+ const general_1 = require("../general");
9
+ // Pool assets configs
10
+ exports.MAINNET_POOL_ASSETS_CONFIG = [
11
+ assets_1.TON_MAINNET,
12
+ assets_1.JUSDT_MAINNET,
13
+ assets_1.JUSDC_MAINNET,
14
+ assets_1.STTON_MAINNET,
15
+ assets_1.TSTON_MAINNET,
16
+ assets_1.USDT_MAINNET,
17
+ assets_1.USDE_MAINNET,
18
+ assets_1.TSUSDE_MAINNET,
19
+ ];
20
+ const MAINNET_STABLE_POOL_ASSETS_CONFIG = [assets_1.USDT_MAINNET, assets_1.USDE_MAINNET, assets_1.TSUSDE_MAINNET, assets_1.PT_tsUSDe_01Sep2025_MAINNET];
21
+ const MAINNET_LP_POOL_ASSETS_CONFIG = [
22
+ assets_1.TON_MAINNET,
23
+ assets_1.USDT_MAINNET,
24
+ assets_1.TONUSDT_DEDUST_MAINNET,
25
+ assets_1.TON_STORM_MAINNET,
26
+ assets_1.USDT_STORM_MAINNET,
27
+ assets_1.TONUSDT_STONFI_MAINNET,
28
+ ];
29
+ const MAINNET_ALTS_POOL_ASSETS_CONFIG = [assets_1.TON_MAINNET, assets_1.USDT_MAINNET, assets_1.CATI_MAINNET, assets_1.NOT_MAINNET, assets_1.DOGS_MAINNET];
30
+ exports.MAINNET_POOL_CONFIG = {
31
+ masterAddress: general_1.EVAA_MASTER_MAINNET,
32
+ masterVersion: general_1.MAINNET_VERSION,
33
+ masterConstants: general_1.MASTER_CONSTANTS,
34
+ oracles: new prices_1.PythCollector({
35
+ pythConfig: prices_1.DefaultPythPriceSourcesConfig,
36
+ poolAssetsConfig: exports.MAINNET_POOL_ASSETS_CONFIG,
37
+ pythOracle: {
38
+ feedsMap: core_1.Dictionary.empty()
39
+ .set(BigInt(feeds_1.PYTH_TON_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(assets_1.ASSET_ID.TON, 0n))
40
+ .set(BigInt(feeds_1.PYTH_USDT_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(assets_1.ASSET_ID.USDT, 0n))
41
+ .set(BigInt(feeds_1.PYTH_TSTON_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(feeds_1.EVAA_TSTON_PRICE_FEED_ID, BigInt(feeds_1.PYTH_TON_PRICE_FEED_ID)))
42
+ .set(BigInt(feeds_1.PYTH_TSUSDE_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(feeds_1.EVAA_TSUSDE_PRICE_FEED_ID, BigInt(feeds_1.PYTH_USDT_PRICE_FEED_ID))),
43
+ pythAddress: general_1.PYTH_ORACLE_MAINNET,
44
+ allowedRefTokens: core_1.Dictionary.empty()
45
+ .set(assets_1.ASSET_ID.jUSDT, assets_1.ASSET_ID.USDT)
46
+ .set(assets_1.ASSET_ID.jUSDC, assets_1.ASSET_ID.USDT)
47
+ .set(assets_1.ASSET_ID.USDe, assets_1.ASSET_ID.USDT)
48
+ .set(assets_1.ASSET_ID.stTON, assets_1.ASSET_ID.tsTON),
49
+ },
50
+ }),
51
+ poolAssetsConfig: exports.MAINNET_POOL_ASSETS_CONFIG,
52
+ lendingCode: general_1.LENDING_CODE,
53
+ };
54
+ exports.MAINNET_STABLE_POOL_CONFIG = {
55
+ masterAddress: general_1.EVAA_STABLE_MAINNET,
56
+ masterVersion: general_1.STABLE_VERSION,
57
+ masterConstants: general_1.MASTER_CONSTANTS,
58
+ oracles: new prices_1.PricesCollector({
59
+ poolAssetsConfig: MAINNET_STABLE_POOL_ASSETS_CONFIG,
60
+ minimalOracles: 3,
61
+ evaaOracles: general_1.ORACLES_MAINNET,
62
+ }),
63
+ poolAssetsConfig: MAINNET_STABLE_POOL_ASSETS_CONFIG,
64
+ lendingCode: general_1.LENDING_CODE,
65
+ };
66
+ exports.MAINNET_LP_POOL_CONFIG = {
67
+ masterAddress: general_1.EVAA_LP_MAINNET,
68
+ masterVersion: general_1.EVAA_LP_MAINNET_VERSION,
69
+ masterConstants: general_1.MASTER_CONSTANTS,
70
+ oracles: new prices_1.PricesCollector({
71
+ poolAssetsConfig: MAINNET_LP_POOL_ASSETS_CONFIG,
72
+ minimalOracles: 3,
73
+ evaaOracles: general_1.ORACLES_LP,
74
+ }),
75
+ poolAssetsConfig: MAINNET_LP_POOL_ASSETS_CONFIG,
76
+ lendingCode: general_1.LENDING_CODE,
77
+ };
78
+ exports.MAINNET_ALTS_POOL_CONFIG = {
79
+ masterAddress: general_1.EVAA_ALTS_MAINNET,
80
+ masterVersion: general_1.EVAA_ALTS_MAINNET_VERSION,
81
+ masterConstants: general_1.MASTER_CONSTANTS,
82
+ oracles: new prices_1.PricesCollector({
83
+ poolAssetsConfig: MAINNET_ALTS_POOL_ASSETS_CONFIG,
84
+ minimalOracles: 3,
85
+ evaaOracles: general_1.ORACLES_ALTS,
86
+ }),
87
+ poolAssetsConfig: MAINNET_ALTS_POOL_ASSETS_CONFIG,
88
+ lendingCode: general_1.LENDING_CODE,
89
+ };
90
+ exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.TON_MAINNET, assets_1.USDT_MAINNET, assets_1.JUSDT_MAINNET];
91
+ exports.MAINNET_PYTH_V8_TOB_POOL_CONFIG = {
92
+ masterAddress: general_1.EVAA_PYTH_TOB_MAINNET,
93
+ masterVersion: general_1.EVAA_PYTH_TOB_VERSION,
94
+ masterConstants: general_1.MASTER_CONSTANTS,
95
+ oracles: new prices_1.PythCollector({
96
+ pythConfig: prices_1.DefaultPythPriceSourcesConfig,
97
+ poolAssetsConfig: exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG,
98
+ pythOracle: {
99
+ feedsMap: core_1.Dictionary.empty()
100
+ .set(BigInt(feeds_1.PYTH_TON_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(assets_1.ASSET_ID.TON, 0n))
101
+ .set(BigInt(feeds_1.PYTH_USDT_PRICE_FEED_ID), (0, feeds_1.packConnectedFeeds)(assets_1.ASSET_ID.USDT, 0n)),
102
+ pythAddress: general_1.PYTH_ORACLE_MAINNET,
103
+ allowedRefTokens: core_1.Dictionary.empty().set(BigInt(feeds_1.EVAA_JUSDT_PRICE_FEED_ID), BigInt(assets_1.ASSET_ID.USDT)),
104
+ },
105
+ }),
106
+ poolAssetsConfig: exports.MAINNET_PYTH_V8_TOB_POOL_ASSETS_CONFIG,
107
+ lendingCode: general_1.LENDING_CODE,
108
+ };
109
+ exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG = [assets_1.TON_MAINNET, assets_1.USDT_MAINNET];
110
+ exports.MAINNET_V8_TOB_POOL_CONFIG = {
111
+ masterAddress: general_1.EVAA_TOB_MAINNET,
112
+ masterVersion: general_1.EVAA_TOB_VERSION,
113
+ masterConstants: general_1.MASTER_CONSTANTS,
114
+ oracles: new prices_1.PricesCollector({
115
+ poolAssetsConfig: exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG,
116
+ minimalOracles: 3,
117
+ evaaOracles: general_1.ORACLES_MAINNET,
118
+ }),
119
+ poolAssetsConfig: exports.MAINNET_V8_TOB_POOL_ASSETS_CONFIG,
120
+ lendingCode: general_1.LENDING_CODE,
121
+ };
122
+ exports.MAINNET_MASTER_TON_REWARD_CONFIG = {
123
+ adminAddress: general_1.EVAA_TON_REWARDS_MASTER_MAINNET,
124
+ evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
125
+ rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_MAINNET,
126
+ rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_MAINNET,
127
+ asset: assets_1.TON_MAINNET,
128
+ availableReward: 0,
129
+ publicKey: Buffer.from('bfe9a30221db4dff4c17e55d985e0b13a8f597bbb28002f311dc4429dad1ca95', 'hex'), // adminAddress publicKey
130
+ };
131
+ exports.MAINNET_MASTER_USDT_REWARD_CONFIG = {
132
+ adminAddress: general_1.EVAA_USDT_REWARDS_MASTER_MAINNET,
133
+ evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
134
+ rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_MAINNET,
135
+ rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_MAINNET,
136
+ asset: assets_1.USDT_MAINNET,
137
+ availableReward: 0,
138
+ publicKey: Buffer.from('9813725d6cead1c9bbc0e24b21d4fc62a7fa8ac4bb01b6758df30169a71dba67', 'hex'), // adminAddress publicKey
139
+ };
140
+ exports.ALL_MAINNET_POOLS = [
141
+ exports.MAINNET_POOL_CONFIG,
142
+ exports.MAINNET_LP_POOL_CONFIG,
143
+ exports.MAINNET_ALTS_POOL_CONFIG,
144
+ exports.MAINNET_STABLE_POOL_CONFIG,
145
+ ];
@@ -0,0 +1,9 @@
1
+ import { PoolConfig } from '../../types/Master';
2
+ import { EvaaRewardsConfig } from '../../types/MasterRewards';
3
+ export declare const TESTNET_POOL_ASSETS_CONFIG: import("../../types/Master").PoolAssetConfig[];
4
+ export declare const TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED: import("../../types/Master").PoolAssetConfig[];
5
+ export declare const TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED: PoolConfig;
6
+ export declare const TESTNET_CLASSIC_POOL_CONFIG_TOB_AUDITED: PoolConfig;
7
+ export declare const TESTNET_MASTER_REWARD_CONFIG: EvaaRewardsConfig;
8
+ export declare const TESTNET_MASTER_EUSDT_REWARD_CONFIG: EvaaRewardsConfig;
9
+ export declare const ALL_TESTNET_POOLS: PoolConfig[];
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALL_TESTNET_POOLS = exports.TESTNET_MASTER_EUSDT_REWARD_CONFIG = exports.TESTNET_MASTER_REWARD_CONFIG = exports.TESTNET_CLASSIC_POOL_CONFIG_TOB_AUDITED = exports.TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED = exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = exports.TESTNET_POOL_ASSETS_CONFIG = void 0;
4
+ const core_1 = require("@ton/core");
5
+ const feeds_1 = require("../../api/feeds");
6
+ const prices_1 = require("../../prices");
7
+ const assets_1 = require("../assets");
8
+ const general_1 = require("../general");
9
+ exports.TESTNET_POOL_ASSETS_CONFIG = [assets_1.TON_TESTNET, assets_1.JUSDC_TESTNET];
10
+ exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED = [assets_1.TON_TESTNET, assets_1.JUSDC_TESTNET];
11
+ exports.TESTNET_PYTH_POOL_CONFIG_TOB_AUDITED = {
12
+ masterAddress: general_1.EVAA_MASTER_TESTNET_PYTH_TOB_AUDITED,
13
+ masterVersion: general_1.TESTNET_PYTH_VERSION_TOB_AUDITED,
14
+ masterConstants: general_1.MASTER_CONSTANTS,
15
+ oracles: new prices_1.PythCollector({
16
+ poolAssetsConfig: exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED,
17
+ pythOracle: {
18
+ feedsMap: feeds_1.TESTNET_FEEDS_MAP,
19
+ pythAddress: general_1.PYTH_ORACLE_TESTNET,
20
+ allowedRefTokens: feeds_1.TESTNET_ALLOWED_REF_TOKENS,
21
+ },
22
+ pythConfig: prices_1.DefaultPythPriceSourcesConfig,
23
+ }),
24
+ poolAssetsConfig: exports.TESTNET_POOL_ASSETS_CONFIG_TOB_AUDITED,
25
+ lendingCode: general_1.LENDING_CODE,
26
+ };
27
+ exports.TESTNET_CLASSIC_POOL_CONFIG_TOB_AUDITED = {
28
+ masterAddress: general_1.EVAA_MASTER_TESTNET_CLASSIC_TOB_AUDITED,
29
+ masterVersion: general_1.TESTNET_CLASSIC_TOB_AUDITED,
30
+ masterConstants: general_1.MASTER_CONSTANTS,
31
+ oracles: new prices_1.PricesCollector({
32
+ poolAssetsConfig: exports.TESTNET_POOL_ASSETS_CONFIG,
33
+ minimalOracles: 3,
34
+ evaaOracles: general_1.ORACLES_TESTNET,
35
+ }),
36
+ lendingCode: general_1.LENDING_CODE,
37
+ poolAssetsConfig: exports.TESTNET_POOL_ASSETS_CONFIG,
38
+ };
39
+ exports.TESTNET_MASTER_REWARD_CONFIG = {
40
+ adminAddress: general_1.EVAA_REWARDS_MASTER_TESTNET,
41
+ evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
42
+ rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_TESTNET,
43
+ rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_TESTNET,
44
+ asset: assets_1.TON_TESTNET,
45
+ availableReward: 0,
46
+ publicKey: Buffer.from('c38be45e033419b49cd22c97fbd23610fbc851a931208f8b4a1817dd11cb63ac', 'hex'), // adminAddress publicKey
47
+ };
48
+ exports.TESTNET_MASTER_EUSDT_REWARD_CONFIG = {
49
+ adminAddress: general_1.EVAA_REWARDS_MASTER_TESTNET,
50
+ evaaMasterAddress: new core_1.Address(0, Buffer.alloc(32, 0)),
51
+ rewardMasterCode: general_1.EVAA_REWARDS_MASTER_CODE_TESTNET,
52
+ rewardUserCode: general_1.EVAA_REWARDS_USER_CODE_TESTNET,
53
+ asset: assets_1.EUSDT_TESTNET,
54
+ availableReward: 0,
55
+ publicKey: Buffer.from('c38be45e033419b49cd22c97fbd23610fbc851a931208f8b4a1817dd11cb63ac', 'hex'), // adminAddress publicKey
56
+ };
57
+ exports.ALL_TESTNET_POOLS = [];
@@ -12,13 +12,13 @@ exports.MAINNET_POOL_CONFIG = {
12
12
  minimalOracles: 3,
13
13
  poolAssetsConfig: [
14
14
  assets_1.TON_MAINNET,
15
- assets_1.JUSDT_MAINNET,
15
+ // JUSDT_MAINNET,
16
16
  assets_1.JUSDC_MAINNET,
17
- assets_1.STTON_MAINNET,
18
- assets_1.TSTON_MAINNET,
19
- assets_1.USDT_MAINNET,
20
- assets_1.USDE_MAINNET,
21
- assets_1.TSUSDE_MAINNET,
17
+ // STTON_MAINNET,
18
+ // TSTON_MAINNET,
19
+ // USDT_MAINNET,
20
+ // USDE_MAINNET,
21
+ // TSUSDE_MAINNET,
22
22
  // UTON_MAINNET // announce xdddd fake announce
23
23
  ],
24
24
  lendingCode: general_1.LENDING_CODE,
@@ -55,7 +55,7 @@ exports.TESTNET_POOL_CONFIG = {
55
55
  masterConstants: general_1.MASTER_CONSTANTS,
56
56
  oracles: general_1.ORACLES_TESTNET,
57
57
  minimalOracles: 3,
58
- poolAssetsConfig: [assets_1.TON_TESTNET, assets_1.TGBTC_TESTNET],
58
+ poolAssetsConfig: [assets_1.TON_TESTNET, assets_1.JUSDC_TESTNET],
59
59
  lendingCode: general_1.LENDING_CODE,
60
60
  };
61
61
  exports.MAINNET_LP_POOL_CONFIG = {
@@ -0,0 +1,185 @@
1
+ import { Address, Builder, Cell, Contract, ContractProvider, Dictionary, OpenedContract, Sender } from '@ton/core';
2
+ import { OracleParser } from '../api/parsers/AbstractOracleParser';
3
+ import { ClassicOracleInfo } from '../api/parsers/ClassicOracleParser';
4
+ import { PythOracleInfo } from '../api/parsers/PythOracleParser';
5
+ import { ExtendedAssetsConfig, ExtendedAssetsData, PoolAssetConfig, PoolConfig, UpgradeConfig } from '../types/Master';
6
+ import { ClassicLiquidationOperationParameters, ClassicLiquidationParameters, ClassicSupplyWithdrawParameters, ClassicWithdrawParameters } from './ClassicMaster';
7
+ import { PythLiquidationOperationParameters, PythLiquidationParameters, PythSupplyWithdrawParameters, PythWithdrawParameters } from './PythMaster';
8
+ import { EvaaUser } from './UserContract';
9
+ type JettonParams = {
10
+ queryID: bigint;
11
+ amount?: bigint;
12
+ liquidationAmount?: bigint;
13
+ supplyAmount?: bigint;
14
+ responseAddress?: Address;
15
+ userAddress?: Address;
16
+ liquidatorAddress?: Address;
17
+ forwardAmount?: bigint;
18
+ destinationAddress?: Address;
19
+ };
20
+ /**
21
+ * Parameters for the Evaa contract
22
+ * @property testnet - true for testnet, false for mainnet
23
+ * @property debug - true to enable debug mode (optional)
24
+ */
25
+ export type EvaaParameters = {
26
+ poolConfig: PoolConfig;
27
+ debug?: boolean;
28
+ };
29
+ /**
30
+ * Base parameters for supply
31
+ * @property queryID - unique query ID
32
+ * @property includeUserCode - true to include user code for update (needed when user contract code version is outdated)
33
+ * @property amount - amount to supply
34
+ * @property userAddress - user address
35
+ * @property asset
36
+ */
37
+ export type SupplyParameters = {
38
+ asset: PoolAssetConfig;
39
+ queryID: bigint;
40
+ includeUserCode: boolean;
41
+ amount: bigint;
42
+ userAddress: Address;
43
+ responseAddress?: Address;
44
+ forwardAmount?: bigint;
45
+ payload: Cell;
46
+ subaccountId?: number;
47
+ returnRepayRemainingsFlag?: boolean;
48
+ customPayloadRecipient?: Address;
49
+ customPayloadSaturationFlag?: boolean;
50
+ };
51
+ /**
52
+ * Parameters for the withdraw message
53
+ * @property queryID - unique query ID
54
+ * @property asset - asset config
55
+ * @property amount - amount to withdraw
56
+ * @property userAddress - user address
57
+ * @property includeUserCode - true to include user code for update (needed when user contract code version is outdated)
58
+ */
59
+ export type WithdrawParameters = {
60
+ queryID: bigint;
61
+ amount: bigint;
62
+ userAddress: Address;
63
+ includeUserCode: boolean;
64
+ asset: PoolAssetConfig;
65
+ payload: Cell;
66
+ subaccountId?: number;
67
+ forwardAmount?: bigint;
68
+ amountToTransfer: bigint;
69
+ customPayloadSaturationFlag: boolean;
70
+ returnRepayRemainingsFlag: boolean;
71
+ };
72
+ /**
73
+ * Parameters for liquidation inner operations
74
+ * @interface LiquidationInnerParameters
75
+ */
76
+ export type LiquidationInnerParameters = {
77
+ /** Liquidation operation payload cell */
78
+ payload: Cell;
79
+ subaccountId: number;
80
+ customPayloadRecipient: Address;
81
+ customPayloadSaturationFlag: boolean;
82
+ };
83
+ /**
84
+ * Base data for liquidation. Can be obtained from the user contract liquidationParameters getter
85
+ * @property loanAsset - loan asset ID
86
+ * @property queryID - unique query ID
87
+ * @property liquidatorAddress - liquidator address, where and collateral will be sent
88
+ */
89
+ export type LiquidationParameters = {
90
+ loanAsset: bigint;
91
+ queryID: bigint;
92
+ liquidatorAddress: Address;
93
+ };
94
+ /**
95
+ * @property asset - asset config
96
+ * @property borrowerAddress - borrower address (user address that is being liquidated)
97
+ * @property collateralAsset - collateral asset ID
98
+ * @property minCollateralAmount - minimal amount to receive from the liquidation
99
+ * @property liquidationAmount - amount to liquidate
100
+ * @property includeUserCode - true to include user code for update (needed when user contract code version is outdated)
101
+ */
102
+ export type LiquidationOperationBuilderParameters = {
103
+ asset: PoolAssetConfig;
104
+ borrowerAddress: Address;
105
+ collateralAsset: bigint;
106
+ minCollateralAmount: bigint;
107
+ liquidationAmount: bigint;
108
+ includeUserCode: boolean;
109
+ };
110
+ export type SupplyWithdrawParameters = {
111
+ queryID: bigint;
112
+ supplyAmount: bigint;
113
+ supplyAsset: PoolAssetConfig;
114
+ withdrawAmount: bigint;
115
+ withdrawAsset: PoolAssetConfig;
116
+ withdrawRecipient: Address;
117
+ includeUserCode: boolean;
118
+ tonForRepayRemainings?: bigint;
119
+ payload: Cell;
120
+ subaccountId?: number;
121
+ returnRepayRemainingsFlag?: boolean;
122
+ customPayloadSaturationFlag?: boolean;
123
+ forwardAmount?: bigint;
124
+ responseAddress?: Address;
125
+ };
126
+ export type BaseMasterConfig = {
127
+ ifActive: number;
128
+ admin: Address;
129
+ tokenKeys: Cell | null;
130
+ supervisor: Address | null;
131
+ };
132
+ export type OracleInfo = PythOracleInfo | ClassicOracleInfo;
133
+ export type MasterConfig<T extends OracleInfo> = BaseMasterConfig & {
134
+ oraclesInfo: T;
135
+ };
136
+ export type BaseMasterData = {
137
+ meta: string;
138
+ upgradeConfig: UpgradeConfig;
139
+ assetsConfig: ExtendedAssetsConfig;
140
+ assetsData: ExtendedAssetsData;
141
+ assetsReserves: Dictionary<bigint, bigint>;
142
+ apy: {
143
+ supply: Dictionary<bigint, number>;
144
+ borrow: Dictionary<bigint, number>;
145
+ };
146
+ };
147
+ export type MasterData<T extends MasterConfig<OracleInfo>> = BaseMasterData & {
148
+ masterConfig: T;
149
+ };
150
+ /**
151
+ * Abstract EVAA Master base that encapsulates shared logic and structure.
152
+ * Concrete implementations (Classic/Pyth) should override message creation for
153
+ * withdraw/liquidation and supply-withdraw wrapping.
154
+ */
155
+ export declare abstract class AbstractEvaaMaster<T extends MasterData<MasterConfig<OracleInfo>>> implements Contract {
156
+ readonly address: Address;
157
+ protected _poolConfig: PoolConfig;
158
+ protected readonly debug?: boolean;
159
+ protected _data?: T;
160
+ protected lastSync: number;
161
+ constructor(parameters: EvaaParameters);
162
+ get poolConfig(): PoolConfig;
163
+ get data(): T | undefined;
164
+ protected createJettonTransferMessage(parameters: JettonParams, defaultFees: bigint, message: Cell): Cell;
165
+ abstract buildGeneralDataPayload(parameters: PythSupplyWithdrawParameters | ClassicSupplyWithdrawParameters): Cell;
166
+ protected buildSupplyWithdrawOperationPayload(parameters: PythSupplyWithdrawParameters | ClassicSupplyWithdrawParameters): Cell;
167
+ createSupplyMessage(parameters: SupplyParameters): Cell;
168
+ abstract createSupplyWithdrawMessage(parameters: ClassicSupplyWithdrawParameters | PythSupplyWithdrawParameters): Cell;
169
+ sendSupply(provider: ContractProvider, via: Sender, value: bigint, parameters: SupplyParameters): Promise<void>;
170
+ sendSupplyWithdraw(provider: ContractProvider, via: Sender, value: bigint, parameters: ClassicSupplyWithdrawParameters | PythSupplyWithdrawParameters): Promise<void>;
171
+ abstract sendWithdraw(provider: ContractProvider, via: Sender, value: bigint, parameters: ClassicWithdrawParameters | PythWithdrawParameters): Promise<void>;
172
+ abstract createLiquidationMessage(parameters: ClassicLiquidationParameters | PythLiquidationParameters): Cell;
173
+ protected buildLiquidationInnerBuilder(parameters: LiquidationInnerParameters): Builder;
174
+ protected abstract buildLiquidationOperationPayload(parameters: PythLiquidationOperationParameters | ClassicLiquidationOperationParameters): Cell | Builder;
175
+ protected buildLiquidationOperationPayloadBuilder(parameters: LiquidationOperationBuilderParameters): Builder;
176
+ abstract sendLiquidation(provider: ContractProvider, via: Sender, value: bigint, parameters: ClassicLiquidationParameters | PythLiquidationParameters): Promise<void>;
177
+ calculateUserSCAddr(userAddress: Address, lendingCode: Cell, subaccountId?: number): Address;
178
+ openUserContract(userAddress: Address, subaccountId?: number): EvaaUser;
179
+ getOpenedUserContract(provider: ContractProvider, userAddress: Address, subaccountId?: number): OpenedContract<EvaaUser>;
180
+ sendOnchainGetter(provider: ContractProvider, via: Sender, value: bigint, queryID: bigint, forwardPayload: Cell): Promise<void>;
181
+ sendTx(provider: ContractProvider, via: Sender, value: bigint, message: Cell, asset: PoolAssetConfig): Promise<void>;
182
+ protected syncMasterData(provider: ContractProvider, oracleParser: OracleParser): Promise<void>;
183
+ protected abstract getSync(provider: ContractProvider): Promise<void>;
184
+ }
185
+ export {};
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractEvaaMaster = void 0;
4
+ const core_1 = require("@ton/core");
5
+ const __1 = require("..");
6
+ const parser_1 = require("../api/parser");
7
+ const general_1 = require("../constants/general");
8
+ const userJettonWallet_1 = require("../utils/userJettonWallet");
9
+ const JettonWallet_1 = require("./JettonWallet");
10
+ const UserContract_1 = require("./UserContract");
11
+ /**
12
+ * Abstract EVAA Master base that encapsulates shared logic and structure.
13
+ * Concrete implementations (Classic/Pyth) should override message creation for
14
+ * withdraw/liquidation and supply-withdraw wrapping.
15
+ */
16
+ class AbstractEvaaMaster {
17
+ constructor(parameters) {
18
+ this.lastSync = 0;
19
+ this._poolConfig = parameters.poolConfig;
20
+ this.address = this._poolConfig.masterAddress;
21
+ this.debug = parameters?.debug;
22
+ }
23
+ get poolConfig() {
24
+ return this._poolConfig;
25
+ }
26
+ get data() {
27
+ return this._data;
28
+ }
29
+ // ---------- Common helpers ----------
30
+ createJettonTransferMessage(parameters, defaultFees, message) {
31
+ if (parameters.amount == undefined &&
32
+ parameters.liquidationAmount == undefined &&
33
+ parameters.supplyAmount == undefined) {
34
+ throw new Error('Either amount or liquidationAmount or supplyAmount must be provided');
35
+ }
36
+ return (0, core_1.beginCell)()
37
+ .storeUint(general_1.OPCODES.JETTON_TRANSFER, 32)
38
+ .storeUint(parameters.queryID, 64)
39
+ .storeCoins(parameters.amount ?? parameters.liquidationAmount ?? parameters.supplyAmount ?? 0n)
40
+ .storeAddress(parameters.destinationAddress ?? this.address)
41
+ .storeAddress(parameters.responseAddress ?? parameters.userAddress ?? parameters.liquidatorAddress)
42
+ .storeBit(0)
43
+ .storeCoins(parameters.forwardAmount ?? defaultFees)
44
+ .storeBit(1)
45
+ .storeRef(message)
46
+ .endCell();
47
+ }
48
+ buildSupplyWithdrawOperationPayload(parameters) {
49
+ const isTon = (0, __1.isTonAsset)(parameters.supplyAsset);
50
+ const supplyData = (0, core_1.beginCell)();
51
+ if (isTon) {
52
+ supplyData.storeUint(parameters.supplyAmount, 64);
53
+ }
54
+ const withdrawData = (0, core_1.beginCell)()
55
+ .storeUint(parameters.withdrawAmount, 64)
56
+ .storeUint(parameters.withdrawAsset.assetId, 256)
57
+ .storeAddress(parameters.withdrawRecipient);
58
+ const generalData = this.buildGeneralDataPayload(parameters);
59
+ return (0, core_1.beginCell)().storeRef(supplyData).storeRef(withdrawData).storeRef(generalData).endCell();
60
+ }
61
+ // ---------- Public message builders (shared) ----------
62
+ createSupplyMessage(parameters) {
63
+ const subaccountId = parameters.subaccountId ?? 0;
64
+ const isTon = (0, __1.isTonAsset)(parameters.asset);
65
+ const operationPayload = (0, core_1.beginCell)()
66
+ .storeUint(general_1.OPCODES.SUPPLY_MASTER, 32)
67
+ .storeBuilder(isTon ? (0, core_1.beginCell)().storeUint(parameters.queryID, 64) : (0, core_1.beginCell)())
68
+ .storeInt(parameters.includeUserCode ? -1 : 0, 2)
69
+ .storeBuilder(isTon ? (0, core_1.beginCell)().storeUint(parameters.amount, 64) : (0, core_1.beginCell)())
70
+ .storeAddress(parameters.userAddress)
71
+ .storeRef(parameters.payload)
72
+ .storeInt(subaccountId, 16)
73
+ .storeInt(parameters.returnRepayRemainingsFlag ? -1 : 0, 2)
74
+ .storeAddress(parameters.customPayloadRecipient)
75
+ .storeInt(parameters.customPayloadSaturationFlag ? -1 : 0, 2)
76
+ .endCell();
77
+ if (!isTon) {
78
+ return this.createJettonTransferMessage(parameters, general_1.FEES.SUPPLY, operationPayload);
79
+ }
80
+ else {
81
+ return operationPayload;
82
+ }
83
+ }
84
+ // ---------- Sending operations ----------
85
+ async sendSupply(provider, via, value, parameters) {
86
+ const message = this.createSupplyMessage(parameters);
87
+ await this.sendTx(provider, via, value, message, parameters.asset);
88
+ }
89
+ async sendSupplyWithdraw(provider, via, value, parameters) {
90
+ const message = this.createSupplyWithdrawMessage(parameters);
91
+ await this.sendTx(provider, via, value, message, parameters.supplyAsset);
92
+ }
93
+ buildLiquidationInnerBuilder(parameters) {
94
+ const subaccountId = parameters.subaccountId ?? 0;
95
+ return (0, core_1.beginCell)()
96
+ .storeRef(parameters.payload)
97
+ .storeInt(subaccountId, 16)
98
+ .storeAddress(parameters.customPayloadRecipient)
99
+ .storeInt(parameters.customPayloadSaturationFlag ? -1 : 0, 2);
100
+ }
101
+ buildLiquidationOperationPayloadBuilder(parameters) {
102
+ return (0, core_1.beginCell)()
103
+ .storeAddress(parameters.borrowerAddress)
104
+ .storeUint(parameters.collateralAsset, 256)
105
+ .storeUint(parameters.minCollateralAmount, 64)
106
+ .storeInt(parameters.includeUserCode ? -1 : 0, 2)
107
+ .storeUint((0, __1.isTonAsset)(parameters.asset) ? parameters.liquidationAmount : 0, 64);
108
+ }
109
+ // ---------- Read helpers ----------
110
+ calculateUserSCAddr(userAddress, lendingCode, subaccountId = 0) {
111
+ const subaccount = (0, core_1.beginCell)();
112
+ if (subaccountId !== 0) {
113
+ if (!(0, __1.isValidSubaccountId)(subaccountId))
114
+ throw new Error('Invalid subaccount id');
115
+ subaccount.storeInt(subaccountId, 16);
116
+ }
117
+ const lendingData = (0, core_1.beginCell)()
118
+ .storeAddress(this.address)
119
+ .storeAddress(userAddress)
120
+ .storeUint(0, 8)
121
+ .storeBit(0)
122
+ .storeBuilder(subaccount)
123
+ .endCell();
124
+ const stateInit = (0, core_1.beginCell)()
125
+ .store((0, core_1.storeStateInit)({
126
+ code: lendingCode,
127
+ data: lendingData,
128
+ }))
129
+ .endCell();
130
+ return new core_1.Address(0, stateInit.hash());
131
+ }
132
+ openUserContract(userAddress, subaccountId = 0) {
133
+ return UserContract_1.EvaaUser.createFromAddress(this.calculateUserSCAddr(userAddress, this._poolConfig.lendingCode, subaccountId), this._poolConfig);
134
+ }
135
+ getOpenedUserContract(provider, userAddress, subaccountId = 0) {
136
+ return provider.open(this.openUserContract(userAddress, subaccountId));
137
+ }
138
+ async sendOnchainGetter(provider, via, value, queryID, forwardPayload) {
139
+ await provider.internal(via, {
140
+ value,
141
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
142
+ body: (0, core_1.beginCell)()
143
+ .storeUint(general_1.OPCODES.ONCHAIN_GETTER, 32)
144
+ .storeUint(queryID, 64)
145
+ .storeRef(forwardPayload)
146
+ .endCell(),
147
+ });
148
+ }
149
+ async sendTx(provider, via, value, message, asset) {
150
+ if (!(0, __1.isTonAsset)(asset)) {
151
+ if (!via.address)
152
+ throw new Error('Via address is required for jetton supply');
153
+ const jettonWallet = provider.open(JettonWallet_1.JettonWallet.createFromAddress((0, userJettonWallet_1.getUserJettonWallet)(via.address, asset)));
154
+ await jettonWallet.sendTransfer(via, value, message);
155
+ }
156
+ else {
157
+ await provider.internal(via, {
158
+ value,
159
+ sendMode: core_1.SendMode.PAY_GAS_SEPARATELY + core_1.SendMode.IGNORE_ERRORS,
160
+ body: message,
161
+ });
162
+ }
163
+ }
164
+ // Centralized sync logic used by concrete masters (Classic/Pyth)
165
+ async syncMasterData(provider, oracleParser) {
166
+ const state = (await provider.getState()).state;
167
+ if (state.type === 'active') {
168
+ this._data = (0, parser_1.parseMasterData)(state.data.toString('base64'), this._poolConfig.poolAssetsConfig, this._poolConfig.masterConstants, oracleParser);
169
+ if (this._data.upgradeConfig.masterCodeVersion !== this._poolConfig.masterVersion) {
170
+ throw Error(`Outdated SDK pool version. It supports only master code version ${this._poolConfig.masterVersion}, but the current master code version is ${this._data.upgradeConfig.masterCodeVersion}`);
171
+ }
172
+ this.lastSync = Math.floor(Date.now() / 1000);
173
+ }
174
+ else {
175
+ throw Error('Master contract is not active');
176
+ }
177
+ }
178
+ }
179
+ exports.AbstractEvaaMaster = AbstractEvaaMaster;
@@ -0,0 +1,34 @@
1
+ import { Builder, Cell, ContractProvider, Sender } from '@ton/core';
2
+ import { LiquidationParameters } from '..';
3
+ import { ClassicOracleInfo } from '../api/parsers/ClassicOracleParser';
4
+ import { AbstractEvaaMaster, BaseMasterConfig, BaseMasterData, EvaaParameters, LiquidationInnerParameters, LiquidationOperationBuilderParameters, SupplyWithdrawParameters, WithdrawParameters } from './AbstractMaster';
5
+ export type ClassicSupplyWithdrawParameters = SupplyWithdrawParameters & {
6
+ priceData?: Cell;
7
+ };
8
+ /**
9
+ * Parameters for the withdraw message
10
+ * @property priceData - price data cell. Can be obtained from the getPrices function
11
+ */
12
+ export type ClassicWithdrawParameters = WithdrawParameters & {
13
+ priceData: Cell;
14
+ };
15
+ export type ClassicLiquidationOperationParameters = LiquidationOperationBuilderParameters & LiquidationInnerParameters & {
16
+ priceData: Cell;
17
+ };
18
+ export type ClassicLiquidationParameters = LiquidationParameters & ClassicLiquidationOperationParameters;
19
+ export type ClassicMasterConfig = BaseMasterConfig & {
20
+ oraclesInfo: ClassicOracleInfo;
21
+ };
22
+ export type ClassicMasterData = BaseMasterData & {
23
+ masterConfig: ClassicMasterConfig;
24
+ };
25
+ export declare class EvaaMasterClassic extends AbstractEvaaMaster<ClassicMasterData> {
26
+ constructor(parameters: EvaaParameters);
27
+ buildGeneralDataPayload(parameters: ClassicSupplyWithdrawParameters): Cell;
28
+ createSupplyWithdrawMessage(parameters: ClassicSupplyWithdrawParameters): Cell;
29
+ sendWithdraw(provider: ContractProvider, via: Sender, value: bigint, parameters: ClassicWithdrawParameters): Promise<void>;
30
+ protected buildLiquidationOperationPayload(parameters: ClassicLiquidationOperationParameters): Builder;
31
+ createLiquidationMessage(parameters: ClassicLiquidationParameters): Cell;
32
+ sendLiquidation(provider: ContractProvider, via: Sender, value: bigint, parameters: ClassicLiquidationParameters): Promise<void>;
33
+ getSync(provider: ContractProvider): Promise<void>;
34
+ }