@hinkal/common 0.2.19 → 0.2.21

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 (281) hide show
  1. package/API/API.cjs +1 -1
  2. package/API/API.d.ts +6 -1
  3. package/API/API.mjs +48 -41
  4. package/API/enclaveCalls.cjs +1 -1
  5. package/API/enclaveCalls.mjs +5 -4
  6. package/API/index.d.ts +1 -0
  7. package/API/proxyAccountsCalls.cjs +1 -1
  8. package/API/proxyAccountsCalls.d.ts +7 -2
  9. package/API/proxyAccountsCalls.mjs +26 -20
  10. package/API/temporaryWalletCalls.cjs +1 -0
  11. package/API/temporaryWalletCalls.d.ts +13 -0
  12. package/API/temporaryWalletCalls.mjs +20 -0
  13. package/API/unspent-utxos-calls.cjs +1 -1
  14. package/API/unspent-utxos-calls.d.ts +1 -1
  15. package/API/unspent-utxos-calls.mjs +16 -14
  16. package/README.md +36 -13
  17. package/constants/chains.constants.cjs +1 -1
  18. package/constants/chains.constants.d.ts +1 -1
  19. package/constants/chains.constants.mjs +69 -51
  20. package/constants/deploy-data/deploy-data-solana.json.cjs +1 -1
  21. package/constants/deploy-data/deploy-data-solana.json.mjs +28 -2
  22. package/constants/kyc.constants.cjs +1 -1
  23. package/constants/kyc.constants.mjs +39 -40
  24. package/constants/mediaUrls.constants.cjs +1 -1
  25. package/constants/mediaUrls.constants.d.ts +1 -0
  26. package/constants/mediaUrls.constants.mjs +2 -1
  27. package/constants/server.constants.cjs +1 -1
  28. package/constants/server.constants.d.ts +6 -1
  29. package/constants/server.constants.mjs +37 -32
  30. package/constants/token-data/polygonRegistry.json.cjs +1 -1
  31. package/constants/token-data/polygonRegistry.json.mjs +4 -4
  32. package/constants/token-data/polygonRegistryFixed.json.cjs +1 -1
  33. package/constants/token-data/polygonRegistryFixed.json.mjs +4 -4
  34. package/data-structures/AccountActions/AccountActions.cjs +1 -0
  35. package/data-structures/AccountActions/AccountActions.d.ts +18 -0
  36. package/data-structures/AccountActions/AccountActions.mjs +78 -0
  37. package/data-structures/AccountActions/index.d.ts +1 -0
  38. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.cjs +1 -1
  39. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.mjs +68 -71
  40. package/data-structures/BlockchainEvent/BlockchainEvent.cjs +1 -0
  41. package/data-structures/BlockchainEvent/BlockchainEvent.d.ts +14 -0
  42. package/data-structures/BlockchainEvent/BlockchainEvent.mjs +41 -0
  43. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  44. package/data-structures/Hinkal/Hinkal.d.ts +14 -8
  45. package/data-structures/Hinkal/Hinkal.mjs +215 -179
  46. package/data-structures/Hinkal/IHinkal.d.ts +9 -6
  47. package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  48. package/data-structures/Hinkal/handleAutoDepositBack.mjs +47 -48
  49. package/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  50. package/data-structures/Hinkal/hinkalActionReceive.mjs +25 -22
  51. package/data-structures/Hinkal/hinkalCheckTokenRegistry.cjs +1 -1
  52. package/data-structures/Hinkal/hinkalCheckTokenRegistry.mjs +12 -12
  53. package/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  54. package/data-structures/Hinkal/hinkalDeposit.mjs +63 -63
  55. package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  56. package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +60 -147
  57. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -0
  58. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.d.ts +4 -0
  59. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +103 -0
  60. package/data-structures/Hinkal/hinkalDepostAndBridge.cjs +1 -0
  61. package/data-structures/Hinkal/hinkalDepostAndBridge.d.ts +4 -0
  62. package/data-structures/Hinkal/hinkalDepostAndBridge.mjs +214 -0
  63. package/data-structures/Hinkal/hinkalGetZkMeProvider.cjs +1 -1
  64. package/data-structures/Hinkal/hinkalGetZkMeProvider.mjs +4 -4
  65. package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  66. package/data-structures/Hinkal/hinkalPrivateWallet.d.ts +2 -2
  67. package/data-structures/Hinkal/hinkalPrivateWallet.mjs +103 -99
  68. package/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  69. package/data-structures/Hinkal/hinkalProxySwap.mjs +44 -41
  70. package/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  71. package/data-structures/Hinkal/hinkalProxyToPrivate.mjs +31 -28
  72. package/data-structures/Hinkal/hinkalSignSubAccount.cjs +1 -1
  73. package/data-structures/Hinkal/hinkalSignSubAccount.mjs +16 -13
  74. package/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  75. package/data-structures/Hinkal/hinkalSolanaDeposit.mjs +34 -34
  76. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  77. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +67 -65
  78. package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  79. package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +35 -32
  80. package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  81. package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +59 -56
  82. package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  83. package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +35 -32
  84. package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  85. package/data-structures/Hinkal/hinkalSolanaSwap.mjs +10 -10
  86. package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  87. package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +25 -25
  88. package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  89. package/data-structures/Hinkal/hinkalSwap.mjs +34 -30
  90. package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  91. package/data-structures/Hinkal/hinkalTransfer.mjs +43 -39
  92. package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  93. package/data-structures/Hinkal/hinkalWithdraw.mjs +47 -43
  94. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  95. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +50 -46
  96. package/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  97. package/data-structures/Hinkal/resetMerkleTrees.mjs +36 -34
  98. package/data-structures/IndexedDB/activity-db.cjs +1 -1
  99. package/data-structures/IndexedDB/activity-db.d.ts +1 -0
  100. package/data-structures/IndexedDB/activity-db.mjs +86 -70
  101. package/data-structures/IndexedDB/balances-db.cjs +1 -1
  102. package/data-structures/IndexedDB/balances-db.mjs +33 -30
  103. package/data-structures/IndexedDB/contact-db.cjs +1 -1
  104. package/data-structures/IndexedDB/contact-db.mjs +9 -6
  105. package/data-structures/PublicBalance/PublicBalanceWatcher.cjs +1 -0
  106. package/data-structures/PublicBalance/PublicBalanceWatcher.d.ts +20 -0
  107. package/data-structures/PublicBalance/PublicBalanceWatcher.mjs +124 -0
  108. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.cjs +1 -0
  109. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.d.ts +15 -0
  110. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.mjs +64 -0
  111. package/data-structures/PublicBalance/index.d.ts +2 -0
  112. package/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
  113. package/data-structures/TokenDBs/EventsPublicTokensDB.mjs +77 -78
  114. package/data-structures/crypto-keys/keys.cjs +1 -1
  115. package/data-structures/crypto-keys/keys.d.ts +0 -11
  116. package/data-structures/crypto-keys/keys.mjs +47 -107
  117. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.cjs +1 -1
  118. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.d.ts +3 -2
  119. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.mjs +9 -9
  120. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.cjs +1 -1
  121. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.d.ts +3 -2
  122. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.mjs +5 -5
  123. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.cjs +1 -1
  124. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.d.ts +3 -2
  125. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.mjs +6 -6
  126. package/data-structures/event-service/evm/AbstractEventService.cjs +1 -1
  127. package/data-structures/event-service/evm/AbstractEventService.d.ts +3 -2
  128. package/data-structures/event-service/evm/AbstractEventService.mjs +16 -19
  129. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.cjs +1 -1
  130. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.d.ts +3 -3
  131. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.mjs +6 -5
  132. package/data-structures/event-service/evm/AbstractSnapshotService.d.ts +1 -1
  133. package/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  134. package/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +7 -4
  135. package/data-structures/event-service/evm/BlockchainEventEmitter.mjs +35 -34
  136. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.cjs +1 -0
  137. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.d.ts +11 -0
  138. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.mjs +21 -0
  139. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.cjs +1 -0
  140. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.d.ts +6 -0
  141. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.mjs +16 -0
  142. package/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -0
  143. package/data-structures/event-service/helpers/ClientEventHelper.d.ts +11 -0
  144. package/data-structures/event-service/helpers/ClientEventHelper.mjs +26 -0
  145. package/data-structures/event-service/helpers/PollingEventHelper.cjs +1 -0
  146. package/data-structures/event-service/helpers/PollingEventHelper.d.ts +5 -0
  147. package/data-structures/event-service/helpers/PollingEventHelper.mjs +14 -0
  148. package/data-structures/event-service/index.d.ts +4 -0
  149. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.cjs +1 -1
  150. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.d.ts +3 -2
  151. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.mjs +6 -6
  152. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs +1 -1
  153. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.d.ts +4 -3
  154. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.mjs +8 -8
  155. package/data-structures/event-service/solana/AbstractSolanaEventService.cjs +1 -1
  156. package/data-structures/event-service/solana/AbstractSolanaEventService.d.ts +3 -10
  157. package/data-structures/event-service/solana/AbstractSolanaEventService.mjs +5 -5
  158. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.cjs +1 -1
  159. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.d.ts +3 -2
  160. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.mjs +1 -1
  161. package/data-structures/event-service/solana/AbstractSolanaSnapshotService.d.ts +1 -1
  162. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.cjs +1 -0
  163. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.d.ts +11 -0
  164. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.mjs +22 -0
  165. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.cjs +1 -0
  166. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.d.ts +6 -0
  167. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.mjs +16 -0
  168. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.cjs +1 -1
  169. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.d.ts +8 -14
  170. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.mjs +68 -67
  171. package/data-structures/index.d.ts +3 -0
  172. package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.cjs +1 -1
  173. package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.mjs +5 -2
  174. package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.cjs +1 -1
  175. package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.mjs +5 -2
  176. package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs +1 -1
  177. package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.mjs +5 -2
  178. package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs +1 -1
  179. package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.mjs +5 -2
  180. package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.cjs +1 -1
  181. package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.mjs +5 -2
  182. package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs +1 -1
  183. package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.mjs +5 -2
  184. package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs +1 -1
  185. package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.mjs +5 -2
  186. package/data-structures/utxo/Utxo.cjs +1 -1
  187. package/data-structures/utxo/Utxo.d.ts +1 -0
  188. package/data-structures/utxo/Utxo.mjs +18 -4
  189. package/error-handling/error-codes.constants.cjs +1 -1
  190. package/error-handling/error-codes.constants.mjs +2 -2
  191. package/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
  192. package/functions/pre-transaction/getSolanaCalldataHash.mjs +22 -22
  193. package/functions/pre-transaction/sendV0Transaction.cjs +1 -1
  194. package/functions/pre-transaction/sendV0Transaction.mjs +53 -50
  195. package/functions/pre-transaction/solana.cjs +1 -1
  196. package/functions/pre-transaction/solana.mjs +93 -93
  197. package/functions/private-wallet/emporium.helpers.cjs +1 -1
  198. package/functions/private-wallet/emporium.helpers.d.ts +3 -2
  199. package/functions/private-wallet/emporium.helpers.mjs +118 -93
  200. package/functions/snarkjs/constructEmporiumProof.cjs +1 -1
  201. package/functions/snarkjs/constructEmporiumProof.d.ts +1 -2
  202. package/functions/snarkjs/constructEmporiumProof.mjs +89 -89
  203. package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  204. package/functions/snarkjs/constructSolanaZkProof.mjs +6 -2
  205. package/functions/utils/bytes32.utils.cjs +1 -1
  206. package/functions/utils/bytes32.utils.mjs +8 -7
  207. package/functions/utils/create-provider.cjs +1 -1
  208. package/functions/utils/create-provider.d.ts +1 -1
  209. package/functions/utils/create-provider.mjs +13 -9
  210. package/functions/utils/index.d.ts +0 -1
  211. package/functions/utils/prepareHinkal.cjs +1 -1
  212. package/functions/utils/prepareHinkal.d.ts +6 -7
  213. package/functions/utils/prepareHinkal.mjs +45 -53
  214. package/functions/utils/publicBalance.utils.cjs +1 -1
  215. package/functions/utils/publicBalance.utils.mjs +49 -54
  216. package/functions/utils/socket.utils.cjs +1 -0
  217. package/functions/utils/socket.utils.d.ts +1 -0
  218. package/functions/utils/socket.utils.mjs +12 -0
  219. package/functions/utils/string.utils.cjs +1 -1
  220. package/functions/utils/string.utils.d.ts +1 -0
  221. package/functions/utils/string.utils.mjs +18 -14
  222. package/functions/utils/walletBalances.utils.cjs +1 -1
  223. package/functions/utils/walletBalances.utils.d.ts +1 -1
  224. package/functions/utils/walletBalances.utils.mjs +4 -4
  225. package/functions/web3/crypto.cjs +1 -0
  226. package/functions/web3/crypto.d.ts +1 -0
  227. package/functions/web3/crypto.mjs +7 -0
  228. package/functions/web3/events/getApprovedBalance.cjs +1 -1
  229. package/functions/web3/events/getApprovedBalance.mjs +14 -14
  230. package/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  231. package/functions/web3/events/getInputUtxoAndBalance.mjs +61 -59
  232. package/functions/web3/events/getTransactionLogEvents.cjs +1 -1
  233. package/functions/web3/events/getTransactionLogEvents.mjs +32 -32
  234. package/functions/web3/fetchSolanaMerkleTreeRootHash.cjs +1 -1
  235. package/functions/web3/fetchSolanaMerkleTreeRootHash.mjs +6 -3
  236. package/functions/web3/functionCalls/approveToken.cjs +1 -1
  237. package/functions/web3/functionCalls/approveToken.mjs +17 -17
  238. package/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  239. package/functions/web3/functionCalls/transactCallDirect.mjs +16 -16
  240. package/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  241. package/functions/web3/functionCalls/transactCallRelayer.mjs +13 -11
  242. package/functions/web3/getContractMetadata.cjs +1 -1
  243. package/functions/web3/getContractMetadata.mjs +17 -22
  244. package/functions/web3/getTokenHolder.cjs +1 -1
  245. package/functions/web3/getTokenHolder.mjs +20 -20
  246. package/functions/web3/index.d.ts +1 -0
  247. package/index.cjs +1 -1
  248. package/index.mjs +913 -890
  249. package/package.json +3 -2
  250. package/providers/EthersProviderAdapter.cjs +1 -1
  251. package/providers/EthersProviderAdapter.mjs +2 -5
  252. package/providers/prepareEthersHinkal.cjs +1 -1
  253. package/providers/prepareEthersHinkal.mjs +11 -4
  254. package/providers/prepareWagmiHinkal.cjs +1 -1
  255. package/providers/prepareWagmiHinkal.mjs +11 -4
  256. package/types/activities.types.d.ts +2 -0
  257. package/types/bridging-tx.types.d.ts +17 -0
  258. package/types/cache.types.cjs +1 -1
  259. package/types/cache.types.d.ts +5 -1
  260. package/types/cache.types.mjs +1 -1
  261. package/types/ethereum-network.types.d.ts +1 -0
  262. package/types/events.types.cjs +1 -0
  263. package/types/events.types.d.ts +9 -0
  264. package/types/events.types.mjs +5 -0
  265. package/types/index.d.ts +2 -0
  266. package/types/proxy.types.d.ts +11 -4
  267. package/types/sandbox.types.d.ts +2 -0
  268. package/types/solana.types.d.ts +8 -0
  269. package/types/token.types.d.ts +5 -0
  270. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.cjs +1 -1
  271. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.mjs +1 -1
  272. package/webworker/utxoWorker/utxoWorkerLauncher.cjs +1 -1
  273. package/webworker/utxoWorker/utxoWorkerLauncher.mjs +1 -1
  274. package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +1 -1
  275. package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +1 -1
  276. package/functions/kyc/authentoHelper.cjs +0 -1
  277. package/functions/kyc/authentoHelper.d.ts +0 -12
  278. package/functions/kyc/authentoHelper.mjs +0 -30
  279. package/functions/utils/get-hinkal-approvals.cjs +0 -1
  280. package/functions/utils/get-hinkal-approvals.d.ts +0 -3
  281. package/functions/utils/get-hinkal-approvals.mjs +0 -38
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../constants/protocol.constants.cjs"),a=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const t=require("../../../functions/utils/amounts.utils.cjs"),o=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSnapshotService.cjs"),i=require("../../../functions/utils/merkleTree.utils.cjs");class u extends l.AbstractSnapshotService{constructor(e){super(e,"NewAccessKeyAdded")}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),senderAddresses:Array.from(e.payload.senderAddresses),latestBlockNumber:e.latestBlockNumber,senderAddressIndexMap:Array.from(e.payload.senderAddressIndexMap).map(([s,r])=>({address:s,index:r}))}}deserializeSnapshot(e){let s,r;return e.latestBlockNumber&&e.merkleTree?s=i.contructMerkleTreeFromSerialized(e.merkleTree):s=o.MerkleTree.create(a.poseidonFunction,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:n})=>[d,n])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.accessKey,e.index),this._senderAddressIndexMap.set(e.senderAddress,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.senderAddress)??0)),this._senderAddresses.includes(e.senderAddress)||this._senderAddresses.push(e.senderAddress),e.accessKey===0n&&e.senderAddress===c.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const{accessKey:s,index:r,senderAddress:d}=e;return{accessKey:t.toBigInt(s),index:t.toBigInt(r),senderAddress:d}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:e,senderAddresses:s,senderAddressIndexMap:r}}){this._merkleTree=e,this._senderAddresses=s,this._senderAddressIndexMap=r}}exports.AbstractAccessTokenSnapshotService=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../constants/protocol.constants.cjs"),a=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const t=require("../../../functions/utils/amounts.utils.cjs"),o=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSnapshotService.cjs"),A=require("../../../functions/utils/merkleTree.utils.cjs");class i extends l.AbstractSnapshotService{constructor(e){super(e,"NewAccessKeyAdded")}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),senderAddresses:Array.from(e.payload.senderAddresses),latestBlockNumber:e.latestBlockNumber,senderAddressIndexMap:Array.from(e.payload.senderAddressIndexMap).map(([s,r])=>({address:s,index:r}))}}deserializeSnapshot(e){let s,r;return e.latestBlockNumber&&e.merkleTree?s=A.contructMerkleTreeFromSerialized(e.merkleTree):s=o.MerkleTree.create(a.poseidonFunction,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:n})=>[d,n])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.accessKey,e.index),this._senderAddressIndexMap.set(e.senderAddress,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.senderAddress)??0)),this._senderAddresses.includes(e.senderAddress)||this._senderAddresses.push(e.senderAddress),e.accessKey===0n&&e.senderAddress===c.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const s=e.getArg("accessKey"),r=e.getArg("index"),d=e.getArg("senderAddress");return{accessKey:t.toBigInt(s),index:t.toBigInt(r),senderAddress:d}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:e,senderAddresses:s,senderAddressIndexMap:r}}){this._merkleTree=e,this._senderAddresses=s,this._senderAddressIndexMap=r}}exports.AbstractAccessTokenSnapshotService=i;
@@ -2,6 +2,7 @@ import { MerkleTree, MerkleTreeJson } from '../../merkle-tree';
2
2
  import { AccessTokenEvent } from '../../../types';
3
3
  import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
4
4
  import { BlockchainEventEmitter } from './BlockchainEventEmitter';
5
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
5
6
  export type SenderAddressIndexMapJson = {
6
7
  address: string;
7
8
  index: number;
@@ -17,7 +18,7 @@ export type AccessTokenSerializedSnapshot = {
17
18
  senderAddresses?: string[];
18
19
  senderAddressIndexMap?: SenderAddressIndexMapJson;
19
20
  };
20
- export declare abstract class AbstractAccessTokenSnapshotService extends AbstractSnapshotService<AccessTokenEvent<bigint>, AccessTokenEvent, AccessTokenSnapshotPayload, AccessTokenSerializedSnapshot> {
21
+ export declare abstract class AbstractAccessTokenSnapshotService extends AbstractSnapshotService<AccessTokenEvent<bigint>, AccessTokenSnapshotPayload, AccessTokenSerializedSnapshot> {
21
22
  constructor(accessTokenEventFetcher: BlockchainEventEmitter);
22
23
  private _merkleTree;
23
24
  private _senderAddresses;
@@ -28,7 +29,7 @@ export declare abstract class AbstractAccessTokenSnapshotService extends Abstrac
28
29
  protected serializeSnapshot(snapshot: Snapshot<AccessTokenSnapshotPayload>): AccessTokenSerializedSnapshot;
29
30
  protected deserializeSnapshot(serializedSnapshot: AccessTokenSerializedSnapshot): Snapshot<AccessTokenSnapshotPayload>;
30
31
  protected acceptEvent(event: AccessTokenEvent<bigint>, _blockNumber: number): boolean;
31
- protected mapEvent(event: AccessTokenEvent): AccessTokenEvent<bigint>;
32
+ protected mapEvent(event: BlockchainEvent): AccessTokenEvent<bigint>;
32
33
  protected getSnapshotPayload(): AccessTokenSnapshotPayload;
33
34
  protected populateSnapshot({ payload: { merkleTree, senderAddresses, senderAddressIndexMap }, }: Snapshot<AccessTokenSnapshotPayload>): void;
34
35
  }
@@ -1,5 +1,5 @@
1
- import { zeroAddress as m } from "../../../constants/protocol.constants.mjs";
2
- import { poseidonFunction as o } from "../../../crypto/poseidon.mjs";
1
+ import { zeroAddress as o } from "../../../constants/protocol.constants.mjs";
2
+ import { poseidonFunction as m } from "../../../crypto/poseidon.mjs";
3
3
  import "circomlibjs-hinkal-fork";
4
4
  import "libsodium-wrappers";
5
5
  import "process";
@@ -8,9 +8,9 @@ import { toBigInt as t } from "../../../functions/utils/amounts.utils.mjs";
8
8
  import { MerkleTree as a } from "../../merkle-tree/MerkleTree.mjs";
9
9
  import "ethers";
10
10
  import "../../../error-handling/error-codes.constants.mjs";
11
- import { AbstractSnapshotService as l } from "./AbstractSnapshotService.mjs";
12
- import { contructMerkleTreeFromSerialized as A } from "../../../functions/utils/merkleTree.utils.mjs";
13
- class b extends l {
11
+ import { AbstractSnapshotService as A } from "./AbstractSnapshotService.mjs";
12
+ import { contructMerkleTreeFromSerialized as c } from "../../../functions/utils/merkleTree.utils.mjs";
13
+ class g extends A {
14
14
  constructor(e) {
15
15
  super(e, "NewAccessKeyAdded");
16
16
  }
@@ -39,7 +39,7 @@ class b extends l {
39
39
  }
40
40
  deserializeSnapshot(e) {
41
41
  let s, r;
42
- return e.latestBlockNumber && e.merkleTree ? s = A(e.merkleTree) : s = a.create(o, 0n), e.latestBlockNumber && e.senderAddressIndexMap ? r = new Map(
42
+ return e.latestBlockNumber && e.merkleTree ? s = c(e.merkleTree) : s = a.create(m, 0n), e.latestBlockNumber && e.senderAddressIndexMap ? r = new Map(
43
43
  e.senderAddressIndexMap.map(({ address: d, index: n }) => [d, n])
44
44
  ) : r = /* @__PURE__ */ new Map(), {
45
45
  latestBlockNumber: e.latestBlockNumber ?? 0,
@@ -55,13 +55,13 @@ class b extends l {
55
55
  return this._merkleTree.insert(e.accessKey, e.index), this._senderAddressIndexMap.set(
56
56
  e.senderAddress,
57
57
  Math.max(Number(e.index), this._senderAddressIndexMap.get(e.senderAddress) ?? 0)
58
- ), this._senderAddresses.includes(e.senderAddress) || this._senderAddresses.push(e.senderAddress), e.accessKey === 0n && e.senderAddress === m && this._merkleTree.remove(e.index), !0;
58
+ ), this._senderAddresses.includes(e.senderAddress) || this._senderAddresses.push(e.senderAddress), e.accessKey === 0n && e.senderAddress === o && this._merkleTree.remove(e.index), !0;
59
59
  } catch (r) {
60
60
  return console.error(r), !1;
61
61
  }
62
62
  }
63
63
  mapEvent(e) {
64
- const { accessKey: s, index: r, senderAddress: d } = e;
64
+ const s = e.getArg("accessKey"), r = e.getArg("index"), d = e.getArg("senderAddress");
65
65
  return {
66
66
  accessKey: t(s),
67
67
  index: t(r),
@@ -82,5 +82,5 @@ class b extends l {
82
82
  }
83
83
  }
84
84
  export {
85
- b as AbstractAccessTokenSnapshotService
85
+ g as AbstractAccessTokenSnapshotService
86
86
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./AbstractSnapshotService.cjs"),v=require("../../../functions/utils/amounts.utils.cjs"),u=require("../../../functions/utils/caseInsensitive.utils.cjs");class A extends c.AbstractSnapshotService{constructor(e){super(e,"NewApprovedUtxo")}_approvals=new Map;events=new Set;get approvals(){return this._approvals}getEventKey(e,t,s){return typeof e!="bigint"||typeof s!="string"||typeof t!="string"?null:`${s}-${t}-${e}`}serializeSnapshot(e){const t=Object.fromEntries(e.payload.approvals),s=Object.entries(t).map(([p,i])=>{const l=i.map(n=>({amount:n.amount.toString(),tokenAddress:n.tokenAddress,inHinkalAddress:n.inHinkalAddress.toString()}));return[p,l]}),r=Object.fromEntries(s);return{latestBlockNumber:e.latestBlockNumber,approvals:r,events:[...this.events]}}deserializeSnapshot(e){const t=e.approvals,s=Object.entries(t).map(([p,i])=>{const l=i.map(n=>({amount:BigInt(n.amount),tokenAddress:n.tokenAddress,inHinkalAddress:BigInt(n.inHinkalAddress)}));return[p,l]}),r=new Map(s);return{latestBlockNumber:e.latestBlockNumber??0,payload:{approvals:r,events:new Set(e.events)}}}getSnapshotPayload(){return{approvals:this._approvals,events:this.events}}populateSnapshot({payload:{approvals:e,events:t}}){this._approvals=e,this.events=t}mapEvent(e){const{approveTo:t,tokenAddress:s,amount:r,inHinkalAddress:p}=e;return{approveTo:t,tokenAddress:s,amount:v.toBigInt(r),inHinkalAddress:v.toBigInt(p)}}acceptEvent(e,t,s){const r=this.getEventKey(e.inHinkalAddress,e.tokenAddress,s);if(r&&!this.events.has(r)){const{amount:p,tokenAddress:i,inHinkalAddress:l}=e,n={amount:p,tokenAddress:i,inHinkalAddress:l};let a=this.approvals.get(e.approveTo)||[],d=!1;for(let o=0;o<a.length;o+=1)u.caseInsensitiveEqual(i,a[o].tokenAddress)&&l===a[o].inHinkalAddress&&(a[o].amount+=p,d=!0);if(a=a.filter(o=>o.amount!==0n),d&&a.length===0)this.approvals.delete(e.approveTo);else{const o=d?a:[...a,n];this.approvals.set(e.approveTo,o)}return s&&this.events.add(r),!0}return!1}}exports.AbstractApprovalsSnapshotService=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("./AbstractSnapshotService.cjs"),c=require("../../../functions/utils/amounts.utils.cjs"),u=require("../../../functions/utils/caseInsensitive.utils.cjs");class A extends v.AbstractSnapshotService{constructor(e){super(e,"NewApprovedUtxo")}_approvals=new Map;events=new Set;get approvals(){return this._approvals}getEventKey(e,t,s){return typeof e!="bigint"||typeof s!="string"||typeof t!="string"?null:`${s}-${t}-${e}`}serializeSnapshot(e){const t=Object.fromEntries(e.payload.approvals),s=Object.entries(t).map(([p,i])=>{const l=i.map(n=>({amount:n.amount.toString(),tokenAddress:n.tokenAddress,inHinkalAddress:n.inHinkalAddress.toString()}));return[p,l]}),r=Object.fromEntries(s);return{latestBlockNumber:e.latestBlockNumber,approvals:r,events:[...this.events]}}deserializeSnapshot(e){const t=e.approvals,s=Object.entries(t).map(([p,i])=>{const l=i.map(n=>({amount:BigInt(n.amount),tokenAddress:n.tokenAddress,inHinkalAddress:BigInt(n.inHinkalAddress)}));return[p,l]}),r=new Map(s);return{latestBlockNumber:e.latestBlockNumber??0,payload:{approvals:r,events:new Set(e.events)}}}getSnapshotPayload(){return{approvals:this._approvals,events:this.events}}populateSnapshot({payload:{approvals:e,events:t}}){this._approvals=e,this.events=t}mapEvent(e){const t=e.getArg("approveTo"),s=e.getArg("tokenAddress"),r=e.getArg("amount"),p=e.getArg("inHinkalAddress");return{approveTo:t,tokenAddress:s,amount:c.toBigInt(r),inHinkalAddress:c.toBigInt(p)}}acceptEvent(e,t,s){const r=this.getEventKey(e.inHinkalAddress,e.tokenAddress,s);if(r&&!this.events.has(r)){const{amount:p,tokenAddress:i,inHinkalAddress:l}=e,n={amount:p,tokenAddress:i,inHinkalAddress:l};let a=this.approvals.get(e.approveTo)||[],d=!1;for(let o=0;o<a.length;o+=1)u.caseInsensitiveEqual(i,a[o].tokenAddress)&&l===a[o].inHinkalAddress&&(a[o].amount+=p,d=!0);if(a=a.filter(o=>o.amount!==0n),d&&a.length===0)this.approvals.delete(e.approveTo);else{const o=d?a:[...a,n];this.approvals.set(e.approveTo,o)}return s&&this.events.add(r),!0}return!1}}exports.AbstractApprovalsSnapshotService=A;
@@ -2,6 +2,7 @@ import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
2
2
  import { NewApprovedUtxoEvent } from '../../../types/commitments.types';
3
3
  import { BlockchainEventEmitter } from './BlockchainEventEmitter';
4
4
  import { ApprovedUtxo } from '../../../types/hinkal.types';
5
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
5
6
  export type ApprovalsSnapshotPayload = {
6
7
  readonly approvals: Map<string, ApprovedUtxo[]>;
7
8
  readonly events: Set<string>;
@@ -11,7 +12,7 @@ export type ApprovalsSerializedSnapshot = {
11
12
  approvals: Record<string, ApprovedUtxo<string>[]>;
12
13
  events: string[];
13
14
  };
14
- export declare abstract class AbstractApprovalsSnapshotService extends AbstractSnapshotService<NewApprovedUtxoEvent, NewApprovedUtxoEvent<string>, ApprovalsSnapshotPayload, ApprovalsSerializedSnapshot> {
15
+ export declare abstract class AbstractApprovalsSnapshotService extends AbstractSnapshotService<NewApprovedUtxoEvent, ApprovalsSnapshotPayload, ApprovalsSerializedSnapshot> {
15
16
  constructor(hinkalEventEmitter: BlockchainEventEmitter);
16
17
  private _approvals;
17
18
  events: Set<string>;
@@ -24,6 +25,6 @@ export declare abstract class AbstractApprovalsSnapshotService extends AbstractS
24
25
  events: Set<string>;
25
26
  };
26
27
  protected populateSnapshot({ payload: { approvals, events } }: Snapshot<ApprovalsSnapshotPayload>): void;
27
- protected mapEvent(event: NewApprovedUtxoEvent<string>): NewApprovedUtxoEvent;
28
+ protected mapEvent(event: BlockchainEvent): NewApprovedUtxoEvent;
28
29
  protected acceptEvent(event: NewApprovedUtxoEvent, _blockNumber: number, txHash: string): boolean;
29
30
  }
@@ -1,7 +1,7 @@
1
1
  import { AbstractSnapshotService as c } from "./AbstractSnapshotService.mjs";
2
2
  import { toBigInt as v } from "../../../functions/utils/amounts.utils.mjs";
3
- import { caseInsensitiveEqual as u } from "../../../functions/utils/caseInsensitive.utils.mjs";
4
- class g extends c {
3
+ import { caseInsensitiveEqual as A } from "../../../functions/utils/caseInsensitive.utils.mjs";
4
+ class f extends c {
5
5
  constructor(e) {
6
6
  super(e, "NewApprovedUtxo");
7
7
  }
@@ -57,7 +57,7 @@ class g extends c {
57
57
  this._approvals = e, this.events = t;
58
58
  }
59
59
  mapEvent(e) {
60
- const { approveTo: t, tokenAddress: s, amount: r, inHinkalAddress: p } = e;
60
+ const t = e.getArg("approveTo"), s = e.getArg("tokenAddress"), r = e.getArg("amount"), p = e.getArg("inHinkalAddress");
61
61
  return {
62
62
  approveTo: t,
63
63
  tokenAddress: s,
@@ -75,7 +75,7 @@ class g extends c {
75
75
  };
76
76
  let a = this.approvals.get(e.approveTo) || [], d = !1;
77
77
  for (let o = 0; o < a.length; o += 1)
78
- u(i, a[o].tokenAddress) && l === a[o].inHinkalAddress && (a[o].amount += p, d = !0);
78
+ A(i, a[o].tokenAddress) && l === a[o].inHinkalAddress && (a[o].amount += p, d = !0);
79
79
  if (a = a.filter((o) => o.amount !== 0n), d && a.length === 0)
80
80
  this.approvals.delete(e.approveTo);
81
81
  else {
@@ -88,5 +88,5 @@ class g extends c {
88
88
  }
89
89
  }
90
90
  export {
91
- g as AbstractApprovalsSnapshotService
91
+ f as AbstractApprovalsSnapshotService
92
92
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const l=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const u=require("../../../functions/utils/amounts.utils.cjs"),o=require("./AbstractSnapshotService.cjs"),p=require("../../../functions/utils/merkleTree.utils.cjs");class a extends o.AbstractSnapshotService{constructor(e){super(e,"NewCommitment")}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),latestBlockNumber:e.latestBlockNumber,encryptedOutputs:e.payload.encryptedOutputs.map(t=>({value:t.value,isPositive:String(t.isPositive),isBlocked:t.isBlocked??!1}))}}deserializeSnapshot(e){let t;e.latestBlockNumber&&e.merkleTree?t=p.contructMerkleTreeFromSerialized(e.merkleTree):t=l.MerkleTree.create(c.poseidonFunction,0n);const s=e.encryptedOutputs?.map(r=>({value:r.value,isPositive:JSON.parse(r.isPositive),isBlocked:r.isBlocked??!1}));return{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:t,encryptedOutputs:s||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:e,encryptedOutputs:t}}){this._merkleTree=e,this._encryptedOutputs=t}mapEvent(e){const{commitment:t,index:s,encryptedOutput:r}=e;return{commitment:u.toBigInt(t),index:u.toBigInt(s),encryptedOutput:r}}acceptEvent(e,t,s,r){if(!this.encryptedOutputs.map(i=>i.value).includes(e.encryptedOutput)){if(!this._merkleTree.insert(e.commitment,e.index>=0?e.index:-1n*e.index))return!1;const n={value:e.encryptedOutput,isPositive:e.index>=0n,isBlocked:r??!1};return this._encryptedOutputs.push(n),!0}return!1}}exports.AbstractCommitmentsSnapshotService=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const l=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const u=require("../../../functions/utils/amounts.utils.cjs"),o=require("./AbstractSnapshotService.cjs"),p=require("../../../functions/utils/merkleTree.utils.cjs");class m extends o.AbstractSnapshotService{constructor(e){super(e,"NewCommitment")}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),latestBlockNumber:e.latestBlockNumber,encryptedOutputs:e.payload.encryptedOutputs.map(t=>({value:t.value,isPositive:String(t.isPositive),isBlocked:t.isBlocked??!1}))}}deserializeSnapshot(e){let t;e.latestBlockNumber&&e.merkleTree?t=p.contructMerkleTreeFromSerialized(e.merkleTree):t=l.MerkleTree.create(n.poseidonFunction,0n);const s=e.encryptedOutputs?.map(r=>({value:r.value,isPositive:JSON.parse(r.isPositive),isBlocked:r.isBlocked??!1}));return{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:t,encryptedOutputs:s||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:e,encryptedOutputs:t}}){this._merkleTree=e,this._encryptedOutputs=t}mapEvent(e){const t=e.getArg("commitment"),s=e.getArg("index"),r=e.getArg("encryptedOutput");return{commitment:u.toBigInt(t),index:u.toBigInt(s),encryptedOutput:r}}acceptEvent(e,t,s,r){if(!this.encryptedOutputs.map(i=>i.value).includes(e.encryptedOutput)){if(!this._merkleTree.insert(e.commitment,e.index>=0?e.index:-1n*e.index))return!1;const c={value:e.encryptedOutput,isPositive:e.index>=0n,isBlocked:r??!1};return this._encryptedOutputs.push(c),!0}return!1}}exports.AbstractCommitmentsSnapshotService=m;
@@ -2,6 +2,7 @@ import { MerkleTree, MerkleTreeJson } from '../../merkle-tree';
2
2
  import { CommitmentEvent, EncryptedOutputWithSign } from '../../../types';
3
3
  import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
4
4
  import { BlockchainEventEmitter } from './BlockchainEventEmitter';
5
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
5
6
  export type CommitmentsSnapshotPayload = {
6
7
  readonly merkleTree: MerkleTree<bigint>;
7
8
  readonly encryptedOutputs: EncryptedOutputWithSign[];
@@ -11,7 +12,7 @@ export type CommitmentsSerializedSnapshot = {
11
12
  merkleTree?: MerkleTreeJson;
12
13
  encryptedOutputs?: EncryptedOutputWithSign<string>[];
13
14
  };
14
- export declare abstract class AbstractCommitmentsSnapshotService extends AbstractSnapshotService<CommitmentEvent<bigint>, CommitmentEvent, CommitmentsSnapshotPayload, CommitmentsSerializedSnapshot> {
15
+ export declare abstract class AbstractCommitmentsSnapshotService extends AbstractSnapshotService<CommitmentEvent<bigint>, CommitmentsSnapshotPayload, CommitmentsSerializedSnapshot> {
15
16
  constructor(hinkalEventEmitter: BlockchainEventEmitter);
16
17
  private _merkleTree;
17
18
  private _encryptedOutputs;
@@ -24,6 +25,6 @@ export declare abstract class AbstractCommitmentsSnapshotService extends Abstrac
24
25
  encryptedOutputs: EncryptedOutputWithSign<boolean>[];
25
26
  };
26
27
  protected populateSnapshot({ payload: { merkleTree, encryptedOutputs }, }: Snapshot<CommitmentsSnapshotPayload>): void;
27
- protected mapEvent(event: CommitmentEvent): CommitmentEvent<bigint>;
28
+ protected mapEvent(event: BlockchainEvent): CommitmentEvent<bigint>;
28
29
  protected acceptEvent(event: CommitmentEvent<bigint>, _blockNumber: number, _txHash?: string, isBlocked?: boolean): boolean;
29
30
  }
@@ -1,15 +1,15 @@
1
- import { poseidonFunction as m } from "../../../crypto/poseidon.mjs";
1
+ import { poseidonFunction as c } from "../../../crypto/poseidon.mjs";
2
2
  import "circomlibjs-hinkal-fork";
3
3
  import "libsodium-wrappers";
4
4
  import "process";
5
5
  import "buffer";
6
- import { MerkleTree as c } from "../../merkle-tree/MerkleTree.mjs";
6
+ import { MerkleTree as m } from "../../merkle-tree/MerkleTree.mjs";
7
7
  import "ethers";
8
8
  import "../../../error-handling/error-codes.constants.mjs";
9
9
  import { toBigInt as p } from "../../../functions/utils/amounts.utils.mjs";
10
10
  import { AbstractSnapshotService as o } from "./AbstractSnapshotService.mjs";
11
11
  import { contructMerkleTreeFromSerialized as n } from "../../../functions/utils/merkleTree.utils.mjs";
12
- class b extends o {
12
+ class x extends o {
13
13
  constructor(e) {
14
14
  super(e, "NewCommitment");
15
15
  }
@@ -34,7 +34,7 @@ class b extends o {
34
34
  }
35
35
  deserializeSnapshot(e) {
36
36
  let t;
37
- e.latestBlockNumber && e.merkleTree ? t = n(e.merkleTree) : t = c.create(m, 0n);
37
+ e.latestBlockNumber && e.merkleTree ? t = n(e.merkleTree) : t = m.create(c, 0n);
38
38
  const s = e.encryptedOutputs?.map((r) => ({
39
39
  value: r.value,
40
40
  isPositive: JSON.parse(r.isPositive),
@@ -60,7 +60,7 @@ class b extends o {
60
60
  this._merkleTree = e, this._encryptedOutputs = t;
61
61
  }
62
62
  mapEvent(e) {
63
- const { commitment: t, index: s, encryptedOutput: r } = e;
63
+ const t = e.getArg("commitment"), s = e.getArg("index"), r = e.getArg("encryptedOutput");
64
64
  return {
65
65
  commitment: p(t),
66
66
  index: p(s),
@@ -82,5 +82,5 @@ class b extends o {
82
82
  }
83
83
  }
84
84
  export {
85
- b as AbstractCommitmentsSnapshotService
85
+ x as AbstractCommitmentsSnapshotService
86
86
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../../../functions/utils/resolve-sync.utils.cjs");class v{blockchainEventEmitter;eventName;constructor(t,e){this.blockchainEventEmitter=t,this.eventName=e,t.addEventProcessorFunction(this.processEventsPage.bind(this))}get latestBlockNumber(){return this.blockchainEventEmitter.latestBlockNumber}get chainId(){return this.blockchainEventEmitter.chainId}intervalClear(){this.blockchainEventEmitter.intervalClear()}async processEventsPage(t){const e=new Set;t.forEach(({event:s,transactionHash:n})=>{s==="BlockedUtxosCreated"&&e.add(n)});const c=[];await l.resolveSync(t.map(s=>async()=>{if(s.event!==this.eventName)return;const{args:n,blockNumber:o,transactionHash:r}=s;if(!n)throw new Error("Wrong event structure");const a=this.mapEvent(n),h=e.has(r);await this.acceptEvent(a,o,r,h)&&c.push(a)}));const i=c.length;return await this.afterEventsAccepted(i),c.length}}exports.AbstractEventService=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../../../functions/utils/resolve-sync.utils.cjs");class h{blockchainEventEmitter;eventName;constructor(t,s){this.blockchainEventEmitter=t,this.eventName=s,t.addEventProcessorFunction(this.processEventsPage.bind(this))}get latestBlockNumber(){return this.blockchainEventEmitter.latestBlockNumber}get chainId(){return this.blockchainEventEmitter.chainId}intervalClear(){this.blockchainEventEmitter.intervalClear()}async processEventsPage(t){const s=new Set;t.forEach(({eventName:e,transactionHash:c})=>{e==="BlockedUtxosCreated"&&s.add(c)});const n=[];await l.resolveSync(t.map(e=>async()=>{if(e.eventName!==this.eventName)return;const{blockNumber:c,transactionHash:a}=e,r=this.mapEvent(e),o=s.has(a);await this.acceptEvent(r,c,a,o)&&n.push(r)}));const i=n.length;return await this.afterEventsAccepted(i),n.length}}exports.AbstractEventService=h;
@@ -1,5 +1,6 @@
1
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
1
2
  import { BlockchainEventEmitter } from './BlockchainEventEmitter';
2
- export declare abstract class AbstractEventService<EventType, SerializedEventType = unknown> {
3
+ export declare abstract class AbstractEventService<EventType> {
3
4
  protected blockchainEventEmitter: BlockchainEventEmitter;
4
5
  protected readonly eventName: string;
5
6
  protected constructor(blockchainEventEmitter: BlockchainEventEmitter, eventName: string);
@@ -8,6 +9,6 @@ export declare abstract class AbstractEventService<EventType, SerializedEventTyp
8
9
  intervalClear(): void;
9
10
  private processEventsPage;
10
11
  protected abstract acceptEvent(event: EventType, blockNumber: number, txHash?: string, isBlocked?: boolean): boolean | Promise<boolean>;
11
- protected abstract mapEvent(event: SerializedEventType): EventType;
12
+ protected abstract mapEvent(event: BlockchainEvent): EventType;
12
13
  protected abstract afterEventsAccepted(eventsCount: number): Promise<void>;
13
14
  }
@@ -1,9 +1,9 @@
1
- import { resolveSync as v } from "../../../functions/utils/resolve-sync.utils.mjs";
2
- class u {
1
+ import { resolveSync as h } from "../../../functions/utils/resolve-sync.utils.mjs";
2
+ class m {
3
3
  blockchainEventEmitter;
4
4
  eventName;
5
- constructor(t, e) {
6
- this.blockchainEventEmitter = t, this.eventName = e, t.addEventProcessorFunction(this.processEventsPage.bind(this));
5
+ constructor(t, s) {
6
+ this.blockchainEventEmitter = t, this.eventName = s, t.addEventProcessorFunction(this.processEventsPage.bind(this));
7
7
  }
8
8
  get latestBlockNumber() {
9
9
  return this.blockchainEventEmitter.latestBlockNumber;
@@ -15,26 +15,23 @@ class u {
15
15
  this.blockchainEventEmitter.intervalClear();
16
16
  }
17
17
  async processEventsPage(t) {
18
- const e = /* @__PURE__ */ new Set();
19
- t.forEach(({ event: s, transactionHash: n }) => {
20
- s === "BlockedUtxosCreated" && e.add(n);
18
+ const s = /* @__PURE__ */ new Set();
19
+ t.forEach(({ eventName: e, transactionHash: c }) => {
20
+ e === "BlockedUtxosCreated" && s.add(c);
21
21
  });
22
- const c = [];
23
- await v(
24
- t.map((s) => async () => {
25
- if (s.event !== this.eventName)
22
+ const n = [];
23
+ await h(
24
+ t.map((e) => async () => {
25
+ if (e.eventName !== this.eventName)
26
26
  return;
27
- const { args: n, blockNumber: o, transactionHash: a } = s;
28
- if (!n)
29
- throw new Error("Wrong event structure");
30
- const r = this.mapEvent(n), h = e.has(a);
31
- await this.acceptEvent(r, o, a, h) && c.push(r);
27
+ const { blockNumber: c, transactionHash: a } = e, i = this.mapEvent(e), o = s.has(a);
28
+ await this.acceptEvent(i, c, a, o) && n.push(i);
32
29
  })
33
30
  );
34
- const i = c.length;
35
- return await this.afterEventsAccepted(i), c.length;
31
+ const r = n.length;
32
+ return await this.afterEventsAccepted(r), n.length;
36
33
  }
37
34
  }
38
35
  export {
39
- u as AbstractEventService
36
+ m as AbstractEventService
40
37
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./AbstractSnapshotService.cjs");class i extends t.AbstractSnapshotService{constructor(e){super(e,"Nullified")}_nullifiers;get nullifiers(){return this._nullifiers}serializeSnapshot(e){return{nullifiers:Array.from(e.payload.nullifiers).map(r=>r.toString()),latestBlockNumber:e.latestBlockNumber}}deserializeSnapshot(e){return{latestBlockNumber:e.latestBlockNumber??0,payload:{nullifiers:new Set(e.nullifiers??[])}}}acceptEvent(e,r){try{return this._nullifiers.has(e.nullifier)?!1:(this._nullifiers.add(e.nullifier),!0)}catch(l){return console.error(l),!1}}mapEvent(e){const{nullifier:r}=e;return{nullifier:r.toHexString()}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:e}}){this._nullifiers=e}}exports.AbstractNullifierSnapshotService=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("ethers"),i=require("./AbstractSnapshotService.cjs");class s extends i.AbstractSnapshotService{constructor(e){super(e,"Nullified")}_nullifiers;get nullifiers(){return this._nullifiers}serializeSnapshot(e){return{nullifiers:Array.from(e.payload.nullifiers).map(r=>r.toString()),latestBlockNumber:e.latestBlockNumber}}deserializeSnapshot(e){return{latestBlockNumber:e.latestBlockNumber??0,payload:{nullifiers:new Set(e.nullifiers??[])}}}acceptEvent(e,r){try{return this._nullifiers.has(e.nullifier)?!1:(this._nullifiers.add(e.nullifier),!0)}catch(l){return console.error(l),!1}}mapEvent(e){const r=e.getArg("nullifier");return{nullifier:t.BigNumber.from(r).toHexString()}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:e}}){this._nullifiers=e}}exports.AbstractNullifierSnapshotService=s;
@@ -1,7 +1,7 @@
1
- import { BigNumber } from 'ethers';
2
1
  import { NullifierEvent } from '../../../types/commitments.types';
3
2
  import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
4
3
  import { BlockchainEventEmitter } from './BlockchainEventEmitter';
4
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
5
5
  export type NullifierSnapshotPayload = {
6
6
  readonly nullifiers: Set<string>;
7
7
  };
@@ -9,14 +9,14 @@ export type NullifierSerializedSnapshot = {
9
9
  latestBlockNumber?: number;
10
10
  nullifiers?: string[];
11
11
  };
12
- export declare abstract class AbstractNullifierSnapshotService extends AbstractSnapshotService<NullifierEvent<string>, NullifierEvent<BigNumber>, NullifierSnapshotPayload, NullifierSerializedSnapshot> {
12
+ export declare abstract class AbstractNullifierSnapshotService extends AbstractSnapshotService<NullifierEvent<string>, NullifierSnapshotPayload, NullifierSerializedSnapshot> {
13
13
  constructor(hinkalEventEmitter: BlockchainEventEmitter);
14
14
  private _nullifiers;
15
15
  get nullifiers(): Set<string>;
16
16
  protected serializeSnapshot(snapshot: Snapshot<NullifierSnapshotPayload>): NullifierSerializedSnapshot;
17
17
  protected deserializeSnapshot(serializedSnapshot: NullifierSerializedSnapshot): Snapshot<NullifierSnapshotPayload>;
18
18
  protected acceptEvent(event: NullifierEvent<string>, _blockNumber: number): boolean;
19
- protected mapEvent(event: NullifierEvent<BigNumber>): NullifierEvent<string>;
19
+ protected mapEvent(event: BlockchainEvent): NullifierEvent<string>;
20
20
  protected getSnapshotPayload(): NullifierSnapshotPayload;
21
21
  protected populateSnapshot({ payload: { nullifiers } }: Snapshot<NullifierSnapshotPayload>): void;
22
22
  }
@@ -1,5 +1,6 @@
1
- import { AbstractSnapshotService as i } from "./AbstractSnapshotService.mjs";
2
- class n extends i {
1
+ import { BigNumber as i } from "ethers";
2
+ import { AbstractSnapshotService as t } from "./AbstractSnapshotService.mjs";
3
+ class a extends t {
3
4
  constructor(r) {
4
5
  super(r, "Nullified");
5
6
  }
@@ -29,9 +30,9 @@ class n extends i {
29
30
  }
30
31
  }
31
32
  mapEvent(r) {
32
- const { nullifier: e } = r;
33
+ const e = r.getArg("nullifier");
33
34
  return {
34
- nullifier: e.toHexString()
35
+ nullifier: i.from(e).toHexString()
35
36
  };
36
37
  }
37
38
  getSnapshotPayload() {
@@ -44,5 +45,5 @@ class n extends i {
44
45
  }
45
46
  }
46
47
  export {
47
- n as AbstractNullifierSnapshotService
48
+ a as AbstractNullifierSnapshotService
48
49
  };
@@ -4,7 +4,7 @@ export interface Snapshot<SnapshotPayloadType> {
4
4
  readonly latestBlockNumber: number;
5
5
  readonly payload: SnapshotPayloadType;
6
6
  }
7
- export declare abstract class AbstractSnapshotService<EventType, SerializedEventType, SnapshotPayloadType, SerializedSnapshotType> extends AbstractEventService<EventType, SerializedEventType> {
7
+ export declare abstract class AbstractSnapshotService<EventType, SnapshotPayloadType, SerializedSnapshotType> extends AbstractEventService<EventType> {
8
8
  private savedLatestBlockNumber;
9
9
  protected constructor(blockchainEventEmitter: BlockchainEventEmitter, eventName: string);
10
10
  init(): Promise<void>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../../constants/reorg-depths.constants.cjs"),l=require("../../../functions/utils/resolve-sync.utils.cjs");class m{_chainId;contract;depositOnChainUtxosContract;_latestBlockNumber;_initialBlockNumber;onEventsProcessed;eventProcessors=new Set;maxPageSize;isReady=!1;isServer;intervalId;inProgress;eventsFetchingMutex;constructor(e,r,h,s,i,o,n){this.contract=r,this.depositOnChainUtxosContract=n,this._chainId=e,this._initialBlockNumber=h,this.maxPageSize=o,this.isServer=s,this.inProgress=!1,this.eventsFetchingMutex=i}get latestBlockNumber(){return this._latestBlockNumber??this._initialBlockNumber}get chainId(){return this._chainId}syncFromAtMost(e){(this._latestBlockNumber===void 0||e<this._latestBlockNumber)&&(this._latestBlockNumber=e)}intervalClear(){this.isReady=!1,this.eventProcessors=new Set,clearInterval(this.intervalId)}async init(){if(this.isReady)throw new Error("Already initialized");this.isReady=!0,await this.retrieveEvents(this.latestBlockNumber+1),this.intervalId=setInterval(async()=>{await this.retrieveEvents(this.latestBlockNumber)},3500)}requireReady(){if(!this.isReady)throw new Error("Not ready")}addEventProcessorFunction(e){if(this.isReady)throw new Error("Can't add event processor after event emitter initialized");this.eventProcessors.add(e)}async getLastBlockNumberForEventRequest(){const e=await this.contract.provider.getBlockNumber();if(!this.isServer)return e;const{chainId:r}=await this.contract.provider.getNetwork();return Math.max(this.latestBlockNumber,e-d.blockReorgDepth[r]+1)}async retrieveEvents(e,r=!1){return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!r)return!1;this.inProgress=!0;let s=0;const i=await this.getLastBlockNumberForEventRequest();if(i<e)return this.inProgress=!1,!1;const o=l.getSequence(e,i,this.maxPageSize),n=[];if(await l.resolveSync(o.map(({from:t,to:a})=>async()=>{const c=await this.contract.queryFilter("*",t,a);n.push(...c)})),this.depositOnChainUtxosContract){const{depositOnChainUtxosContract:t}=this;await l.resolveSync(o.map(({from:a,to:c})=>async()=>{const v=await t.queryFilter("*",a,c);n.push(...v)}))}const u=await Promise.all([...this.eventProcessors].map(t=>t(n)));return this._latestBlockNumber=i,s+=u.reduce((t,a)=>t+a,0),this.onEventsProcessed?.(s),this.inProgress=!1,!0}catch(s){return console.log("retrieveEvents error:",{err:s}),this.inProgress=!1,!1}})}}exports.BlockchainEventEmitter=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../../../constants/reorg-depths.constants.cjs"),l=require("../../../functions/utils/resolve-sync.utils.cjs"),d=require("../../BlockchainEvent/BlockchainEvent.cjs");class m{_chainId;contract;depositOnChainUtxosContract;_latestBlockNumber;_initialBlockNumber;onEventsProcessed;eventProcessors=new Set;maxPageSize;isReady=!1;isServer;inProgress;eventsFetchingMutex;constructor(e,s,a,t,r,i,o){this.contract=s,this.depositOnChainUtxosContract=o,this._chainId=e,this._initialBlockNumber=a,this.maxPageSize=i,this.isServer=t,this.inProgress=!1,this.eventsFetchingMutex=r}get latestBlockNumber(){return this._latestBlockNumber??this._initialBlockNumber}get chainId(){return this._chainId}syncFromAtMost(e){(this._latestBlockNumber===void 0||e<this._latestBlockNumber)&&(this._latestBlockNumber=e)}intervalClear(){this.isReady=!1,this.eventProcessors=new Set,this.clear()}async init(){if(this.isReady)throw new Error("Already initialized");this.isReady=!0,await this.retrieveEvents(this.latestBlockNumber+1),await this.startUpdateListener()}requireReady(){if(!this.isReady)throw new Error("Not ready")}addEventProcessorFunction(e){if(this.isReady)throw new Error("Can't add event processor after event emitter initialized");this.eventProcessors.add(e)}async getLastBlockNumberForEventRequest(){const e=await this.contract.provider.getBlockNumber();if(!this.isServer)return e;const{chainId:s}=await this.contract.provider.getNetwork();return Math.max(this.latestBlockNumber,e-v.blockReorgDepth[s]+1)}async retrieveEvents(e,s=!1){return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!s)return!1;this.inProgress=!0;const t=await this.getLastBlockNumberForEventRequest();if(t<e)return this.inProgress=!1,!1;const r=l.getSequence(e,t,this.maxPageSize),i=[];if(await l.resolveSync(r.map(({from:n,to:c})=>async()=>{const h=await this.contract.queryFilter("*",n,c);i.push(...h)})),this.depositOnChainUtxosContract){const{depositOnChainUtxosContract:n}=this;await l.resolveSync(r.map(({from:c,to:h})=>async()=>{const u=await n.queryFilter("*",c,h);i.push(...u)}))}const o=i.map(n=>d.BlockchainEvent.fromEthers(n));return await this.processEvents(o),this._latestBlockNumber=t,this.inProgress=!1,!0}catch(t){return console.log("retrieveEvents error:",{err:t}),this.inProgress=!1,!1}})}async processEvents(e){const a=(await Promise.all([...this.eventProcessors].map(t=>t(e)))).reduce((t,r)=>t+r,0);this.onEventsProcessed?.(a)}}exports.BlockchainEventEmitter=m;
@@ -1,7 +1,8 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { Mutex } from 'async-mutex';
3
- export type EventProcessorFunction = (events: ethers.Event[]) => Promise<number> | number;
4
- export declare class BlockchainEventEmitter {
3
+ import { EventProcessorFunction } from '../../../types/events.types';
4
+ import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
5
+ export declare abstract class BlockchainEventEmitter {
5
6
  private readonly _chainId;
6
7
  readonly contract: ethers.Contract;
7
8
  readonly depositOnChainUtxosContract?: ethers.Contract;
@@ -12,9 +13,8 @@ export declare class BlockchainEventEmitter {
12
13
  private readonly maxPageSize?;
13
14
  private isReady;
14
15
  private isServer;
15
- private intervalId?;
16
16
  private inProgress;
17
- private eventsFetchingMutex;
17
+ protected eventsFetchingMutex: Mutex;
18
18
  constructor(chainId: number, contract: ethers.Contract, initialBlockNumber: number, isServer: boolean, eventsFetchingMutex: Mutex, maxPageSize?: number, depositOnChainUtxosContract?: ethers.Contract);
19
19
  get latestBlockNumber(): number;
20
20
  get chainId(): number;
@@ -25,4 +25,7 @@ export declare class BlockchainEventEmitter {
25
25
  addEventProcessorFunction(eventProcessorFunction: EventProcessorFunction): void;
26
26
  private getLastBlockNumberForEventRequest;
27
27
  retrieveEvents(fromBlockNumber: number, useForce?: boolean): Promise<boolean>;
28
+ protected processEvents(events: BlockchainEvent[]): Promise<void>;
29
+ protected abstract clear(): void;
30
+ protected abstract startUpdateListener(): Promise<void> | void;
28
31
  }
@@ -1,6 +1,7 @@
1
- import { blockReorgDepth as d } from "../../../constants/reorg-depths.constants.mjs";
2
- import { getSequence as m, resolveSync as h } from "../../../functions/utils/resolve-sync.utils.mjs";
3
- class k {
1
+ import { blockReorgDepth as v } from "../../../constants/reorg-depths.constants.mjs";
2
+ import { getSequence as d, resolveSync as l } from "../../../functions/utils/resolve-sync.utils.mjs";
3
+ import { BlockchainEvent as m } from "../../BlockchainEvent/BlockchainEvent.mjs";
4
+ class g {
4
5
  _chainId;
5
6
  contract;
6
7
  depositOnChainUtxosContract;
@@ -11,12 +12,11 @@ class k {
11
12
  maxPageSize;
12
13
  isReady = !1;
13
14
  isServer;
14
- intervalId;
15
15
  inProgress;
16
16
  // to remove race conditions
17
17
  eventsFetchingMutex;
18
- constructor(t, r, l, s, i, o, a) {
19
- this.contract = r, this.depositOnChainUtxosContract = a, this._chainId = t, this._initialBlockNumber = l, this.maxPageSize = o, this.isServer = s, this.inProgress = !1, this.eventsFetchingMutex = i;
18
+ constructor(t, s, n, e, r, i, o) {
19
+ this.contract = s, this.depositOnChainUtxosContract = o, this._chainId = t, this._initialBlockNumber = n, this.maxPageSize = i, this.isServer = e, this.inProgress = !1, this.eventsFetchingMutex = r;
20
20
  }
21
21
  get latestBlockNumber() {
22
22
  return this._latestBlockNumber ?? this._initialBlockNumber;
@@ -28,14 +28,12 @@ class k {
28
28
  (this._latestBlockNumber === void 0 || t < this._latestBlockNumber) && (this._latestBlockNumber = t);
29
29
  }
30
30
  intervalClear() {
31
- this.isReady = !1, this.eventProcessors = /* @__PURE__ */ new Set(), clearInterval(this.intervalId);
31
+ this.isReady = !1, this.eventProcessors = /* @__PURE__ */ new Set(), this.clear();
32
32
  }
33
33
  async init() {
34
34
  if (this.isReady)
35
35
  throw new Error("Already initialized");
36
- this.isReady = !0, await this.retrieveEvents(this.latestBlockNumber + 1), this.intervalId = setInterval(async () => {
37
- await this.retrieveEvents(this.latestBlockNumber);
38
- }, 3500);
36
+ this.isReady = !0, await this.retrieveEvents(this.latestBlockNumber + 1), await this.startUpdateListener();
39
37
  }
40
38
  requireReady() {
41
39
  if (!this.isReady)
@@ -50,44 +48,47 @@ class k {
50
48
  const t = await this.contract.provider.getBlockNumber();
51
49
  if (!this.isServer)
52
50
  return t;
53
- const { chainId: r } = await this.contract.provider.getNetwork();
54
- return Math.max(this.latestBlockNumber, t - d[r] + 1);
51
+ const { chainId: s } = await this.contract.provider.getNetwork();
52
+ return Math.max(this.latestBlockNumber, t - v[s] + 1);
55
53
  }
56
- async retrieveEvents(t, r = !1) {
54
+ async retrieveEvents(t, s = !1) {
57
55
  return this.requireReady(), await this.eventsFetchingMutex.runExclusive(async () => {
58
56
  try {
59
- if (this.inProgress && !r)
57
+ if (this.inProgress && !s)
60
58
  return !1;
61
59
  this.inProgress = !0;
62
- let s = 0;
63
- const i = await this.getLastBlockNumberForEventRequest();
64
- if (i < t)
60
+ const e = await this.getLastBlockNumberForEventRequest();
61
+ if (e < t)
65
62
  return this.inProgress = !1, !1;
66
- const o = m(t, i, this.maxPageSize), a = [];
67
- if (await h(
68
- o.map(({ from: e, to: n }) => async () => {
69
- const c = await this.contract.queryFilter("*", e, n);
70
- a.push(...c);
63
+ const r = d(t, e, this.maxPageSize), i = [];
64
+ if (await l(
65
+ r.map(({ from: a, to: c }) => async () => {
66
+ const h = await this.contract.queryFilter("*", a, c);
67
+ i.push(...h);
71
68
  })
72
69
  ), this.depositOnChainUtxosContract) {
73
- const { depositOnChainUtxosContract: e } = this;
74
- await h(
75
- o.map(({ from: n, to: c }) => async () => {
76
- const v = await e.queryFilter("*", n, c);
77
- a.push(...v);
70
+ const { depositOnChainUtxosContract: a } = this;
71
+ await l(
72
+ r.map(({ from: c, to: h }) => async () => {
73
+ const u = await a.queryFilter("*", c, h);
74
+ i.push(...u);
78
75
  })
79
76
  );
80
77
  }
81
- const u = await Promise.all(
82
- [...this.eventProcessors].map((e) => e(a))
83
- );
84
- return this._latestBlockNumber = i, s += u.reduce((e, n) => e + n, 0), this.onEventsProcessed?.(s), this.inProgress = !1, !0;
85
- } catch (s) {
86
- return console.log("retrieveEvents error:", { err: s }), this.inProgress = !1, !1;
78
+ const o = i.map((a) => m.fromEthers(a));
79
+ return await this.processEvents(o), this._latestBlockNumber = e, this.inProgress = !1, !0;
80
+ } catch (e) {
81
+ return console.log("retrieveEvents error:", { err: e }), this.inProgress = !1, !1;
87
82
  }
88
83
  });
89
84
  }
85
+ async processEvents(t) {
86
+ const n = (await Promise.all(
87
+ [...this.eventProcessors].map((e) => e(t))
88
+ )).reduce((e, r) => e + r, 0);
89
+ this.onEventsProcessed?.(n);
90
+ }
90
91
  }
91
92
  export {
92
- k as BlockchainEventEmitter
93
+ g as BlockchainEventEmitter
93
94
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./BlockchainEventEmitter.cjs"),a=require("../helpers/ClientEventHelper.cjs");class E extends c.BlockchainEventEmitter{clientEventHelper;constructor(e,t,n,i,r,l,s){super(t,n,i,!1,r,l,s),this.clientEventHelper=new a.ClientEventHelper(t,e)}clear(){this.clientEventHelper.clear()}startUpdateListener(){this.clientEventHelper.startUpdateListener(async e=>{await this.eventsFetchingMutex.runExclusive(async()=>{await this.processEvents(e)})})}}exports.ClientBlockchainEventEmitter=E;
@@ -0,0 +1,11 @@
1
+ import { ethers } from 'ethers';
2
+ import { EventCategory } from '../../../types/events.types';
3
+ import { BlockchainEventEmitter } from './BlockchainEventEmitter';
4
+ import { Mutex } from 'async-mutex';
5
+ import { ClientEventHelper } from '../helpers/ClientEventHelper';
6
+ export declare class ClientBlockchainEventEmitter extends BlockchainEventEmitter {
7
+ clientEventHelper: ClientEventHelper;
8
+ constructor(eventCategory: EventCategory, chainId: number, contract: ethers.Contract, initialBlockNumber: number, eventsFetchingMutex: Mutex, maxPageSize?: number, depositOnChainUtxosContract?: ethers.Contract);
9
+ protected clear(): void;
10
+ protected startUpdateListener(): Promise<void> | void;
11
+ }
@@ -0,0 +1,21 @@
1
+ import { BlockchainEventEmitter as c } from "./BlockchainEventEmitter.mjs";
2
+ import { ClientEventHelper as a } from "../helpers/ClientEventHelper.mjs";
3
+ class v extends c {
4
+ clientEventHelper;
5
+ constructor(e, t, n, r, i, s, l) {
6
+ super(t, n, r, !1, i, s, l), this.clientEventHelper = new a(t, e);
7
+ }
8
+ clear() {
9
+ this.clientEventHelper.clear();
10
+ }
11
+ startUpdateListener() {
12
+ this.clientEventHelper.startUpdateListener(async (e) => {
13
+ await this.eventsFetchingMutex.runExclusive(async () => {
14
+ await this.processEvents(e);
15
+ });
16
+ });
17
+ }
18
+ }
19
+ export {
20
+ v as ClientBlockchainEventEmitter
21
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./BlockchainEventEmitter.cjs"),t=require("../helpers/PollingEventHelper.cjs");class l extends e.BlockchainEventEmitter{pollingEventHelper=new t.PollingEventHelper;clear(){this.pollingEventHelper.clear()}startUpdateListener(){this.pollingEventHelper.startUpdateListener(async()=>{await this.retrieveEvents(this.latestBlockNumber)})}}exports.PollingBlockchainEventEmitter=l;
@@ -0,0 +1,6 @@
1
+ import { BlockchainEventEmitter } from './BlockchainEventEmitter';
2
+ export declare class PollingBlockchainEventEmitter extends BlockchainEventEmitter {
3
+ private pollingEventHelper;
4
+ protected clear(): void;
5
+ protected startUpdateListener(): Promise<void> | void;
6
+ }