@hinkal/common 0.2.19 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/API/API.cjs +1 -1
  2. package/API/API.d.ts +6 -1
  3. package/API/API.mjs +48 -41
  4. package/API/enclaveCalls.cjs +1 -1
  5. package/API/enclaveCalls.mjs +5 -4
  6. package/API/index.d.ts +1 -0
  7. package/API/proxyAccountsCalls.cjs +1 -1
  8. package/API/proxyAccountsCalls.d.ts +7 -2
  9. package/API/proxyAccountsCalls.mjs +26 -20
  10. package/API/temporaryWalletCalls.cjs +1 -0
  11. package/API/temporaryWalletCalls.d.ts +13 -0
  12. package/API/temporaryWalletCalls.mjs +20 -0
  13. package/API/unspent-utxos-calls.cjs +1 -1
  14. package/API/unspent-utxos-calls.d.ts +1 -1
  15. package/API/unspent-utxos-calls.mjs +16 -14
  16. package/README.md +36 -13
  17. package/constants/chains.constants.cjs +1 -1
  18. package/constants/chains.constants.d.ts +1 -1
  19. package/constants/chains.constants.mjs +69 -51
  20. package/constants/deploy-data/deploy-data-solana.json.cjs +1 -1
  21. package/constants/deploy-data/deploy-data-solana.json.mjs +28 -2
  22. package/constants/kyc.constants.cjs +1 -1
  23. package/constants/kyc.constants.mjs +39 -40
  24. package/constants/mediaUrls.constants.cjs +1 -1
  25. package/constants/mediaUrls.constants.d.ts +1 -0
  26. package/constants/mediaUrls.constants.mjs +2 -1
  27. package/constants/server.constants.cjs +1 -1
  28. package/constants/server.constants.d.ts +6 -1
  29. package/constants/server.constants.mjs +37 -32
  30. package/constants/token-data/polygonRegistry.json.cjs +1 -1
  31. package/constants/token-data/polygonRegistry.json.mjs +4 -4
  32. package/constants/token-data/polygonRegistryFixed.json.cjs +1 -1
  33. package/constants/token-data/polygonRegistryFixed.json.mjs +4 -4
  34. package/data-structures/AccountActions/AccountActions.cjs +1 -0
  35. package/data-structures/AccountActions/AccountActions.d.ts +18 -0
  36. package/data-structures/AccountActions/AccountActions.mjs +78 -0
  37. package/data-structures/AccountActions/index.d.ts +1 -0
  38. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.cjs +1 -1
  39. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.mjs +68 -71
  40. package/data-structures/BlockchainEvent/BlockchainEvent.cjs +1 -0
  41. package/data-structures/BlockchainEvent/BlockchainEvent.d.ts +14 -0
  42. package/data-structures/BlockchainEvent/BlockchainEvent.mjs +41 -0
  43. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  44. package/data-structures/Hinkal/Hinkal.d.ts +14 -8
  45. package/data-structures/Hinkal/Hinkal.mjs +215 -179
  46. package/data-structures/Hinkal/IHinkal.d.ts +9 -6
  47. package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  48. package/data-structures/Hinkal/handleAutoDepositBack.mjs +47 -48
  49. package/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  50. package/data-structures/Hinkal/hinkalActionReceive.mjs +25 -22
  51. package/data-structures/Hinkal/hinkalCheckTokenRegistry.cjs +1 -1
  52. package/data-structures/Hinkal/hinkalCheckTokenRegistry.mjs +12 -12
  53. package/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  54. package/data-structures/Hinkal/hinkalDeposit.mjs +63 -63
  55. package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  56. package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +60 -147
  57. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -0
  58. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.d.ts +4 -0
  59. package/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +103 -0
  60. package/data-structures/Hinkal/hinkalDepostAndBridge.cjs +1 -0
  61. package/data-structures/Hinkal/hinkalDepostAndBridge.d.ts +4 -0
  62. package/data-structures/Hinkal/hinkalDepostAndBridge.mjs +214 -0
  63. package/data-structures/Hinkal/hinkalGetZkMeProvider.cjs +1 -1
  64. package/data-structures/Hinkal/hinkalGetZkMeProvider.mjs +4 -4
  65. package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  66. package/data-structures/Hinkal/hinkalPrivateWallet.d.ts +2 -2
  67. package/data-structures/Hinkal/hinkalPrivateWallet.mjs +103 -99
  68. package/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  69. package/data-structures/Hinkal/hinkalProxySwap.mjs +44 -41
  70. package/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  71. package/data-structures/Hinkal/hinkalProxyToPrivate.mjs +31 -28
  72. package/data-structures/Hinkal/hinkalSignSubAccount.cjs +1 -1
  73. package/data-structures/Hinkal/hinkalSignSubAccount.mjs +16 -13
  74. package/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  75. package/data-structures/Hinkal/hinkalSolanaDeposit.mjs +34 -34
  76. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  77. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +67 -65
  78. package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  79. package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +35 -32
  80. package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  81. package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +59 -56
  82. package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  83. package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +35 -32
  84. package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  85. package/data-structures/Hinkal/hinkalSolanaSwap.mjs +10 -10
  86. package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  87. package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +25 -25
  88. package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  89. package/data-structures/Hinkal/hinkalSwap.mjs +34 -30
  90. package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  91. package/data-structures/Hinkal/hinkalTransfer.mjs +43 -39
  92. package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  93. package/data-structures/Hinkal/hinkalWithdraw.mjs +47 -43
  94. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  95. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +50 -46
  96. package/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  97. package/data-structures/Hinkal/resetMerkleTrees.mjs +36 -34
  98. package/data-structures/IndexedDB/activity-db.cjs +1 -1
  99. package/data-structures/IndexedDB/activity-db.d.ts +1 -0
  100. package/data-structures/IndexedDB/activity-db.mjs +86 -70
  101. package/data-structures/IndexedDB/balances-db.cjs +1 -1
  102. package/data-structures/IndexedDB/balances-db.mjs +33 -30
  103. package/data-structures/IndexedDB/contact-db.cjs +1 -1
  104. package/data-structures/IndexedDB/contact-db.mjs +9 -6
  105. package/data-structures/PublicBalance/PublicBalanceWatcher.cjs +1 -0
  106. package/data-structures/PublicBalance/PublicBalanceWatcher.d.ts +20 -0
  107. package/data-structures/PublicBalance/PublicBalanceWatcher.mjs +124 -0
  108. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.cjs +1 -0
  109. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.d.ts +15 -0
  110. package/data-structures/PublicBalance/SolanaPublicBalancerWatcher.mjs +64 -0
  111. package/data-structures/PublicBalance/index.d.ts +2 -0
  112. package/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
  113. package/data-structures/TokenDBs/EventsPublicTokensDB.mjs +77 -78
  114. package/data-structures/crypto-keys/keys.cjs +1 -1
  115. package/data-structures/crypto-keys/keys.d.ts +0 -11
  116. package/data-structures/crypto-keys/keys.mjs +47 -107
  117. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.cjs +1 -1
  118. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.d.ts +3 -2
  119. package/data-structures/event-service/evm/AbstractAccessTokenSnapshotService.mjs +9 -9
  120. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.cjs +1 -1
  121. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.d.ts +3 -2
  122. package/data-structures/event-service/evm/AbstractApprovalsSnapshotService.mjs +5 -5
  123. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.cjs +1 -1
  124. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.d.ts +3 -2
  125. package/data-structures/event-service/evm/AbstractCommitmentsSnapshotService.mjs +6 -6
  126. package/data-structures/event-service/evm/AbstractEventService.cjs +1 -1
  127. package/data-structures/event-service/evm/AbstractEventService.d.ts +3 -2
  128. package/data-structures/event-service/evm/AbstractEventService.mjs +16 -19
  129. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.cjs +1 -1
  130. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.d.ts +3 -3
  131. package/data-structures/event-service/evm/AbstractNullifierSnapshotService.mjs +6 -5
  132. package/data-structures/event-service/evm/AbstractSnapshotService.d.ts +1 -1
  133. package/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  134. package/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +7 -4
  135. package/data-structures/event-service/evm/BlockchainEventEmitter.mjs +35 -34
  136. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.cjs +1 -0
  137. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.d.ts +11 -0
  138. package/data-structures/event-service/evm/ClientBlockchainEventEmitter.mjs +21 -0
  139. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.cjs +1 -0
  140. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.d.ts +6 -0
  141. package/data-structures/event-service/evm/PollingBlockchainEventEmitter.mjs +16 -0
  142. package/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -0
  143. package/data-structures/event-service/helpers/ClientEventHelper.d.ts +11 -0
  144. package/data-structures/event-service/helpers/ClientEventHelper.mjs +26 -0
  145. package/data-structures/event-service/helpers/PollingEventHelper.cjs +1 -0
  146. package/data-structures/event-service/helpers/PollingEventHelper.d.ts +5 -0
  147. package/data-structures/event-service/helpers/PollingEventHelper.mjs +14 -0
  148. package/data-structures/event-service/index.d.ts +4 -0
  149. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.cjs +1 -1
  150. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.d.ts +3 -2
  151. package/data-structures/event-service/solana/AbstractSolanaAccessTokenSnapshotService.mjs +6 -6
  152. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs +1 -1
  153. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.d.ts +4 -3
  154. package/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.mjs +8 -8
  155. package/data-structures/event-service/solana/AbstractSolanaEventService.cjs +1 -1
  156. package/data-structures/event-service/solana/AbstractSolanaEventService.d.ts +3 -10
  157. package/data-structures/event-service/solana/AbstractSolanaEventService.mjs +5 -5
  158. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.cjs +1 -1
  159. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.d.ts +3 -2
  160. package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.mjs +1 -1
  161. package/data-structures/event-service/solana/AbstractSolanaSnapshotService.d.ts +1 -1
  162. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.cjs +1 -0
  163. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.d.ts +11 -0
  164. package/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.mjs +22 -0
  165. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.cjs +1 -0
  166. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.d.ts +6 -0
  167. package/data-structures/event-service/solana/PollingSolanaBlockchainEventEmitter.mjs +16 -0
  168. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.cjs +1 -1
  169. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.d.ts +8 -14
  170. package/data-structures/event-service/solana/SolanaBlockchainEventEmitter.mjs +68 -67
  171. package/data-structures/index.d.ts +3 -0
  172. package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.cjs +1 -1
  173. package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.mjs +5 -2
  174. package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.cjs +1 -1
  175. package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.mjs +5 -2
  176. package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs +1 -1
  177. package/data-structures/snapshot/evm-snapshots/ClientCommitmentsSnapshotService.mjs +5 -2
  178. package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs +1 -1
  179. package/data-structures/snapshot/evm-snapshots/ClientNullifierSnapshotService.mjs +5 -2
  180. package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.cjs +1 -1
  181. package/data-structures/snapshot/solana-snapshots/ClientSolanaAccessTokenSnapshotService.mjs +5 -2
  182. package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs +1 -1
  183. package/data-structures/snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.mjs +5 -2
  184. package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs +1 -1
  185. package/data-structures/snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.mjs +5 -2
  186. package/data-structures/utxo/Utxo.cjs +1 -1
  187. package/data-structures/utxo/Utxo.d.ts +1 -0
  188. package/data-structures/utxo/Utxo.mjs +18 -4
  189. package/error-handling/error-codes.constants.cjs +1 -1
  190. package/error-handling/error-codes.constants.mjs +2 -2
  191. package/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
  192. package/functions/pre-transaction/getSolanaCalldataHash.mjs +22 -22
  193. package/functions/pre-transaction/sendV0Transaction.cjs +1 -1
  194. package/functions/pre-transaction/sendV0Transaction.mjs +53 -50
  195. package/functions/pre-transaction/solana.cjs +1 -1
  196. package/functions/pre-transaction/solana.mjs +93 -93
  197. package/functions/private-wallet/emporium.helpers.cjs +1 -1
  198. package/functions/private-wallet/emporium.helpers.d.ts +3 -2
  199. package/functions/private-wallet/emporium.helpers.mjs +118 -93
  200. package/functions/snarkjs/constructEmporiumProof.cjs +1 -1
  201. package/functions/snarkjs/constructEmporiumProof.d.ts +1 -2
  202. package/functions/snarkjs/constructEmporiumProof.mjs +89 -89
  203. package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  204. package/functions/snarkjs/constructSolanaZkProof.mjs +6 -2
  205. package/functions/utils/bytes32.utils.cjs +1 -1
  206. package/functions/utils/bytes32.utils.mjs +8 -7
  207. package/functions/utils/create-provider.cjs +1 -1
  208. package/functions/utils/create-provider.d.ts +1 -1
  209. package/functions/utils/create-provider.mjs +13 -9
  210. package/functions/utils/index.d.ts +0 -1
  211. package/functions/utils/prepareHinkal.cjs +1 -1
  212. package/functions/utils/prepareHinkal.d.ts +6 -7
  213. package/functions/utils/prepareHinkal.mjs +45 -53
  214. package/functions/utils/publicBalance.utils.cjs +1 -1
  215. package/functions/utils/publicBalance.utils.mjs +49 -54
  216. package/functions/utils/socket.utils.cjs +1 -0
  217. package/functions/utils/socket.utils.d.ts +1 -0
  218. package/functions/utils/socket.utils.mjs +12 -0
  219. package/functions/utils/string.utils.cjs +1 -1
  220. package/functions/utils/string.utils.d.ts +1 -0
  221. package/functions/utils/string.utils.mjs +18 -14
  222. package/functions/utils/walletBalances.utils.cjs +1 -1
  223. package/functions/utils/walletBalances.utils.d.ts +1 -1
  224. package/functions/utils/walletBalances.utils.mjs +4 -4
  225. package/functions/web3/crypto.cjs +1 -0
  226. package/functions/web3/crypto.d.ts +1 -0
  227. package/functions/web3/crypto.mjs +7 -0
  228. package/functions/web3/events/getApprovedBalance.cjs +1 -1
  229. package/functions/web3/events/getApprovedBalance.mjs +14 -14
  230. package/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  231. package/functions/web3/events/getInputUtxoAndBalance.mjs +61 -59
  232. package/functions/web3/events/getTransactionLogEvents.cjs +1 -1
  233. package/functions/web3/events/getTransactionLogEvents.mjs +32 -32
  234. package/functions/web3/fetchSolanaMerkleTreeRootHash.cjs +1 -1
  235. package/functions/web3/fetchSolanaMerkleTreeRootHash.mjs +6 -3
  236. package/functions/web3/functionCalls/approveToken.cjs +1 -1
  237. package/functions/web3/functionCalls/approveToken.mjs +17 -17
  238. package/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  239. package/functions/web3/functionCalls/transactCallDirect.mjs +16 -16
  240. package/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  241. package/functions/web3/functionCalls/transactCallRelayer.mjs +13 -11
  242. package/functions/web3/getContractMetadata.cjs +1 -1
  243. package/functions/web3/getContractMetadata.mjs +17 -22
  244. package/functions/web3/getTokenHolder.cjs +1 -1
  245. package/functions/web3/getTokenHolder.mjs +20 -20
  246. package/functions/web3/index.d.ts +1 -0
  247. package/index.cjs +1 -1
  248. package/index.mjs +913 -890
  249. package/package.json +3 -2
  250. package/providers/EthersProviderAdapter.cjs +1 -1
  251. package/providers/EthersProviderAdapter.mjs +2 -5
  252. package/providers/prepareEthersHinkal.cjs +1 -1
  253. package/providers/prepareEthersHinkal.mjs +11 -4
  254. package/providers/prepareWagmiHinkal.cjs +1 -1
  255. package/providers/prepareWagmiHinkal.mjs +11 -4
  256. package/types/activities.types.d.ts +2 -0
  257. package/types/bridging-tx.types.d.ts +17 -0
  258. package/types/cache.types.cjs +1 -1
  259. package/types/cache.types.d.ts +5 -1
  260. package/types/cache.types.mjs +1 -1
  261. package/types/ethereum-network.types.d.ts +1 -0
  262. package/types/events.types.cjs +1 -0
  263. package/types/events.types.d.ts +9 -0
  264. package/types/events.types.mjs +5 -0
  265. package/types/index.d.ts +2 -0
  266. package/types/proxy.types.d.ts +11 -4
  267. package/types/sandbox.types.d.ts +2 -0
  268. package/types/solana.types.d.ts +8 -0
  269. package/types/token.types.d.ts +5 -0
  270. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.cjs +1 -1
  271. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.mjs +1 -1
  272. package/webworker/utxoWorker/utxoWorkerLauncher.cjs +1 -1
  273. package/webworker/utxoWorker/utxoWorkerLauncher.mjs +1 -1
  274. package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +1 -1
  275. package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +1 -1
  276. package/functions/kyc/authentoHelper.cjs +0 -1
  277. package/functions/kyc/authentoHelper.d.ts +0 -12
  278. package/functions/kyc/authentoHelper.mjs +0 -30
  279. package/functions/utils/get-hinkal-approvals.cjs +0 -1
  280. package/functions/utils/get-hinkal-approvals.d.ts +0 -3
  281. package/functions/utils/get-hinkal-approvals.mjs +0 -38
@@ -1,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, networkRegistry as M } from "../../constants/chains.constants.mjs";
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 L } from "../../functions/utils/string.utils.mjs";
7
- import { StorageKeys as S } from "../../types/cache.types.mjs";
8
- import { httpClient as R } from "../http/HttpClient.mjs";
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 U } from "../../functions/utils/erc20tokenFunctions.mjs";
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 O } from "../../constants/events.constants.mjs";
14
- import { caseInsensitiveEqual as y } from "../../functions/utils/caseInsensitive.utils.mjs";
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 N {
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 = L(s, e);
42
- return (await P(S.EVENTS_PUBLIC_APPROVALS))?.[r] || [];
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(S.PUBLIC_APPROVALS_LAST_PROCESSED_BLOCKS) || {}, d = L(s, e);
46
- return r[d] || O[e];
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(S.PUBLIC_APPROVALS_LAST_PROCESSED_BLOCKS, (d = {}) => {
50
- const i = L(s, e);
49
+ await I(y.PUBLIC_APPROVALS_LAST_PROCESSED_BLOCKS, (c = {}) => {
50
+ const p = S(s, e);
51
51
  return {
52
- ...d,
53
- [i]: r
52
+ ...c,
53
+ [p]: r
54
54
  };
55
55
  });
56
56
  }
57
57
  async getApprovalEvents(e, s) {
58
58
  try {
59
- const { fetchRpcUrl: r } = M[s];
60
- if (!r)
61
- throw Error("No fetchRpcUrl in EventsPublicApprovalsDB");
62
- const d = F(r), i = await this.getLastProcessedBlock(s, e) + 1, l = await d.getBlockNumber();
63
- if (i > l)
64
- return { approvalEvents: [], latestBlock: l };
65
- const E = k.utils.hexZeroPad(e.toLowerCase(), 32), p = {
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 d.getLogs(p), latestBlock: l };
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 d = this.getAlchemyUrl(e), i = `0x${s.substring(2).padStart(64, "0")}`, l = [...new Set(r.map((t) => t.contractAddress))], E = (await $.tokensInfoCall(e, l)).filter((t) => !!t), p = new Map(E.map((t) => [t.erc20TokenAddress.toLowerCase(), t])), c = [], v = [];
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 = p.get(t.contractAddress.toLowerCase());
75
+ const a = d.get(t.contractAddress.toLowerCase());
79
76
  if (a)
80
- if (!U(a))
81
- c.push({
77
+ if (!R(a))
78
+ i.push({
82
79
  jsonrpc: "2.0",
83
- id: c.length,
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 m = `0x${t.spenderAddress.substring(2).padStart(64, "0")}`, g = `${this.isApprovedForAllSelector}${i.substring(2)}${m.substring(2)}`;
89
- c.push({
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: c.length,
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
- c.push({
93
+ i.push({
97
94
  jsonrpc: "2.0",
98
- id: c.length,
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
- }), c.length === 0)
101
+ }), i.length === 0)
105
102
  return [];
106
- const n = await R.post(d, c), u = [], A = /* @__PURE__ */ new Set();
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 m = r[a.pairIndex], g = p.get(m.contractAddress.toLowerCase());
112
- if (!(!g || y(m.spenderAddress, B)) && !t?.error && t?.result && t.result !== "0x")
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
- u.push({ token: g, spenderAddress: m.spenderAddress, allowance: BigInt(t.result) });
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
- A.add(a.pairIndex), u.push({ token: g, spenderAddress: m.spenderAddress, allowance: 1n });
118
- else if (a.type === w.tokenId && !A.has(a.pairIndex)) {
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
- !y(h, B) && y(h, m.spenderAddress) && u.push({
117
+ !E(h, B) && E(h, A.spenderAddress) && l.push({
121
118
  token: g,
122
- spenderAddress: m.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
- }), u;
127
+ }), l;
131
128
  }
132
129
  async fetchAndUpdatePublicApprovals(e, s) {
133
- const r = L(e, s);
130
+ const r = S(e, s);
134
131
  await this.getMutex(r).runExclusive(async () => {
135
132
  try {
136
- const { approvalEvents: i, latestBlock: l } = await this.getApprovalEvents(e, s);
137
- if (!l)
133
+ const { approvalEvents: p, latestBlock: m } = await this.getApprovalEvents(e, s);
134
+ if (!m)
138
135
  return;
139
- const E = await this.getApprovals(s, e), p = /* @__PURE__ */ new Map();
140
- if (E.forEach((n) => {
141
- const u = n.token.erc20TokenAddress.toLowerCase(), A = n.spenderAddress.toLowerCase(), t = `${u}_${A}`;
142
- let o = p.get(t);
143
- o || (o = { contractAddress: u, spenderAddress: A, tokenIds: /* @__PURE__ */ new Set() }, p.set(t, o)), n.tokenId && o.tokenIds && o.tokenIds.add(n.tokenId);
144
- }), i.forEach((n) => {
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 u = n.address.toLowerCase(), A = `0x${n.topics[2].substring(26)}`.toLowerCase();
148
- if (y(A, B))
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 = `${u}_${A}`;
151
- let o = p.get(t);
152
- if (o || (o = { contractAddress: u, spenderAddress: A, tokenIds: /* @__PURE__ */ new Set() }, p.set(t, o)), n.topics.length === 4 && o.tokenIds) {
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
- }), p.size === 0) {
157
- await this.updateLastProcessedBlock(s, e, l);
153
+ }), d.size === 0) {
154
+ await this.updateLastProcessedBlock(s, e, m);
158
155
  return;
159
156
  }
160
- const c = Array.from(p.values()), v = await this.checkCurrentAllowances(s, e, c);
161
- await I(S.EVENTS_PUBLIC_APPROVALS, (n = {}) => ({
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, l);
165
- } catch (i) {
166
- C.error("Failed to sync approvals", i);
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 st = new N();
168
+ const et = new O();
172
169
  export {
173
- N as EventsPublicApprovalsDB,
174
- st as eventsPublicApprovalsDB
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 providerAdapter?;
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
- resetMerkle(chainIds?: number[]): Promise<void>;
44
- getProviderAdapter(): IProviderAdapter<ConnectorType>;
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(connector: ConnectorType): Promise<number>;
59
+ isPermitterAvailable(chainId: number): boolean;
60
+ private connectAndPatchProvider;
57
61
  disconnectFromConnector(): Promise<void>;
58
- updateProviderAdapter(providerAdapter: IProviderAdapter): Promise<void>;
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, erc20Addresses: string[], 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>;
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>;