@hinkal/common 0.3.5 → 0.3.7

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 (342) hide show
  1. package/README.md +1 -0
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +6 -5
  4. package/common/src/API/API.mjs +75 -74
  5. package/common/src/API/admin-calls.cjs +1 -1
  6. package/common/src/API/admin-calls.d.ts +1 -1
  7. package/common/src/API/admin-calls.mjs +3 -1
  8. package/common/src/API/callLifiAPI.d.ts +1 -0
  9. package/common/src/API/callNearIntentsAPI.cjs +1 -1
  10. package/common/src/API/callNearIntentsAPI.mjs +2 -2
  11. package/common/src/API/callRelayer.cjs +1 -1
  12. package/common/src/API/callRelayer.d.ts +32 -1
  13. package/common/src/API/callRelayer.mjs +7 -1
  14. package/common/src/API/enclaveUtxoCalls.cjs +1 -1
  15. package/common/src/API/enclaveUtxoCalls.d.ts +16 -16
  16. package/common/src/API/enclaveUtxoCalls.mjs +3 -3
  17. package/common/src/API/evm-rpc-fallback.cjs +1 -0
  18. package/common/src/API/evm-rpc-fallback.d.ts +1 -0
  19. package/common/src/API/evm-rpc-fallback.mjs +17 -0
  20. package/common/src/API/evm-token-assets.cjs +1 -0
  21. package/common/src/API/evm-token-assets.d.ts +8 -0
  22. package/common/src/API/evm-token-assets.mjs +20 -0
  23. package/common/src/API/index.cjs +1 -1
  24. package/common/src/API/index.d.ts +1 -0
  25. package/common/src/API/index.mjs +1 -0
  26. package/common/src/API/route-config.cjs +1 -0
  27. package/common/src/API/route-config.d.ts +1 -0
  28. package/common/src/API/route-config.mjs +26 -0
  29. package/common/src/API/solana-nft-assets.cjs +1 -0
  30. package/common/src/API/solana-nft-assets.d.ts +1 -0
  31. package/common/src/API/solana-nft-assets.mjs +11 -0
  32. package/common/src/API/solana-priority-fee.cjs +1 -0
  33. package/common/src/API/solana-priority-fee.d.ts +3 -0
  34. package/common/src/API/solana-priority-fee.mjs +20 -0
  35. package/common/src/API/solana-rpc-fallback.cjs +1 -0
  36. package/common/src/API/solana-rpc-fallback.d.ts +1 -0
  37. package/common/src/API/solana-rpc-fallback.mjs +13 -0
  38. package/common/src/API/temporaryWalletCalls.cjs +1 -1
  39. package/common/src/API/temporaryWalletCalls.d.ts +0 -4
  40. package/common/src/API/temporaryWalletCalls.mjs +1 -5
  41. package/common/src/constants/balance.constants.d.ts +2 -0
  42. package/common/src/constants/bridging.constants.d.ts +1 -0
  43. package/common/src/constants/chains.constants.cjs +1 -1
  44. package/common/src/constants/chains.constants.d.ts +0 -3
  45. package/common/src/constants/chains.constants.mjs +33 -54
  46. package/common/src/constants/coingecko.constants.cjs +1 -1
  47. package/common/src/constants/coingecko.constants.mjs +1 -1
  48. package/common/src/constants/contracts.constants.cjs +1 -1
  49. package/common/src/constants/contracts.constants.d.ts +1 -0
  50. package/common/src/constants/contracts.constants.mjs +19 -15
  51. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  52. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +3 -2
  53. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  54. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +3 -2
  55. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  56. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +3 -2
  57. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  58. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +3 -2
  59. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  60. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +3 -2
  61. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  62. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +7 -6
  63. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  64. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +3 -2
  65. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  66. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +3 -2
  67. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  68. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +18 -1
  69. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.cjs +1 -1
  70. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.mjs +1 -1
  71. package/common/src/constants/okx.constants.d.ts +1 -0
  72. package/common/src/constants/protocol.constants.cjs +2 -2
  73. package/common/src/constants/protocol.constants.d.ts +4 -1
  74. package/common/src/constants/protocol.constants.mjs +3 -8
  75. package/common/src/constants/server.constants.cjs +1 -1
  76. package/common/src/constants/server.constants.d.ts +7 -2
  77. package/common/src/constants/server.constants.mjs +8 -3
  78. package/common/src/constants/vite.constants.cjs +1 -1
  79. package/common/src/constants/vite.constants.mjs +5 -23
  80. package/common/src/data-structures/ApprovalDBs/EventsPublicApprovalsDB.d.ts +1 -2
  81. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  82. package/common/src/data-structures/Hinkal/Hinkal.d.ts +4 -4
  83. package/common/src/data-structures/Hinkal/Hinkal.mjs +39 -39
  84. package/common/src/data-structures/Hinkal/IHinkal.d.ts +4 -4
  85. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  86. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +11 -9
  87. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  88. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.d.ts +2 -1
  89. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +81 -90
  90. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  91. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.d.ts +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +3 -5
  93. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  94. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +100 -104
  95. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.d.ts +1 -1
  97. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +86 -93
  98. package/common/src/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -1
  99. package/common/src/data-structures/Hinkal/hinkalDepositOnChainUtxos.d.ts +20 -7
  100. package/common/src/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +51 -39
  101. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +2 -2
  103. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  104. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +15 -13
  105. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  106. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.d.ts +1 -1
  107. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +3 -5
  108. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  109. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +1 -1
  110. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  111. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
  112. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +88 -121
  113. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  114. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.mjs +1 -3
  115. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  116. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.d.ts +24 -2
  117. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +77 -58
  118. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  119. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +1 -3
  120. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredProxySend.d.ts +5 -0
  121. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs +1 -0
  122. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.d.ts +8 -0
  123. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.mjs +31 -0
  124. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.cjs +1 -1
  125. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.mjs +44 -42
  126. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  127. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.d.ts +1 -1
  128. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +29 -24
  129. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  130. package/common/src/data-structures/Hinkal/hinkalSwap.d.ts +1 -1
  131. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +27 -24
  132. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  133. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +73 -56
  134. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  135. package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +1 -1
  136. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +21 -18
  137. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  138. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +19 -18
  139. package/common/src/data-structures/Hinkal/index.d.ts +2 -0
  140. package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  141. package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +2 -2
  142. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
  143. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -1
  144. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +55 -119
  145. package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
  146. package/common/src/data-structures/crypto-keys/decodeUTXO.mjs +11 -61
  147. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  148. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +2 -0
  149. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.mjs +41 -27
  150. package/common/src/data-structures/merkle-tree/MerkleTree.cjs +1 -1
  151. package/common/src/data-structures/merkle-tree/MerkleTree.d.ts +1 -0
  152. package/common/src/data-structures/merkle-tree/MerkleTree.mjs +3 -0
  153. package/common/src/error-handling/get-error.message.cjs +1 -1
  154. package/common/src/error-handling/get-error.message.mjs +1 -4
  155. package/common/src/functions/index.cjs +1 -1
  156. package/common/src/functions/index.mjs +9 -6
  157. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.cjs +1 -1
  158. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.mjs +2 -3
  159. package/common/src/functions/pre-transaction/index.cjs +1 -1
  160. package/common/src/functions/pre-transaction/index.d.ts +1 -0
  161. package/common/src/functions/pre-transaction/index.mjs +1 -1
  162. package/common/src/functions/pre-transaction/merge-with-fee-structure-emporium.cjs +1 -1
  163. package/common/src/functions/pre-transaction/merge-with-fee-structure-emporium.mjs +2 -2
  164. package/common/src/functions/pre-transaction/sendV0Transaction.cjs +2 -2
  165. package/common/src/functions/pre-transaction/sendV0Transaction.d.ts +5 -2
  166. package/common/src/functions/pre-transaction/sendV0Transaction.mjs +4 -4
  167. package/common/src/functions/pre-transaction/solanaTransfer.utils.cjs +1 -1
  168. package/common/src/functions/pre-transaction/solanaTransfer.utils.mjs +16 -15
  169. package/common/src/functions/pre-transaction/speculativeUtxo.cjs +1 -0
  170. package/common/src/functions/pre-transaction/speculativeUtxo.d.ts +9 -0
  171. package/common/src/functions/pre-transaction/speculativeUtxo.mjs +19 -0
  172. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  173. package/common/src/functions/private-wallet/emporium.helpers.d.ts +9 -2
  174. package/common/src/functions/private-wallet/emporium.helpers.mjs +93 -74
  175. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  176. package/common/src/functions/snarkjs/common.snarkjs.d.ts +1 -0
  177. package/common/src/functions/snarkjs/common.snarkjs.mjs +36 -32
  178. package/common/src/functions/snarkjs/constant.cjs +1 -1
  179. package/common/src/functions/snarkjs/constant.d.ts +48 -0
  180. package/common/src/functions/snarkjs/constant.mjs +48 -0
  181. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  182. package/common/src/functions/snarkjs/constructGeneralZkProof.d.ts +1 -1
  183. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +75 -71
  184. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  185. package/common/src/functions/snarkjs/constructSolanaZkProof.d.ts +1 -1
  186. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +27 -27
  187. package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -1
  188. package/common/src/functions/snarkjs/constructTxEnclave.mjs +8 -3
  189. package/common/src/functions/snarkjs/fetchOnChainRootHashes.cjs +1 -1
  190. package/common/src/functions/snarkjs/fetchOnChainRootHashes.mjs +10 -21
  191. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.cjs +1 -1
  192. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.d.ts +2 -2
  193. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.mjs +3 -3
  194. package/common/src/functions/snarkjs/signedMessageHash.cjs +1 -1
  195. package/common/src/functions/snarkjs/signedMessageHash.d.ts +4 -0
  196. package/common/src/functions/snarkjs/signedMessageHash.mjs +27 -18
  197. package/common/src/functions/utils/addresses.cjs +1 -1
  198. package/common/src/functions/utils/addresses.mjs +19 -12
  199. package/common/src/functions/utils/bridge-arrival.utils.cjs +1 -0
  200. package/common/src/functions/utils/bridge-arrival.utils.d.ts +1 -0
  201. package/common/src/functions/utils/bridge-arrival.utils.mjs +15 -0
  202. package/common/src/functions/utils/bridge-claimable-utxo.utils.cjs +1 -0
  203. package/common/src/functions/utils/bridge-claimable-utxo.utils.d.ts +19 -0
  204. package/common/src/functions/utils/bridge-claimable-utxo.utils.mjs +24 -0
  205. package/common/src/functions/utils/bridge-claimable.utils.d.ts +2 -3
  206. package/common/src/functions/utils/create-provider.cjs +1 -1
  207. package/common/src/functions/utils/create-provider.d.ts +9 -2
  208. package/common/src/functions/utils/create-provider.mjs +42 -9
  209. package/common/src/functions/utils/deposit-claimable.utils.cjs +1 -1
  210. package/common/src/functions/utils/deposit-claimable.utils.d.ts +2 -5
  211. package/common/src/functions/utils/deposit-claimable.utils.mjs +1 -6
  212. package/common/src/functions/utils/enclave-utxo-storage.cjs +1 -1
  213. package/common/src/functions/utils/enclave-utxo-storage.d.ts +4 -8
  214. package/common/src/functions/utils/enclave-utxo-storage.mjs +13 -2
  215. package/common/src/functions/utils/fees.utils.cjs +1 -1
  216. package/common/src/functions/utils/fees.utils.d.ts +2 -0
  217. package/common/src/functions/utils/fees.utils.mjs +15 -6
  218. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  219. package/common/src/functions/utils/getUtxosFromReceipt.utils.d.ts +1 -1
  220. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +5 -51
  221. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  222. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +7 -23
  223. package/common/src/functions/utils/index.cjs +1 -1
  224. package/common/src/functions/utils/index.d.ts +6 -0
  225. package/common/src/functions/utils/index.mjs +10 -4
  226. package/common/src/functions/utils/nearIntents.utils.cjs +1 -1
  227. package/common/src/functions/utils/nearIntents.utils.mjs +27 -13
  228. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  229. package/common/src/functions/utils/publicBalance.utils.d.ts +0 -1
  230. package/common/src/functions/utils/publicBalance.utils.mjs +35 -22
  231. package/common/src/functions/utils/recovery-balance.utils.cjs +1 -0
  232. package/common/src/functions/utils/recovery-balance.utils.d.ts +2 -0
  233. package/common/src/functions/utils/recovery-balance.utils.mjs +1 -0
  234. package/common/src/functions/utils/solana-program.utils.cjs +1 -0
  235. package/common/src/functions/utils/solana-program.utils.d.ts +3 -0
  236. package/common/src/functions/utils/solana-program.utils.mjs +17 -0
  237. package/common/src/functions/utils/solana-sponsored.utils.cjs +1 -0
  238. package/common/src/functions/utils/solana-sponsored.utils.d.ts +22 -0
  239. package/common/src/functions/utils/solana-sponsored.utils.mjs +30 -0
  240. package/common/src/functions/utils/solanaMint.utils.cjs +1 -1
  241. package/common/src/functions/utils/solanaMint.utils.d.ts +7 -0
  242. package/common/src/functions/utils/solanaMint.utils.mjs +18 -8
  243. package/common/src/functions/utils/sponsored-shield.utils.cjs +1 -0
  244. package/common/src/functions/utils/sponsored-shield.utils.d.ts +3 -0
  245. package/common/src/functions/utils/sponsored-shield.utils.mjs +3 -0
  246. package/common/src/functions/utils/temp-wallet.utils.cjs +1 -1
  247. package/common/src/functions/utils/temp-wallet.utils.d.ts +5 -4
  248. package/common/src/functions/utils/temp-wallet.utils.mjs +35 -14
  249. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  250. package/common/src/functions/utils/transfer-claimable.utils.d.ts +1 -2
  251. package/common/src/functions/utils/transfer-claimable.utils.mjs +2 -5
  252. package/common/src/functions/utils/tron.utils.cjs +1 -1
  253. package/common/src/functions/utils/tron.utils.d.ts +2 -2
  254. package/common/src/functions/utils/tron.utils.mjs +19 -18
  255. package/common/src/functions/utils/tronSimulation.utils.cjs +1 -1
  256. package/common/src/functions/utils/tronSimulation.utils.mjs +4 -6
  257. package/common/src/functions/utils/tx-confirmation.utils.cjs +1 -1
  258. package/common/src/functions/utils/tx-confirmation.utils.mjs +1 -1
  259. package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
  260. package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +15 -25
  261. package/common/src/functions/web3/functionCalls/submitProof.cjs +1 -1
  262. package/common/src/functions/web3/functionCalls/submitProof.mjs +6 -6
  263. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  264. package/common/src/functions/web3/functionCalls/transactCallRelayer.d.ts +2 -2
  265. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +8 -6
  266. package/common/src/functions/web3/getContractMetadata.cjs +1 -1
  267. package/common/src/functions/web3/getContractMetadata.mjs +1 -1
  268. package/common/src/functions/web3/getPublicAddressBalance.cjs +1 -1
  269. package/common/src/functions/web3/getPublicAddressBalance.d.ts +1 -2
  270. package/common/src/functions/web3/getPublicAddressBalance.mjs +6 -5
  271. package/common/src/functions/web3/index.cjs +1 -1
  272. package/common/src/functions/web3/index.d.ts +1 -1
  273. package/common/src/functions/web3/index.mjs +1 -1
  274. package/common/src/providers/SolanaProviderAdapter.cjs +1 -1
  275. package/common/src/providers/SolanaProviderAdapter.mjs +1 -2
  276. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  277. package/common/src/providers/WagmiProviderAdapter.mjs +35 -38
  278. package/common/src/types/bridging-tx.types.d.ts +1 -4
  279. package/common/src/types/cache.types.cjs +1 -1
  280. package/common/src/types/cache.types.d.ts +0 -1
  281. package/common/src/types/cache.types.mjs +1 -1
  282. package/common/src/types/ethereum-network.types.cjs +1 -1
  283. package/common/src/types/ethereum-network.types.d.ts +9 -7
  284. package/common/src/types/ethereum-network.types.mjs +1 -1
  285. package/common/src/types/external-action.types.cjs +1 -1
  286. package/common/src/types/external-action.types.d.ts +1 -0
  287. package/common/src/types/external-action.types.mjs +1 -1
  288. package/common/src/types/index.cjs +1 -1
  289. package/common/src/types/index.d.ts +1 -1
  290. package/common/src/types/index.mjs +1 -1
  291. package/common/src/types/pay-activities.types.d.ts +3 -1
  292. package/common/src/types/remote-tx-build.types.d.ts +23 -0
  293. package/common/src/types/scheduled-transactions.types.d.ts +4 -12
  294. package/common/src/types/solana.types.cjs +1 -0
  295. package/common/src/types/solana.types.d.ts +5 -0
  296. package/common/src/types/solana.types.mjs +6 -0
  297. package/common/src/types/temp-wallet.types.d.ts +9 -0
  298. package/common/src/types/token.types.d.ts +1 -0
  299. package/common/src/webworker/logError-RKYfeI6h.js +2 -0
  300. package/common/src/webworker/package.json +21 -19
  301. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  302. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  303. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  304. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  305. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  306. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  307. package/common/src/webworker/viteWorkerURL.constant.cjs +28 -1
  308. package/common/src/webworker/viteWorkerURL.constant.mjs +27 -13
  309. package/common/src/webworker/workerProxy-COB7g4Qc.js +1 -0
  310. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  311. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  312. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  313. package/package.json +25 -23
  314. package/services/Hinkal.cjs +1 -1
  315. package/services/Hinkal.d.ts +2 -2
  316. package/services/Hinkal.mjs +3 -3
  317. package/types/IHinkal.d.ts +2 -2
  318. package/assets/snarkjsWorkerLauncher-SrStwJvX.js +0 -1
  319. package/assets/snarkjsWorkerLogic-DtIjisbE.js +0 -132
  320. package/assets/utxoWorkerLauncher-CIBeBAML.js +0 -1
  321. package/assets/utxoWorkerLogic-C8R4GSaf.js +0 -199
  322. package/assets/zkProofWorkerLauncher-DfwteloJ.js +0 -1
  323. package/assets/zkProofWorkerLogic-CY9y6rOV.js +0 -199
  324. package/common/src/API/deposit-and-withdraw-status-calls.cjs +0 -1
  325. package/common/src/API/deposit-and-withdraw-status-calls.d.ts +0 -21
  326. package/common/src/API/deposit-and-withdraw-status-calls.mjs +0 -13
  327. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.cjs +0 -1
  328. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.d.ts +0 -8
  329. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.mjs +0 -30
  330. package/common/src/data-structures/Hinkal/prepareTronDepositToSelf.cjs +0 -1
  331. package/common/src/data-structures/Hinkal/prepareTronDepositToSelf.mjs +0 -31
  332. package/common/src/functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs +0 -1
  333. package/common/src/functions/pre-transaction/waitForDepositedUtxosInMerkleTree.mjs +0 -29
  334. package/common/src/functions/utils/enum.utils.cjs +0 -1
  335. package/common/src/functions/utils/enum.utils.mjs +0 -12
  336. package/common/src/functions/web3/getSolanaPriorityFee.cjs +0 -1
  337. package/common/src/functions/web3/getSolanaPriorityFee.d.ts +0 -3
  338. package/common/src/functions/web3/getSolanaPriorityFee.mjs +0 -26
  339. package/common/src/types/scheduled-transactions.types.cjs +0 -1
  340. package/common/src/types/scheduled-transactions.types.mjs +0 -6
  341. package/common/src/webworker/logError-Dex6ch32.js +0 -2
  342. package/common/src/webworker/workerProxy-BuJUMCQ4.js +0 -1
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/encodeTokenWithId.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../types/solana-transact.types.cjs`),u=require(`../../error-handling/logger.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/constructTxEnclave.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`./hinkalTransact.cjs`),h=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`./hinkalSolanaTransact.cjs`);var v=6,y=async(e,t,r,o)=>{let c=r.erc20TokenAddress,l=await e.getEthereumAddressByChain(t),[d,m]=await Promise.all([p.getFeeStructure(t,c,[c],s.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!m)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let h=await f.prepareStuckWithdrawEnclaveCall(e,{chainId:t,erc20Address:c,externalAddress:a.addressToHexFormat(o),relay:m,feeStructure:d,hashedEthereumAddress:i.hashEthereumAddress(l)}),g=[];for(let n=0;n<h.length;n+=1)try{let{jobId:r,signedMessageHash:i}=h[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));g.push(await f.finalizeTxEnclaveCallRelay(r,{R8:a,S:o},t))}catch(e){if(!g.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${g.length}/${h.length})`,e),g}return g},b=async(e,t,n)=>{let r=await Promise.all(Array.from({length:v},async(r,i)=>{let a=i+1,o=await p.getFeeStructure(e,t,[t],s.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},x=async(e,t,r,a)=>{let o=r.erc20TokenAddress,[s,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),b(t,o,a)]);if(!c)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await f.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:o,recipient:a,relayAddress:c,accounts:{recipient:a,mint:o===`11111111111111111111111111111111`?void 0:o},feeStructures:l,hashedEthereumAddress:i.hashEthereumAddress(s)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await f.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},S=async(e,t,r,i,o)=>{let l=[r.erc20TokenAddress],u=r.erc20TokenAddress,[d,f]=await Promise.all([p.getFeeStructure(t,u,l,s.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a.addressToHexFormat(o),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await g.mergeWithFeeStructure(t,l,y,d),{tx:await m.hinkalTransact(e,{chainId:t,erc20Addresses:l,amountChanges:y,externalAddress:_,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{h.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:c.SubmitMode.Relayer}}),amountToRecipient:v}},C=async(t,r,i,a,o,c)=>{let u=[i.erc20TokenAddress],{originalDeployer:d}=e.networkRegistry[r].contractData;if(!d)throw Error(`missing data`);let f=i.erc20TokenAddress,[m,g]=await Promise.all([p.getFeeStructure(r,f,u,s.ExternalActionId.Transact,void 0,void 0,{mintTo:u[0],recipient:o,nullifierCount:c}),t.getRandomRelay(r,!0)]);if(!g)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let v=a-m.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${m.flatFee}`);let y=[-v];return y[0]-=m.flatFee,{tx:await _.hinkalSolanaTransact(t,{chainId:r,mintAddresses:u,amountChanges:y,relayAddress:g,recipient:o,signer:g,functionName:`transact`,accounts:{recipient:o,mint:u[0]===`11111111111111111111111111111111`?void 0:u[0]},relayerFee:m.flatFee,variableRate:m.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:n,encryptedOutputs:i})=>{h.updateHinkal(r,t,e,n,i)},submit:{mode:l.SolanaSubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?C(t,n,r,i,a,o):S(t,n,r,i,a),T=async(i,a,s)=>{let c=d.validateAndGetChainId([a]);if(i.generateProofRemotely){let t=e.isSolanaLike(c)?await x(i,c,a,s):await y(i,c,a,s);if(!t.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return t}let l=[],f=r.normalizeTokenAddress(c,a.erc20TokenAddress);await i.resetMerkleTreesIfNecessary([c]);let p=((await o.getInputUtxoAndBalancePerToken({hinkal:i,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:c}))?.get(f)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=v){let n=p.slice(e,e+v),r=t.countTotalAmountInUtxos(n);try{let{tx:e}=await w(i,c,a,r,s,n.length);l.push(e)}catch(e){if(!l.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${l.length}/${Math.ceil(p.length/v)})`,e),l}}return l};exports.hinkalWithdrawStuckUtxos=T;
1
+ const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/encodeTokenWithId.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../types/solana-transact.types.cjs`),u=require(`../../error-handling/logger.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/constructTxEnclave.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`./hinkalTransact.cjs`),h=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`./hinkalSolanaTransact.cjs`);var v=6,y=async(t,r,o,c)=>{let l=o.erc20TokenAddress,d=await t.getEthereumAddressByChain(r),[m,h]=await Promise.all([p.getFeeStructure(r,l,[l],s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!h)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await f.prepareStuckWithdrawEnclaveCall(t,{chainId:r,hinkalAddress:e.networkRegistry[r].contractData.hinkalAddress,erc20Address:l,externalAddress:a.addressToHexFormat(c),relay:h,feeStructure:m,hashedEthereumAddress:i.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:n,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await f.finalizeTxEnclaveCallRelay(n,{R8:a,S:o},r))}catch(e){if(!_.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},b=async(e,t,n)=>{let r=await Promise.all(Array.from({length:v},async(r,i)=>{let a=i+1,o=await p.getFeeStructure(e,t,[t],s.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},x=async(e,t,r,a)=>{let o=r.erc20TokenAddress,[s,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),b(t,o,a)]);if(!c)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await f.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:o,recipient:a,relayAddress:c,accounts:{recipient:a,mint:o===`11111111111111111111111111111111`?void 0:o},feeStructures:l,hashedEthereumAddress:i.hashEthereumAddress(s)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await f.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},S=async(e,t,r,i,o)=>{let l=[r.erc20TokenAddress],u=r.erc20TokenAddress,[d,f]=await Promise.all([p.getFeeStructure(t,u,l,s.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a.addressToHexFormat(o),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await g.mergeWithFeeStructure(t,l,y,d),{tx:await m.hinkalTransact(e,{chainId:t,erc20Addresses:l,amountChanges:y,externalAddress:_,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{h.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:c.SubmitMode.Relayer}}),amountToRecipient:v}},C=async(t,r,i,a,o,c)=>{let u=[i.erc20TokenAddress],{originalDeployer:d}=e.networkRegistry[r].contractData;if(!d)throw Error(`missing data`);let f=i.erc20TokenAddress,[m,g]=await Promise.all([p.getFeeStructure(r,f,u,s.ExternalActionId.Transact,void 0,void 0,{mintTo:u[0],recipient:o,nullifierCount:c}),t.getRandomRelay(r,!0)]);if(!g)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let v=a-m.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${m.flatFee}`);let y=[-v];return y[0]-=m.flatFee,{tx:await _.hinkalSolanaTransact(t,{chainId:r,mintAddresses:u,amountChanges:y,relayAddress:g,recipient:o,signer:g,functionName:`transact`,accounts:{recipient:o,mint:u[0]===`11111111111111111111111111111111`?void 0:u[0]},relayerFee:m.flatFee,variableRate:m.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:n,encryptedOutputs:i})=>{h.updateHinkal(r,t,e,n,i)},submit:{mode:l.SolanaSubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?C(t,n,r,i,a,o):S(t,n,r,i,a),T=async(i,a,s)=>{let c=d.validateAndGetChainId([a]);if(i.generateProofRemotely){let t=e.isSolanaLike(c)?await x(i,c,a,s):await y(i,c,a,s);if(!t.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return t}let l=[],f=r.normalizeTokenAddress(c,a.erc20TokenAddress);await i.resetMerkleTreesIfNecessary([c]);let p=((await o.getInputUtxoAndBalancePerToken({hinkal:i,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:c}))?.get(f)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=v){let n=p.slice(e,e+v),r=t.countTotalAmountInUtxos(n);try{let{tx:e}=await w(i,c,a,r,s,n.length);l.push(e)}catch(e){if(!l.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${l.length}/${Math.ceil(p.length/v)})`,e),l}}return l};exports.hinkalWithdrawStuckUtxos=T;
@@ -18,28 +18,29 @@ import { updateHinkal as y } from "../../functions/auto-deposit-back-helpers/upd
18
18
  import { mergeWithFeeStructure as b } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
19
19
  import { hinkalSolanaTransact as x } from "./hinkalSolanaTransact.mjs";
20
20
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.ts
21
- var S = 6, C = async (e, t, n, i) => {
22
- let s = n.erc20TokenAddress, l = await e.getEthereumAddressByChain(t), [u, f] = await Promise.all([_(t, s, [s], c.Transact), e.getRandomRelay(t, !0)]);
23
- if (!f) throw Error(r.RELAYER_NOT_AVAILABLE);
24
- let p = await g(e, {
25
- chainId: t,
26
- erc20Address: s,
27
- externalAddress: o(i),
28
- relay: f,
29
- feeStructure: u,
30
- hashedEthereumAddress: a(l)
31
- }), h = [];
32
- for (let n = 0; n < p.length; n += 1) try {
33
- let { jobId: r, signedMessageHash: i } = p[n], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
34
- h.push(await m(r, {
21
+ var S = 6, C = async (e, n, i, s) => {
22
+ let l = i.erc20TokenAddress, u = await e.getEthereumAddressByChain(n), [f, p] = await Promise.all([_(n, l, [l], c.Transact), e.getRandomRelay(n, !0)]);
23
+ if (!p) throw Error(r.RELAYER_NOT_AVAILABLE);
24
+ let h = await g(e, {
25
+ chainId: n,
26
+ hinkalAddress: t[n].contractData.hinkalAddress,
27
+ erc20Address: l,
28
+ externalAddress: o(s),
29
+ relay: p,
30
+ feeStructure: f,
31
+ hashedEthereumAddress: a(u)
32
+ }), v = [];
33
+ for (let t = 0; t < h.length; t += 1) try {
34
+ let { jobId: r, signedMessageHash: i } = h[t], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
35
+ v.push(await m(r, {
35
36
  R8: a,
36
37
  S: o
37
- }, t));
38
+ }, n));
38
39
  } catch (e) {
39
- if (!h.length) throw e;
40
- return d.error(`Stuck withdrawal partially submitted (${h.length}/${p.length})`, e), h;
40
+ if (!v.length) throw e;
41
+ return d.error(`Stuck withdrawal partially submitted (${v.length}/${h.length})`, e), v;
41
42
  }
42
- return h;
43
+ return v;
43
44
  }, w = async (e, t, n) => {
44
45
  let r = await Promise.all(Array.from({ length: S }, async (r, i) => {
45
46
  let a = i + 1, o = await _(e, t, [t], c.Transact, void 0, void 0, {
@@ -22,3 +22,5 @@ export * from './hinkalPalTronDepositPrepare';
22
22
  export * from './hinkalSolanaDepositAndWithdraw';
23
23
  export * from './hinkalNearDepositAndBridge';
24
24
  export * from './hinkalBridgePrivateToPrivate';
25
+ export * from './hinkalSolanaSponsoredShield';
26
+ export * from './hinkalSolanaSponsoredProxySend';
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{if(i.generateProofRemotely)return;i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,n,v);let o=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,o),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,o)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{if(i.generateProofRemotely)return;i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,rpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!e)throw Error(`Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,n,v);let o=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,o),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,o)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;
@@ -24,10 +24,10 @@ var y = /* @__PURE__ */ new Map(), b = (e) => a(y, e, () => new v()), x = async
24
24
  let y = (v ?? a.getSupportedChains()).map((v) => b(v).runExclusive(async () => {
25
25
  if (a.generateProofRemotely) return;
26
26
  a.commitmentsSnapshotServiceByChain[v]?.intervalClear(), a.nullifierSnapshotServiceByChain[v]?.intervalClear();
27
- let { maxPageSize: y, fetchRpcUrl: b, contractData: x } = t[v], S;
27
+ let { maxPageSize: y, rpcUrl: b, contractData: x } = t[v], S;
28
28
  if (e(v)) {
29
29
  let e = x.hinkalAddress;
30
- if (!b || !e) throw Error("Fetch RPC URL or Solana program ID is not set");
30
+ if (!e) throw Error("Solana program ID is not set");
31
31
  S = new d(v, s(b), new _(e), 0, o(v), y);
32
32
  let t = x.hinkalIdl;
33
33
  t && S.setIdl(t);
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const i=require(`../../types/cache.types.cjs`),a=require(`../../API/API.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../../functions/utils/create-provider.cjs`),d=require(`../../functions/utils/publicBalance.utils.cjs`);let f=require(`@solana/web3.js`),p=require(`idb-keyval`),m=require(`@solana/spl-token`);var h=new class{fetchedTokens={};ALCHEMY_URLS={[e.chainIds.bnbMainnet]:`bnb-mainnet`,[e.chainIds.ethMainnet]:`eth-mainnet`,[e.chainIds.polygon]:`polygon-mainnet`,[e.chainIds.arbMainnet]:`arb-mainnet`,[e.chainIds.optimism]:`opt-mainnet`,[e.chainIds.optimismTest]:`opt-mainnet`,[e.chainIds.base]:`base-mainnet`,[e.chainIds.solanaMainnet]:`solana-mainnet`,[e.chainIds.sepoliaTestnet]:`eth-sepolia`};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>n.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData((await(0,p.get)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[n]||[],e)}async getFetchedTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData(this.fetchedTokens[n]||[],e)}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let r=s.getStateKey(e,t),[o,l]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(t,e)]),u=Array.from(new Set([...o,...l]));if(!u.length)return;let d=(await a.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),m=d.filter(e=>!n.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,p.update)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[r]:m};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,r){let o=s.getStateKey(e,r),l=await this.getEVMTokenAddresses(r,e),u=await this.getNFTTokens(r,e),d=u.map(e=>e.contractAddress),f=[...l,...d];if(!f.length)return;let m=(await a.API.tokensInfoCall(r,f)).map((e,i)=>{if(e)return e;let a=f[i],o=u.find(e=>n.caseInsensitiveEqual(e.contractAddress,a));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(a,r)?{chainId:r,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:a,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,m),g=m.filter(e=>!n.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>n.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,p.update)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[o]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{fetchRpcUrl:i}=e.networkRegistry[n];if(!i)throw Error(`RPC URL not found for the specified chain ID`);let a=u.createCustomSolanaConnection(i),o=await a.getBalance(new f.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_2022_PROGRAM_ID})]),l=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&l.unshift(t.solanaNativeAddress),Array.from(new Set(l))}async getNFTAddresses(n,i){let{fetchRpcUrl:a}=e.networkRegistry[n];if(!a)throw Error(`RPC URL not found for the specified chain ID`);try{let e=[],n=1;do{let{items:o=[],page:s}=(await r.httpClient.post(a,{jsonrpc:`2.0`,id:1,method:`getAssetsByOwner`,params:{ownerAddress:i,page:n,limit:1e3,displayOptions:{showFungible:!1,showCollectionMetadata:!0}}})).result||{},c=o.filter(e=>e.interface&&t.SOLANA_NFT_INTERFACES.includes(e.interface)).map(e=>e.id);e.push(...c),n=s&&s>n?s:0}while(n>0);return e}catch(e){return o.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(n,i){let a=await d.getPublicBalanceByTokenAddress(n,i,t.zeroAddress),o=this.ALCHEMY_URLS[n];if(!o)throw Error(`Alchemy URL not found for the specified chain ID: ${n}`);let s=`https://${o}.g.alchemy.com/v2/${e.ALCHEMY_API_KEY}`,c=[],l;do{let e=[i,`erc20`];l&&e.push({pageKey:l});let{result:t}=await r.httpClient.post(s,{jsonrpc:`2.0`,id:1,method:`alchemy_getTokenBalances`,params:e});c.push(...t?.tokenBalances??[]),l=t?.pageKey}while(l);a&&a>0n&&c.push({contractAddress:t.zeroAddress,tokenBalance:a.toString()});let u={};return c.forEach(e=>{(!u[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(u[e.contractAddress]=e)}),Object.keys(u)}async getNFTTokens(t,n){let i=`https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e.ALCHEMY_API_KEY}/getNFTsForOwner`,a=[],o;do{let e=new URLSearchParams({owner:n,withMetadata:`false`,pageSize:`100`});o&&e.append(`pageKey`,o);let{ownedNfts:t=[],pageKey:s}=await r.httpClient.get(`${i}?${e.toString()}`);a.push(...t),o=s}while(o);let s=a.filter(({contractAddress:e,tokenId:t})=>e&&t).reduce((e,{contractAddress:t,tokenId:n})=>{let r=t.toLowerCase();return e.has(r)||e.set(r,[]),e.get(r)?.push(n),e},new Map);return Array.from(s.entries()).map(([e,t])=>({contractAddress:e,tokenIds:t}))}};exports.alchemyPublicTokensDB=h;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../types/cache.types.cjs`),i=require(`../../API/API.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/string.utils.cjs`),s=require(`./token-visibility-db.cjs`),c=require(`../../functions/utils/erc20tokenFunctions.cjs`),l=require(`../../functions/utils/create-provider.cjs`),u=require(`../../functions/utils/publicBalance.utils.cjs`),d=require(`../../API/solana-nft-assets.cjs`),f=require(`../../API/evm-token-assets.cjs`);let p=require(`@solana/web3.js`),m=require(`idb-keyval`),h=require(`@solana/spl-token`);var g=new class{fetchedTokens={};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>n.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let n=o.getStateKey(t,e);return c.overlayTokensWithRegistryData((await(0,m.get)(r.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[n]||[],e)}async getFetchedTokens(e,t){let n=o.getStateKey(t,e);return c.overlayTokensWithRegistryData(this.fetchedTokens[n]||[],e)}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let a=o.getStateKey(e,t),[c,l]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(e)]),u=Array.from(new Set([...c,...l]));if(!u.length)return;let d=(await i.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await s.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),p=d.filter(e=>!n.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,m.update)(r.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[a]:p};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,a){let c=o.getStateKey(e,a),l=await this.getEVMTokenAddresses(a,e),u=await this.getNFTTokens(a,e),d=u.map(e=>e.contractAddress),f=[...l,...d];if(!f.length)return;let p=(await i.API.tokensInfoCall(a,f)).map((e,r)=>{if(e)return e;let i=f[r],o=u.find(e=>n.caseInsensitiveEqual(e.contractAddress,i));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(i,a)?{chainId:a,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:i,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await s.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(a,p),g=p.filter(e=>!n.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>n.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,m.update)(r.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[c]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{rpcUrl:i}=e.networkRegistry[n],a=l.createCustomSolanaConnection(i),o=await a.getBalance(new p.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new p.PublicKey(r),{programId:h.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new p.PublicKey(r),{programId:h.TOKEN_2022_PROGRAM_ID})]),u=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&u.unshift(t.solanaNativeAddress),Array.from(new Set(u))}async getNFTAddresses(e){try{return await d.getSolanaNftAssetsFromServer(e)}catch(e){return a.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(e,n){let[r,i]=await Promise.all([u.getPublicBalanceByTokenAddress(e,n,t.zeroAddress),f.getEvmTokenBalancesFromServer(e,n)]);r&&r>0n&&i.push({contractAddress:t.zeroAddress,tokenBalance:r.toString()});let a={};return i.forEach(e=>{(!a[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(a[e.contractAddress]=e)}),Object.keys(a)}async getNFTTokens(e,t){return f.getEvmNftAssetsFromServer(e,t)}};exports.alchemyPublicTokensDB=g;
@@ -2,7 +2,6 @@ import { ERC20Token } from '../../types/token.types';
2
2
  import { IPublicTokensDB } from './IPublicTokensDB';
3
3
  export declare class AlchemyPublicTokensDB implements IPublicTokensDB {
4
4
  private fetchedTokens;
5
- private readonly ALCHEMY_URLS;
6
5
  private readonly KNOWN_GOOD_NFTS;
7
6
  private isWhitelistedNFT;
8
7
  getPublicTokens(chainId: number, walletAddress: string): Promise<ERC20Token[]>;
@@ -1,85 +1,74 @@
1
- import { ALCHEMY_API_KEY as e, chainIds as t, isSolanaLike as n, networkRegistry as r } from "../../constants/chains.constants.mjs";
2
- import { SOLANA_NFT_INTERFACES as i, TokenType as a, solanaNativeAddress as o, zeroAddress as s } from "../../constants/protocol.constants.mjs";
3
- import { caseInsensitiveEqual as c, lowerCaseIncludes as l } from "../../functions/utils/caseInsensitive.utils.mjs";
4
- import { httpClient as u } from "../http/HttpClient.mjs";
5
- import "../http/index.mjs";
6
- import { StorageKeys as d } from "../../types/cache.types.mjs";
7
- import { API as f } from "../../API/API.mjs";
8
- import { Logger as p } from "../../error-handling/logger.mjs";
9
- import { getStateKey as m } from "../../functions/utils/string.utils.mjs";
10
- import { tokenVisibilityStorage as h } from "./token-visibility-db.mjs";
11
- import { overlayTokensWithRegistryData as g } from "../../functions/utils/erc20tokenFunctions.mjs";
12
- import { createCustomSolanaConnection as _ } from "../../functions/utils/create-provider.mjs";
13
- import { getPublicBalanceByTokenAddress as v } from "../../functions/utils/publicBalance.utils.mjs";
1
+ import { chainIds as e, isSolanaLike as t, networkRegistry as n } from "../../constants/chains.constants.mjs";
2
+ import { TokenType as r, solanaNativeAddress as i, zeroAddress as a } from "../../constants/protocol.constants.mjs";
3
+ import { caseInsensitiveEqual as o, lowerCaseIncludes as s } from "../../functions/utils/caseInsensitive.utils.mjs";
4
+ import { StorageKeys as c } from "../../types/cache.types.mjs";
5
+ import { API as l } from "../../API/API.mjs";
6
+ import { Logger as u } from "../../error-handling/logger.mjs";
7
+ import { getStateKey as d } from "../../functions/utils/string.utils.mjs";
8
+ import { tokenVisibilityStorage as f } from "./token-visibility-db.mjs";
9
+ import { overlayTokensWithRegistryData as p } from "../../functions/utils/erc20tokenFunctions.mjs";
10
+ import { createCustomSolanaConnection as m } from "../../functions/utils/create-provider.mjs";
11
+ import { getPublicBalanceByTokenAddress as h } from "../../functions/utils/publicBalance.utils.mjs";
12
+ import { getSolanaNftAssetsFromServer as g } from "../../API/solana-nft-assets.mjs";
13
+ import { getEvmNftAssetsFromServer as _, getEvmTokenBalancesFromServer as v } from "../../API/evm-token-assets.mjs";
14
14
  import { PublicKey as y } from "@solana/web3.js";
15
15
  import { get as b, update as x } from "idb-keyval";
16
16
  import { TOKEN_2022_PROGRAM_ID as S, TOKEN_PROGRAM_ID as C } from "@solana/spl-token";
17
17
  var w = new class {
18
18
  fetchedTokens = {};
19
- ALCHEMY_URLS = {
20
- [t.bnbMainnet]: "bnb-mainnet",
21
- [t.ethMainnet]: "eth-mainnet",
22
- [t.polygon]: "polygon-mainnet",
23
- [t.arbMainnet]: "arb-mainnet",
24
- [t.optimism]: "opt-mainnet",
25
- [t.optimismTest]: "opt-mainnet",
26
- [t.base]: "base-mainnet",
27
- [t.solanaMainnet]: "solana-mainnet",
28
- [t.sepoliaTestnet]: "eth-sepolia"
29
- };
30
19
  KNOWN_GOOD_NFTS = {
31
- [t.base]: ["0x20bc8d248fe9c18a947406cea50d716828ab821f"],
32
- [t.optimism]: ["0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e"]
20
+ [e.base]: ["0x20bc8d248fe9c18a947406cea50d716828ab821f"],
21
+ [e.optimism]: ["0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e"]
33
22
  };
34
23
  isWhitelistedNFT(e, t) {
35
- return this.KNOWN_GOOD_NFTS[t] ? this.KNOWN_GOOD_NFTS[t].some((t) => c(e, t)) : !1;
24
+ return this.KNOWN_GOOD_NFTS[t] ? this.KNOWN_GOOD_NFTS[t].some((t) => o(e, t)) : !1;
36
25
  }
37
26
  async getPublicTokens(e, t) {
38
- let n = m(t, e);
39
- return g((await b(d.ALCHEMY_PUBLIC_TOKENS))?.[n] || [], e);
27
+ let n = d(t, e);
28
+ return p((await b(c.ALCHEMY_PUBLIC_TOKENS))?.[n] || [], e);
40
29
  }
41
30
  async getFetchedTokens(e, t) {
42
- let n = m(t, e);
43
- return g(this.fetchedTokens[n] || [], e);
31
+ let n = d(t, e);
32
+ return p(this.fetchedTokens[n] || [], e);
44
33
  }
45
- fetchAndUpdatePublicTokens(e, t) {
46
- return n(t) ? this.fetchAndUpdateSolanaTokens(e, t) : this.fetchAndUpdateEVMTokens(e, t);
34
+ fetchAndUpdatePublicTokens(e, n) {
35
+ return t(n) ? this.fetchAndUpdateSolanaTokens(e, n) : this.fetchAndUpdateEVMTokens(e, n);
47
36
  }
48
37
  async fetchAndUpdateSolanaTokens(e, t) {
49
- let n = m(e, t), [r, i] = await Promise.all([this.getSolanaTokenAddresses(t, e), this.getNFTAddresses(t, e)]), a = Array.from(new Set([...r, ...i]));
38
+ let n = d(e, t), [r, i] = await Promise.all([this.getSolanaTokenAddresses(t, e), this.getNFTAddresses(e)]), a = Array.from(new Set([...r, ...i]));
50
39
  if (!a.length) return;
51
- let o = (await f.tokensInfoCall(t, a)).filter((e) => !!e), s = await h.hideSpamsAndFetchHiddenTokensAddresses(t, o), c = o.filter((e) => !l(s, e.erc20TokenAddress));
52
- await x(d.ALCHEMY_PUBLIC_TOKENS, (e = {}) => {
40
+ let o = (await l.tokensInfoCall(t, a)).filter((e) => !!e), u = await f.hideSpamsAndFetchHiddenTokensAddresses(t, o), p = o.filter((e) => !s(u, e.erc20TokenAddress));
41
+ await x(c.ALCHEMY_PUBLIC_TOKENS, (e = {}) => {
53
42
  let t = {
54
43
  ...e,
55
- [n]: c
44
+ [n]: p
56
45
  };
57
46
  return this.fetchedTokens = t, t;
58
47
  });
59
48
  }
60
- async getWalletTokenAddresses(e, t) {
61
- return n(e) ? this.getSolanaTokenAddresses(e, t) : this.getEVMTokenAddresses(e, t);
49
+ async getWalletTokenAddresses(e, n) {
50
+ return t(e) ? this.getSolanaTokenAddresses(e, n) : this.getEVMTokenAddresses(e, n);
62
51
  }
63
52
  async fetchAndUpdateEVMTokens(e, t) {
64
- let n = m(e, t), r = await this.getEVMTokenAddresses(t, e), i = await this.getNFTTokens(t, e), o = i.map((e) => e.contractAddress), s = [...r, ...o];
65
- if (!s.length) return;
66
- let u = (await f.tokensInfoCall(t, s)).map((e, n) => {
53
+ let n = d(e, t), i = await this.getEVMTokenAddresses(t, e), a = await this.getNFTTokens(t, e), u = a.map((e) => e.contractAddress), p = [...i, ...u];
54
+ if (!p.length) return;
55
+ let m = (await l.tokensInfoCall(t, p)).map((e, n) => {
67
56
  if (e) return e;
68
- let r = s[n], o = i.find((e) => c(e.contractAddress, r));
69
- return o && o.tokenIds && o.tokenIds.length > 0 && this.isWhitelistedNFT(r, t) ? {
57
+ let i = p[n], s = a.find((e) => o(e.contractAddress, i));
58
+ return s && s.tokenIds && s.tokenIds.length > 0 && this.isWhitelistedNFT(i, t) ? {
70
59
  chainId: t,
71
60
  name: "Unknown NFT",
72
61
  symbol: "NFT",
73
- erc20TokenAddress: r,
62
+ erc20TokenAddress: i,
74
63
  decimals: 0,
75
- nftTokenType: a.ERC721,
76
- tokenIds: o.tokenIds
64
+ nftTokenType: r.ERC721,
65
+ tokenIds: s.tokenIds
77
66
  } : null;
78
- }).filter((e) => !!e), p = await h.hideSpamsAndFetchHiddenTokensAddresses(t, u), g = u.filter((e) => !l(p, e.erc20TokenAddress)).map((e) => ({
67
+ }).filter((e) => !!e), h = await f.hideSpamsAndFetchHiddenTokensAddresses(t, m), g = m.filter((e) => !s(h, e.erc20TokenAddress)).map((e) => ({
79
68
  ...e,
80
- tokenIds: i.find((t) => c(t.contractAddress, e.erc20TokenAddress))?.tokenIds
69
+ tokenIds: a.find((t) => o(t.contractAddress, e.erc20TokenAddress))?.tokenIds
81
70
  }));
82
- await x(d.ALCHEMY_PUBLIC_TOKENS, (e = {}) => {
71
+ await x(c.ALCHEMY_PUBLIC_TOKENS, (e = {}) => {
83
72
  let t = {
84
73
  ...e,
85
74
  [n]: g
@@ -88,85 +77,32 @@ var w = new class {
88
77
  });
89
78
  }
90
79
  async getSolanaTokenAddresses(e, t) {
91
- let { fetchRpcUrl: n } = r[e];
92
- if (!n) throw Error("RPC URL not found for the specified chain ID");
93
- let i = _(n), a = await i.getBalance(new y(t)), [s, c] = await Promise.all([i.getParsedTokenAccountsByOwner(new y(t), { programId: C }), i.getParsedTokenAccountsByOwner(new y(t), { programId: S })]), l = [...s.value, ...c.value].filter((e) => {
80
+ let { rpcUrl: r } = n[e], a = m(r), o = await a.getBalance(new y(t)), [s, c] = await Promise.all([a.getParsedTokenAccountsByOwner(new y(t), { programId: C }), a.getParsedTokenAccountsByOwner(new y(t), { programId: S })]), l = [...s.value, ...c.value].filter((e) => {
94
81
  let { amount: t } = e.account.data.parsed.info.tokenAmount;
95
82
  return BigInt(t) > 0n;
96
83
  }).map((e) => e.account.data.parsed.info.mint);
97
- return a > 0 && l.unshift(o), Array.from(new Set(l));
84
+ return o > 0 && l.unshift(i), Array.from(new Set(l));
98
85
  }
99
- async getNFTAddresses(e, t) {
100
- let { fetchRpcUrl: n } = r[e];
101
- if (!n) throw Error("RPC URL not found for the specified chain ID");
86
+ async getNFTAddresses(e) {
102
87
  try {
103
- let e = [], r = 1;
104
- do {
105
- let { items: a = [], page: o } = (await u.post(n, {
106
- jsonrpc: "2.0",
107
- id: 1,
108
- method: "getAssetsByOwner",
109
- params: {
110
- ownerAddress: t,
111
- page: r,
112
- limit: 1e3,
113
- displayOptions: {
114
- showFungible: !1,
115
- showCollectionMetadata: !0
116
- }
117
- }
118
- })).result || {}, s = a.filter((e) => e.interface && i.includes(e.interface)).map((e) => e.id);
119
- e.push(...s), r = o && o > r ? o : 0;
120
- } while (r > 0);
121
- return e;
88
+ return await g(e);
122
89
  } catch (e) {
123
- return p.error("Failed to fetch NFTs from DAS API", e), [];
90
+ return u.error("Failed to fetch NFTs from DAS API", e), [];
124
91
  }
125
92
  }
126
- async getEVMTokenAddresses(t, n) {
127
- let r = await v(t, n, s), i = this.ALCHEMY_URLS[t];
128
- if (!i) throw Error(`Alchemy URL not found for the specified chain ID: ${t}`);
129
- let a = `https://${i}.g.alchemy.com/v2/${e}`, o = [], c;
130
- do {
131
- let e = [n, "erc20"];
132
- c && e.push({ pageKey: c });
133
- let { result: t } = await u.post(a, {
134
- jsonrpc: "2.0",
135
- id: 1,
136
- method: "alchemy_getTokenBalances",
137
- params: e
138
- });
139
- o.push(...t?.tokenBalances ?? []), c = t?.pageKey;
140
- } while (c);
141
- r && r > 0n && o.push({
142
- contractAddress: s,
143
- tokenBalance: r.toString()
93
+ async getEVMTokenAddresses(e, t) {
94
+ let [n, r] = await Promise.all([h(e, t, a), v(e, t)]);
95
+ n && n > 0n && r.push({
96
+ contractAddress: a,
97
+ tokenBalance: n.toString()
144
98
  });
145
- let l = {};
146
- return o.forEach((e) => {
147
- (!l[e.contractAddress] || BigInt(e.tokenBalance) > 0n) && (l[e.contractAddress] = e);
148
- }), Object.keys(l);
99
+ let i = {};
100
+ return r.forEach((e) => {
101
+ (!i[e.contractAddress] || BigInt(e.tokenBalance) > 0n) && (i[e.contractAddress] = e);
102
+ }), Object.keys(i);
149
103
  }
150
- async getNFTTokens(t, n) {
151
- let r = `https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e}/getNFTsForOwner`, i = [], a;
152
- do {
153
- let e = new URLSearchParams({
154
- owner: n,
155
- withMetadata: "false",
156
- pageSize: "100"
157
- });
158
- a && e.append("pageKey", a);
159
- let { ownedNfts: t = [], pageKey: o } = await u.get(`${r}?${e.toString()}`);
160
- i.push(...t), a = o;
161
- } while (a);
162
- let o = i.filter(({ contractAddress: e, tokenId: t }) => e && t).reduce((e, { contractAddress: t, tokenId: n }) => {
163
- let r = t.toLowerCase();
164
- return e.has(r) || e.set(r, []), e.get(r)?.push(n), e;
165
- }, /* @__PURE__ */ new Map());
166
- return Array.from(o.entries()).map(([e, t]) => ({
167
- contractAddress: e,
168
- tokenIds: t
169
- }));
104
+ async getNFTTokens(e, t) {
105
+ return _(e, t);
170
106
  }
171
107
  }();
172
108
  //#endregion
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`);require(`./keys.cjs`);const n=require(`../utxo/Utxo.cjs`);let r=require(`ethers`),i=require(`@solana/web3.js`);var a=`solana-on-chain-utxo:`,o=9,s=e=>Array.isArray(e)?e.some(e=>(e instanceof Uint8Array?e:Uint8Array.from(e)).some(e=>e!==0)):!1,c=e=>{if(e.length!==o)throw Error(`Expected ${o} on-chain fields, received ${e.length}`);let t=e.map((e,t)=>{let n=e instanceof Uint8Array?e:Uint8Array.from(e);if(n.length!==32)throw Error(`Expected bytes32 length 32 at position ${t}, got ${n.length}`);return`0x${Buffer.from(n).toString(`hex`)}`});return`${a}${r.ethers.AbiCoder.defaultAbiCoder().encode([`bytes32[${o}]`],[t])}`},l=e=>e.startsWith(a),u=e=>{if(!l(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=r.ethers.AbiCoder.defaultAbiCoder().decode([`bytes32[${o}]`],e.slice(21)),a=n;if(!Array.isArray(a)||a.length!==o)throw Error(`Malformed encoded Solana UTXO payload`);let[s,c,u,d,f,p,m,h,g]=a,_=BigInt(s),v=BigInt(d),y=BigInt(f),b=BigInt(p),x=BigInt(m),S=r.ethers.toBeHex(BigInt(h)),C=BigInt(g).toString(),w=Array.from(r.ethers.getBytes(c)),T=Array.from(r.ethers.getBytes(u)),E=new i.PublicKey(Uint8Array.from([...w.slice(16),...T.slice(16)])).toBase58();return{amount:_,erc20TokenAddress:t.poseidonHash(BigInt(c),BigInt(u)),mintAddress:E,h0x:v,h0y:y,h1x:b,h1y:x,stealthAddress:S,timeStamp:C}},d=e=>{let[t]=r.ethers.AbiCoder.defaultAbiCoder().decode([`tuple(uint256, address, tuple(uint256, uint256, uint256, uint256, uint256), uint256)`,`bytes`],e);return{amount:BigInt(t[0]),erc20TokenAddress:t[1],h0x:BigInt(t[2][0]),h0y:BigInt(t[2][1]),h1x:BigInt(t[2][2]),h1y:BigInt(t[2][3]),stealthAddress:r.ethers.toBeHex(BigInt(t[2][4])),timeStamp:BigInt(t[3]).toString()}},f=(t,n,r)=>{if(e.isSolanaLike(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,h0x:a,h0y:o,stealthAddress:s,timeStamp:c}=u(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:c,nullifyingKey:n,stealthAddress:s,H0:[a,o]}}let{amount:i,erc20TokenAddress:a,timeStamp:o,h0x:s,h0y:c,stealthAddress:l}=d(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,nullifyingKey:n,stealthAddress:l,H0:[s,c]}},p=(e,t,r)=>new n.Utxo(f(e,t,r));exports.decodeEvmUtxo=d,exports.decodeSolanaUtxo=u,exports.decodeUtxo=p,exports.decodeUtxoConstructorArgs=f,exports.encodeSolanaOnChainUtxo=c,exports.hasSolanaOnChainData=s,exports.isSolanaOnChainUtxo=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`../../constants/chains.constants.cjs`),require(`../../crypto/poseidon.cjs`),require(`./keys.cjs`),require(`../utxo/Utxo.cjs`);let e=require(`ethers`);require(`@solana/web3.js`);var t=`solana-on-chain-utxo:`,n=9,r=e=>Array.isArray(e)?e.some(e=>(e instanceof Uint8Array?e:Uint8Array.from(e)).some(e=>e!==0)):!1,i=r=>{if(r.length!==n)throw Error(`Expected ${n} on-chain fields, received ${r.length}`);let i=r.map((e,t)=>{let n=e instanceof Uint8Array?e:Uint8Array.from(e);if(n.length!==32)throw Error(`Expected bytes32 length 32 at position ${t}, got ${n.length}`);return`0x${Buffer.from(n).toString(`hex`)}`});return`${t}${e.ethers.AbiCoder.defaultAbiCoder().encode([`bytes32[${n}]`],[i])}`},a=e=>e.startsWith(t);exports.encodeSolanaOnChainUtxo=i,exports.hasSolanaOnChainData=r,exports.isSolanaOnChainUtxo=a;
@@ -1,68 +1,18 @@
1
- import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
- import { poseidonHash as t } from "../../crypto/poseidon.mjs";
1
+ import "../../constants/chains.constants.mjs";
2
+ import "../../crypto/poseidon.mjs";
3
3
  import "./keys.mjs";
4
- import { Utxo as n } from "../utxo/Utxo.mjs";
5
- import { ethers as r } from "ethers";
6
- import { PublicKey as i } from "@solana/web3.js";
4
+ import "../utxo/Utxo.mjs";
5
+ import { ethers as e } from "ethers";
6
+ import "@solana/web3.js";
7
7
  //#region libs/shared/common/src/data-structures/crypto-keys/decodeUTXO.ts
8
- var a = "solana-on-chain-utxo:", o = 9, s = (e) => Array.isArray(e) ? e.some((e) => (e instanceof Uint8Array ? e : Uint8Array.from(e)).some((e) => e !== 0)) : !1, c = (e) => {
9
- if (e.length !== o) throw Error(`Expected ${o} on-chain fields, received ${e.length}`);
10
- let t = e.map((e, t) => {
8
+ var t = "solana-on-chain-utxo:", n = 9, r = (e) => Array.isArray(e) ? e.some((e) => (e instanceof Uint8Array ? e : Uint8Array.from(e)).some((e) => e !== 0)) : !1, i = (r) => {
9
+ if (r.length !== n) throw Error(`Expected ${n} on-chain fields, received ${r.length}`);
10
+ let i = r.map((e, t) => {
11
11
  let n = e instanceof Uint8Array ? e : Uint8Array.from(e);
12
12
  if (n.length !== 32) throw Error(`Expected bytes32 length 32 at position ${t}, got ${n.length}`);
13
13
  return `0x${Buffer.from(n).toString("hex")}`;
14
14
  });
15
- return `${a}${r.AbiCoder.defaultAbiCoder().encode([`bytes32[${o}]`], [t])}`;
16
- }, l = (e) => e.startsWith(a), u = (e) => {
17
- if (!l(e)) throw Error("Invalid encoded Solana UTXO payload");
18
- let [n] = r.AbiCoder.defaultAbiCoder().decode([`bytes32[${o}]`], e.slice(21)), a = n;
19
- if (!Array.isArray(a) || a.length !== o) throw Error("Malformed encoded Solana UTXO payload");
20
- let [s, c, u, d, f, p, m, h, g] = a, _ = BigInt(s), v = BigInt(d), y = BigInt(f), b = BigInt(p), x = BigInt(m), S = r.toBeHex(BigInt(h)), C = BigInt(g).toString(), w = Array.from(r.getBytes(c)), T = Array.from(r.getBytes(u)), E = new i(Uint8Array.from([...w.slice(16), ...T.slice(16)])).toBase58();
21
- return {
22
- amount: _,
23
- erc20TokenAddress: t(BigInt(c), BigInt(u)),
24
- mintAddress: E,
25
- h0x: v,
26
- h0y: y,
27
- h1x: b,
28
- h1y: x,
29
- stealthAddress: S,
30
- timeStamp: C
31
- };
32
- }, d = (e) => {
33
- let [t] = r.AbiCoder.defaultAbiCoder().decode(["tuple(uint256, address, tuple(uint256, uint256, uint256, uint256, uint256), uint256)", "bytes"], e);
34
- return {
35
- amount: BigInt(t[0]),
36
- erc20TokenAddress: t[1],
37
- h0x: BigInt(t[2][0]),
38
- h0y: BigInt(t[2][1]),
39
- h1x: BigInt(t[2][2]),
40
- h1y: BigInt(t[2][3]),
41
- stealthAddress: r.toBeHex(BigInt(t[2][4])),
42
- timeStamp: BigInt(t[3]).toString()
43
- };
44
- }, f = (t, n, r) => {
45
- if (e(r)) {
46
- let { amount: e, erc20TokenAddress: r, mintAddress: i, h0x: a, h0y: o, stealthAddress: s, timeStamp: c } = u(t);
47
- return {
48
- amount: e,
49
- erc20TokenAddress: r,
50
- mintAddress: i,
51
- timeStamp: c,
52
- nullifyingKey: n,
53
- stealthAddress: s,
54
- H0: [a, o]
55
- };
56
- }
57
- let { amount: i, erc20TokenAddress: a, timeStamp: o, h0x: s, h0y: c, stealthAddress: l } = d(t);
58
- return {
59
- amount: i,
60
- erc20TokenAddress: a,
61
- timeStamp: o,
62
- nullifyingKey: n,
63
- stealthAddress: l,
64
- H0: [s, c]
65
- };
66
- }, p = (e, t, r) => new n(f(e, t, r));
15
+ return `${t}${e.AbiCoder.defaultAbiCoder().encode([`bytes32[${n}]`], [i])}`;
16
+ }, a = (e) => e.startsWith(t);
67
17
  //#endregion
68
- export { d as decodeEvmUtxo, u as decodeSolanaUtxo, p as decodeUtxo, f as decodeUtxoConstructorArgs, c as encodeSolanaOnChainUtxo, s as hasSolanaOnChainData, l as isSolanaOnChainUtxo };
18
+ export { i as encodeSolanaOnChainUtxo, r as hasSolanaOnChainData, a as isSolanaOnChainUtxo };
@@ -1 +1 @@
1
- require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../error-handling/logger.cjs`),t=require(`../../../functions/utils/getSignerFromContract.cjs`),n=require(`../../../constants/reorg-depths.constants.cjs`),r=require(`../../../functions/utils/resolve-sync.utils.cjs`),i=require(`../../BlockchainEvent/BlockchainEvent.cjs`);let a=require(`ethers`);var o=class{RETRY_MIN_PAGE_SIZE=100;MAX_RETRIES=20;_chainId;contract;_latestBlockNumber;_initialBlockNumber;onEventsProcessed;eventProcessors=new Set;maxPageSize;_isReady=!1;isServer;inProgress;eventsFetchingMutex;constructor(e,t,n,r,i,a){this.contract=t,this._chainId=e,this._initialBlockNumber=n,this.maxPageSize=a,this.isServer=r,this.inProgress=!1,this.eventsFetchingMutex=i}get latestBlockNumber(){return this._latestBlockNumber??this._initialBlockNumber}get chainId(){return this._chainId}get isReady(){return this._isReady}syncFromAtMost(e){(this._latestBlockNumber===void 0||e<this._latestBlockNumber)&&(this._latestBlockNumber=e)}advanceLatestBlockNumber(e){e>(this._latestBlockNumber??this._initialBlockNumber)&&(this._latestBlockNumber=e)}intervalClear(){this._isReady=!1,this.eventProcessors=new Set,this.clear()}async init(){if(this._isReady)throw Error(`Already initialized`);this._isReady=!0,await this.retrieveEvents(this.latestBlockNumber+1),this.startUpdateListener()}requireReady(){if(!this._isReady)throw Error(`Not ready`)}async getEventsForSingleContract(e,t,n,r=0){try{return(await e.queryFilter(`*`,t,n)).filter(e=>e instanceof a.ethers.EventLog)}catch(i){if(r<this.MAX_RETRIES&&n-t>this.RETRY_MIN_PAGE_SIZE){let i=Math.floor((t+n)/2),a=await this.getEventsForSingleContract(e,t,i,r+1),o=await this.getEventsForSingleContract(e,i+1,n,r+1);return[...a,...o]}throw i}}addEventProcessorFunction(e){if(this._isReady)throw Error(`Can't add event processor after event emitter initialized`);this.eventProcessors.add(e)}async getEventsInRange(e,t){let n=[];return await r.resolveSync(r.getSequence(e,t,this.maxPageSize).map(({from:e,to:t})=>async()=>{let r=await this.getEventsForSingleContract(this.contract,e,t);n.push(...r)})),n.map(e=>i.BlockchainEvent.fromEthers(e))}async getLastBlockNumberForEventRequest(){let e=await t.getProviderFromContract(this.contract).getBlockNumber();if(!this.isServer)return e;let{chainId:r}=await t.getProviderFromContract(this.contract).getNetwork();return Math.max(this.latestBlockNumber,e-n.blockReorgDepth[Number(r)]+1)}async retrieveEvents(t,n=!1){return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!n)return!1;this.inProgress=!0;let e=await this.getLastBlockNumberForEventRequest();if(e<t)return this.inProgress=!1,!1;let r=await this.getEventsInRange(t,e);return await this.processEvents(r,e),this._latestBlockNumber=e,this.inProgress=!1,!0}catch(t){return e.Logger.error(`retrieveEvents error`,t),this.inProgress=!1,!1}})}async processEvents(e,t){let n=(await Promise.all([...this.eventProcessors].map(n=>n(e,t)))).reduce((e,t)=>e+t,0);this.onEventsProcessed?.(n)}};exports.BlockchainEventEmitter=o;
1
+ require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/chains.constants.cjs`),t=require(`../../../types/ethereum-network.types.cjs`),n=require(`../../../error-handling/logger.cjs`),r=require(`../../../constants/contracts.constants.cjs`),i=require(`../../../functions/web3/getContractMetadata.cjs`),a=require(`../../../functions/utils/getSignerFromContract.cjs`),o=require(`../../../functions/utils/resolve-sync.utils.cjs`),s=require(`../../../constants/reorg-depths.constants.cjs`),c=require(`../../BlockchainEvent/BlockchainEvent.cjs`);let l=require(`ethers`);var u=class{RETRY_MIN_PAGE_SIZE=100;MAX_RETRIES=20;_chainId;contract;_latestBlockNumber;_blockedUtxosContract;_initialBlockNumber;onEventsProcessed;eventProcessors=new Set;maxPageSize;_isReady=!1;isServer;inProgress;eventsFetchingMutex;constructor(e,t,n,r,i,a){this.contract=t,this._chainId=e,this._initialBlockNumber=n,this.maxPageSize=a,this.isServer=r,this.inProgress=!1,this.eventsFetchingMutex=i}get latestBlockNumber(){return this._latestBlockNumber??this._initialBlockNumber}get chainId(){return this._chainId}get isReady(){return this._isReady}syncFromAtMost(e){(this._latestBlockNumber===void 0||e<this._latestBlockNumber)&&(this._latestBlockNumber=e)}advanceLatestBlockNumber(e){e>(this._latestBlockNumber??this._initialBlockNumber)&&(this._latestBlockNumber=e)}intervalClear(){this._isReady=!1,this.eventProcessors=new Set,this.clear()}async init(){if(this._isReady)throw Error(`Already initialized`);this._isReady=!0,await this.retrieveEvents(this.latestBlockNumber+1),this.startUpdateListener()}requireReady(){if(!this._isReady)throw Error(`Not ready`)}async getEventsForSingleContract(e,t,n,r=0,i=`*`){try{return(await e.queryFilter(i,t,n)).filter(e=>e instanceof l.ethers.EventLog)}catch(a){if(r<this.MAX_RETRIES&&n-t>this.RETRY_MIN_PAGE_SIZE){let a=Math.floor((t+n)/2),o=await this.getEventsForSingleContract(e,t,a,r+1,i),s=await this.getEventsForSingleContract(e,a+1,n,r+1,i);return[...o,...s]}throw a}}get blockedUtxosContract(){if(this._blockedUtxosContract===void 0){let n=e.getNonLocalhostChainId(this._chainId);this._blockedUtxosContract=r.getDepositOnChainUtxosAddress(n)?i.getContractWithFetcherByChainId(n,t.ContractType.DepositOnChainUtxosContract):null}return this._blockedUtxosContract??void 0}addEventProcessorFunction(e){if(this._isReady)throw Error(`Can't add event processor after event emitter initialized`);this.eventProcessors.add(e)}async getEventsInRange(e,t){let n=[];return await o.resolveSync(o.getSequence(e,t,this.maxPageSize).map(({from:e,to:t})=>async()=>{let r=await this.getEventsForSingleContract(this.contract,e,t);n.push(...r);let i=this.blockedUtxosContract;i&&n.push(...await this.getEventsForSingleContract(i,e,t,0,`BlockedUtxosCreated`))})),n.map(e=>c.BlockchainEvent.fromEthers(e))}async getLastBlockNumberForEventRequest(){let e=await a.getProviderFromContract(this.contract).getBlockNumber();if(!this.isServer)return e;let{chainId:t}=await a.getProviderFromContract(this.contract).getNetwork();return Math.max(this.latestBlockNumber,e-s.blockReorgDepth[Number(t)]+1)}async retrieveEvents(e,t=!1){return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!t)return!1;this.inProgress=!0;let n=await this.getLastBlockNumberForEventRequest();if(n<e)return this.inProgress=!1,!1;let r=await this.getEventsInRange(e,n);return await this.processEvents(r,n),this._latestBlockNumber=n,this.inProgress=!1,!0}catch(e){return n.Logger.error(`retrieveEvents error`,e),this.inProgress=!1,!1}})}async processEvents(e,t){let n=(await Promise.all([...this.eventProcessors].map(n=>n(e,t)))).reduce((e,t)=>e+t,0);this.onEventsProcessed?.(n)}};exports.BlockchainEventEmitter=u;
@@ -8,6 +8,7 @@ export declare abstract class BlockchainEventEmitter {
8
8
  private readonly _chainId;
9
9
  readonly contract: ethers.Contract;
10
10
  private _latestBlockNumber;
11
+ private _blockedUtxosContract;
11
12
  private _initialBlockNumber;
12
13
  onEventsProcessed?: (acceptedEventCount: number) => void;
13
14
  private eventProcessors;
@@ -26,6 +27,7 @@ export declare abstract class BlockchainEventEmitter {
26
27
  init(): Promise<void>;
27
28
  private requireReady;
28
29
  private getEventsForSingleContract;
30
+ private get blockedUtxosContract();
29
31
  addEventProcessorFunction(eventProcessorFunction: EventProcessorFunction): void;
30
32
  getEventsInRange(fromBlockNumber: number, toBlockNumber: number): Promise<BlockchainEvent[]>;
31
33
  getLastBlockNumberForEventRequest(): Promise<number>;