@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BlockchainEventEmitter as e } from "./BlockchainEventEmitter.mjs";
|
|
2
|
+
import { PollingEventHelper as t } from "../helpers/PollingEventHelper.mjs";
|
|
3
|
+
class n extends e {
|
|
4
|
+
pollingEventHelper = new t();
|
|
5
|
+
clear() {
|
|
6
|
+
this.pollingEventHelper.clear();
|
|
7
|
+
}
|
|
8
|
+
startUpdateListener() {
|
|
9
|
+
this.pollingEventHelper.startUpdateListener(async () => {
|
|
10
|
+
await this.retrieveEvents(this.latestBlockNumber);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
n as PollingBlockchainEventEmitter
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../types/events.types.cjs"),o=require("../../../functions/utils/socket.utils.cjs"),i=require("../../BlockchainEvent/BlockchainEvent.cjs"),r=require("../../../constants/server.constants.cjs");class a{chainId;socket;eventCategory;constructor(e,t){this.chainId=e,this.eventCategory=t}clear(){this.socket?.disconnect(),this.socket=void 0}startUpdateListener(e){this.socket=o.createSnapshotServerClientSocket(r.API_CONFIG.ROUTES.getSnapshotServerNamespace(this.chainId,this.eventCategory)),this.socket.on(c.SocketIOEvents.NewBlockchainEvents,async t=>{const s=t.map(n=>i.BlockchainEvent.fromSerialized(n));await e(s)})}}exports.ClientEventHelper=a;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Socket } from 'socket.io-client';
|
|
2
|
+
import { EventCategory } from '../../../types/events.types';
|
|
3
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
4
|
+
export declare class ClientEventHelper {
|
|
5
|
+
chainId: number;
|
|
6
|
+
socket: Socket | undefined;
|
|
7
|
+
eventCategory: EventCategory;
|
|
8
|
+
constructor(chainId: number, eventCategory: EventCategory);
|
|
9
|
+
clear(): void;
|
|
10
|
+
startUpdateListener(processEvents: (events: BlockchainEvent[]) => Promise<void> | void): Promise<void> | void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SocketIOEvents as c } from "../../../types/events.types.mjs";
|
|
2
|
+
import { createSnapshotServerClientSocket as i } from "../../../functions/utils/socket.utils.mjs";
|
|
3
|
+
import { BlockchainEvent as n } from "../../BlockchainEvent/BlockchainEvent.mjs";
|
|
4
|
+
import { API_CONFIG as r } from "../../../constants/server.constants.mjs";
|
|
5
|
+
class k {
|
|
6
|
+
chainId;
|
|
7
|
+
socket;
|
|
8
|
+
eventCategory;
|
|
9
|
+
constructor(t, e) {
|
|
10
|
+
this.chainId = t, this.eventCategory = e;
|
|
11
|
+
}
|
|
12
|
+
clear() {
|
|
13
|
+
this.socket?.disconnect(), this.socket = void 0;
|
|
14
|
+
}
|
|
15
|
+
startUpdateListener(t) {
|
|
16
|
+
this.socket = i(
|
|
17
|
+
r.ROUTES.getSnapshotServerNamespace(this.chainId, this.eventCategory)
|
|
18
|
+
), this.socket.on(c.NewBlockchainEvents, async (e) => {
|
|
19
|
+
const o = e.map((s) => n.fromSerialized(s));
|
|
20
|
+
await t(o);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
k as ClientEventHelper
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class t{intervalId;clear(){this.intervalId!==void 0&&clearInterval(this.intervalId),this.intervalId=void 0}startUpdateListener(e){this.intervalId=setInterval(async()=>{await e()},3500)}}exports.PollingEventHelper=t;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class a {
|
|
2
|
+
intervalId;
|
|
3
|
+
clear() {
|
|
4
|
+
this.intervalId !== void 0 && clearInterval(this.intervalId), this.intervalId = void 0;
|
|
5
|
+
}
|
|
6
|
+
startUpdateListener(t) {
|
|
7
|
+
this.intervalId = setInterval(async () => {
|
|
8
|
+
await t();
|
|
9
|
+
}, 3500);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
a as PollingEventHelper
|
|
14
|
+
};
|
|
@@ -5,7 +5,11 @@ export * from './evm/AbstractNullifierSnapshotService';
|
|
|
5
5
|
export * from './evm/AbstractSnapshotService';
|
|
6
6
|
export * from './evm/AbstractEventService';
|
|
7
7
|
export * from './evm/BlockchainEventEmitter';
|
|
8
|
+
export * from './evm/PollingBlockchainEventEmitter';
|
|
9
|
+
export * from './evm/ClientBlockchainEventEmitter';
|
|
8
10
|
export * from './solana/SolanaBlockchainEventEmitter';
|
|
11
|
+
export * from './solana/ClientSolanaBlockchainEventEmitter';
|
|
12
|
+
export * from './solana/PollingSolanaBlockchainEventEmitter';
|
|
9
13
|
export * from './solana/AbstractSolanaEventService';
|
|
10
14
|
export * from './solana/AbstractSolanaSnapshotService';
|
|
11
15
|
export * from './solana/AbstractSolanaNullifierSnapshotService';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../constants/protocol.constants.cjs"),c=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../../../functions/utils/amounts.utils.cjs"),o=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSolanaSnapshotService.cjs"),i=require("../../../functions/utils/merkleTree.utils.cjs"),u=require("@solana/web3.js");class A extends l.AbstractSolanaSnapshotService{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(c.poseidonFunction,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:t})=>[d,t])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.access_key,e.index),this._senderAddressIndexMap.set(e.sender_address,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.sender_address)??0)),this._senderAddresses.includes(e.sender_address)||this._senderAddresses.push(e.sender_address),e.access_key===0n&&e.sender_address===a.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../constants/protocol.constants.cjs"),c=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../../../functions/utils/amounts.utils.cjs"),o=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSolanaSnapshotService.cjs"),i=require("../../../functions/utils/merkleTree.utils.cjs"),u=require("@solana/web3.js");class A extends l.AbstractSolanaSnapshotService{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(c.poseidonFunction,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:t})=>[d,t])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.access_key,e.index),this._senderAddressIndexMap.set(e.sender_address,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.sender_address)??0)),this._senderAddresses.includes(e.sender_address)||this._senderAddresses.push(e.sender_address),e.access_key===0n&&e.sender_address===a.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const s=e.getArg("access_key"),r=e.getArg("index"),d=e.getArg("sender_address");return{access_key:n.advancedToBigInt(s),index:n.advancedToBigInt(r),sender_address:new u.PublicKey(d).toBase58()}}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.AbstractSolanaAccessTokenSnapshotService=A;
|
|
@@ -2,6 +2,7 @@ import { MerkleTree, MerkleTreeJson } from '../../merkle-tree';
|
|
|
2
2
|
import { SolanaAccessTokenEvent } from '../../../types';
|
|
3
3
|
import { AbstractSolanaSnapshotService, SolanaSnapshot } from './AbstractSolanaSnapshotService';
|
|
4
4
|
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
5
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
5
6
|
export type SolanaSenderAddressIndexMapJson = {
|
|
6
7
|
address: string;
|
|
7
8
|
index: number;
|
|
@@ -17,7 +18,7 @@ export type SolanaAccessTokenSerializedSnapshot = {
|
|
|
17
18
|
senderAddresses?: string[];
|
|
18
19
|
senderAddressIndexMap?: SolanaSenderAddressIndexMapJson;
|
|
19
20
|
};
|
|
20
|
-
export declare abstract class AbstractSolanaAccessTokenSnapshotService extends AbstractSolanaSnapshotService<SolanaAccessTokenEvent<bigint, string>,
|
|
21
|
+
export declare abstract class AbstractSolanaAccessTokenSnapshotService extends AbstractSolanaSnapshotService<SolanaAccessTokenEvent<bigint, string>, SolanaAccessTokenSnapshotPayload, SolanaAccessTokenSerializedSnapshot> {
|
|
21
22
|
constructor(accessTokenEventFetcher: SolanaBlockchainEventEmitter);
|
|
22
23
|
private _merkleTree;
|
|
23
24
|
private _senderAddresses;
|
|
@@ -28,7 +29,7 @@ export declare abstract class AbstractSolanaAccessTokenSnapshotService extends A
|
|
|
28
29
|
protected serializeSnapshot(snapshot: SolanaSnapshot<SolanaAccessTokenSnapshotPayload>): SolanaAccessTokenSerializedSnapshot;
|
|
29
30
|
protected deserializeSnapshot(serializedSnapshot: SolanaAccessTokenSerializedSnapshot): SolanaSnapshot<SolanaAccessTokenSnapshotPayload>;
|
|
30
31
|
protected acceptEvent(event: SolanaAccessTokenEvent<bigint, string>, _slot: number): boolean;
|
|
31
|
-
protected mapEvent(event:
|
|
32
|
+
protected mapEvent(event: BlockchainEvent): SolanaAccessTokenEvent<bigint, string>;
|
|
32
33
|
protected getSnapshotPayload(): SolanaAccessTokenSnapshotPayload;
|
|
33
34
|
protected populateSnapshot({ payload: { merkleTree, senderAddresses, senderAddressIndexMap }, }: SolanaSnapshot<SolanaAccessTokenSnapshotPayload>): void;
|
|
34
35
|
}
|
|
@@ -8,10 +8,10 @@ import { advancedToBigInt as t } from "../../../functions/utils/amounts.utils.mj
|
|
|
8
8
|
import { MerkleTree as m } from "../../merkle-tree/MerkleTree.mjs";
|
|
9
9
|
import "ethers";
|
|
10
10
|
import "../../../error-handling/error-codes.constants.mjs";
|
|
11
|
-
import { AbstractSolanaSnapshotService as
|
|
12
|
-
import { contructMerkleTreeFromSerialized as
|
|
11
|
+
import { AbstractSolanaSnapshotService as c } from "./AbstractSolanaSnapshotService.mjs";
|
|
12
|
+
import { contructMerkleTreeFromSerialized as l } from "../../../functions/utils/merkleTree.utils.mjs";
|
|
13
13
|
import { PublicKey as p } from "@solana/web3.js";
|
|
14
|
-
class
|
|
14
|
+
class N extends c {
|
|
15
15
|
constructor(e) {
|
|
16
16
|
super(e, "NewAccessKeyAdded");
|
|
17
17
|
}
|
|
@@ -40,7 +40,7 @@ class B extends l {
|
|
|
40
40
|
}
|
|
41
41
|
deserializeSnapshot(e) {
|
|
42
42
|
let s, r;
|
|
43
|
-
return e.latestBlockNumber && e.merkleTree ? s =
|
|
43
|
+
return e.latestBlockNumber && e.merkleTree ? s = l(e.merkleTree) : s = m.create(o, 0n), e.latestBlockNumber && e.senderAddressIndexMap ? r = new Map(
|
|
44
44
|
e.senderAddressIndexMap.map(({ address: d, index: n }) => [d, n])
|
|
45
45
|
) : r = /* @__PURE__ */ new Map(), {
|
|
46
46
|
latestBlockNumber: e.latestBlockNumber ?? 0,
|
|
@@ -62,7 +62,7 @@ class B extends l {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
mapEvent(e) {
|
|
65
|
-
const
|
|
65
|
+
const s = e.getArg("access_key"), r = e.getArg("index"), d = e.getArg("sender_address");
|
|
66
66
|
return {
|
|
67
67
|
access_key: t(s),
|
|
68
68
|
index: t(r),
|
|
@@ -83,5 +83,5 @@ class B extends l {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
export {
|
|
86
|
-
|
|
86
|
+
N as AbstractSolanaAccessTokenSnapshotService
|
|
87
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const p=require("../../merkle-tree/MerkleTree.cjs");require("ethers");require("../../../error-handling/error-codes.constants.cjs");const c=require("../../../functions/utils/amounts.utils.cjs"),d=require("./AbstractSolanaSnapshotService.cjs"),y=require("../../../functions/utils/merkleTree.utils.cjs"),o=require("../../crypto-keys/decodeUTXO.cjs");class O extends d.AbstractSolanaSnapshotService{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=y.contructMerkleTreeFromSerialized(e.merkleTree):t=p.MerkleTree.create(m.poseidonFunction,0n);const n=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:n||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:e,encryptedOutputs:t}}){this._merkleTree=e,this._encryptedOutputs=t}async mapEvent(e){const t=e.getArg("commitment"),n=e.getArg("index"),r=e.getArg("encrypted_output"),s=e.getArg("on_chain_data"),i=c.advancedToBigInt(t),u=c.advancedToBigInt(n);if(r.length===0){const l=o.encodeSolanaOnChainUtxo(s);return{commitment:i,index:u,encryptedOutput:l}}const a=`0x${Buffer.from(r).toString("hex")}`;return{commitment:i,index:u,encryptedOutput:a}}acceptEvent(e,t,n,r){if(!this.encryptedOutputs.map(s=>s.value).includes(e.encryptedOutput)){if(!this._merkleTree.insert(e.commitment,e.index>=0?e.index:-1n*e.index))return!1;const i={value:e.encryptedOutput,isPositive:!o.isSolanaOnChainUtxo(e.encryptedOutput),isBlocked:r??!1};return this._encryptedOutputs.push(i),!0}return!1}}exports.AbstractSolanaCommitmentsSnapshotService=O;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { MerkleTree, MerkleTreeJson } from '../../merkle-tree';
|
|
2
|
-
import { CommitmentEvent, EncryptedOutputWithSign
|
|
2
|
+
import { CommitmentEvent, EncryptedOutputWithSign } from '../../../types';
|
|
3
3
|
import { AbstractSolanaSnapshotService, SolanaSnapshot } from './AbstractSolanaSnapshotService';
|
|
4
4
|
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
5
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
5
6
|
export type SolanaCommitmentsSnapshotPayload = {
|
|
6
7
|
readonly merkleTree: MerkleTree<bigint>;
|
|
7
8
|
readonly encryptedOutputs: EncryptedOutputWithSign[];
|
|
@@ -11,7 +12,7 @@ export type SolanaCommitmentsSerializedSnapshot = {
|
|
|
11
12
|
merkleTree?: MerkleTreeJson;
|
|
12
13
|
encryptedOutputs?: EncryptedOutputWithSign<string>[];
|
|
13
14
|
};
|
|
14
|
-
export declare abstract class AbstractSolanaCommitmentsSnapshotService extends AbstractSolanaSnapshotService<CommitmentEvent<bigint>,
|
|
15
|
+
export declare abstract class AbstractSolanaCommitmentsSnapshotService extends AbstractSolanaSnapshotService<CommitmentEvent<bigint>, SolanaCommitmentsSnapshotPayload, SolanaCommitmentsSerializedSnapshot> {
|
|
15
16
|
constructor(solanaEventEmitter: SolanaBlockchainEventEmitter);
|
|
16
17
|
private _merkleTree;
|
|
17
18
|
private _encryptedOutputs;
|
|
@@ -24,6 +25,6 @@ export declare abstract class AbstractSolanaCommitmentsSnapshotService extends A
|
|
|
24
25
|
encryptedOutputs: EncryptedOutputWithSign<boolean>[];
|
|
25
26
|
};
|
|
26
27
|
protected populateSnapshot({ payload: { merkleTree, encryptedOutputs }, }: SolanaSnapshot<SolanaCommitmentsSnapshotPayload>): void;
|
|
27
|
-
protected mapEvent(event:
|
|
28
|
+
protected mapEvent(event: BlockchainEvent): Promise<CommitmentEvent<bigint>>;
|
|
28
29
|
protected acceptEvent(event: CommitmentEvent<bigint>, _slot: number, _signature?: string, isBlocked?: boolean): boolean;
|
|
29
30
|
}
|
|
@@ -6,11 +6,11 @@ import "buffer";
|
|
|
6
6
|
import { MerkleTree as a } from "../../merkle-tree/MerkleTree.mjs";
|
|
7
7
|
import "ethers";
|
|
8
8
|
import "../../../error-handling/error-codes.constants.mjs";
|
|
9
|
-
import { advancedToBigInt as
|
|
9
|
+
import { advancedToBigInt as c } from "../../../functions/utils/amounts.utils.mjs";
|
|
10
10
|
import { AbstractSolanaSnapshotService as l } from "./AbstractSolanaSnapshotService.mjs";
|
|
11
11
|
import { contructMerkleTreeFromSerialized as d } from "../../../functions/utils/merkleTree.utils.mjs";
|
|
12
12
|
import { encodeSolanaOnChainUtxo as y, isSolanaOnChainUtxo as O } from "../../crypto-keys/decodeUTXO.mjs";
|
|
13
|
-
class
|
|
13
|
+
class P extends l {
|
|
14
14
|
constructor(e) {
|
|
15
15
|
super(e, "NewCommitment");
|
|
16
16
|
}
|
|
@@ -61,20 +61,20 @@ class I extends l {
|
|
|
61
61
|
this._merkleTree = e, this._encryptedOutputs = t;
|
|
62
62
|
}
|
|
63
63
|
async mapEvent(e) {
|
|
64
|
-
const
|
|
64
|
+
const t = e.getArg("commitment"), n = e.getArg("index"), r = e.getArg("encrypted_output"), i = e.getArg("on_chain_data"), s = c(t), o = c(n);
|
|
65
65
|
if (r.length === 0) {
|
|
66
|
-
const
|
|
66
|
+
const u = y(i);
|
|
67
67
|
return {
|
|
68
68
|
commitment: s,
|
|
69
69
|
index: o,
|
|
70
|
-
encryptedOutput:
|
|
70
|
+
encryptedOutput: u
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
const
|
|
73
|
+
const m = `0x${Buffer.from(r).toString("hex")}`;
|
|
74
74
|
return {
|
|
75
75
|
commitment: s,
|
|
76
76
|
index: o,
|
|
77
|
-
encryptedOutput:
|
|
77
|
+
encryptedOutput: m
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
acceptEvent(e, t, n, r) {
|
|
@@ -92,5 +92,5 @@ class I extends l {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
export {
|
|
95
|
-
|
|
95
|
+
P as AbstractSolanaCommitmentsSnapshotService
|
|
96
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class l{solanaBlockchainEventEmitter;eventName;constructor(e,s){this.solanaBlockchainEventEmitter=e,this.eventName=s,e.addEventProcessorFunction(this.processEventsPage.bind(this))}get latestBlockNumber(){return this.solanaBlockchainEventEmitter.latestBlockNumber}get chainId(){return this.solanaBlockchainEventEmitter.chainId}intervalClear(){this.solanaBlockchainEventEmitter.intervalClear()}async processEventsPage(e){const s=[],a=new Set;e.forEach(({eventName:t,transactionHash:n})=>{t==="BlockedUtxosCreated"&&a.add(n)});const c=e.filter(t=>t.eventName===this.eventName).map(async t=>{try{const n=await this.mapEvent(t),i=a.has(t.transactionHash);return await this.acceptEvent(n,t.blockNumber,t.transactionHash,i)?n:null}catch{return null}}),r=(await Promise.all(c)).filter(t=>t!==null);s.push(...r);const o=s.length;return await this.afterEventsAccepted(o),s.length}}exports.AbstractSolanaEventService=l;
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
1
2
|
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
2
|
-
export interface SolanaEvent {
|
|
3
|
-
signature: string;
|
|
4
|
-
slot: number;
|
|
5
|
-
blockTime: number;
|
|
6
|
-
programId: any;
|
|
7
|
-
data: any;
|
|
8
|
-
eventName: string;
|
|
9
|
-
}
|
|
10
3
|
type PromiseOrValue<T> = T | Promise<T>;
|
|
11
|
-
export declare abstract class AbstractSolanaEventService<EventType
|
|
4
|
+
export declare abstract class AbstractSolanaEventService<EventType> {
|
|
12
5
|
protected solanaBlockchainEventEmitter: SolanaBlockchainEventEmitter;
|
|
13
6
|
protected readonly eventName: string;
|
|
14
7
|
protected constructor(solanaBlockchainEventEmitter: SolanaBlockchainEventEmitter, eventName: string);
|
|
@@ -17,7 +10,7 @@ export declare abstract class AbstractSolanaEventService<EventType, SerializedEv
|
|
|
17
10
|
intervalClear(): void;
|
|
18
11
|
private processEventsPage;
|
|
19
12
|
protected abstract acceptEvent(event: EventType, slot: number, signature?: string, isBlocked?: boolean): boolean | Promise<boolean>;
|
|
20
|
-
protected abstract mapEvent(event:
|
|
13
|
+
protected abstract mapEvent(event: BlockchainEvent): PromiseOrValue<EventType>;
|
|
21
14
|
protected abstract afterEventsAccepted(eventsCount: number): Promise<void>;
|
|
22
15
|
}
|
|
23
16
|
export {};
|
|
@@ -15,20 +15,20 @@ class u {
|
|
|
15
15
|
}
|
|
16
16
|
async processEventsPage(e) {
|
|
17
17
|
const s = [], a = /* @__PURE__ */ new Set();
|
|
18
|
-
e.forEach(({ eventName: t,
|
|
18
|
+
e.forEach(({ eventName: t, transactionHash: n }) => {
|
|
19
19
|
t === "BlockedUtxosCreated" && a.add(n);
|
|
20
20
|
});
|
|
21
21
|
const c = e.filter((t) => t.eventName === this.eventName).map(async (t) => {
|
|
22
22
|
try {
|
|
23
|
-
const n = await this.mapEvent(t
|
|
24
|
-
return await this.acceptEvent(n, t.
|
|
23
|
+
const n = await this.mapEvent(t), i = a.has(t.transactionHash);
|
|
24
|
+
return await this.acceptEvent(n, t.blockNumber, t.transactionHash, i) ? n : null;
|
|
25
25
|
} catch {
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
28
|
}), r = (await Promise.all(c)).filter((t) => t !== null);
|
|
29
29
|
s.push(...r);
|
|
30
|
-
const
|
|
31
|
-
return await this.afterEventsAccepted(
|
|
30
|
+
const o = s.length;
|
|
31
|
+
return await this.afterEventsAccepted(o), s.length;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("ethers"),i=require("../../../functions/utils/amounts.utils.cjs"),n=require("./AbstractSolanaSnapshotService.cjs");class s extends n.AbstractSolanaSnapshotService{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(t){return console.error(t),!1}}mapEvent(e){return{nullifier:l.BigNumber.from(i.advancedToBigInt(e.getArg("nullifier"))).toHexString()}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:e}}){this._nullifiers=e}}exports.AbstractSolanaNullifierSnapshotService=s;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NullifierEvent } from '../../../types/commitments.types';
|
|
2
2
|
import { AbstractSolanaSnapshotService, SolanaSnapshot } from './AbstractSolanaSnapshotService';
|
|
3
3
|
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
4
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
4
5
|
export type SolanaNullifierSnapshotPayload = {
|
|
5
6
|
readonly nullifiers: Set<string>;
|
|
6
7
|
};
|
|
@@ -8,14 +9,14 @@ export type SolanaNullifierSerializedSnapshot = {
|
|
|
8
9
|
latestBlockNumber?: number;
|
|
9
10
|
nullifiers?: string[];
|
|
10
11
|
};
|
|
11
|
-
export declare abstract class AbstractSolanaNullifierSnapshotService extends AbstractSolanaSnapshotService<NullifierEvent<string>,
|
|
12
|
+
export declare abstract class AbstractSolanaNullifierSnapshotService extends AbstractSolanaSnapshotService<NullifierEvent<string>, SolanaNullifierSnapshotPayload, SolanaNullifierSerializedSnapshot> {
|
|
12
13
|
constructor(solanaEventEmitter: SolanaBlockchainEventEmitter);
|
|
13
14
|
private _nullifiers;
|
|
14
15
|
get nullifiers(): Set<string>;
|
|
15
16
|
protected serializeSnapshot(snapshot: SolanaSnapshot<SolanaNullifierSnapshotPayload>): SolanaNullifierSerializedSnapshot;
|
|
16
17
|
protected deserializeSnapshot(serializedSnapshot: SolanaNullifierSerializedSnapshot): SolanaSnapshot<SolanaNullifierSnapshotPayload>;
|
|
17
18
|
protected acceptEvent(event: NullifierEvent<string>, _slot: number): boolean;
|
|
18
|
-
protected mapEvent(event:
|
|
19
|
+
protected mapEvent(event: BlockchainEvent): NullifierEvent<string>;
|
|
19
20
|
protected getSnapshotPayload(): SolanaNullifierSnapshotPayload;
|
|
20
21
|
protected populateSnapshot({ payload: { nullifiers } }: SolanaSnapshot<SolanaNullifierSnapshotPayload>): void;
|
|
21
22
|
}
|
|
@@ -4,7 +4,7 @@ export interface SolanaSnapshot<SnapshotPayloadType> {
|
|
|
4
4
|
readonly latestBlockNumber: number;
|
|
5
5
|
readonly payload: SnapshotPayloadType;
|
|
6
6
|
}
|
|
7
|
-
export declare abstract class AbstractSolanaSnapshotService<EventType,
|
|
7
|
+
export declare abstract class AbstractSolanaSnapshotService<EventType, SnapshotPayloadType, SerializedSnapshotType> extends AbstractSolanaEventService<EventType> {
|
|
8
8
|
private savedLatestSlot;
|
|
9
9
|
protected constructor(solanaBlockchainEventEmitter: SolanaBlockchainEventEmitter, eventName: string);
|
|
10
10
|
init(): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../../../types/events.types.cjs"),c=require("./SolanaBlockchainEventEmitter.cjs"),o=require("../helpers/ClientEventHelper.cjs");class E extends c.SolanaBlockchainEventEmitter{clientEventHelper;constructor(e,n,i,r,s,a,t){super(e,n,i,r,!1,s,a),t&&this.setIdl(t),this.clientEventHelper=new o.ClientEventHelper(e,l.EventCategory.MainContractEvents)}clear(){this.clientEventHelper.clear()}startUpdateListener(){this.clientEventHelper.startUpdateListener(async e=>{await this.eventsFetchingMutex.runExclusive(async()=>{await this.processEvents(e)})})}}exports.ClientSolanaBlockchainEventEmitter=E;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
+
import type { Idl } from '@coral-xyz/anchor';
|
|
3
|
+
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
4
|
+
import { Mutex } from 'async-mutex';
|
|
5
|
+
import { ClientEventHelper } from '../helpers/ClientEventHelper';
|
|
6
|
+
export declare class ClientSolanaBlockchainEventEmitter extends SolanaBlockchainEventEmitter {
|
|
7
|
+
clientEventHelper: ClientEventHelper;
|
|
8
|
+
constructor(chainId: number, connection: Connection, programId: PublicKey, initialSlot: number, eventsFetchingMutex: Mutex, maxPageSize?: number, idl?: Idl);
|
|
9
|
+
protected clear(): void;
|
|
10
|
+
protected startUpdateListener(): Promise<void> | void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EventCategory as l } from "../../../types/events.types.mjs";
|
|
2
|
+
import { SolanaBlockchainEventEmitter as c } from "./SolanaBlockchainEventEmitter.mjs";
|
|
3
|
+
import { ClientEventHelper as o } from "../helpers/ClientEventHelper.mjs";
|
|
4
|
+
class m extends c {
|
|
5
|
+
clientEventHelper;
|
|
6
|
+
constructor(e, n, r, i, s, a, t) {
|
|
7
|
+
super(e, n, r, i, !1, s, a), t && this.setIdl(t), this.clientEventHelper = new o(e, l.MainContractEvents);
|
|
8
|
+
}
|
|
9
|
+
clear() {
|
|
10
|
+
this.clientEventHelper.clear();
|
|
11
|
+
}
|
|
12
|
+
startUpdateListener() {
|
|
13
|
+
this.clientEventHelper.startUpdateListener(async (e) => {
|
|
14
|
+
await this.eventsFetchingMutex.runExclusive(async () => {
|
|
15
|
+
await this.processEvents(e);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
m as ClientSolanaBlockchainEventEmitter
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./SolanaBlockchainEventEmitter.cjs"),t=require("../helpers/PollingEventHelper.cjs");class l extends e.SolanaBlockchainEventEmitter{pollingEventHelper=new t.PollingEventHelper;clear(){this.pollingEventHelper.clear()}startUpdateListener(){this.pollingEventHelper.startUpdateListener(async()=>{await this.retrieveEvents(this.latestBlockNumber)})}}exports.PollingSolanaBlockchainEventEmitter=l;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
|
|
2
|
+
export declare class PollingSolanaBlockchainEventEmitter extends SolanaBlockchainEventEmitter {
|
|
3
|
+
private pollingEventHelper;
|
|
4
|
+
protected clear(): void;
|
|
5
|
+
protected startUpdateListener(): Promise<void> | void;
|
|
6
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SolanaBlockchainEventEmitter as e } from "./SolanaBlockchainEventEmitter.mjs";
|
|
2
|
+
import { PollingEventHelper as t } from "../helpers/PollingEventHelper.mjs";
|
|
3
|
+
class i extends e {
|
|
4
|
+
pollingEventHelper = new t();
|
|
5
|
+
clear() {
|
|
6
|
+
this.pollingEventHelper.clear();
|
|
7
|
+
}
|
|
8
|
+
startUpdateListener() {
|
|
9
|
+
this.pollingEventHelper.startUpdateListener(async () => {
|
|
10
|
+
await this.retrieveEvents(this.latestBlockNumber);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
i as PollingSolanaBlockchainEventEmitter
|
|
16
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@coral-xyz/anchor"),d=require("../../../functions/utils/resolve-sync.utils.cjs"),l=require("../../../error-handling/logger.cjs"),m=require("../../BlockchainEvent/BlockchainEvent.cjs"),g=1e3;class S{_chainId;connection;programId;_latestSlot;_initialSlot;onEventsProcessed;eventProcessors=new Set;maxPageSize;isReady=!1;isServer;inProgress;anchorParser;eventsFetchingMutex;constructor(e,s,a,t,r,c,o){this._chainId=e,this.connection=s,this.programId=a,this._initialSlot=t,this.maxPageSize=o,this.isServer=r,this.inProgress=!1,this.eventsFetchingMutex=c}get chainId(){return this._chainId}get latestBlockNumber(){return this._latestSlot??this._initialSlot}setIdl(e){try{const s=new u.BorshCoder(e);this.anchorParser=new u.EventParser(this.programId,s)}catch(s){l.Logger.error("Failed to initialize Anchor EventParser:",s),this.anchorParser=void 0}}syncFromAtMost(e){(this._latestSlot===void 0||e<this._latestSlot)&&(this._latestSlot=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 getLastSlotForEventRequest(){const e=await this.connection.getSlot();return this.isServer?Math.max(this.latestBlockNumber,e-32+1):e}async retrieveEvents(e,s=!1){const a=e;return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!s)return!1;this.inProgress=!0;const r=await this.getLastSlotForEventRequest();if(r<a)return this.inProgress=!1,!1;const c=d.getSequence(a,r,this.maxPageSize),o=[];await d.resolveSync(c.map(({from:n,to:i})=>async()=>{const v=await this.getProgramEvents(n,i);o.push(...v)}));const h=o.map(n=>m.BlockchainEvent.fromSolanaEvent(n));return await this.processEvents(h),this._latestSlot=r,this.inProgress=!1,!0}catch(r){return l.Logger.error("retrieveEvents error:",r),this.inProgress=!1,!1}})}async getProgramEvents(e,s){const a=[];try{const t=await this.connection.getSignaturesForAddress(this.programId,{limit:g,before:void 0});let r=t.length;for(;r>=g;){const n=t[t.length-1],i=await this.connection.getSignaturesForAddress(this.programId,{limit:g,before:n.signature});if(i.length===0)break;t.push(...i),r=i.length}const o=t.filter(n=>n.slot>=e&&n.slot<=s).map(async n=>{try{const i=await this.connection.getTransaction(n.signature,{commitment:"confirmed",maxSupportedTransactionVersion:0});return i&&i.meta&&i.meta.logMessages?this.parseLogsForEvents(i.meta.logMessages,n.signature,n.slot,i.blockTime||null):[]}catch(i){return l.Logger.error(`Failed to get transaction ${n.signature}:`,i),[]}}),h=await Promise.all(o);a.push(...h.flat())}catch(t){l.Logger.error("Error getting program events:",t)}return a}parseLogsForEvents(e,s,a,t){if(!this.anchorParser)return[];try{return Array.from(this.anchorParser.parseLogs(e)).map(({name:c,data:o})=>({signature:s,slot:a,blockTime:t||0,programId:this.programId,data:o,eventName:c}))}catch(r){return l.Logger.error("Anchor EventParser failed; falling back to generic parsing:",r),[]}}async processEvents(e){const a=(await Promise.all([...this.eventProcessors].map(t=>t(e)))).reduce((t,r)=>t+r,0);this.onEventsProcessed?.(a)}}exports.SolanaBlockchainEventEmitter=S;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
2
|
import type { Idl } from '@coral-xyz/anchor';
|
|
3
3
|
import { Mutex } from 'async-mutex';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
blockTime: number;
|
|
8
|
-
programId: PublicKey;
|
|
9
|
-
data: any;
|
|
10
|
-
eventName: string;
|
|
11
|
-
}
|
|
12
|
-
export type SolanaEventProcessorFunction = (events: SolanaEvent[]) => Promise<number> | number;
|
|
13
|
-
export declare class SolanaBlockchainEventEmitter {
|
|
4
|
+
import { EventProcessorFunction } from '../../../types/events.types';
|
|
5
|
+
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
|
|
6
|
+
export declare abstract class SolanaBlockchainEventEmitter {
|
|
14
7
|
private readonly _chainId;
|
|
15
8
|
readonly connection: Connection;
|
|
16
9
|
readonly programId: PublicKey;
|
|
@@ -21,10 +14,9 @@ export declare class SolanaBlockchainEventEmitter {
|
|
|
21
14
|
private readonly maxPageSize?;
|
|
22
15
|
private isReady;
|
|
23
16
|
private isServer;
|
|
24
|
-
private intervalId?;
|
|
25
17
|
private inProgress;
|
|
26
18
|
private anchorParser?;
|
|
27
|
-
|
|
19
|
+
protected eventsFetchingMutex: Mutex;
|
|
28
20
|
constructor(chainId: number, connection: Connection, programId: PublicKey, initialSlot: number, isServer: boolean, eventsFetchingMutex: Mutex, maxPageSize?: number);
|
|
29
21
|
get chainId(): number;
|
|
30
22
|
get latestBlockNumber(): number;
|
|
@@ -33,10 +25,12 @@ export declare class SolanaBlockchainEventEmitter {
|
|
|
33
25
|
intervalClear(): void;
|
|
34
26
|
init(): Promise<void>;
|
|
35
27
|
private requireReady;
|
|
36
|
-
addEventProcessorFunction(eventProcessorFunction:
|
|
28
|
+
addEventProcessorFunction(eventProcessorFunction: EventProcessorFunction): void;
|
|
37
29
|
private getLastSlotForEventRequest;
|
|
38
30
|
retrieveEvents(fromBlock: number, useForce?: boolean): Promise<boolean>;
|
|
39
31
|
private getProgramEvents;
|
|
40
32
|
private parseLogsForEvents;
|
|
33
|
+
protected processEvents(events: BlockchainEvent[]): Promise<void>;
|
|
34
|
+
protected abstract clear(): void;
|
|
35
|
+
protected abstract startUpdateListener(): Promise<void> | void;
|
|
41
36
|
}
|
|
42
|
-
export {};
|