@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,19 +1,19 @@
|
|
|
1
1
|
import { ethers as k } from "ethers";
|
|
2
2
|
import { get as P, update as I } from "idb-keyval";
|
|
3
3
|
import { Mutex as b } from "async-mutex";
|
|
4
|
-
import { chainIds as f, ALCHEMY_API_KEY as T
|
|
4
|
+
import { chainIds as f, ALCHEMY_API_KEY as T } from "../../constants/chains.constants.mjs";
|
|
5
5
|
import { Logger as C } from "../../error-handling/logger.mjs";
|
|
6
|
-
import { getStateKey as
|
|
7
|
-
import { StorageKeys as
|
|
8
|
-
import { httpClient as
|
|
6
|
+
import { getStateKey as S } from "../../functions/utils/string.utils.mjs";
|
|
7
|
+
import { StorageKeys as y } from "../../types/cache.types.mjs";
|
|
8
|
+
import { httpClient as M } from "../http/HttpClient.mjs";
|
|
9
9
|
import { API as $ } from "../../API/API.mjs";
|
|
10
10
|
import { RevokeType as w } from "../../types/approvals.types.mjs";
|
|
11
|
-
import { isNFTToken as
|
|
11
|
+
import { isNFTToken as R } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
12
12
|
import { createCustomRpcProvider as F } from "../../functions/utils/create-provider.mjs";
|
|
13
|
-
import { EVENTS_INITIAL_BLOCKS as
|
|
14
|
-
import { caseInsensitiveEqual as
|
|
13
|
+
import { EVENTS_INITIAL_BLOCKS as U } from "../../constants/events.constants.mjs";
|
|
14
|
+
import { caseInsensitiveEqual as E } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
15
15
|
import { zeroAddress as B } from "../../constants/protocol.constants.mjs";
|
|
16
|
-
class
|
|
16
|
+
class O {
|
|
17
17
|
updateMutexes = {};
|
|
18
18
|
approvalTopic = k.utils.id("Approval(address,address,uint256)");
|
|
19
19
|
approvalForAllTopic = k.utils.id("ApprovalForAll(address,address,bool)");
|
|
@@ -38,88 +38,85 @@ class N {
|
|
|
38
38
|
return `https://${s}.g.alchemy.com/v2/${T}`;
|
|
39
39
|
}
|
|
40
40
|
async getApprovals(e, s) {
|
|
41
|
-
const r =
|
|
42
|
-
return (await P(
|
|
41
|
+
const r = S(s, e);
|
|
42
|
+
return (await P(y.EVENTS_PUBLIC_APPROVALS))?.[r] || [];
|
|
43
43
|
}
|
|
44
44
|
async getLastProcessedBlock(e, s) {
|
|
45
|
-
const r = await P(
|
|
46
|
-
return r[
|
|
45
|
+
const r = await P(y.PUBLIC_APPROVALS_LAST_PROCESSED_BLOCKS) || {}, c = S(s, e);
|
|
46
|
+
return r[c] || U[e];
|
|
47
47
|
}
|
|
48
48
|
async updateLastProcessedBlock(e, s, r) {
|
|
49
|
-
await I(
|
|
50
|
-
const
|
|
49
|
+
await I(y.PUBLIC_APPROVALS_LAST_PROCESSED_BLOCKS, (c = {}) => {
|
|
50
|
+
const p = S(s, e);
|
|
51
51
|
return {
|
|
52
|
-
...
|
|
53
|
-
[
|
|
52
|
+
...c,
|
|
53
|
+
[p]: r
|
|
54
54
|
};
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
async getApprovalEvents(e, s) {
|
|
58
58
|
try {
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
topics: [[this.approvalTopic, this.approvalForAllTopic], E],
|
|
67
|
-
fromBlock: i,
|
|
68
|
-
toBlock: l
|
|
59
|
+
const r = F(s), c = await this.getLastProcessedBlock(s, e) + 1, p = await r.getBlockNumber();
|
|
60
|
+
if (c > p)
|
|
61
|
+
return { approvalEvents: [], latestBlock: p };
|
|
62
|
+
const m = k.utils.hexZeroPad(e.toLowerCase(), 32), L = {
|
|
63
|
+
topics: [[this.approvalTopic, this.approvalForAllTopic], m],
|
|
64
|
+
fromBlock: c,
|
|
65
|
+
toBlock: p
|
|
69
66
|
};
|
|
70
|
-
return { approvalEvents: await
|
|
67
|
+
return { approvalEvents: await r.getLogs(L), latestBlock: p };
|
|
71
68
|
} catch (r) {
|
|
72
69
|
return C.error("Failed to fetch approval events", r), { approvalEvents: [], latestBlock: void 0 };
|
|
73
70
|
}
|
|
74
71
|
}
|
|
75
72
|
async checkCurrentAllowances(e, s, r) {
|
|
76
|
-
const
|
|
73
|
+
const c = this.getAlchemyUrl(e), p = `0x${s.substring(2).padStart(64, "0")}`, m = [...new Set(r.map((t) => t.contractAddress))], L = (await $.tokensInfoCall(e, m)).filter((t) => !!t), d = new Map(L.map((t) => [t.erc20TokenAddress.toLowerCase(), t])), i = [], v = [];
|
|
77
74
|
if (r.forEach((t, o) => {
|
|
78
|
-
const a =
|
|
75
|
+
const a = d.get(t.contractAddress.toLowerCase());
|
|
79
76
|
if (a)
|
|
80
|
-
if (!
|
|
81
|
-
|
|
77
|
+
if (!R(a))
|
|
78
|
+
i.push({
|
|
82
79
|
jsonrpc: "2.0",
|
|
83
|
-
id:
|
|
80
|
+
id: i.length,
|
|
84
81
|
method: "alchemy_getTokenAllowance",
|
|
85
82
|
params: [{ contract: t.contractAddress, owner: s, spender: t.spenderAddress }]
|
|
86
83
|
}), v.push({ pairIndex: o, type: w.ERC20 });
|
|
87
84
|
else {
|
|
88
|
-
const
|
|
89
|
-
|
|
85
|
+
const A = `0x${t.spenderAddress.substring(2).padStart(64, "0")}`, g = `${this.isApprovedForAllSelector}${p.substring(2)}${A.substring(2)}`;
|
|
86
|
+
i.push({
|
|
90
87
|
jsonrpc: "2.0",
|
|
91
|
-
id:
|
|
88
|
+
id: i.length,
|
|
92
89
|
method: "eth_call",
|
|
93
90
|
params: [{ to: t.contractAddress, data: g }, "latest"]
|
|
94
91
|
}), v.push({ pairIndex: o, type: w.approvedForAll }), t.tokenIds && t.tokenIds.size > 0 && t.tokenIds.forEach((h) => {
|
|
95
92
|
const _ = k.BigNumber.from(h).toHexString().substring(2).padStart(64, "0"), x = `${this.getApprovedSelector}${_}`;
|
|
96
|
-
|
|
93
|
+
i.push({
|
|
97
94
|
jsonrpc: "2.0",
|
|
98
|
-
id:
|
|
95
|
+
id: i.length,
|
|
99
96
|
method: "eth_call",
|
|
100
97
|
params: [{ to: t.contractAddress, data: x }, "latest"]
|
|
101
98
|
}), v.push({ pairIndex: o, type: w.tokenId, tokenId: h });
|
|
102
99
|
});
|
|
103
100
|
}
|
|
104
|
-
}),
|
|
101
|
+
}), i.length === 0)
|
|
105
102
|
return [];
|
|
106
|
-
const n = await
|
|
103
|
+
const n = await M.post(c, i), l = [], u = /* @__PURE__ */ new Set();
|
|
107
104
|
return n.forEach((t, o) => {
|
|
108
105
|
const a = v[o];
|
|
109
106
|
if (!a)
|
|
110
107
|
return;
|
|
111
|
-
const
|
|
112
|
-
if (!(!g ||
|
|
108
|
+
const A = r[a.pairIndex], g = d.get(A.contractAddress.toLowerCase());
|
|
109
|
+
if (!(!g || E(A.spenderAddress, B)) && !t?.error && t?.result && t.result !== "0x")
|
|
113
110
|
try {
|
|
114
111
|
if (a.type === w.ERC20 && BigInt(t.result) > 0n)
|
|
115
|
-
|
|
112
|
+
l.push({ token: g, spenderAddress: A.spenderAddress, allowance: BigInt(t.result) });
|
|
116
113
|
else if (a.type === w.approvedForAll && BigInt(t.result) === 1n)
|
|
117
|
-
|
|
118
|
-
else if (a.type === w.tokenId && !
|
|
114
|
+
u.add(a.pairIndex), l.push({ token: g, spenderAddress: A.spenderAddress, allowance: 1n });
|
|
115
|
+
else if (a.type === w.tokenId && !u.has(a.pairIndex)) {
|
|
119
116
|
const h = `0x${t.result.substring(26)}`.toLowerCase();
|
|
120
|
-
!
|
|
117
|
+
!E(h, B) && E(h, A.spenderAddress) && l.push({
|
|
121
118
|
token: g,
|
|
122
|
-
spenderAddress:
|
|
119
|
+
spenderAddress: A.spenderAddress,
|
|
123
120
|
allowance: 1n,
|
|
124
121
|
tokenId: a.tokenId
|
|
125
122
|
});
|
|
@@ -127,49 +124,49 @@ class N {
|
|
|
127
124
|
} catch (h) {
|
|
128
125
|
C.error("Error processing approval response", h);
|
|
129
126
|
}
|
|
130
|
-
}),
|
|
127
|
+
}), l;
|
|
131
128
|
}
|
|
132
129
|
async fetchAndUpdatePublicApprovals(e, s) {
|
|
133
|
-
const r =
|
|
130
|
+
const r = S(e, s);
|
|
134
131
|
await this.getMutex(r).runExclusive(async () => {
|
|
135
132
|
try {
|
|
136
|
-
const { approvalEvents:
|
|
137
|
-
if (!
|
|
133
|
+
const { approvalEvents: p, latestBlock: m } = await this.getApprovalEvents(e, s);
|
|
134
|
+
if (!m)
|
|
138
135
|
return;
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
const
|
|
142
|
-
let o =
|
|
143
|
-
o || (o = { contractAddress:
|
|
144
|
-
}),
|
|
136
|
+
const L = await this.getApprovals(s, e), d = /* @__PURE__ */ new Map();
|
|
137
|
+
if (L.forEach((n) => {
|
|
138
|
+
const l = n.token.erc20TokenAddress.toLowerCase(), u = n.spenderAddress.toLowerCase(), t = `${l}_${u}`;
|
|
139
|
+
let o = d.get(t);
|
|
140
|
+
o || (o = { contractAddress: l, spenderAddress: u, tokenIds: /* @__PURE__ */ new Set() }, d.set(t, o)), n.tokenId && o.tokenIds && o.tokenIds.add(n.tokenId);
|
|
141
|
+
}), p.forEach((n) => {
|
|
145
142
|
if (!n.topics[2])
|
|
146
143
|
return;
|
|
147
|
-
const
|
|
148
|
-
if (
|
|
144
|
+
const l = n.address.toLowerCase(), u = `0x${n.topics[2].substring(26)}`.toLowerCase();
|
|
145
|
+
if (E(u, B))
|
|
149
146
|
return;
|
|
150
|
-
const t = `${
|
|
151
|
-
let o =
|
|
152
|
-
if (o || (o = { contractAddress:
|
|
147
|
+
const t = `${l}_${u}`;
|
|
148
|
+
let o = d.get(t);
|
|
149
|
+
if (o || (o = { contractAddress: l, spenderAddress: u, tokenIds: /* @__PURE__ */ new Set() }, d.set(t, o)), n.topics.length === 4 && o.tokenIds) {
|
|
153
150
|
const a = BigInt(n.topics[3]).toString();
|
|
154
151
|
o.tokenIds.add(a);
|
|
155
152
|
}
|
|
156
|
-
}),
|
|
157
|
-
await this.updateLastProcessedBlock(s, e,
|
|
153
|
+
}), d.size === 0) {
|
|
154
|
+
await this.updateLastProcessedBlock(s, e, m);
|
|
158
155
|
return;
|
|
159
156
|
}
|
|
160
|
-
const
|
|
161
|
-
await I(
|
|
157
|
+
const i = Array.from(d.values()), v = await this.checkCurrentAllowances(s, e, i);
|
|
158
|
+
await I(y.EVENTS_PUBLIC_APPROVALS, (n = {}) => ({
|
|
162
159
|
...n,
|
|
163
160
|
[r]: v
|
|
164
|
-
})), await this.updateLastProcessedBlock(s, e,
|
|
165
|
-
} catch (
|
|
166
|
-
C.error("Failed to sync approvals",
|
|
161
|
+
})), await this.updateLastProcessedBlock(s, e, m);
|
|
162
|
+
} catch (p) {
|
|
163
|
+
C.error("Failed to sync approvals", p);
|
|
167
164
|
}
|
|
168
165
|
});
|
|
169
166
|
}
|
|
170
167
|
}
|
|
171
|
-
const
|
|
168
|
+
const et = new O();
|
|
172
169
|
export {
|
|
173
|
-
|
|
174
|
-
|
|
170
|
+
O as EventsPublicApprovalsDB,
|
|
171
|
+
et as eventsPublicApprovalsDB
|
|
175
172
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("ethers");class i{eventName;transactionHash;blockNumber;args;constructor(e,r,s,n){this.eventName=e,this.transactionHash=r,this.blockNumber=s,this.args=n}static fromSerialized(e){const{eventName:r,transactionHash:s,blockNumber:n,args:a}=JSON.parse(e);return new i(r,s,n,a)}static fromEthers(e){const{event:r,transactionHash:s,blockNumber:n,args:a={}}=e,o=Object.fromEntries(Object.entries(a).map(([t,c])=>[t,b.ethers.BigNumber.isBigNumber(c)?c.toString():c])),m=JSON.stringify(o);return new i(r??"",s,n,m)}static fromSolanaEvent(e){const{eventName:r,signature:s,slot:n,data:a={}}=e,o=JSON.stringify(a,(m,t)=>typeof t=="object"&&t!==null&&"type"in t&&"data"in t&&t.type==="Buffer"&&Array.isArray(t.data)?t.data:t);return new i(r,s,n,o)}getArg(e){return JSON.parse(this.args)[e]}serialize(){return JSON.stringify({eventName:this.eventName,transactionHash:this.transactionHash,blockNumber:this.blockNumber,args:this.args})}}exports.BlockchainEvent=i;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SolanaEvent } from '../../types/solana.types';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
export declare class BlockchainEvent {
|
|
4
|
+
eventName: string;
|
|
5
|
+
transactionHash: string;
|
|
6
|
+
blockNumber: number;
|
|
7
|
+
private args;
|
|
8
|
+
constructor(eventName: string, transactionHash: string, blockNumber: number, args: string);
|
|
9
|
+
static fromSerialized(serialized: string): BlockchainEvent;
|
|
10
|
+
static fromEthers(event: ethers.Event): BlockchainEvent;
|
|
11
|
+
static fromSolanaEvent(event: SolanaEvent): BlockchainEvent;
|
|
12
|
+
getArg<T>(key: string): T;
|
|
13
|
+
serialize(): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ethers as N } from "ethers";
|
|
2
|
+
class i {
|
|
3
|
+
eventName;
|
|
4
|
+
transactionHash;
|
|
5
|
+
blockNumber;
|
|
6
|
+
args;
|
|
7
|
+
constructor(r, e, s, n) {
|
|
8
|
+
this.eventName = r, this.transactionHash = e, this.blockNumber = s, this.args = n;
|
|
9
|
+
}
|
|
10
|
+
static fromSerialized(r) {
|
|
11
|
+
const { eventName: e, transactionHash: s, blockNumber: n, args: a } = JSON.parse(r);
|
|
12
|
+
return new i(e, s, n, a);
|
|
13
|
+
}
|
|
14
|
+
static fromEthers(r) {
|
|
15
|
+
const { event: e, transactionHash: s, blockNumber: n, args: a = {} } = r, o = Object.fromEntries(
|
|
16
|
+
Object.entries(a).map(([t, c]) => [t, N.BigNumber.isBigNumber(c) ? c.toString() : c])
|
|
17
|
+
), m = JSON.stringify(o);
|
|
18
|
+
return new i(e ?? "", s, n, m);
|
|
19
|
+
}
|
|
20
|
+
static fromSolanaEvent(r) {
|
|
21
|
+
const { eventName: e, signature: s, slot: n, data: a = {} } = r, o = JSON.stringify(
|
|
22
|
+
a,
|
|
23
|
+
(m, t) => typeof t == "object" && t !== null && "type" in t && "data" in t && t.type === "Buffer" && Array.isArray(t.data) ? t.data : t
|
|
24
|
+
);
|
|
25
|
+
return new i(e, s, n, o);
|
|
26
|
+
}
|
|
27
|
+
getArg(r) {
|
|
28
|
+
return JSON.parse(this.args)[r];
|
|
29
|
+
}
|
|
30
|
+
serialize() {
|
|
31
|
+
return JSON.stringify({
|
|
32
|
+
eventName: this.eventName,
|
|
33
|
+
transactionHash: this.transactionHash,
|
|
34
|
+
blockNumber: this.blockNumber,
|
|
35
|
+
args: this.args
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
i as BlockchainEvent
|
|
41
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../../types/hinkal.types.cjs"),S=require("../../types/ethereum-network.types.cjs"),H=require("./hinkalCheckSolanaTokenRegistry.cjs"),L=require("../../functions/web3/functionCalls/accessTokenCalls.cjs"),b=require("../../functions/web3/events/getShieldedBalance.cjs"),w=require("../crypto-keys/keys.cjs"),q=require("./hinkalDeposit.cjs"),W=require("./hinkalDepositAndWithdraw.cjs"),P=require("./hinkalSolanaDeposit.cjs"),U=require("./hinkalSwap.cjs"),F=require("./hinkalWithdraw.cjs"),x=require("./hinkalWithdrawStuckUtxos.cjs"),K=require("./resetMerkleTrees.cjs"),T=require("../merkle-tree/MerkleTree.cjs");require("ethers");const I=require("../../error-handling/error-codes.constants.cjs"),m=require("../../crypto/poseidon.cjs"),c=require("../../constants/chains.constants.cjs");require("../../API/getServerURL.cjs");require("axios");require("../../constants/coingecko.constants.cjs");require("../../constants/server.constants.cjs");require("../http/HttpClient.cjs");const A=require("../../API/API.cjs");require("../../API/tenderly.api.cjs");require("../../constants/token-data/index.cjs");require("../../constants/contracts.constants.cjs");const _=require("../../constants/kyc.constants.cjs"),N=require("../../constants/vite.constants.cjs");require("../../constants/reorg-depths.constants.cjs");require("../../constants/addresses.constants.cjs");require("../../constants/token.limits.constants.cjs");require("../../constants/presale.constants.cjs");require("../../constants/activity.constants.cjs");require("../../constants/tasks.constants.cjs");require("../../constants/events.constants.cjs");const O=require("../../functions/utils/reloadPage.cjs"),j=require("../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs"),z=require("./hinkalPrivateWallet.cjs"),G=require("../../functions/utils/cacheDevice.utils.cjs"),$=require("../../functions/web3/getContractMetadata.cjs"),J=require("./hinkalGetRecipientInfo.cjs"),C=require("../../functions/web3/events/getApprovedBalance.cjs"),Q=require("./hinkalSignSubAccount.cjs"),V=require("./hinkalCheckTokenRegistry.cjs"),X=require("./hinkalActionReceive.cjs"),Y=require("../TokenDBs/PrivateTokensDB.cjs");require("idb-keyval");const Z=require("../../functions/utils/erc20tokenFunctions.cjs");require("multiformats");const v=require("@solana/web3.js");require("@solana/spl-token");const u=require("../../functions/utils/token-check.utils.cjs");require("async-mutex");require("../../functions/utils/convertIntegrationProviderToExternalActionId.cjs");require("../../types/circom-data.types.cjs");require("../../types/transactions.types.cjs");require("../../types/activities.types.cjs");const B=require("../../functions/pre-transaction/solana.cjs");require("@coral-xyz/anchor");require("../../functions/utils/userAgent.cjs");require("libsodium-wrappers");require("circomlibjs-hinkal-fork");require("process");require("buffer");require("../../providers/EthersProviderAdapter.cjs");require("node-forge");require("../../functions/web3/getTokenHolder.cjs");const ee=require("../../functions/private-wallet/emporium.helpers.cjs"),re=require("./hinkalProoflessDeposit.cjs"),te=require("./hinkalProxySwap.cjs"),ae=require("./hinkalMultiSend.cjs"),ie=require("./hinkalTransfer.cjs"),ne=require("./hinkalProxyToPrivate.cjs"),se=require("./hinkalSolanaDepositAndWithdraw.cjs"),oe=require("./hinkalSolanaWithdraw.cjs"),le=require("./hinkalSolanaTransfer.cjs"),ce=require("./hinkalSolanaSwap.cjs"),he=require("./hinkalSolanaProxySend.cjs"),de=require("./hinkalSolanaProxySwap.cjs"),R=require("./hinkalSolanaProxyShield.cjs"),M=require("../../functions/web3/fetchSolanaMerkleTreeRootHash.cjs");class pe{providerAdapter;userKeys;signingMessage="Login to Hinkal Protocol";privateTransferSigningMessage="Login to Hinkal's Private Transfer App";merkleTreeHinkalByChain={};merkleTreeAccessTokenByChain={};nullifiersByChain={};encryptedOutputsByChain={};approvalsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};accessTokenSnapshotServiceByChain={};approvalsSnapshotServiceByChain={};utxoUtils;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;constructor(e){this.userKeys=new w.UserKeys(void 0),c.WALLET_SUPPORTED_CHAINS.forEach(r=>{this.merkleTreeHinkalByChain[r]=T.MerkleTree.create(m.poseidonFunction,0n),this.merkleTreeAccessTokenByChain[r]=T.MerkleTree.create(m.poseidonFunction,0n),this.nullifiersByChain[r]=new Set,this.encryptedOutputsByChain[r]=[],this.approvalsByChain[r]=new Map}),this.generateProofRemotely=e?.generateProofRemotely??!1,this.utxoUtils=new j.MultiThreadedUtxoUtils,this.cacheDevice=G.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}async initProviderAdapter(e,r){await this.updateProviderAdapter(r),this.providerAdapter?.initConnector(e);const t=await this.connectAndPatchProvider(e);await r.init(t),await this.setListeners()}async initUserKeys(e=!1){const r=e?this.privateTransferSigningMessage:this.signingMessage;this.userKeys=new w.UserKeys(await this.getProviderAdapter().signMessage(r))}async initUserKeysWithPassword(e){this.userKeys=new w.UserKeys(e)}async resetMerkle(e){if(this.disableMerkleTreeUpdates)return;(e?.every(t=>this.isSelectedNetworkSupported(t))??!0)&&await K.resetMerkleTrees(this,e)}getProviderAdapter(){if(!this.providerAdapter)throw new Error("ProviderAdapter is not initialized");return this.providerAdapter}async waitForTransaction(e,r,t=1){return!!await this.providerAdapter?.waitForTransaction(e,r,t)}getContract(e,r,t=void 0){return this.getProviderAdapter().getContract(e,r,t)}getContractWithFetcherByChainId(e,r,t=void 0){return $.getContractWithFetcherByChainId(e,r,t)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,r,t){return await this.getProviderAdapter().signTypedData(e,r,t)}async signWithSubAccount(e,r,t,a){return Q.hinkalSignSubAccount(e,r,t,a)}getContractWithSigner(e,r,t=""){return this.getProviderAdapter().getContractWithSigner(e,r,t)}getContractWithFetcher(e,r,t=""){return this.getProviderAdapter().getContractWithFetcher(e,r,t)}isSelectedNetworkSupported(e){return!!c.networkRegistry[e]}async switchNetwork(e){try{await this.getProviderAdapter().switchNetwork(e)}catch{throw new Error(I.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(){return this.getProviderAdapter().isPermitterAvailable()}async connectAndPatchProvider(e){return await this.getProviderAdapter().connectAndPatchProvider(e)}async disconnectFromConnector(){await this.getProviderAdapter().disconnectFromConnector()}async updateProviderAdapter(e){try{this.providerAdapter&&this.providerAdapter.release(),this.providerAdapter=e}catch(r){throw console.error(r),Error("updateProviderAdapter failed, please try again.")}}async setListeners(){this.providerAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.getProviderAdapter().onAccountChanged();const e=E.EventType.AccountChanged;typeof document<"u"?document?.dispatchEvent(new Event(e)):process?.emit("message",e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter().onChainChanged(e):(await this.disconnectFromConnector(),O.reloadPage())}async monitorConnectedAddress(){await A.API.monitor(await this.getEthereumAddress())}async getBalances(e,r,t,a,i=!1,n,s=!1){return b.getShieldedBalance(this,e,r,t,a,i,this.generateProofRemotely,n,s)}async getApprovedBalances(e,r=!1,t=!1){return C.getApprovedBalance(this,e,r,t)}async getTotalBalance(e,r,t,a=!1,i,n=!1){const s=t??await this.getEthereumAddress(),o=r??this.userKeys,l=await this.getBalances(e,o.getShieldedPrivateKey(),o.getShieldedPublicKey(),s,a,i,n),h=!c.isSolanaLike(e)&&!n?await this.getApprovedBalances(e,a,i):new Map,g=N.isExtension?await Y.privateTokensDB.getPrivateTokens(e,s):Z.getErc20TokensForChain(e),p=[];return g.forEach(d=>{const k=d.erc20TokenAddress.toLowerCase(),y=l.get(k),f=h.get(k),D={token:d,balance:(y?.balance??0n)+(f?.balance??0n),timestamp:y?.timestamp||f?.timestamp||"0",nfts:y?.nfts||[]};p.push(D)}),p}async getStuckShieldedBalances(e,r){return(await this.getTotalBalance(e,void 0,r,!1,!1,!0)).filter(a=>a.balance>0n)}getSupportedPassportLinks(){return _.supportedPassportLinks}checkAccessToken(e){return L.checkHinkalAccessToken(this,e)}async getHinkalTreeRootHash(e){if(c.isSolanaLike(e)){const{hinkalIdl:t,hinkalAddress:a,originalDeployer:i}=c.networkRegistry[e].contractData;if(!t||!a||!i)throw new Error(`Missing Solana configuration for chain ${e}`);const n=new v.PublicKey(i),s=new v.PublicKey(a),o=B.getMerkleAccountPublicKey(s,n),l=this.getSolanaProgram(t);return M.fetchSolanaMerkleTreeRootHash(l,o)}return this.getContractWithFetcherByChainId(e,S.ContractType.HinkalContract).getRootHash()}async getAccessTokenTreeRootHash(e){if(c.isSolanaLike(e)){const{hinkalIdl:t,hinkalAddress:a,originalDeployer:i}=c.networkRegistry[e].contractData;if(!t||!a||!i)throw new Error(`Missing Solana configuration for chain ${e}`);const n=new v.PublicKey(i),s=new v.PublicKey(a),o=B.getAccessTokenMerkleAccountPublicKey(s,n),l=this.getSolanaProgram(t);return M.fetchSolanaMerkleTreeRootHash(l,o)}return this.getContractWithFetcherByChainId(e,S.ContractType.AccessTokenContract).getRootHash()}async resetMerkleTreesIfNecessary(){const r=(await Promise.all(c.WALLET_SUPPORTED_CHAINS.map(async t=>{const[a,i]=await Promise.all([this.getHinkalTreeRootHash(t),this.getAccessTokenTreeRootHash(t)]),n=a.toBigInt()!==this.merkleTreeHinkalByChain[t].getRootHash()||i.toBigInt()!==this.merkleTreeAccessTokenByChain[t].getRootHash();return{chainId:t,needsReset:n}}))).filter(t=>t.needsReset).map(t=>t.chainId);r.length>0&&(console.log("resetting merkle tree in resetMerkleTreesIfNecessary for chains:",r),await this.resetMerkle(r))}async getEventsFromHinkal(){const e=c.WALLET_SUPPORTED_CHAINS.flatMap(r=>[this.accessTokenSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.commitmentsSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.nullifierSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.approvalsSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock()]);await Promise.all(e)}getEthereumAddress(){return this.getProviderAdapter().getAddress()}async getRandomRelay(e,r=!1){return(await A.API.getIdleRelay(e,r)).relay}getGasPrice(e){if(!this.providerAdapter)throw new Error("Illegal State of providerAdapter in Hinkal: no providerAdapter initialized");return this.providerAdapter.getGasPrice(e)}getAPI(){return A.API}snapshotsClearInterval(){c.WALLET_SUPPORTED_CHAINS.forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.accessTokenSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear(),this.approvalsSnapshotServiceByChain[e]?.intervalClear()})}checkTokenRegistry(e,r,t){if(c.isSolanaLike(e)){const{hinkalIdl:i,hinkalAddress:n,originalDeployer:s}=c.networkRegistry[e].contractData;if(!i||!n||!s)throw new Error("missing solana data");const o=this.getSolanaProgram(i),l=new v.PublicKey(s);return H.hinkalCheckSolanaTokenRegistry(o,l,r,t)}const a=this.getContractWithFetcher(e,S.ContractType.HinkalHelperContract);return V.hinkalCheckTokenRegistry(a,r,t)}getRecipientInfo(){return J.getRecipientInfo(this)}getApprovedUtxos(e,r=!1){return C.getApprovedUtxos(this,e,r)}getApprovedUtxosForToken(e,r,t=!1){return C.getApprovedUtxosForToken(this,e,r,t)}async deposit(e,r){return q.hinkalDeposit(this,e,r)}async depositForOther(e,r,t){return q.hinkalDepositForOther(this,e,r,t)}async depositAndWithdraw(e,r,t,a,i){const n=u.validateAndGetChainId([e]);return c.isSolanaLike(n)?se.hinkalSolanaDepositAndWithdraw(this,e,r,t,a,i):W.hinkalDepositAndWithdraw(this,e,r,t,a,i)}async prooflessDeposit(e,r,t){return re.hinkalProoflessDeposit(this,e,r,t)}getSolanaProgram(e){if(!this.providerAdapter)throw new Error("No provider adapter initialized");if(!("getSolanaProgram"in this.providerAdapter))throw new Error("Current provider adapter is not a Solana provider adapter");return this.providerAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.providerAdapter)throw new Error("No provider adapter initialized");if(!("getSolanaPublicKey"in this.providerAdapter))throw new Error("Current provider adapter is not a Solana provider adapter");return this.providerAdapter.getSolanaPublicKey()}async depositSolana(e,r){return P.hinkalSolanaDeposit(this,e,r)}async depositSolanaForOther(e,r,t){return P.hinkalSolanaDepositForOther(this,e,r,t)}async solanaMultiPaymentDeposit(e,r){return P.hinkalSolanaMultiPaymentDeposit(this,e,r)}async transfer(e,r,t,a,i,n,s=!1){const o=u.validateAndGetChainId(e);return c.isSolanaLike(o)?le.hinkalSolanaTransfer(this,e,r,t,a,i,s):ie.hinkalTransfer(this,e,r,t,a,i,n,s)}async withdraw(e,r,t,a,i,n,s,o=!1){const l=u.validateAndGetChainId(e);return c.isSolanaLike(l)?oe.hinkalSolanaWithdraw(this,e,r,t,i,n,o):F.hinkalWithdraw(this,e,r,t,a,i,n,s,o)}async withdrawStuckUtxos(e,r){return x.hinkalWithdrawStuckUtxos(this,e,r)}async swap(e,r,t,a,i,n,s,o=!1,l=!1){const h=u.validateAndGetChainId(e);return c.isSolanaLike(h)?this.swapSolana(e,r,a,i,n,o):U.hinkalSwap(this,e,r,t,a,i,n,s,o,l)}async swapSolana(e,r,t,a,i,n=!1){const s=JSON.parse(t),o=BigInt(s.swapperAccountSalt),{instructionLists:l,addressLookupTableAccount:h}=s.data;return ce.hinkalSolanaSwap(this,e,r,o,l,h,a,i,n)}async actionReceive(e,r,t,a,i,n,s=!1){if(!i)throw new Error("subAccount is required");const o=u.validateAndGetChainId(e);return c.isSolanaLike(o)?R.hinkalSolanaProxyShield(this,e[0],r[0],i,void 0,s):X.hinkalActionReceive(this,e,r,t,a,i,n,s)}async actionPrivateWallet(e,r,t,a,i,n,s,o,l,h,g=!1,p,d,k,y=!1){return z.hinkalPrivateWallet(this,e,r,t,a,i,n,s,o,l,h,g,p,d,k,y)}async proxySwap(e,r,t,a,i,n,s,o,l=!1,h,g,p=!1){const d=u.validateAndGetChainId(e);return c.isSolanaLike(d)?de.hinkalSolanaProxySwap(this,e,r,a,n,s,o,p):te.hinkalProxySwap(this,e,r,t,a,i,n,s,o,l,h,g,p)}async proxyToPrivate(e,r,t,a,i,n,s,o=!1){const l=u.validateAndGetChainId(e);return c.isSolanaLike(l)?R.hinkalSolanaProxyShield(this,e[0],r[0],t,a,o):ne.hinkalProxyToPrivate(this,e,r,a,i,n,t,s,o)}async proxySend(e,r,t,a,i,n,s,o=!1){const l=u.validateAndGetChainId(e);if(c.isSolanaLike(l))return he.hinkalSolanaProxySend(e[0],r[0],t,a,o);const h=ee.createTransaferEmporiumOpsBatch(this,l,e.map(d=>d.erc20TokenAddress),r,a),g=e.map((d,k)=>({token:d,amount:-1n*r[k]}));return await this.actionPrivateWallet(l,[],[],[],h,g,t,i,n,void 0,void 0,void 0,s,void 0,o)}async multiSendPrivateRecipients(e,r,t){return ae.hinkalMultiSendPrivateRecipients(this,e,r,t)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}}exports.Hinkal=pe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("ethers"),L=require("../../types/hinkal.types.cjs"),P=require("../../types/ethereum-network.types.cjs"),H=require("./hinkalCheckSolanaTokenRegistry.cjs"),b=require("../../functions/web3/functionCalls/accessTokenCalls.cjs"),U=require("../../functions/web3/events/getShieldedBalance.cjs"),S=require("../crypto-keys/keys.cjs"),m=require("./hinkalDeposit.cjs"),W=require("./hinkalDepositAndWithdraw.cjs"),A=require("./hinkalSolanaDeposit.cjs"),F=require("./hinkalSwap.cjs"),K=require("./hinkalWithdraw.cjs"),x=require("./hinkalWithdrawStuckUtxos.cjs"),I=require("./resetMerkleTrees.cjs"),T=require("../merkle-tree/MerkleTree.cjs"),_=require("../../error-handling/error-codes.constants.cjs"),B=require("../../crypto/poseidon.cjs"),l=require("../../constants/chains.constants.cjs");require("../../API/getServerURL.cjs");require("axios");require("../../constants/coingecko.constants.cjs");require("../../constants/server.constants.cjs");require("../http/HttpClient.cjs");const w=require("../../API/API.cjs");require("../../API/tenderly.api.cjs");require("../../constants/token-data/index.cjs");require("../../constants/contracts.constants.cjs");const N=require("../../constants/kyc.constants.cjs"),O=require("../../constants/vite.constants.cjs");require("../../constants/reorg-depths.constants.cjs");require("../../constants/addresses.constants.cjs");require("../../constants/token.limits.constants.cjs");require("../../constants/presale.constants.cjs");require("../../constants/activity.constants.cjs");require("../../constants/tasks.constants.cjs");require("../../constants/events.constants.cjs");const j=require("../../functions/utils/reloadPage.cjs"),z=require("../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs"),G=require("./hinkalPrivateWallet.cjs"),$=require("../../functions/utils/cacheDevice.utils.cjs"),J=require("../../functions/web3/getContractMetadata.cjs"),Q=require("./hinkalGetRecipientInfo.cjs"),C=require("../../functions/web3/events/getApprovedBalance.cjs"),V=require("./hinkalSignSubAccount.cjs"),X=require("./hinkalCheckTokenRegistry.cjs"),Y=require("./hinkalActionReceive.cjs"),Z=require("../TokenDBs/PrivateTokensDB.cjs");require("idb-keyval");const ee=require("../../functions/utils/erc20tokenFunctions.cjs");require("multiformats");const v=require("@solana/web3.js");require("@solana/spl-token");const p=require("../../functions/utils/token-check.utils.cjs");require("async-mutex");require("../../functions/utils/convertIntegrationProviderToExternalActionId.cjs");require("../../types/circom-data.types.cjs");require("../../types/transactions.types.cjs");require("../../types/activities.types.cjs");const M=require("../../functions/pre-transaction/solana.cjs");require("ethers-v6h");require("tweetnacl");require("bs58");require("@coral-xyz/anchor");require("buffer");require("../../functions/utils/userAgent.cjs");require("libsodium-wrappers");require("circomlibjs-hinkal-fork");require("process");require("../../providers/EthersProviderAdapter.cjs");const re=require("../../providers/SolanaProviderAdapter.cjs");require("../../functions/web3/events/getInputUtxoAndBalance.cjs");require("../../functions/web3/getTokenHolder.cjs");require("node-forge");const te=require("../../functions/private-wallet/emporium.helpers.cjs"),ae=require("./hinkalProoflessDeposit.cjs"),ie=require("./hinkalProxySwap.cjs"),ne=require("./hinkalMultiSend.cjs"),se=require("./hinkalTransfer.cjs"),oe=require("./hinkalProxyToPrivate.cjs"),le=require("./hinkalSolanaDepositAndWithdraw.cjs"),he=require("./hinkalSolanaWithdraw.cjs"),ce=require("./hinkalSolanaTransfer.cjs"),de=require("./hinkalSolanaSwap.cjs"),ue=require("./hinkalSolanaProxySend.cjs"),pe=require("./hinkalSolanaProxySwap.cjs"),R=require("./hinkalSolanaProxyShield.cjs"),D=require("../../functions/web3/fetchSolanaMerkleTreeRootHash.cjs"),ge=require("./hinkalDepostAndBridge.cjs");class ke{ethereumProviderAdapter;solanaProviderAdapter;userKeys;signingMessage="Login to Hinkal Protocol";privateTransferSigningMessage="Login to Hinkal's Private Transfer App";merkleTreeHinkalByChain={};merkleTreeAccessTokenByChain={};nullifiersByChain={};encryptedOutputsByChain={};approvalsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};accessTokenSnapshotServiceByChain={};approvalsSnapshotServiceByChain={};utxoUtils;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;constructor(e){this.userKeys=new S.UserKeys(void 0),l.WALLET_SUPPORTED_CHAINS.forEach(r=>{this.merkleTreeHinkalByChain[r]=T.MerkleTree.create(B.poseidonFunction,0n),this.merkleTreeAccessTokenByChain[r]=T.MerkleTree.create(B.poseidonFunction,0n),this.nullifiersByChain[r]=new Set,this.encryptedOutputsByChain[r]=[],this.approvalsByChain[r]=new Map}),this.generateProofRemotely=e?.generateProofRemotely??!1,this.utxoUtils=new z.MultiThreadedUtxoUtils,this.cacheDevice=$.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}async initProviderAdapter(e,r){const t=r instanceof re.SolanaProviderAdapter;await this.updateProviderAdapter(t?l.chainIds.solanaMainnet:l.chainIds.ethMainnet,r),t?this.solanaProviderAdapter?.initConnector(e):this.ethereumProviderAdapter?.initConnector(e);const a=await this.connectAndPatchProvider(t,e);await r.init(a),await this.setListeners()}async initUserKeys(e=!1){const r=e?this.privateTransferSigningMessage:this.signingMessage;this.userKeys=new S.UserKeys(await this.getProviderAdapter().signMessage(r))}async initUserKeysWithPassword(e){this.userKeys=new S.UserKeys(e)}async initUserKeysFromSeedPhrases(e){const r=e.join(" "),t=q.ethers.utils.toUtf8Bytes(r),a=q.ethers.utils.keccak256(t);this.userKeys=new S.UserKeys(a)}async resetMerkle(e){if(this.disableMerkleTreeUpdates)return;(e?.every(t=>this.isSelectedNetworkSupported(t))??!0)&&await I.resetMerkleTrees(this,e)}getProviderAdapter(e){const r=e??(this.ethereumProviderAdapter?l.chainIds.ethMainnet:l.chainIds.solanaMainnet),t=l.isSolanaLike(r)?this.solanaProviderAdapter:this.ethereumProviderAdapter;if(!t)throw new Error("ProviderAdapter is not initialized");return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?l.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?l.WALLET_SUPPORTED_CHAINS.filter(e=>!l.isSolanaLike(e)):this.solanaProviderAdapter?l.WALLET_SUPPORTED_CHAINS.filter(e=>l.isSolanaLike(e)):[]}async waitForTransaction(e,r,t=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,r,t)}getContract(e,r,t=void 0){return this.getProviderAdapter(e).getContract(e,r,t)}getContractWithFetcherByChainId(e,r,t=void 0){return J.getContractWithFetcherByChainId(e,r,t)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,r,t){return await this.getProviderAdapter().signTypedData(e,r,t)}async signWithSubAccount(e,r,t,a){return V.hinkalSignSubAccount(e,r,t,a)}getContractWithSigner(e,r,t=""){return this.getProviderAdapter(e).getContractWithSigner(e,r,t)}getContractWithFetcher(e,r,t=""){return this.getProviderAdapter(e).getContractWithFetcher(e,r,t)}isSelectedNetworkSupported(e){return!!l.networkRegistry[e]}async switchNetwork(e){try{await this.getProviderAdapter().switchNetwork(e)}catch{throw new Error(_.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async connectAndPatchProvider(e,r){return await this.getProviderAdapter(e?l.chainIds.solanaMainnet:l.chainIds.ethMainnet).connectAndPatchProvider(r)}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector()}async updateProviderAdapter(e,r){try{l.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=r):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=r)}catch(t){throw console.error(t),Error("updateProviderAdapter failed, please try again.")}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged();const e=L.EventType.AccountChanged;typeof document<"u"?document?.dispatchEvent(new Event(e)):process?.emit("message",e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),j.reloadPage())}async monitorConnectedAddress(e){await w.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,r,t,a,i=!1,n,s=!1){return U.getShieldedBalance(this,e,r,t,a,i,this.generateProofRemotely,n,s)}async getApprovedBalances(e,r=!1,t=!1){return C.getApprovedBalance(this,e,r,t)}async getTotalBalance(e,r,t,a=!1,i,n=!1){const s=t??await this.getEthereumAddressByChain(e),o=r??this.userKeys,h=await this.getBalances(e,o.getShieldedPrivateKey(),o.getShieldedPublicKey(),s,a,i,n),c=!l.isSolanaLike(e)&&!n?await this.getApprovedBalances(e,a,i):new Map,g=O.isExtension?await Z.privateTokensDB.getPrivateTokens(e,s):ee.getErc20TokensForChain(e),u=[];return g.forEach(d=>{const k=d.erc20TokenAddress.toLowerCase(),y=h.get(k),f=c.get(k),E={token:d,balance:(y?.balance??0n)+(f?.balance??0n),timestamp:y?.timestamp||f?.timestamp||"0",nfts:y?.nfts||[]};u.push(E)}),u}async getStuckShieldedBalances(e,r){return(await this.getTotalBalance(e,void 0,r,!1,!1,!0)).filter(a=>a.balance>0n)}getSupportedPassportLinks(){return N.supportedPassportLinks}checkAccessToken(e){return b.checkHinkalAccessToken(this,e)}async getHinkalTreeRootHash(e){if(l.isSolanaLike(e)){const{hinkalIdl:t,hinkalAddress:a,originalDeployer:i}=l.networkRegistry[e].contractData;if(!t||!a||!i)throw new Error(`Missing Solana configuration for chain ${e}`);const n=new v.PublicKey(i),s=new v.PublicKey(a),o=M.getMerkleAccountPublicKey(s,n),h=this.getSolanaProgram(t);return D.fetchSolanaMerkleTreeRootHash(h,o)}return this.getContractWithFetcherByChainId(e,P.ContractType.HinkalContract).getRootHash()}async getAccessTokenTreeRootHash(e){if(l.isSolanaLike(e)){const{hinkalIdl:t,hinkalAddress:a,originalDeployer:i}=l.networkRegistry[e].contractData;if(!t||!a||!i)throw new Error(`Missing Solana configuration for chain ${e}`);const n=new v.PublicKey(i),s=new v.PublicKey(a),o=M.getAccessTokenMerkleAccountPublicKey(s,n),h=this.getSolanaProgram(t);return D.fetchSolanaMerkleTreeRootHash(h,o)}return this.getContractWithFetcherByChainId(e,P.ContractType.AccessTokenContract).getRootHash()}async resetMerkleTreesIfNecessary(){const r=(await Promise.all(this.getSupportedChains().map(async t=>{const[a,i]=await Promise.all([this.getHinkalTreeRootHash(t),this.getAccessTokenTreeRootHash(t)]),n=a.toBigInt()!==this.merkleTreeHinkalByChain[t].getRootHash()||i.toBigInt()!==this.merkleTreeAccessTokenByChain[t].getRootHash();return{chainId:t,needsReset:n}}))).filter(t=>t.needsReset).map(t=>t.chainId);r.length>0&&(console.log("resetting merkle tree in resetMerkleTreesIfNecessary for chains:",r),await this.resetMerkle(r))}async getEventsFromHinkal(){const e=this.getSupportedChains().flatMap(r=>[this.accessTokenSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.commitmentsSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.nullifierSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock(),this.approvalsSnapshotServiceByChain[r]?.retrieveEventsFromLatestBlock()]);await Promise.all(e)}async getEthereumAddress(){const e=this.ethereumProviderAdapter??this.solanaProviderAdapter;if(!e)throw new Error("No provider adapter initialized");return e.getAddress()}getEthereumAddressByChain(e){return this.getProviderAdapter(e).getAddress()}async getRandomRelay(e,r=!1){return(await w.API.getIdleRelay(e,r)).relay}getGasPrice(e){const r=this.getProviderAdapter(e);if(!r)throw new Error("Illegal State of providerAdapter in Hinkal: no providerAdapter initialized");return r.getGasPrice(e)}getAPI(){return w.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.accessTokenSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear(),this.approvalsSnapshotServiceByChain[e]?.intervalClear()})}checkTokenRegistry(e,r,t){if(l.isSolanaLike(e)){const{hinkalIdl:i,hinkalAddress:n,originalDeployer:s}=l.networkRegistry[e].contractData;if(!i||!n||!s)throw new Error("missing solana data");const o=this.getSolanaProgram(i),h=new v.PublicKey(s);return H.hinkalCheckSolanaTokenRegistry(o,h,r,t)}const a=this.getContractWithFetcher(e,P.ContractType.HinkalHelperContract);return X.hinkalCheckTokenRegistry(a,r,t)}getRecipientInfo(){return Q.getRecipientInfo(this)}getApprovedUtxos(e,r=!1){return C.getApprovedUtxos(this,e,r)}getApprovedUtxosForToken(e,r,t=!1){return C.getApprovedUtxosForToken(this,e,r,t)}async deposit(e,r){return m.hinkalDeposit(this,e,r)}async depositForOther(e,r,t){return m.hinkalDepositForOther(this,e,r,t)}async depositAndWithdraw(e,r,t,a,i){const n=p.validateAndGetChainId([e]);return l.isSolanaLike(n)?le.hinkalSolanaDepositAndWithdraw(this,e,r,t,a,i):W.hinkalDepositAndWithdraw(this,e,r,t,a,i)}async depositAndBridge(e,r,t,a){return ge.hinkalDepositAndBridge(this,e,r,t,a)}async prooflessDeposit(e,r,t){return ae.hinkalProoflessDeposit(this,e,r,t)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw new Error("No provider adapter initialized");if(!("getSolanaProgram"in this.solanaProviderAdapter))throw new Error("Current provider adapter is not a Solana provider adapter");return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw new Error("No provider adapter initialized");if(!("getSolanaPublicKey"in this.solanaProviderAdapter))throw new Error("Current provider adapter is not a Solana provider adapter");return this.solanaProviderAdapter.getSolanaPublicKey()}async depositSolana(e,r){return A.hinkalSolanaDeposit(this,e,r)}async depositSolanaForOther(e,r,t){return A.hinkalSolanaDepositForOther(this,e,r,t)}async solanaMultiPaymentDeposit(e,r){return A.hinkalSolanaMultiPaymentDeposit(this,e,r)}async transfer(e,r,t,a,i,n,s=!1){const o=p.validateAndGetChainId(e);return l.isSolanaLike(o)?ce.hinkalSolanaTransfer(this,e,r,t,a,i,s):se.hinkalTransfer(this,e,r,t,a,i,n,s)}async withdraw(e,r,t,a,i,n,s,o=!1){const h=p.validateAndGetChainId(e);return l.isSolanaLike(h)?he.hinkalSolanaWithdraw(this,e,r,t,i,n,o):K.hinkalWithdraw(this,e,r,t,a,i,n,s,o)}async withdrawStuckUtxos(e,r){return x.hinkalWithdrawStuckUtxos(this,e,r)}async swap(e,r,t,a,i,n,s,o=!1,h=!1){const c=p.validateAndGetChainId(e);return l.isSolanaLike(c)?this.swapSolana(e,r,a,i,n,o):F.hinkalSwap(this,e,r,t,a,i,n,s,o,h)}async swapSolana(e,r,t,a,i,n=!1){const s=JSON.parse(t),o=BigInt(s.swapperAccountSalt),{instructionLists:h,addressLookupTableAccount:c}=s.data;return de.hinkalSolanaSwap(this,e,r,o,h,c,a,i,n)}async actionReceive(e,r,t,a,i,n,s=!1){if(!i)throw new Error("subAccount is required");const o=p.validateAndGetChainId(e);return l.isSolanaLike(o)?R.hinkalSolanaProxyShield(this,e[0],r[0],i,void 0,s):Y.hinkalActionReceive(this,e,r,t,a,i,n,s)}async actionPrivateWallet(e,r,t,a,i,n,s,o,h,c,g=!1,u,d,k,y=!1){return G.hinkalPrivateWallet(this,e,r,t,a,i,n,s,o,h,c,g,u,d,k,y)}async proxySwap(e,r,t,a,i,n,s,o,h=!1,c,g,u=!1){const d=p.validateAndGetChainId(e);return l.isSolanaLike(d)?pe.hinkalSolanaProxySwap(this,e,r,a,n,s,o,u):ie.hinkalProxySwap(this,e,r,t,a,i,n,s,o,h,c,g,u)}async proxyToPrivate(e,r,t,a,i,n,s,o=!1){const h=p.validateAndGetChainId(e);return l.isSolanaLike(h)?R.hinkalSolanaProxyShield(this,e[0],r[0],t,a,o):oe.hinkalProxyToPrivate(this,e,r,a,i,n,t,s,o)}async proxySend(e,r,t,a,i,n,s,o=!1){const h=p.validateAndGetChainId(e);if(l.isSolanaLike(h))return ue.hinkalSolanaProxySend(e[0],r[0],t,a,o);const c=te.createTransaferEmporiumOpsBatch(this,h,e.map(d=>d.erc20TokenAddress),r,a),g=e.map((d,k)=>({token:d,amount:-1n*r[k]}));return await this.actionPrivateWallet(h,[],[],[],c,g,t,i,n,void 0,void 0,void 0,s,void 0,o)}async multiSendPrivateRecipients(e,r,t){return ne.hinkalMultiSendPrivateRecipients(this,e,r,t)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}}exports.Hinkal=ke;
|
|
@@ -18,8 +18,10 @@ import { AdminTransactionType } from '../../types/admin.types';
|
|
|
18
18
|
import { ClientAccessTokenSnapshotService, ClientApprovalsSnapshotService, ClientCommitmentsSnapshotService, ClientNullifierSnapshotService, ClientSolanaAccessTokenSnapshotService, ClientSolanaCommitmentsSnapshotService, ClientSolanaNullifierSnapshotService } from '../snapshot';
|
|
19
19
|
import { Idl, Program } from '@coral-xyz/anchor';
|
|
20
20
|
import { PublicKey } from '@solana/web3.js';
|
|
21
|
+
import { BridgeRecipient } from '../../types/bridging-tx.types';
|
|
21
22
|
export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
22
|
-
private
|
|
23
|
+
private ethereumProviderAdapter?;
|
|
24
|
+
private solanaProviderAdapter?;
|
|
23
25
|
userKeys: UserKeys;
|
|
24
26
|
readonly signingMessage: string;
|
|
25
27
|
readonly privateTransferSigningMessage: string;
|
|
@@ -40,8 +42,10 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
40
42
|
initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
|
|
41
43
|
initUserKeys(isPrivateTransfer?: boolean): Promise<void>;
|
|
42
44
|
initUserKeysWithPassword(password: string): Promise<void>;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
46
|
+
resetMerkle(chains?: number[]): Promise<void>;
|
|
47
|
+
getProviderAdapter(chainId?: number): IProviderAdapter<ConnectorType>;
|
|
48
|
+
getSupportedChains(): number[];
|
|
45
49
|
waitForTransaction(chainId: number, transactionHash: string, confirmations?: number): Promise<boolean>;
|
|
46
50
|
getContract(chainId: number, contractType: ContractType, contractAddress?: undefined): ethers.Contract;
|
|
47
51
|
getContractWithFetcherByChainId(chainId: number, contractType: ContractType, contractAddress?: undefined): ethers.Contract;
|
|
@@ -52,14 +56,14 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
52
56
|
getContractWithFetcher(chainId: number, contractType: ContractType, contractAddress?: string): ethers.Contract;
|
|
53
57
|
isSelectedNetworkSupported(chainId: number): boolean;
|
|
54
58
|
switchNetwork(network: EthereumNetwork): Promise<void>;
|
|
55
|
-
isPermitterAvailable(): boolean;
|
|
56
|
-
connectAndPatchProvider
|
|
59
|
+
isPermitterAvailable(chainId: number): boolean;
|
|
60
|
+
private connectAndPatchProvider;
|
|
57
61
|
disconnectFromConnector(): Promise<void>;
|
|
58
|
-
updateProviderAdapter
|
|
62
|
+
private updateProviderAdapter;
|
|
59
63
|
setListeners(): Promise<void>;
|
|
60
64
|
private onAccountChanged;
|
|
61
65
|
private onChainChanged;
|
|
62
|
-
monitorConnectedAddress(): Promise<void>;
|
|
66
|
+
monitorConnectedAddress(chainId: number): Promise<void>;
|
|
63
67
|
getBalances(chainId: number, passedShieldedPrivateKey: string, passedShieldedPublicKey: string, ethAddress: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean, useBlockedUtxos?: boolean): Promise<Map<string, TokenBalance>>;
|
|
64
68
|
getApprovedBalances(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<Map<string, TokenBalance>>;
|
|
65
69
|
getTotalBalance(chainId: number, _userKeys?: UserKeys, _ethAddress?: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean, useBlockedUtxos?: boolean): Promise<TokenBalance[]>;
|
|
@@ -71,6 +75,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
71
75
|
resetMerkleTreesIfNecessary(): Promise<void>;
|
|
72
76
|
getEventsFromHinkal(): Promise<void>;
|
|
73
77
|
getEthereumAddress(): Promise<string>;
|
|
78
|
+
getEthereumAddressByChain(chainId: number): Promise<string>;
|
|
74
79
|
getRandomRelay(chainId: number, markAsPending?: boolean): Promise<string | undefined>;
|
|
75
80
|
getGasPrice(chainId: number): Promise<bigint>;
|
|
76
81
|
getAPI(): IAPI;
|
|
@@ -82,6 +87,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
82
87
|
deposit(erc20Tokens: ERC20Token[], amountChanges: bigint[]): Promise<ethers.ContractTransaction>;
|
|
83
88
|
depositForOther(erc20Tokens: ERC20Token[], amountChanges: bigint[], recipientInfo: string): Promise<ethers.ContractTransaction>;
|
|
84
89
|
depositAndWithdraw(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
90
|
+
depositAndBridge(erc20Token: ERC20Token, recipientBridges: BridgeRecipient[], txCompletionTime?: number, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
85
91
|
prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[]): Promise<ethers.ContractTransaction>;
|
|
86
92
|
getSolanaProgram(idl: Idl): Program;
|
|
87
93
|
getSolanaPublicKey(): PublicKey;
|
|
@@ -94,7 +100,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
94
100
|
swap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType, onlyGasEstimate?: boolean, withPrivateMempool?: boolean): Promise<RelayerTransaction | bigint>;
|
|
95
101
|
swapSolana(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure, onlyGasEstimate?: boolean): Promise<RelayerTransaction>;
|
|
96
102
|
actionReceive(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], feeToken?: string, feeStructureOverride?: FeeStructure, subAccount?: SubAccount, action?: AdminTransactionType, onlyGasEstimate?: boolean): Promise<RelayerTransaction | bigint>;
|
|
97
|
-
actionPrivateWallet(chainId: number,
|
|
103
|
+
actionPrivateWallet(chainId: number, erc20Tokens: ERC20Token[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo, onlyGasEstimate?: boolean): Promise<RelayerTransaction | bigint>;
|
|
98
104
|
proxySwap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, onlyGasEstimate?: boolean): Promise<RelayerTransaction | bigint>;
|
|
99
105
|
proxyToPrivate(erc20Tokens: ERC20Token[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType, onlyGasEstimate?: boolean): Promise<RelayerTransaction | bigint>;
|
|
100
106
|
proxySend(erc20Tokens: ERC20Token[], amounts: bigint[], subAccount: SubAccount, recipientAddress: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType, onlyGasEstimate?: boolean): Promise<RelayerTransaction | bigint>;
|