@evaafi/sdk 0.9.0 → 0.9.2

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 (132) hide show
  1. package/dist/api/feeds.d.ts +16 -24
  2. package/dist/api/feeds.js +22 -49
  3. package/dist/api/math.d.ts +1 -1
  4. package/dist/api/math.js +55 -38
  5. package/dist/api/parser.d.ts +2 -2
  6. package/dist/api/parser.js +3 -3
  7. package/dist/api/parsers/PythOracleParser.d.ts +3 -2
  8. package/dist/api/parsers/PythOracleParser.js +2 -1
  9. package/dist/api/prices.d.ts +1 -0
  10. package/dist/api/prices.js +2 -1
  11. package/dist/constants/assets/assetId.d.ts +3 -1
  12. package/dist/constants/assets/assetId.js +5 -1
  13. package/dist/constants/assets/mainnet.d.ts +2 -0
  14. package/dist/constants/assets/mainnet.js +13 -1
  15. package/dist/constants/general/index.d.ts +25 -11
  16. package/dist/constants/general/index.js +15 -1
  17. package/dist/constants/general/mainnet.d.ts +1 -0
  18. package/dist/constants/general/mainnet.js +2 -1
  19. package/dist/constants/pools/mainnet.d.ts +4 -0
  20. package/dist/constants/pools/mainnet.js +45 -28
  21. package/dist/constants/pools/testnet.js +14 -6
  22. package/dist/contracts/AbstractMaster.d.ts +239 -127
  23. package/dist/contracts/AbstractMaster.js +101 -16
  24. package/dist/contracts/ClassicMaster.d.ts +12 -12
  25. package/dist/contracts/PythMaster.d.ts +41 -24
  26. package/dist/contracts/PythMaster.js +61 -76
  27. package/dist/contracts/PythOracle.d.ts +16 -0
  28. package/dist/contracts/PythOracle.js +19 -0
  29. package/dist/contracts/index.d.ts +1 -0
  30. package/dist/contracts/index.js +1 -0
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/{prices → oracles}/Types.d.ts +1 -4
  34. package/dist/oracles/collectors/AbstractCollector.d.ts +10 -0
  35. package/dist/oracles/collectors/AbstractCollector.js +6 -0
  36. package/dist/oracles/collectors/ClassicCollector.d.ts +22 -0
  37. package/dist/oracles/collectors/ClassicCollector.js +192 -0
  38. package/dist/oracles/collectors/PythCollector.d.ts +27 -0
  39. package/dist/oracles/collectors/PythCollector.js +252 -0
  40. package/dist/oracles/collectors/index.d.ts +3 -0
  41. package/dist/oracles/collectors/index.js +19 -0
  42. package/dist/{prices → oracles}/index.d.ts +2 -3
  43. package/dist/{prices → oracles}/index.js +2 -3
  44. package/dist/oracles/prices/AbstractPrices.d.ts +33 -0
  45. package/dist/oracles/prices/AbstractPrices.js +40 -0
  46. package/dist/oracles/prices/ClassicPrices.d.ts +19 -0
  47. package/dist/oracles/prices/ClassicPrices.js +48 -0
  48. package/dist/oracles/prices/PythPrices.d.ts +18 -0
  49. package/dist/oracles/prices/PythPrices.js +32 -0
  50. package/dist/oracles/prices/index.d.ts +3 -0
  51. package/dist/oracles/prices/index.js +19 -0
  52. package/dist/{prices → oracles}/utils.d.ts +7 -1
  53. package/dist/{prices → oracles}/utils.js +10 -1
  54. package/dist/rewards/RewardMaster.d.ts +1 -0
  55. package/dist/rewards/RewardUser.d.ts +1 -0
  56. package/dist/types/Master.d.ts +5 -5
  57. package/dist/types/MasterRewards.d.ts +1 -0
  58. package/dist/types/UserRewards.d.ts +1 -0
  59. package/dist/utils/fivaUtils.d.ts +2 -0
  60. package/dist/utils/fivaUtils.js +19 -0
  61. package/dist/utils/sha256BigInt.d.ts +1 -0
  62. package/dist/utils/userJettonWallet.js +15 -1
  63. package/package.json +2 -3
  64. package/src/api/feeds.ts +24 -60
  65. package/src/api/math.ts +118 -90
  66. package/src/api/parser.ts +5 -5
  67. package/src/api/parsers/PythOracleParser.ts +6 -2
  68. package/src/api/prices.ts +2 -1
  69. package/src/constants/assets/assetId.ts +7 -1
  70. package/src/constants/assets/mainnet.ts +24 -0
  71. package/src/constants/general/index.ts +16 -1
  72. package/src/constants/general/mainnet.ts +1 -0
  73. package/src/constants/pools/mainnet.ts +42 -38
  74. package/src/constants/pools/testnet.ts +17 -8
  75. package/src/contracts/AbstractMaster.ts +272 -144
  76. package/src/contracts/ClassicMaster.ts +12 -12
  77. package/src/contracts/PythMaster.ts +130 -123
  78. package/src/contracts/PythOracle.ts +20 -0
  79. package/src/contracts/index.ts +2 -0
  80. package/src/index.ts +1 -1
  81. package/src/{prices → oracles}/Types.ts +0 -5
  82. package/src/oracles/collectors/AbstractCollector.ts +22 -0
  83. package/src/oracles/collectors/ClassicCollector.ts +263 -0
  84. package/src/oracles/collectors/PythCollector.ts +358 -0
  85. package/src/oracles/collectors/index.ts +3 -0
  86. package/src/{prices → oracles}/index.ts +2 -3
  87. package/src/oracles/prices/AbstractPrices.ts +59 -0
  88. package/src/oracles/prices/ClassicPrices.ts +52 -0
  89. package/src/oracles/prices/PythPrices.ts +40 -0
  90. package/src/oracles/prices/index.ts +3 -0
  91. package/src/{prices → oracles}/utils.ts +12 -1
  92. package/src/types/Master.ts +4 -6
  93. package/src/utils/fivaUtils.ts +19 -0
  94. package/src/utils/userJettonWallet.ts +18 -1
  95. package/dist/api/pyth.d.ts +0 -16
  96. package/dist/api/pyth.js +0 -35
  97. package/dist/constants/assets.d.ts +0 -48
  98. package/dist/constants/assets.js +0 -176
  99. package/dist/constants/general.d.ts +0 -67
  100. package/dist/constants/general.js +0 -75
  101. package/dist/constants/pools.d.ts +0 -13
  102. package/dist/constants/pools.js +0 -120
  103. package/dist/contracts/MasterContract.d.ts +0 -156
  104. package/dist/contracts/MasterContract.js +0 -260
  105. package/dist/prices/Oracle.interface.d.ts +0 -9
  106. package/dist/prices/Oracle.interface.js +0 -2
  107. package/dist/prices/Prices.d.ts +0 -11
  108. package/dist/prices/Prices.js +0 -53
  109. package/dist/prices/PricesCollector.d.ts +0 -22
  110. package/dist/prices/PricesCollector.js +0 -146
  111. package/dist/prices/PythCollector.d.ts +0 -22
  112. package/dist/prices/PythCollector.js +0 -217
  113. package/src/prices/Oracle.interface.ts +0 -18
  114. package/src/prices/Prices.ts +0 -45
  115. package/src/prices/PricesCollector.ts +0 -169
  116. package/src/prices/PythCollector.ts +0 -294
  117. /package/dist/{prices → oracles}/Types.js +0 -0
  118. /package/dist/{prices → oracles}/constants.d.ts +0 -0
  119. /package/dist/{prices → oracles}/constants.js +0 -0
  120. /package/dist/{prices → oracles}/sources/Backend.d.ts +0 -0
  121. /package/dist/{prices → oracles}/sources/Backend.js +0 -0
  122. /package/dist/{prices → oracles}/sources/Icp.d.ts +0 -0
  123. /package/dist/{prices → oracles}/sources/Icp.js +0 -0
  124. /package/dist/{prices → oracles}/sources/PriceSource.d.ts +0 -0
  125. /package/dist/{prices → oracles}/sources/PriceSource.js +0 -0
  126. /package/dist/{prices → oracles}/sources/index.d.ts +0 -0
  127. /package/dist/{prices → oracles}/sources/index.js +0 -0
  128. /package/src/{prices → oracles}/constants.ts +0 -0
  129. /package/src/{prices → oracles}/sources/Backend.ts +0 -0
  130. /package/src/{prices → oracles}/sources/Icp.ts +0 -0
  131. /package/src/{prices → oracles}/sources/PriceSource.ts +0 -0
  132. /package/src/{prices → oracles}/sources/index.ts +0 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateCloseAddress = void 0;
4
+ const core_1 = require("@ton/core");
5
+ const sha256BigInt_1 = require("./sha256BigInt");
6
+ function calculateCloseAddress(address, closeToAddress) {
7
+ const curHashpart = BigInt('0x' + address.hash.toString('hex'));
8
+ const desiredHashpart = BigInt('0x' + closeToAddress.hash.toString('hex'));
9
+ const rewriteBits = 8;
10
+ const mask = (1n << BigInt(256 - rewriteBits)) - 1n;
11
+ const antimask = invertBigInt(mask, 256);
12
+ const newHashpart = (curHashpart & mask) | (desiredHashpart & antimask);
13
+ return new core_1.Address(0, (0, sha256BigInt_1.bigIntToBuffer)(newHashpart));
14
+ }
15
+ exports.calculateCloseAddress = calculateCloseAddress;
16
+ function invertBigInt(value, bits) {
17
+ const maxValue = (1n << BigInt(bits)) - 1n;
18
+ return value ^ maxValue;
19
+ }
@@ -1,3 +1,4 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export declare function sha256Hash(input: string): bigint;
3
4
  export declare function bigIntToBuffer(value: bigint): Buffer;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUserJettonWallet = void 0;
4
4
  const core_1 = require("@ton/core");
5
5
  const assets_1 = require("../constants/assets");
6
+ const fivaUtils_1 = require("./fivaUtils");
6
7
  function getUserJettonData(ownerAddress, assetName, jettonWalletCode, jettonMasterAddress) {
7
8
  switch (assetName) {
8
9
  case 'DOGS':
@@ -16,6 +17,7 @@ function getUserJettonData(ownerAddress, assetName, jettonWalletCode, jettonMast
16
17
  .storeAddress(jettonMasterAddress)
17
18
  .endCell();
18
19
  case 'PT_tsUSDe_01Sep2025':
20
+ case 'PT_tsUSDe_18Dec2025':
19
21
  return (0, core_1.beginCell)()
20
22
  .storeCoins(0)
21
23
  .storeAddress(ownerAddress)
@@ -65,12 +67,24 @@ function getUserJettonWallet(ownerAddress, poolAssetConfig) {
65
67
  jettonWalletCode = new core_1.Cell({ exotic: true, bits: lib_prep.bits, refs: lib_prep.refs });
66
68
  }
67
69
  const jettonData = getUserJettonData(ownerAddress, assetName, jettonWalletCode, poolAssetConfig.jettonMasterAddress);
68
- const stateInit = (0, core_1.beginCell)()
70
+ let stateInit = (0, core_1.beginCell)()
69
71
  .store((0, core_1.storeStateInit)({
70
72
  code: jettonWalletCode,
71
73
  data: jettonData
72
74
  }))
73
75
  .endCell();
76
+ if (poolAssetConfig.name === 'PT_tsUSDe_18Dec2025') {
77
+ stateInit = (0, core_1.beginCell)()
78
+ .storeUint(1, 1) // fixed_prefix_length
79
+ .storeUint(8, 5) // rewrite_bits
80
+ .storeUint(0, 1) // special (Maybe=0)
81
+ .storeMaybeRef(jettonWalletCode) // code (Maybe)
82
+ .storeMaybeRef(jettonData) // data (Maybe)
83
+ .storeUint(0, 1) // libraries empty
84
+ .endCell();
85
+ const addr = new core_1.Address(0, stateInit.hash());
86
+ return (0, fivaUtils_1.calculateCloseAddress)(addr, poolAssetConfig.jettonMasterAddress);
87
+ }
74
88
  return new core_1.Address(0, stateInit.hash());
75
89
  }
76
90
  exports.getUserJettonWallet = getUserJettonWallet;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evaafi/sdk",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "The EVAA SDK is designed to easily integrate with the EVAA lending protocol on TON blockchain.",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -41,6 +41,5 @@
41
41
  "@pythnetwork/pyth-ton-js": "^0.1.2",
42
42
  "@ton/ton": "14.0.0",
43
43
  "dotenv": "16.4.5"
44
- },
45
- "packageManager": "yarn@4.9.2+sha512.1fc009bc09d13cfd0e19efa44cbfc2b9cf6ca61482725eb35bbc5e257e093ebf4130db6dfe15d604ff4b79efd8e1e8e99b25fa7d0a6197c9f9826358d4d65c3c"
44
+ }
46
45
  }
package/src/api/feeds.ts CHANGED
@@ -1,14 +1,16 @@
1
+ import { HexString } from '@pythnetwork/hermes-client';
1
2
  import { Dictionary } from '@ton/ton';
2
3
  import { Buffer } from 'buffer';
3
- import { ASSET_ID } from '../constants/assets';
4
4
 
5
- export const PYTH_TON_PRICE_FEED_ID = '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026';
6
- export const PYTH_USDT_PRICE_FEED_ID = '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b';
7
- export const PYTH_STTON_PRICE_FEED_ID = '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002';
8
- export const PYTH_TSTON_PRICE_FEED_ID = '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25';
9
- export const PYTH_USDC_PRICE_FEED_ID = '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a';
10
- export const PYTH_USDE_PRICE_FEED_ID = '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d';
11
- export const PYTH_TSUSDE_PRICE_FEED_ID = '0xcbe184846426619a60f51056d26efecb0537ad3a73b1e965fe695d06a257cb19';
5
+ export const FEED_ID = {
6
+ TON: '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026',
7
+ USDT: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
8
+ stTON: '0x9145e059026a4d5a46f3b96408f7e572e33b3257b9c2dbe8dba551c772762002',
9
+ tsTON: '0x3d1784128eeab5961ec60648fe497d3901eebd211b7f51e4bb0db9f024977d25',
10
+ USDC: '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
11
+ USDe: '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d',
12
+ tsUSDe: '0xcbe184846426619a60f51056d26efecb0537ad3a73b1e965fe695d06a257cb19',
13
+ };
12
14
 
13
15
  export function bigintToBuffer(value: bigint, size: number): Buffer {
14
16
  if (value < 0n) {
@@ -21,70 +23,32 @@ export function bigintToBuffer(value: bigint, size: number): Buffer {
21
23
  return Buffer.from(padded, 'hex');
22
24
  }
23
25
 
24
- export const packConnectedFeeds = (evaa_id: bigint, reffered_id: bigint) => {
25
- return Buffer.concat([bigintToBuffer(evaa_id, 32), bigintToBuffer(reffered_id, 32)]);
26
+ export const packConnectedFeeds = (evaa_id: bigint, feedId: HexString) => {
27
+ return Buffer.concat([bigintToBuffer(evaa_id, 32), bigintToBuffer(BigInt(feedId), 32)]);
26
28
  };
27
29
 
28
- export const EVAA_TON_PRICE_FEED_ID = ASSET_ID.TON;
29
- export const EVAA_NOT_PRICE_FEED_ID = ASSET_ID.NOT;
30
- export const EVAA_DOGS_PRICE_FEED_ID = ASSET_ID.DOGS;
31
- export const EVAA_USDT_PRICE_FEED_ID = ASSET_ID.USDT;
32
- export const EVAA_STTON_PRICE_FEED_ID = ASSET_ID.stTON;
33
- export const EVAA_TSTON_PRICE_FEED_ID = ASSET_ID.tsTON;
34
- export const EVAA_JUSDC_PRICE_FEED_ID = ASSET_ID.jUSDC;
35
- export const EVAA_JUSDT_PRICE_FEED_ID = ASSET_ID.jUSDT;
36
- export const EVAA_USDE_PRICE_FEED_ID = ASSET_ID.USDe;
37
- export const EVAA_TSUSDE_PRICE_FEED_ID = ASSET_ID.tsUSDe;
38
-
39
- export const MAIN_POOL_FEEDS_MAP: Dictionary<bigint, Buffer> = (() => {
40
- const map = Dictionary.empty<bigint, Buffer>();
41
- map.set(BigInt(PYTH_TON_PRICE_FEED_ID), packConnectedFeeds(EVAA_TON_PRICE_FEED_ID, 0n));
42
- map.set(BigInt(PYTH_USDT_PRICE_FEED_ID), packConnectedFeeds(EVAA_USDT_PRICE_FEED_ID, 0n));
43
- map.set(
44
- BigInt(PYTH_STTON_PRICE_FEED_ID),
45
- packConnectedFeeds(EVAA_STTON_PRICE_FEED_ID, BigInt(PYTH_TON_PRICE_FEED_ID)),
46
- );
47
- map.set(
48
- BigInt(PYTH_TSTON_PRICE_FEED_ID),
49
- packConnectedFeeds(EVAA_TSTON_PRICE_FEED_ID, BigInt(PYTH_TON_PRICE_FEED_ID)),
50
- );
51
- map.set(BigInt(PYTH_USDC_PRICE_FEED_ID), packConnectedFeeds(EVAA_JUSDC_PRICE_FEED_ID, 0n));
52
- map.set(BigInt(PYTH_USDT_PRICE_FEED_ID), packConnectedFeeds(EVAA_JUSDT_PRICE_FEED_ID, 0n));
53
- map.set(BigInt(PYTH_USDE_PRICE_FEED_ID), packConnectedFeeds(EVAA_USDE_PRICE_FEED_ID, 0n));
54
- map.set(BigInt(PYTH_TSUSDE_PRICE_FEED_ID), packConnectedFeeds(EVAA_TSUSDE_PRICE_FEED_ID, 0n));
55
- return map;
56
- })();
30
+ export const unpackConnectedFeeds = (buffer: Buffer): FeedMapItem => {
31
+ return {
32
+ assetId: BigInt(`0x${buffer.toString('hex', 0, 32)}`),
33
+ feedId: `0x${buffer.toString('hex', 32)}`,
34
+ };
35
+ };
57
36
 
58
37
  export type FeedMapItem = {
59
- evaaId: bigint;
60
- referredPythFeed: bigint;
38
+ assetId: bigint;
39
+ feedId: HexString;
61
40
  };
62
41
 
63
42
  export function parseFeedsMapDict(dict: Dictionary<bigint, Buffer>) {
64
- const parsedData = new Map<bigint, FeedMapItem>();
43
+ const parsedData = new Map<HexString, FeedMapItem>();
65
44
  for (const key of dict.keys()) {
66
45
  const buffer = dict.get(key)!;
67
46
 
68
- const hex1 = '0x' + buffer.toString('hex', 0, 32);
69
- const hex2 = '0x' + buffer.toString('hex', 32);
47
+ const assetId = BigInt(`0x${buffer.toString('hex', 0, 32)}`);
48
+ const feedId = `0x${buffer.toString('hex', 32)}`;
70
49
 
71
- const evaaId = BigInt(hex1);
72
- const referredPythFeed = BigInt(hex2);
73
-
74
- parsedData.set(key, { evaaId, referredPythFeed });
50
+ parsedData.set(`0x${key.toString(16)}`, { assetId, feedId });
75
51
  }
76
52
 
77
53
  return parsedData;
78
54
  }
79
-
80
- export const TESTNET_ALLOWED_REF_TOKENS: Dictionary<bigint, bigint> = (() => {
81
- const map = Dictionary.empty<bigint, bigint>();
82
- map.set(BigInt(EVAA_JUSDT_PRICE_FEED_ID), BigInt(EVAA_USDT_PRICE_FEED_ID));
83
- return map;
84
- })();
85
-
86
- export const TESTNET_FEEDS_MAP: Dictionary<bigint, Buffer> = (() => {
87
- const map = Dictionary.empty<bigint, Buffer>();
88
- map.set(BigInt(PYTH_TON_PRICE_FEED_ID), packConnectedFeeds(EVAA_TON_PRICE_FEED_ID, 0n));
89
- return map;
90
- })();