@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.
- package/API/API.cjs +1 -1
- package/API/API.d.ts +6 -1
- package/API/API.mjs +48 -41
- package/API/enclaveCalls.cjs +1 -1
- package/API/enclaveCalls.mjs +5 -4
- package/API/index.d.ts +1 -0
- package/API/proxyAccountsCalls.cjs +1 -1
- package/API/proxyAccountsCalls.d.ts +7 -2
- package/API/proxyAccountsCalls.mjs +26 -20
- package/API/temporaryWalletCalls.cjs +1 -0
- package/API/temporaryWalletCalls.d.ts +13 -0
- package/API/temporaryWalletCalls.mjs +20 -0
- package/API/unspent-utxos-calls.cjs +1 -1
- package/API/unspent-utxos-calls.d.ts +1 -1
- package/API/unspent-utxos-calls.mjs +16 -14
- package/README.md +36 -13
- package/constants/chains.constants.cjs +1 -1
- package/constants/chains.constants.d.ts +1 -1
- package/constants/chains.constants.mjs +69 -51
- package/constants/deploy-data/deploy-data-solana.json.cjs +1 -1
- package/constants/deploy-data/deploy-data-solana.json.mjs +28 -2
- package/constants/kyc.constants.cjs +1 -1
- package/constants/kyc.constants.mjs +39 -40
- package/constants/mediaUrls.constants.cjs +1 -1
- package/constants/mediaUrls.constants.d.ts +1 -0
- package/constants/mediaUrls.constants.mjs +2 -1
- package/constants/server.constants.cjs +1 -1
- package/constants/server.constants.d.ts +6 -1
- package/constants/server.constants.mjs +37 -32
- package/constants/token-data/polygonRegistry.json.cjs +1 -1
- package/constants/token-data/polygonRegistry.json.mjs +4 -4
- package/constants/token-data/polygonRegistryFixed.json.cjs +1 -1
- package/constants/token-data/polygonRegistryFixed.json.mjs +4 -4
- package/data-structures/AccountActions/AccountActions.cjs +1 -0
- package/data-structures/AccountActions/AccountActions.d.ts +18 -0
- package/data-structures/AccountActions/AccountActions.mjs +78 -0
- package/data-structures/AccountActions/index.d.ts +1 -0
- package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.cjs +1 -1
- package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.mjs +68 -71
- package/data-structures/BlockchainEvent/BlockchainEvent.cjs +1 -0
- package/data-structures/BlockchainEvent/BlockchainEvent.d.ts +14 -0
- package/data-structures/BlockchainEvent/BlockchainEvent.mjs +41 -0
- package/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/data-structures/Hinkal/Hinkal.d.ts +14 -8
- package/data-structures/Hinkal/Hinkal.mjs +215 -179
- package/data-structures/Hinkal/IHinkal.d.ts +9 -6
- package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/data-structures/Hinkal/handleAutoDepositBack.mjs +47 -48
- package/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
- package/data-structures/Hinkal/hinkalActionReceive.mjs +25 -22
- package/data-structures/Hinkal/hinkalCheckTokenRegistry.cjs +1 -1
- package/data-structures/Hinkal/hinkalCheckTokenRegistry.mjs +12 -12
- package/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/data-structures/Hinkal/hinkalDeposit.mjs +63 -63
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +60 -147
- package/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -0
- package/data-structures/Hinkal/hinkalDepositOnChainUtxos.d.ts +4 -0
- package/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +103 -0
- package/data-structures/Hinkal/hinkalDepostAndBridge.cjs +1 -0
- package/data-structures/Hinkal/hinkalDepostAndBridge.d.ts +4 -0
- package/data-structures/Hinkal/hinkalDepostAndBridge.mjs +214 -0
- package/data-structures/Hinkal/hinkalGetZkMeProvider.cjs +1 -1
- package/data-structures/Hinkal/hinkalGetZkMeProvider.mjs +4 -4
- package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/data-structures/Hinkal/hinkalPrivateWallet.d.ts +2 -2
- package/data-structures/Hinkal/hinkalPrivateWallet.mjs +103 -99
- package/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalProxySwap.mjs +44 -41
- package/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
- package/data-structures/Hinkal/hinkalProxyToPrivate.mjs +31 -28
- package/data-structures/Hinkal/hinkalSignSubAccount.cjs +1 -1
- package/data-structures/Hinkal/hinkalSignSubAccount.mjs +16 -13
- package/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaDeposit.mjs +34 -34
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +67 -65
- package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +35 -32
- package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +59 -56
- package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +35 -32
- package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaSwap.mjs +10 -10
- package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +25 -25
- package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSwap.mjs +34 -30
- package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalTransfer.mjs +43 -39
- package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdraw.mjs +47 -43
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +50 -46
- package/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
- package/data-structures/Hinkal/resetMerkleTrees.mjs +36 -34
- package/data-structures/IndexedDB/activity-db.cjs +1 -1
- package/data-structures/IndexedDB/activity-db.d.ts +1 -0
- package/data-structures/IndexedDB/activity-db.mjs +86 -70
- package/data-structures/IndexedDB/balances-db.cjs +1 -1
- package/data-structures/IndexedDB/balances-db.mjs +33 -30
- package/data-structures/IndexedDB/contact-db.cjs +1 -1
- package/data-structures/IndexedDB/contact-db.mjs +9 -6
- package/data-structures/PublicBalance/PublicBalanceWatcher.cjs +1 -0
- package/data-structures/PublicBalance/PublicBalanceWatcher.d.ts +20 -0
- package/data-structures/PublicBalance/PublicBalanceWatcher.mjs +124 -0
- package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.cjs +1 -0
- package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.d.ts +15 -0
- package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.mjs +64 -0
- package/data-structures/PublicBalance/index.d.ts +2 -0
- package/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
- package/data-structures/TokenDBs/EventsPublicTokensDB.mjs +77 -78
- package/data-structures/crypto-keys/keys.cjs +1 -1
- package/data-structures/crypto-keys/keys.d.ts +0 -11
- package/data-structures/crypto-keys/keys.mjs +47 -107
- package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.d.ts +3 -2
- package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.mjs +9 -9
- package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.d.ts +3 -2
- package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.mjs +5 -5
- package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.d.ts +3 -2
- package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.mjs +6 -6
- package/data-structures/event-service/evm/AbstractEventService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractEventService.d.ts +3 -2
- package/data-structures/event-service/evm/AbstractEventService.mjs +16 -19
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.d.ts +3 -3
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.mjs +6 -5
- package/data-structures/event-service/evm/AbstractSnapshotService.d.ts +1 -1
- package/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
- package/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +7 -4
- package/data-structures/event-service/evm/BlockchainEventEmitter.mjs +35 -34
- package/data-structures/event-service/evm/ClientBlockchainEventEmitter.cjs +1 -0
- package/data-structures/event-service/evm/ClientBlockchainEventEmitter.d.ts +11 -0
- package/data-structures/event-service/evm/ClientBlockchainEventEmitter.mjs +21 -0
- package/data-structures/event-service/evm/PollingBlockchainEventEmitter.cjs +1 -0
- package/data-structures/event-service/evm/PollingBlockchainEventEmitter.d.ts +6 -0
- package/data-structures/event-service/evm/PollingBlockchainEventEmitter.mjs +16 -0
- package/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -0
- package/data-structures/event-service/helpers/ClientEventHelper.d.ts +11 -0
- package/data-structures/event-service/helpers/ClientEventHelper.mjs +26 -0
- package/data-structures/event-service/helpers/PollingEventHelper.cjs +1 -0
- package/data-structures/event-service/helpers/PollingEventHelper.d.ts +5 -0
- package/data-structures/event-service/helpers/PollingEventHelper.mjs +14 -0
- package/data-structures/event-service/index.d.ts +4 -0
- package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.cjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.d.ts +3 -2
- package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.mjs +6 -6
- package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.d.ts +4 -3
- package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.mjs +8 -8
- package/data-structures/event-service/solana/AbstractSolanaEventService.cjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaEventService.d.ts +3 -10
- package/data-structures/event-service/solana/AbstractSolanaEventService.mjs +5 -5
- package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.cjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.d.ts +3 -2
- package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.mjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaSnapshotService.d.ts +1 -1
- package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.cjs +1 -0
- package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.d.ts +11 -0
- package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.mjs +22 -0
- package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.cjs +1 -0
- package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.d.ts +6 -0
- package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.mjs +16 -0
- package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.cjs +1 -1
- package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.d.ts +8 -14
- package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.mjs +68 -67
- package/data-structures/index.d.ts +3 -0
- package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.mjs +5 -2
- package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.mjs +5 -2
- package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.mjs +5 -2
- package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.mjs +5 -2
- package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.cjs +1 -1
- package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.mjs +5 -2
- package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs +1 -1
- package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.mjs +5 -2
- package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs +1 -1
- package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.mjs +5 -2
- package/data-structures/utxo/Utxo.cjs +1 -1
- package/data-structures/utxo/Utxo.d.ts +1 -0
- package/data-structures/utxo/Utxo.mjs +18 -4
- package/error-handling/error-codes.constants.cjs +1 -1
- package/error-handling/error-codes.constants.mjs +2 -2
- package/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
- package/functions/pre-transaction/getSolanaCalldataHash.mjs +22 -22
- package/functions/pre-transaction/sendV0Transaction.cjs +1 -1
- package/functions/pre-transaction/sendV0Transaction.mjs +53 -50
- package/functions/pre-transaction/solana.cjs +1 -1
- package/functions/pre-transaction/solana.mjs +93 -93
- package/functions/private-wallet/emporium.helpers.cjs +1 -1
- package/functions/private-wallet/emporium.helpers.d.ts +3 -2
- package/functions/private-wallet/emporium.helpers.mjs +118 -93
- package/functions/snarkjs/constructEmporiumProof.cjs +1 -1
- package/functions/snarkjs/constructEmporiumProof.d.ts +1 -2
- package/functions/snarkjs/constructEmporiumProof.mjs +89 -89
- package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/functions/snarkjs/constructSolanaZkProof.mjs +6 -2
- package/functions/utils/bytes32.utils.cjs +1 -1
- package/functions/utils/bytes32.utils.mjs +8 -7
- package/functions/utils/create-provider.cjs +1 -1
- package/functions/utils/create-provider.d.ts +1 -1
- package/functions/utils/create-provider.mjs +13 -9
- package/functions/utils/index.d.ts +0 -1
- package/functions/utils/prepareHinkal.cjs +1 -1
- package/functions/utils/prepareHinkal.d.ts +6 -7
- package/functions/utils/prepareHinkal.mjs +45 -53
- package/functions/utils/publicBalance.utils.cjs +1 -1
- package/functions/utils/publicBalance.utils.mjs +49 -54
- package/functions/utils/socket.utils.cjs +1 -0
- package/functions/utils/socket.utils.d.ts +1 -0
- package/functions/utils/socket.utils.mjs +12 -0
- package/functions/utils/string.utils.cjs +1 -1
- package/functions/utils/string.utils.d.ts +1 -0
- package/functions/utils/string.utils.mjs +18 -14
- package/functions/utils/walletBalances.utils.cjs +1 -1
- package/functions/utils/walletBalances.utils.d.ts +1 -1
- package/functions/utils/walletBalances.utils.mjs +4 -4
- package/functions/web3/crypto.cjs +1 -0
- package/functions/web3/crypto.d.ts +1 -0
- package/functions/web3/crypto.mjs +7 -0
- package/functions/web3/events/getApprovedBalance.cjs +1 -1
- package/functions/web3/events/getApprovedBalance.mjs +14 -14
- package/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/functions/web3/events/getInputUtxoAndBalance.mjs +61 -59
- package/functions/web3/events/getTransactionLogEvents.cjs +1 -1
- package/functions/web3/events/getTransactionLogEvents.mjs +32 -32
- package/functions/web3/fetchSolanaMerkleTreeRootHash.cjs +1 -1
- package/functions/web3/fetchSolanaMerkleTreeRootHash.mjs +6 -3
- package/functions/web3/functionCalls/approveToken.cjs +1 -1
- package/functions/web3/functionCalls/approveToken.mjs +17 -17
- package/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/functions/web3/functionCalls/transactCallDirect.mjs +16 -16
- package/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
- package/functions/web3/functionCalls/transactCallRelayer.mjs +13 -11
- package/functions/web3/getContractMetadata.cjs +1 -1
- package/functions/web3/getContractMetadata.mjs +17 -22
- package/functions/web3/getTokenHolder.cjs +1 -1
- package/functions/web3/getTokenHolder.mjs +20 -20
- package/functions/web3/index.d.ts +1 -0
- package/index.cjs +1 -1
- package/index.mjs +913 -890
- package/package.json +3 -2
- package/providers/EthersProviderAdapter.cjs +1 -1
- package/providers/EthersProviderAdapter.mjs +2 -5
- package/providers/prepareEthersHinkal.cjs +1 -1
- package/providers/prepareEthersHinkal.mjs +11 -4
- package/providers/prepareWagmiHinkal.cjs +1 -1
- package/providers/prepareWagmiHinkal.mjs +11 -4
- package/types/activities.types.d.ts +2 -0
- package/types/bridging-tx.types.d.ts +17 -0
- package/types/cache.types.cjs +1 -1
- package/types/cache.types.d.ts +5 -1
- package/types/cache.types.mjs +1 -1
- package/types/ethereum-network.types.d.ts +1 -0
- package/types/events.types.cjs +1 -0
- package/types/events.types.d.ts +9 -0
- package/types/events.types.mjs +5 -0
- package/types/index.d.ts +2 -0
- package/types/proxy.types.d.ts +11 -4
- package/types/sandbox.types.d.ts +2 -0
- package/types/solana.types.d.ts +8 -0
- package/types/token.types.d.ts +5 -0
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.cjs +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.mjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.mjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +1 -1
- package/functions/kyc/authentoHelper.cjs +0 -1
- package/functions/kyc/authentoHelper.d.ts +0 -12
- package/functions/kyc/authentoHelper.mjs +0 -30
- package/functions/utils/get-hinkal-approvals.cjs +0 -1
- package/functions/utils/get-hinkal-approvals.d.ts +0 -3
- 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"),
|
|
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>,
|
|
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:
|
|
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
|
|
2
|
-
import { poseidonFunction as
|
|
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
|
|
12
|
-
import { contructMerkleTreeFromSerialized as
|
|
13
|
-
class
|
|
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 =
|
|
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 ===
|
|
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
|
|
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
|
-
|
|
85
|
+
g as AbstractAccessTokenSnapshotService
|
|
86
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
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,
|
|
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:
|
|
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
|
|
4
|
-
class
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
91
|
+
f as AbstractApprovalsSnapshotService
|
|
92
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
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>,
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
2
|
-
class
|
|
1
|
+
import { resolveSync as h } from "../../../functions/utils/resolve-sync.utils.mjs";
|
|
2
|
+
class m {
|
|
3
3
|
blockchainEventEmitter;
|
|
4
4
|
eventName;
|
|
5
|
-
constructor(t,
|
|
6
|
-
this.blockchainEventEmitter = t, this.eventName =
|
|
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
|
|
19
|
-
t.forEach(({
|
|
20
|
-
|
|
18
|
+
const s = /* @__PURE__ */ new Set();
|
|
19
|
+
t.forEach(({ eventName: e, transactionHash: c }) => {
|
|
20
|
+
e === "BlockedUtxosCreated" && s.add(c);
|
|
21
21
|
});
|
|
22
|
-
const
|
|
23
|
-
await
|
|
24
|
-
t.map((
|
|
25
|
-
if (
|
|
22
|
+
const n = [];
|
|
23
|
+
await h(
|
|
24
|
+
t.map((e) => async () => {
|
|
25
|
+
if (e.eventName !== this.eventName)
|
|
26
26
|
return;
|
|
27
|
-
const {
|
|
28
|
-
|
|
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
|
|
35
|
-
return await this.afterEventsAccepted(
|
|
31
|
+
const r = n.length;
|
|
32
|
+
return await this.afterEventsAccepted(r), n.length;
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
export {
|
|
39
|
-
|
|
36
|
+
m as AbstractEventService
|
|
40
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./AbstractSnapshotService.cjs");class
|
|
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>,
|
|
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:
|
|
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 {
|
|
2
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
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
|
|
2
|
-
import { getSequence as
|
|
3
|
-
|
|
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,
|
|
19
|
-
this.contract =
|
|
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(),
|
|
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.
|
|
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:
|
|
54
|
-
return Math.max(this.latestBlockNumber, t -
|
|
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,
|
|
54
|
+
async retrieveEvents(t, s = !1) {
|
|
57
55
|
return this.requireReady(), await this.eventsFetchingMutex.runExclusive(async () => {
|
|
58
56
|
try {
|
|
59
|
-
if (this.inProgress && !
|
|
57
|
+
if (this.inProgress && !s)
|
|
60
58
|
return !1;
|
|
61
59
|
this.inProgress = !0;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (i < t)
|
|
60
|
+
const e = await this.getLastBlockNumberForEventRequest();
|
|
61
|
+
if (e < t)
|
|
65
62
|
return this.inProgress = !1, !1;
|
|
66
|
-
const
|
|
67
|
-
if (await
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
|
|
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:
|
|
74
|
-
await
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
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
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return
|
|
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
|
-
|
|
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
|
+
}
|