@hinkal/common 0.3.2 → 0.3.4

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 (452) hide show
  1. package/README.md +16 -19
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +5 -5
  4. package/common/src/API/API.mjs +78 -78
  5. package/common/src/API/callRelayer.d.ts +3 -0
  6. package/common/src/API/enclaveUtxoCalls.cjs +1 -1
  7. package/common/src/API/enclaveUtxoCalls.d.ts +8 -7
  8. package/common/src/API/enclaveUtxoCalls.mjs +5 -3
  9. package/common/src/API/getOdosPriceForToken.cjs +1 -0
  10. package/common/src/API/getOdosPriceForToken.d.ts +1 -0
  11. package/common/src/API/getOdosPriceForToken.mjs +14 -0
  12. package/common/src/API/getWebsiteURL.d.ts +0 -1
  13. package/common/src/API/index.cjs +1 -1
  14. package/common/src/API/index.d.ts +0 -1
  15. package/common/src/API/index.mjs +1 -2
  16. package/common/src/API/rewardsUserCalls.cjs +1 -1
  17. package/common/src/API/rewardsUserCalls.d.ts +0 -2
  18. package/common/src/API/rewardsUserCalls.mjs +2 -3
  19. package/common/src/API/tenderly.api.cjs +1 -1
  20. package/common/src/API/tenderly.api.d.ts +5 -10
  21. package/common/src/API/tenderly.api.mjs +1 -1
  22. package/common/src/constants/addresses.constants.cjs +1 -1
  23. package/common/src/constants/addresses.constants.d.ts +4 -46
  24. package/common/src/constants/addresses.constants.mjs +19 -60
  25. package/common/src/constants/balance.constants.cjs +1 -0
  26. package/common/src/constants/balance.constants.d.ts +1 -0
  27. package/common/src/constants/balance.constants.mjs +4 -0
  28. package/common/src/constants/chains.constants.cjs +1 -1
  29. package/common/src/constants/chains.constants.d.ts +3 -1
  30. package/common/src/constants/chains.constants.mjs +117 -131
  31. package/common/src/constants/coingecko.constants.cjs +1 -1
  32. package/common/src/constants/coingecko.constants.d.ts +2 -0
  33. package/common/src/constants/coingecko.constants.mjs +1 -1
  34. package/common/src/constants/contracts.constants.cjs +1 -1
  35. package/common/src/constants/contracts.constants.d.ts +0 -109
  36. package/common/src/constants/contracts.constants.mjs +13 -22
  37. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  38. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +1 -3
  39. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  40. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +6 -6
  41. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  42. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +1 -3
  43. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -0
  44. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +10 -0
  45. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  46. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +1 -3
  47. package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
  48. package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +0 -3
  49. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  50. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +6 -8
  51. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
  52. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +1 -4
  53. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  54. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +1 -3
  55. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
  56. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +0 -1
  57. package/common/src/constants/deploy-data/deploy-data-solana.json.cjs +1 -1
  58. package/common/src/constants/deploy-data/deploy-data-solana.json.mjs +2 -2
  59. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  60. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +6 -7
  61. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  62. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -4
  63. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  64. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -4
  65. package/common/src/constants/deploy-data/index.cjs +1 -1
  66. package/common/src/constants/deploy-data/index.d.ts +2 -1
  67. package/common/src/constants/deploy-data/index.mjs +16 -15
  68. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.cjs +1 -1
  69. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.mjs +1 -1
  70. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  71. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +2 -35
  72. package/common/src/constants/events.constants.cjs +1 -1
  73. package/common/src/constants/events.constants.mjs +3 -2
  74. package/common/src/constants/fees.constants.cjs +1 -1
  75. package/common/src/constants/fees.constants.mjs +2 -2
  76. package/common/src/constants/index.cjs +1 -1
  77. package/common/src/constants/index.d.ts +0 -1
  78. package/common/src/constants/index.mjs +1 -0
  79. package/common/src/constants/protocol.constants.cjs +2 -2
  80. package/common/src/constants/protocol.constants.d.ts +3 -1
  81. package/common/src/constants/protocol.constants.mjs +2 -2
  82. package/common/src/constants/server.constants.cjs +1 -1
  83. package/common/src/constants/server.constants.d.ts +1 -2
  84. package/common/src/constants/server.constants.mjs +1 -2
  85. package/common/src/constants/tokens.constants.cjs +1 -1
  86. package/common/src/constants/tokens.constants.mjs +1 -1
  87. package/common/src/crypto/index.cjs +1 -1
  88. package/common/src/crypto/index.d.ts +0 -1
  89. package/common/src/crypto/index.mjs +0 -1
  90. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  91. package/common/src/data-structures/Hinkal/Hinkal.mjs +26 -22
  92. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  93. package/common/src/data-structures/Hinkal/handleAutoDepositBack.d.ts +1 -1
  94. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +36 -35
  95. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +3 -3
  97. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  98. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +60 -58
  99. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +42 -47
  101. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalDeposit.d.ts +1 -0
  103. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +50 -116
  104. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  105. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +102 -92
  106. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  107. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.d.ts +3 -2
  108. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +104 -59
  109. package/common/src/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -1
  110. package/common/src/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +4 -4
  111. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
  112. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +7 -3
  113. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  114. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +51 -39
  115. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  116. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -2
  117. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +53 -131
  118. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  119. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.d.ts +1 -1
  120. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +29 -47
  121. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  122. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +3 -3
  123. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  124. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +70 -45
  125. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  126. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
  127. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +47 -45
  128. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  129. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +8 -4
  130. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +133 -81
  131. package/common/src/data-structures/Hinkal/hinkalSolanaProoflessDeposit.cjs +1 -1
  132. package/common/src/data-structures/Hinkal/hinkalSolanaProoflessDeposit.d.ts +1 -1
  133. package/common/src/data-structures/Hinkal/hinkalSolanaProoflessDeposit.mjs +16 -12
  134. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  135. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.d.ts +2 -2
  136. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +61 -54
  137. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  138. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +1 -1
  139. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  140. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +87 -51
  141. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  142. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.d.ts +1 -0
  143. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +95 -50
  144. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  145. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +60 -34
  146. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  147. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +29 -32
  148. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -0
  149. package/common/src/data-structures/Hinkal/hinkalTransact.d.ts +3 -0
  150. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +90 -0
  151. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  152. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +40 -45
  153. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.cjs +1 -0
  154. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.d.ts +8 -0
  155. package/common/src/data-structures/Hinkal/hinkalTronDepositToSelf.mjs +30 -0
  156. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  157. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -45
  158. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  159. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +167 -95
  160. package/common/src/data-structures/Hinkal/prepareTronDepositToSelf.cjs +1 -0
  161. package/common/src/data-structures/Hinkal/prepareTronDepositToSelf.d.ts +27 -0
  162. package/common/src/data-structures/Hinkal/prepareTronDepositToSelf.mjs +31 -0
  163. package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  164. package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +1 -0
  165. package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
  166. package/common/src/data-structures/IndexedDB/activity-db.mjs +34 -34
  167. package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
  168. package/common/src/data-structures/IndexedDB/signatures-db.mjs +11 -11
  169. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
  170. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +11 -10
  171. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +1 -1
  172. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +14 -14
  173. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
  174. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +26 -26
  175. package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
  176. package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +15 -15
  177. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +1 -1
  178. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +12 -16
  179. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +1 -1
  180. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +1 -0
  181. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +8 -4
  182. package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
  183. package/common/src/data-structures/crypto-keys/decodeUTXO.d.ts +1 -0
  184. package/common/src/data-structures/crypto-keys/decodeUTXO.mjs +12 -12
  185. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  186. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.mjs +12 -12
  187. package/common/src/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -1
  188. package/common/src/data-structures/event-service/helpers/ClientEventHelper.mjs +6 -6
  189. package/common/src/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs +1 -1
  190. package/common/src/data-structures/event-service/solana/AbstractSolanaCommitmentsSnapshotService.mjs +27 -23
  191. package/common/src/data-structures/merkle-tree/MerkleTree.cjs +1 -1
  192. package/common/src/data-structures/merkle-tree/MerkleTree.d.ts +10 -0
  193. package/common/src/data-structures/merkle-tree/MerkleTree.mjs +9 -1
  194. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -1
  195. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.d.ts +3 -0
  196. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.mjs +64 -54
  197. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  198. package/common/src/error-handling/error-codes.constants.d.ts +6 -11
  199. package/common/src/error-handling/error-codes.constants.mjs +8 -13
  200. package/common/src/error-handling/get-error.message.cjs +1 -1
  201. package/common/src/error-handling/get-error.message.mjs +27 -14
  202. package/common/src/externalABIs/index.cjs +1 -1
  203. package/common/src/externalABIs/index.d.ts +1 -113
  204. package/common/src/externalABIs/index.mjs +2 -6
  205. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.cjs +1 -1
  206. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.mjs +8 -8
  207. package/common/src/functions/index.cjs +1 -1
  208. package/common/src/functions/index.d.ts +0 -1
  209. package/common/src/functions/index.mjs +12 -15
  210. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.cjs +1 -1
  211. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.mjs +39 -5
  212. package/common/src/functions/pre-transaction/getExternalSwapAddress.cjs +1 -1
  213. package/common/src/functions/pre-transaction/getExternalSwapAddress.mjs +2 -18
  214. package/common/src/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
  215. package/common/src/functions/pre-transaction/getSolanaCalldataHash.d.ts +1 -1
  216. package/common/src/functions/pre-transaction/getSolanaCalldataHash.mjs +11 -10
  217. package/common/src/functions/pre-transaction/getVolatileTransferAmount.cjs +1 -1
  218. package/common/src/functions/pre-transaction/getVolatileTransferAmount.mjs +12 -12
  219. package/common/src/functions/pre-transaction/index.cjs +1 -1
  220. package/common/src/functions/pre-transaction/index.d.ts +1 -2
  221. package/common/src/functions/pre-transaction/index.mjs +1 -2
  222. package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
  223. package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +1 -1
  224. package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +7 -8
  225. package/common/src/functions/pre-transaction/solana.cjs +1 -1
  226. package/common/src/functions/pre-transaction/solana.d.ts +13 -0
  227. package/common/src/functions/pre-transaction/solana.mjs +46 -22
  228. package/common/src/functions/pre-transaction/store-proof.cjs +1 -1
  229. package/common/src/functions/pre-transaction/store-proof.d.ts +1 -1
  230. package/common/src/functions/pre-transaction/store-proof.mjs +1 -0
  231. package/common/src/functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs +1 -1
  232. package/common/src/functions/pre-transaction/waitForDepositedUtxosInMerkleTree.mjs +1 -1
  233. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  234. package/common/src/functions/private-wallet/emporium.helpers.mjs +12 -13
  235. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  236. package/common/src/functions/private-wallet/emporium.swap.helpers.d.ts +0 -1
  237. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +38 -80
  238. package/common/src/functions/private-wallet/index.cjs +1 -1
  239. package/common/src/functions/private-wallet/index.d.ts +0 -1
  240. package/common/src/functions/private-wallet/index.mjs +0 -1
  241. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  242. package/common/src/functions/snarkjs/common.snarkjs.d.ts +2 -2
  243. package/common/src/functions/snarkjs/common.snarkjs.mjs +89 -52
  244. package/common/src/functions/snarkjs/constant.cjs +1 -1
  245. package/common/src/functions/snarkjs/constant.d.ts +32 -0
  246. package/common/src/functions/snarkjs/constant.mjs +32 -0
  247. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  248. package/common/src/functions/snarkjs/constructGeneralZkProof.d.ts +1 -1
  249. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +78 -65
  250. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  251. package/common/src/functions/snarkjs/constructSolanaZkProof.d.ts +4 -1
  252. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +44 -39
  253. package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -0
  254. package/common/src/functions/snarkjs/constructTxEnclave.d.ts +32 -0
  255. package/common/src/functions/snarkjs/constructTxEnclave.mjs +162 -0
  256. package/common/src/functions/snarkjs/fetchTronInsertionSiblings.cjs +1 -0
  257. package/common/src/functions/snarkjs/fetchTronInsertionSiblings.d.ts +7 -0
  258. package/common/src/functions/snarkjs/fetchTronInsertionSiblings.mjs +13 -0
  259. package/common/src/functions/snarkjs/generateCircomData.cjs +1 -1
  260. package/common/src/functions/snarkjs/generateCircomData.d.ts +1 -1
  261. package/common/src/functions/snarkjs/generateCircomData.mjs +33 -27
  262. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -1
  263. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.d.ts +1 -1
  264. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +7 -7
  265. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  266. package/common/src/functions/snarkjs/generateZkProof.d.ts +1 -1
  267. package/common/src/functions/snarkjs/generateZkProof.mjs +9 -16
  268. package/common/src/functions/snarkjs/signedMessageHash.cjs +1 -1
  269. package/common/src/functions/snarkjs/signedMessageHash.d.ts +11 -0
  270. package/common/src/functions/snarkjs/signedMessageHash.mjs +21 -3
  271. package/common/src/functions/snarkjs/verifySignedEnclaveResponse.cjs +1 -0
  272. package/common/src/functions/snarkjs/verifySignedEnclaveResponse.d.ts +1 -0
  273. package/common/src/functions/snarkjs/verifySignedEnclaveResponse.mjs +11 -0
  274. package/common/src/functions/utils/addresses.cjs +1 -1
  275. package/common/src/functions/utils/addresses.d.ts +1 -0
  276. package/common/src/functions/utils/addresses.mjs +6 -2
  277. package/common/src/functions/utils/buildClaimableDepositPlan.d.ts +2 -2
  278. package/common/src/functions/utils/convertIntegrationProviderToExternalActionId.cjs +1 -1
  279. package/common/src/functions/utils/convertIntegrationProviderToExternalActionId.mjs +1 -1
  280. package/common/src/functions/utils/deposit-claimable.utils.cjs +1 -1
  281. package/common/src/functions/utils/deposit-claimable.utils.d.ts +1 -1
  282. package/common/src/functions/utils/deposit-claimable.utils.mjs +3 -1
  283. package/common/src/functions/utils/enclave-utxo-storage.cjs +1 -1
  284. package/common/src/functions/utils/enclave-utxo-storage.mjs +1 -1
  285. package/common/src/functions/utils/fees.utils.cjs +1 -1
  286. package/common/src/functions/utils/fees.utils.mjs +31 -31
  287. package/common/src/functions/utils/formatter.d.ts +1 -0
  288. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  289. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +6 -6
  290. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  291. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +11 -10
  292. package/common/src/functions/utils/index.cjs +1 -1
  293. package/common/src/functions/utils/index.d.ts +2 -2
  294. package/common/src/functions/utils/index.mjs +11 -10
  295. package/common/src/functions/utils/process.utils.cjs +1 -1
  296. package/common/src/functions/utils/process.utils.d.ts +0 -1
  297. package/common/src/functions/utils/process.utils.mjs +2 -11
  298. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  299. package/common/src/functions/utils/publicBalance.utils.mjs +2 -1
  300. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  301. package/common/src/functions/utils/transfer-claimable.utils.mjs +2 -2
  302. package/common/src/functions/utils/tron.utils.cjs +1 -1
  303. package/common/src/functions/utils/tron.utils.d.ts +5 -14
  304. package/common/src/functions/utils/tron.utils.mjs +91 -127
  305. package/common/src/functions/utils/waasStamp.cjs +1 -0
  306. package/common/src/functions/utils/waasStamp.d.ts +5 -0
  307. package/common/src/functions/utils/waasStamp.mjs +2 -0
  308. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  309. package/common/src/functions/web3/events/getInputUtxoAndBalance.d.ts +3 -8
  310. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +44 -48
  311. package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
  312. package/common/src/functions/web3/events/getInputUtxosEnclave.d.ts +4 -3
  313. package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +34 -25
  314. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  315. package/common/src/functions/web3/events/getShieldedBalance.d.ts +1 -1
  316. package/common/src/functions/web3/events/getShieldedBalance.mjs +88 -76
  317. package/common/src/functions/web3/fetchSolanaMerkleTreeRootHash.cjs +1 -1
  318. package/common/src/functions/web3/fetchSolanaMerkleTreeRootHash.mjs +9 -6
  319. package/common/src/functions/web3/functionCalls/approveToken.cjs +1 -1
  320. package/common/src/functions/web3/functionCalls/approveToken.mjs +12 -12
  321. package/common/src/functions/web3/functionCalls/submitProof.cjs +1 -0
  322. package/common/src/functions/web3/functionCalls/submitProof.d.ts +5 -0
  323. package/common/src/functions/web3/functionCalls/submitProof.mjs +26 -0
  324. package/common/src/functions/web3/functionCalls/transactCallDirectTron.cjs +1 -1
  325. package/common/src/functions/web3/functionCalls/transactCallDirectTron.d.ts +7 -3
  326. package/common/src/functions/web3/functionCalls/transactCallDirectTron.mjs +81 -87
  327. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  328. package/common/src/functions/web3/functionCalls/transactCallRelayer.d.ts +6 -11
  329. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +4 -2
  330. package/common/src/functions/web3/functionCalls/waitForErc20Approvals.cjs +1 -1
  331. package/common/src/functions/web3/functionCalls/waitForErc20Approvals.mjs +6 -6
  332. package/common/src/functions/web3/getContractMetadata.cjs +1 -1
  333. package/common/src/functions/web3/getContractMetadata.mjs +1 -1
  334. package/common/src/functions/web3/getTokenHolder.cjs +1 -1
  335. package/common/src/functions/web3/getTokenHolder.mjs +3 -2
  336. package/common/src/functions/web3/index.cjs +1 -1
  337. package/common/src/functions/web3/index.d.ts +0 -3
  338. package/common/src/functions/web3/index.mjs +0 -3
  339. package/common/src/functions/web3/lifiAPI.cjs +1 -1
  340. package/common/src/functions/web3/lifiAPI.mjs +1 -1
  341. package/common/src/providers/TronProviderAdapter.cjs +1 -1
  342. package/common/src/providers/TronProviderAdapter.mjs +7 -1
  343. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  344. package/common/src/providers/WagmiProviderAdapter.mjs +5 -5
  345. package/common/src/types/activities.types.cjs +1 -1
  346. package/common/src/types/activities.types.d.ts +0 -9
  347. package/common/src/types/activities.types.mjs +1 -1
  348. package/common/src/types/admin.types.cjs +1 -1
  349. package/common/src/types/admin.types.d.ts +3 -1
  350. package/common/src/types/admin.types.mjs +1 -1
  351. package/common/src/types/bridging-tx.types.d.ts +8 -0
  352. package/common/src/types/cache.types.cjs +1 -1
  353. package/common/src/types/cache.types.d.ts +2 -1
  354. package/common/src/types/cache.types.mjs +1 -1
  355. package/common/src/types/circom-data.types.d.ts +6 -0
  356. package/common/src/types/commitments.types.d.ts +2 -0
  357. package/common/src/types/dashboard-transaction.types.d.ts +3 -0
  358. package/common/src/types/ethereum-network.types.cjs +1 -1
  359. package/common/src/types/ethereum-network.types.d.ts +6 -15
  360. package/common/src/types/ethereum-network.types.mjs +1 -1
  361. package/common/src/types/external-action.types.cjs +1 -1
  362. package/common/src/types/external-action.types.d.ts +2 -5
  363. package/common/src/types/external-action.types.mjs +1 -1
  364. package/common/src/types/hinkal.types.cjs +1 -1
  365. package/common/src/types/hinkal.types.d.ts +4 -7
  366. package/common/src/types/hinkal.types.mjs +1 -1
  367. package/common/src/types/index.cjs +1 -1
  368. package/common/src/types/index.d.ts +2 -0
  369. package/common/src/types/index.mjs +1 -0
  370. package/common/src/types/near-intents.types.d.ts +1 -0
  371. package/common/src/types/offscreen.types.cjs +1 -1
  372. package/common/src/types/offscreen.types.d.ts +0 -1
  373. package/common/src/types/offscreen.types.mjs +1 -1
  374. package/common/src/types/pay-activities.types.d.ts +3 -0
  375. package/common/src/types/remote-proof.types.d.ts +0 -6
  376. package/common/src/types/remote-tx-build.types.d.ts +242 -0
  377. package/common/src/types/scheduled-transactions.types.d.ts +3 -0
  378. package/common/src/types/solana.types.d.ts +7 -0
  379. package/common/src/types/tenderly.api.types.d.ts +70 -0
  380. package/common/src/types/transact.types.cjs +1 -0
  381. package/common/src/types/transact.types.d.ts +53 -0
  382. package/common/src/types/transact.types.mjs +6 -0
  383. package/common/src/webworker/{logError-uy41lNp1.js → logError-CxZzSALU.js} +1 -1
  384. package/common/src/webworker/package.json +12 -12
  385. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  386. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  387. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  388. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  389. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  390. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  391. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  392. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  393. package/common/src/webworker/workerProxy-swwPYw6e.js +1 -0
  394. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  395. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  396. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  397. package/index.cjs +1 -1
  398. package/index.mjs +1 -1
  399. package/internal/swapApi.cjs +1 -1
  400. package/internal/swapApi.d.ts +3 -3
  401. package/internal/swapApi.mjs +22 -25
  402. package/package.json +12 -12
  403. package/services/Hinkal.cjs +1 -1
  404. package/services/Hinkal.d.ts +3 -3
  405. package/services/Hinkal.mjs +7 -7
  406. package/types/IHinkal.d.ts +3 -3
  407. package/types/swap.types.d.ts +3 -20
  408. package/common/src/API/callOdosAPI.cjs +0 -1
  409. package/common/src/API/callOdosAPI.d.ts +0 -63
  410. package/common/src/API/callOdosAPI.mjs +0 -18
  411. package/common/src/API/callOneInchAPI.cjs +0 -1
  412. package/common/src/API/callOneInchAPI.d.ts +0 -24
  413. package/common/src/API/callOneInchAPI.mjs +0 -16
  414. package/common/src/constants/rewards.constants.d.ts +0 -2
  415. package/common/src/crypto/ecdh-dual-path.cjs +0 -1
  416. package/common/src/crypto/ecdh-dual-path.d.ts +0 -13
  417. package/common/src/crypto/ecdh-dual-path.mjs +0 -6
  418. package/common/src/externalABIs/IQuoterV2.json.cjs +0 -1
  419. package/common/src/externalABIs/IQuoterV2.json.mjs +0 -203
  420. package/common/src/externalABIs/ISwapRouter.json.cjs +0 -1
  421. package/common/src/externalABIs/ISwapRouter.json.mjs +0 -537
  422. package/common/src/externalABIs/IUniswapV3Factory.json.cjs +0 -1
  423. package/common/src/externalABIs/IUniswapV3Factory.json.mjs +0 -188
  424. package/common/src/externalABIs/IUniswapV3Pool.json.cjs +0 -1
  425. package/common/src/externalABIs/IUniswapV3Pool.json.mjs +0 -938
  426. package/common/src/externalABIs/UniswapV2PoolAbi.json.cjs +0 -1
  427. package/common/src/externalABIs/UniswapV2PoolAbi.json.mjs +0 -78
  428. package/common/src/functions/pre-transaction/interaction-to-action.cjs +0 -1
  429. package/common/src/functions/pre-transaction/interaction-to-action.d.ts +0 -2
  430. package/common/src/functions/pre-transaction/interaction-to-action.mjs +0 -1
  431. package/common/src/functions/pre-transaction/recipientUtxoProcessing.cjs +0 -1
  432. package/common/src/functions/pre-transaction/recipientUtxoProcessing.d.ts +0 -3
  433. package/common/src/functions/pre-transaction/recipientUtxoProcessing.mjs +0 -30
  434. package/common/src/functions/private-wallet/opProducer.cjs +0 -1
  435. package/common/src/functions/private-wallet/opProducer.d.ts +0 -5
  436. package/common/src/functions/private-wallet/opProducer.mjs +0 -3
  437. package/common/src/functions/snarkjs/generateZkProofEnclave.cjs +0 -1
  438. package/common/src/functions/snarkjs/generateZkProofEnclave.d.ts +0 -5
  439. package/common/src/functions/snarkjs/generateZkProofEnclave.mjs +0 -27
  440. package/common/src/functions/utils/get-signature-header.cjs +0 -1
  441. package/common/src/functions/utils/get-signature-header.d.ts +0 -5
  442. package/common/src/functions/utils/get-signature-header.mjs +0 -4
  443. package/common/src/functions/web3/odosAPI.cjs +0 -1
  444. package/common/src/functions/web3/odosAPI.d.ts +0 -5
  445. package/common/src/functions/web3/odosAPI.mjs +0 -35
  446. package/common/src/functions/web3/oneInchAPI.cjs +0 -1
  447. package/common/src/functions/web3/oneInchAPI.d.ts +0 -5
  448. package/common/src/functions/web3/oneInchAPI.mjs +0 -44
  449. package/common/src/functions/web3/uniswapAPI.cjs +0 -1
  450. package/common/src/functions/web3/uniswapAPI.d.ts +0 -16
  451. package/common/src/functions/web3/uniswapAPI.mjs +0 -60
  452. package/common/src/webworker/workerProxy-MheXtWa4.js +0 -1
@@ -1,113 +1,185 @@
1
- import { isSolanaLike as e, isTronLike as t, networkRegistry as n } from "../../constants/chains.constants.mjs";
1
+ import { isSolanaLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
2
  import "../../constants/protocol.constants.mjs";
3
- import { countTotalAmountInUtxos as r } from "../../functions/utils/amounts.utils.mjs";
4
- import { transactionErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
5
- import { randomBigInt as a } from "../../functions/web3/etherFunctions.mjs";
6
- import { UserKeys as o } from "../crypto-keys/keys.mjs";
7
- import { getCurrentTimeInSeconds as s } from "../../functions/utils/time.utils.mjs";
8
- import { normalizeTokenAddress as c } from "../../functions/utils/encodeTokenWithId.mjs";
9
- import { addressToHexFormat as l, reorderZkCallData as u } from "../../functions/utils/tron.utils.mjs";
10
- import { getInputUtxoAndBalancePerToken as d } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
11
- import { ExternalActionId as f } from "../../types/external-action.types.mjs";
12
- import { validateAndGetChainId as p } from "../../functions/utils/token-check.utils.mjs";
13
- import { addPaddingToUtxos as m } from "../../functions/web3/events/getShieldedBalance.mjs";
14
- import { outputUtxoProcessing as h } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
15
- import { buildOutCommitments as g, calcEncryptedOutputs as _ } from "../../functions/snarkjs/common.snarkjs.mjs";
16
- import { getFeeStructure as v } from "../../functions/pre-transaction/getFeeStructure.mjs";
17
- import { constructZkProof as y } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
18
- import { constructSolanaZkProof as b } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
19
- import { solanaTransactCallRelayer as x, transactCallRelayer as S } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
- import { updateHinkal as C } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
21
- import { mergeWithFeeStructure as w } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
22
- import { ethers as T } from "ethers";
3
+ import { countTotalAmountInUtxos as n } from "../../functions/utils/amounts.utils.mjs";
4
+ import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
+ import { randomBigInt as i } from "../../functions/web3/etherFunctions.mjs";
6
+ import { UserKeys as a } from "../crypto-keys/keys.mjs";
7
+ import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
8
+ import { normalizeTokenAddress as s } from "../../functions/utils/encodeTokenWithId.mjs";
9
+ import { hashEthereumAddress as c } from "../../functions/utils/addresses.mjs";
10
+ import { addressToHexFormat as l } from "../../functions/utils/tron.utils.mjs";
11
+ import { getInputUtxoAndBalancePerToken as u } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
12
+ import { ExternalActionId as d } from "../../types/external-action.types.mjs";
13
+ import { SubmitMode as f } from "../../types/transact.types.mjs";
14
+ import { Logger as p } from "../../error-handling/logger.mjs";
15
+ import { validateAndGetChainId as m } from "../../functions/utils/token-check.utils.mjs";
16
+ import { addPaddingToUtxos as h } from "../../functions/web3/events/getShieldedBalance.mjs";
17
+ import { outputUtxoProcessing as g } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
18
+ import { buildOutCommitments as _ } from "../../functions/snarkjs/common.snarkjs.mjs";
19
+ import { finalizeSolanaTxEnclaveCallRelay as v, finalizeTxEnclaveCallRelay as y, prepareSolanaStuckWithdrawEnclaveCall as b, prepareStuckWithdrawEnclaveCall as x } from "../../functions/snarkjs/constructTxEnclave.mjs";
20
+ import { getFeeStructure as S } from "../../functions/pre-transaction/getFeeStructure.mjs";
21
+ import { solanaTransactCallRelayer as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
22
+ import { hinkalTransact as w } from "./hinkalTransact.mjs";
23
+ import { constructSolanaZkProof as T } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
24
+ import { updateHinkal as E } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
25
+ import { mergeWithFeeStructure as D } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
26
+ import { ethers as O } from "ethers";
23
27
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.ts
24
- var E = 6, D = async (e, t, n, r) => {
25
- let i = [...await m(e, t, n, r, void 0, !1, !0)], a = [], o = s().toString();
26
- for (let t = 0; t < n.length; t += 1) {
27
- let { outputUtxos: n } = h(e.userKeys, i[t], r[t], o);
28
- a.push(n);
29
- }
30
- return {
31
- inputUtxosArray: i,
32
- outputUtxosArray: a
33
- };
34
- }, O = async (e, t, n, r) => {
35
- let i = [...await m(e, t, n, r, 6, !1, !0)][0], a = s().toString(), { outputUtxos: o } = h(e.userKeys, i, r[0], a);
28
+ var k = 6, A = async (e, t, n, r) => {
29
+ let i = [...await h(e, t, n, r, 6, !1, !0)][0], a = o().toString(), { outputUtxos: s } = g(e.userKeys, i, r[0], a);
36
30
  return {
37
31
  inputUtxos: i,
38
- outputUtxos: o
32
+ outputUtxos: s
39
33
  };
40
- }, k = async (e, n, r, a, o) => {
41
- let s = t(n), c = [r.erc20TokenAddress], d = r.erc20TokenAddress, [p, m] = await Promise.all([v(n, d, c, f.Transact), e.getRandomRelay(n, !0)]);
42
- if (!m) throw Error(i.RELAYER_NOT_AVAILABLE);
43
- let h = l(o), g = a - p.flatFee;
44
- if (g <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);
45
- let _ = [-g];
46
- await w(n, c, _, p);
47
- let b = {
48
- externalActionId: 0n,
49
- externalAddress: h,
50
- externalActionMetadata: "0x00"
51
- }, { inputUtxosArray: x, outputUtxosArray: T } = await D(e, n, c, _), { zkCallData: E, circomData: O, dimData: k, commitmentValidationData: A } = await y(e.merkleTreeHinkalByChain[n], x, T, e.userKeys, b.externalActionId, b.externalAddress, b.externalActionMetadata, e.generateProofRemotely, p, m, n), j = await u(s, E, k, O);
52
- return C(n, e, O.inputNullifiers?.flat(), O.outCommitments?.flat(), O.encryptedOutputs?.flat()), {
53
- tx: await S(n, E, k, O, A, void 0, void 0, void 0, j),
54
- amountToRecipient: g
34
+ }, j = async (e, t, n, i) => {
35
+ let a = n.erc20TokenAddress, o = await e.getEthereumAddressByChain(t), [s, u] = await Promise.all([S(t, a, [a], d.Transact), e.getRandomRelay(t, !0)]);
36
+ if (!u) throw Error(r.RELAYER_NOT_AVAILABLE);
37
+ let f = await x(e, {
38
+ chainId: t,
39
+ erc20Address: a,
40
+ externalAddress: l(i),
41
+ relay: u,
42
+ feeStructure: s,
43
+ hashedEthereumAddress: c(o)
44
+ }), m = [];
45
+ for (let n = 0; n < f.length; n += 1) try {
46
+ let { jobId: r, signedMessageHash: i } = f[n], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
47
+ m.push(await y(r, {
48
+ R8: a,
49
+ S: o
50
+ }, t));
51
+ } catch (e) {
52
+ if (!m.length) throw e;
53
+ return p.error(`Stuck withdrawal partially submitted (${m.length}/${f.length})`, e), m;
54
+ }
55
+ return m;
56
+ }, M = async (e, t, n) => {
57
+ let r = await Promise.all(Array.from({ length: k }, async (r, i) => {
58
+ let a = i + 1, o = await S(e, t, [t], d.Transact, void 0, void 0, {
59
+ mintTo: t,
60
+ recipient: n,
61
+ nullifierCount: a
62
+ });
63
+ return [String(a), o];
64
+ }));
65
+ return Object.fromEntries(r);
66
+ }, N = async (e, t, n, i) => {
67
+ let a = n.erc20TokenAddress, [o, s, l] = await Promise.all([
68
+ e.getEthereumAddressByChain(t),
69
+ e.getRandomRelay(t, !0),
70
+ M(t, a, i)
71
+ ]);
72
+ if (!s) throw Error(r.RELAYER_NOT_AVAILABLE);
73
+ let u = await b(e, {
74
+ chainId: t,
75
+ mintAddress: a,
76
+ recipient: i,
77
+ relayAddress: s,
78
+ accounts: {
79
+ recipient: i,
80
+ mint: a === "11111111111111111111111111111111" ? void 0 : a
81
+ },
82
+ feeStructures: l,
83
+ hashedEthereumAddress: c(o)
84
+ }), d = [];
85
+ for (let n = 0; n < u.length; n += 1) {
86
+ let { jobId: r, signedMessageHash: i } = u[n], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
87
+ d.push(await v(r, {
88
+ R8: a,
89
+ S: o
90
+ }, t));
91
+ }
92
+ return d;
93
+ }, P = async (e, t, n, i, a) => {
94
+ let o = [n.erc20TokenAddress], s = n.erc20TokenAddress, [c, u] = await Promise.all([S(t, s, o, d.Transact), e.getRandomRelay(t, !0)]);
95
+ if (!u) throw Error(r.RELAYER_NOT_AVAILABLE);
96
+ let p = l(a), m = i - c.flatFee;
97
+ if (m <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${c.flatFee}`);
98
+ let h = [-m];
99
+ return await D(t, o, h, c), {
100
+ tx: await w(e, {
101
+ chainId: t,
102
+ erc20Addresses: o,
103
+ amountChanges: h,
104
+ externalAddress: p,
105
+ feeStructure: c,
106
+ relay: u,
107
+ useBlockedUtxos: !0,
108
+ onTxSubmitLocally: (n) => {
109
+ E(t, e, n.inputNullifiers?.flat(), n.outCommitments?.flat(), n.encryptedOutputs?.flat());
110
+ },
111
+ submit: { mode: f.Relayer }
112
+ }),
113
+ amountToRecipient: m
55
114
  };
56
- }, A = async (e, t, r, s, c, l) => {
57
- let u = [r.erc20TokenAddress], { originalDeployer: d } = n[t].contractData;
58
- if (!d) throw Error("missing data");
59
- let { userKeys: p, merkleTreeHinkalByChain: m } = e, h = r.erc20TokenAddress, [y, S] = await Promise.all([v(t, h, u, f.Transact, void 0, void 0, {
115
+ }, F = async (e, n, o, s, c, l) => {
116
+ let u = [o.erc20TokenAddress], { originalDeployer: f } = t[n].contractData;
117
+ if (!f) throw Error("missing data");
118
+ let { userKeys: p, merkleTreeHinkalByChain: m } = e, h = o.erc20TokenAddress, [g, v] = await Promise.all([S(n, h, u, d.Transact, void 0, void 0, {
60
119
  mintTo: u[0],
61
120
  recipient: c,
62
121
  nullifierCount: l
63
- }), e.getRandomRelay(t, !0)]);
64
- if (!S) throw Error(i.RELAYER_NOT_AVAILABLE);
65
- let w = s - y.flatFee;
66
- if (w <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${s}, Fee: ${y.flatFee}`);
67
- let E = [-w];
68
- E[0] -= y.flatFee;
69
- let { inputUtxos: D, outputUtxos: k } = await O(e, t, u, E), A = o.findCorrectRandomization(a(31), e.userKeys.getShieldedPrivateKey()), j = {
122
+ }), e.getRandomRelay(n, !0)]);
123
+ if (!v) throw Error(r.RELAYER_NOT_AVAILABLE);
124
+ let y = s - g.flatFee;
125
+ if (y <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${s}, Fee: ${g.flatFee}`);
126
+ let b = [-y];
127
+ b[0] -= g.flatFee;
128
+ let { inputUtxos: x, outputUtxos: w } = await A(e, n, u, b), D = a.findCorrectRandomization(i(31), e.userKeys.getShieldedPrivateKey()), k = {
70
129
  tokenNumber: u.length,
71
- nullifierAmount: D.length,
72
- outputAmount: k.length
73
- }, M = _([k])[0][0], N = Array.from(T.getBytes(M)), { proofAArr: P, proofBArr: F, proofCArr: I, publicInputsArr: L, commitmentValidationData: R } = await b(e.generateProofRemotely, m[t], p, [u[0]], [D], [k], A, y.flatFee, y.variableRate, c, S, j, [N], t), z = {
130
+ nullifierAmount: x.length,
131
+ outputAmount: w.length
132
+ }, { proofAArr: j, proofBArr: M, proofCArr: N, publicInputsArr: P, commitmentValidationData: F, rootHashHinkalIndex: I, encryptedOutputs: L } = await T(m[n], p, [u[0]], [x], [w], D, g.flatFee, g.variableRate, c, v, k, void 0, n), R = {
74
133
  recipient: c,
75
134
  mint: u[0] === "11111111111111111111111111111111" ? void 0 : u[0]
76
- }, B = {
77
- proofAArr: P,
78
- proofBArr: F,
79
- proofCArr: I,
80
- publicInputsArr: L,
81
- encryptedOutputs: [N],
82
- relayerFee: y.flatFee.toString(),
83
- dimensions: j
135
+ }, z = await C({
136
+ chainId: n,
137
+ relayAddress: v,
138
+ functionName: "transact",
139
+ args: {
140
+ proofAArr: j,
141
+ proofBArr: M,
142
+ proofCArr: N,
143
+ publicInputsArr: P,
144
+ encryptedOutputs: L,
145
+ relayerFee: g.flatFee.toString(),
146
+ dimensions: k,
147
+ rootHashIndex: I.toString()
148
+ },
149
+ accounts: R,
150
+ commitmentValidationData: F
151
+ });
152
+ return E(n, e, x.map((e) => e.getNullifier()), _([w]).flat(), L.map((e) => O.hexlify(new Uint8Array(e)))), {
153
+ tx: z,
154
+ amountToRecipient: y
84
155
  };
85
- return C(t, e, D.map((e) => e.getNullifier()), g([k]).flat(), [M]), {
86
- tx: await x({
87
- chainId: t,
88
- relayAddress: S,
89
- functionName: "transact",
90
- args: B,
91
- accounts: z,
92
- commitmentValidationData: R
93
- }),
94
- amountToRecipient: w
95
- };
96
- }, j = async (t, n, r, i, a, o) => e(n) ? A(t, n, r, i, a, o) : k(t, n, r, i, a), M = async (e, t, n) => {
97
- let i = [], a = p([t]), o = c(a, t.erc20TokenAddress);
98
- await e.resetMerkleTreesIfNecessary([a]);
99
- let s = ((await d({
100
- hinkal: e,
156
+ }, I = async (t, n, r, i, a, o) => e(n) ? F(t, n, r, i, a, o) : P(t, n, r, i, a), L = async (t, i, a) => {
157
+ let o = m([i]);
158
+ if (t.generateProofRemotely) {
159
+ let n = e(o) ? await N(t, o, i, a) : await j(t, o, i, a);
160
+ if (!n.length) throw Error(r.NO_STUCK_BALANCE_TO_WITHDRAW);
161
+ return n;
162
+ }
163
+ let c = [], l = s(o, i.erc20TokenAddress);
164
+ await t.resetMerkleTreesIfNecessary([o]);
165
+ let d = ((await u({
166
+ hinkal: t,
101
167
  sliceIfMore6: !1,
102
168
  useBlockedUtxos: !0,
103
- chainId: a,
104
- allowRemoteDecryption: e.generateProofRemotely
105
- }))?.get(o) ?? []).filter((e) => e.amount > 0n).sort((e, t) => Number(t.amount - e.amount));
106
- for (let o = 0; o < s.length; o += E) {
107
- let c = s.slice(o, o + E), { tx: l } = await j(e, a, t, r(c), n, c.length);
108
- i.push(l);
169
+ chainId: o
170
+ }))?.get(l) ?? []).filter((e) => e.amount > 0n).sort((e, t) => Number(t.amount - e.amount));
171
+ if (!d.length) throw Error(r.NO_STUCK_BALANCE_TO_WITHDRAW);
172
+ for (let e = 0; e < d.length; e += k) {
173
+ let r = d.slice(e, e + k), s = n(r);
174
+ try {
175
+ let { tx: e } = await I(t, o, i, s, a, r.length);
176
+ c.push(e);
177
+ } catch (e) {
178
+ if (!c.length) throw e;
179
+ return p.error(`Stuck withdrawal partially submitted (${c.length}/${Math.ceil(d.length / k)})`, e), c;
180
+ }
109
181
  }
110
- return i;
182
+ return c;
111
183
  };
112
184
  //#endregion
113
- export { M as hinkalWithdrawStuckUtxos };
185
+ export { L as hinkalWithdrawStuckUtxos };
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../utxo/Utxo.cjs`),r=require(`../../functions/utils/tron.utils.cjs`),i=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);var a=async(a,o,s,c,l,u={})=>{let d=s.erc20TokenAddress,f=r.addressToHexFormat(await a.getEthereumAddressByChain(o)),p=t.getCurrentTimeInSeconds().toString(),m=c.map(e=>e+l.flatFee),h=m.reduce((e,t)=>e+t,0n),g=m.map((e,t)=>new n.Utxo({amount:e,erc20TokenAddress:d,nullifyingKey:a.userKeys.getShieldedPrivateKey(),timeStamp:(BigInt(p)+BigInt(t)).toString(),spendingPublicKey:a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint})),_=new n.Utxo({amount:0n,erc20TokenAddress:d,nullifyingKey:a.userKeys.getShieldedPrivateKey(),timeStamp:p,spendingPublicKey:a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint}),v=[[_,_]],y=[g],{zkCallData:b,circomData:x,dimData:S}=await i.constructZkProof(a.merkleTreeHinkalByChain[o],v,y,a.userKeys,0n,f,`0x00`,l,e.zeroAddress,o,void 0,void 0,void 0,void 0,u.extraData,!0);return{zkCallData:b,circomData:x,dimData:S,utxoAmounts:m,totalDepositAmount:h,depositOutputUtxos:g}};exports.prepareTronDepositToSelf=a;
@@ -0,0 +1,27 @@
1
+ import { CircomDataType, DimDataType } from '../../types/circom-data.types';
2
+ import { NewZkCallDataType } from '../../types/snark.types';
3
+ import { ERC20Token } from '../../types';
4
+ import { FeeStructure } from '../../types/hinkal.types';
5
+ import { Utxo } from '../utxo/Utxo';
6
+ import { IHinkal } from './IHinkal';
7
+ interface PrepareTronDepositOptions {
8
+ extraData?: string;
9
+ }
10
+ interface TronDepositToSelf {
11
+ zkCallData: NewZkCallDataType;
12
+ circomData: CircomDataType;
13
+ dimData: DimDataType;
14
+ utxoAmounts: bigint[];
15
+ totalDepositAmount: bigint;
16
+ depositOutputUtxos: Utxo[];
17
+ }
18
+ /**
19
+ * Builds the ZK proof for a Tron deposit to the user's own shielded key.
20
+ *
21
+ * Produces one output UTXO per recipient amount (each holding `amount + fee`),
22
+ * all assigned to the user's own shielded key so they can be spent in a
23
+ * subsequent withdrawal step. Inputs are zero-amount padding (the circuit skips
24
+ * the merkle membership check when amount is 0).
25
+ */
26
+ export declare const prepareTronDepositToSelf: (hinkal: IHinkal, chainId: number, erc20Token: ERC20Token, recipientAmounts: bigint[], feeStructure: FeeStructure, options?: PrepareTronDepositOptions) => Promise<TronDepositToSelf>;
27
+ export {};
@@ -0,0 +1,31 @@
1
+ import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
2
+ import { getCurrentTimeInSeconds as t } from "../../functions/utils/time.utils.mjs";
3
+ import { Utxo as n } from "../utxo/Utxo.mjs";
4
+ import { addressToHexFormat as r } from "../../functions/utils/tron.utils.mjs";
5
+ import { constructZkProof as i } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
6
+ //#region libs/shared/common/src/data-structures/Hinkal/prepareTronDepositToSelf.ts
7
+ var a = async (a, o, s, c, l, u = {}) => {
8
+ let d = s.erc20TokenAddress, f = r(await a.getEthereumAddressByChain(o)), p = t().toString(), m = c.map((e) => e + l.flatFee), h = m.reduce((e, t) => e + t, 0n), g = m.map((e, t) => new n({
9
+ amount: e,
10
+ erc20TokenAddress: d,
11
+ nullifyingKey: a.userKeys.getShieldedPrivateKey(),
12
+ timeStamp: (BigInt(p) + BigInt(t)).toString(),
13
+ spendingPublicKey: a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint
14
+ })), _ = new n({
15
+ amount: 0n,
16
+ erc20TokenAddress: d,
17
+ nullifyingKey: a.userKeys.getShieldedPrivateKey(),
18
+ timeStamp: p,
19
+ spendingPublicKey: a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint
20
+ }), v = [[_, _]], y = [g], { zkCallData: b, circomData: x, dimData: S } = await i(a.merkleTreeHinkalByChain[o], v, y, a.userKeys, 0n, f, "0x00", l, e, o, void 0, void 0, void 0, void 0, u.extraData, !0);
21
+ return {
22
+ zkCallData: b,
23
+ circomData: x,
24
+ dimData: S,
25
+ utxoAmounts: m,
26
+ totalDepositAmount: h,
27
+ depositOutputUtxos: g
28
+ };
29
+ };
30
+ //#endregion
31
+ export { a as prepareTronDepositToSelf };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,n,v);let o=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,o),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,o)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{if(i.generateProofRemotely)return;i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,n,v);let o=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,o),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,o)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;
@@ -22,6 +22,7 @@ import { Mutex as v } from "async-mutex";
22
22
  //#region libs/shared/common/src/data-structures/Hinkal/resetMerkleTrees.ts
23
23
  var y = /* @__PURE__ */ new Map(), b = (e) => a(y, e, () => new v()), x = async (a, v) => {
24
24
  let y = (v ?? a.getSupportedChains()).map((v) => b(v).runExclusive(async () => {
25
+ if (a.generateProofRemotely) return;
25
26
  a.commitmentsSnapshotServiceByChain[v]?.intervalClear(), a.nullifierSnapshotServiceByChain[v]?.intervalClear();
26
27
  let { maxPageSize: y, fetchRpcUrl: b, contractData: x } = t[v], S;
27
28
  if (e(v)) {
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../../types/activities.types.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const o=require(`../../functions/utils/aggregateTokenAmounts.cjs`);let s=require(`idb-keyval`);var c=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,s.get)(r.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:t,to:i,gasInDollar:a,extraNativeTokenFee:c,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?o.aggregateTokensBySymbol(m):[],C=p?.length?o.aggregateTokensBySymbol(p):[],w={id:x,from:t,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:c?.toString(),chainId:l,txHash:d,activityType:f,status:u??n.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let n=await this.getTxRequest(e);if(!n)throw Error(`Activity not found`);let i={...n,txHash:t};await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,n){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:n,timestamp:new Date};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,n,r){try{await this.updateTxStatusAndHash(e,n,r)}catch(e){t.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){t.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(r,o,s,c){try{let t=await this.getTxRequest(o);if(!t)throw Error(`Transaction not found`);let{chainId:l}=t;if(!r.success){c?.(r.error),await this.updateActivity(o,n.ActivityStatus.FAILED,`erroredTx`in r?r.erroredTx:void 0);return}if(`txHash`in r){let{txHash:t}=r;try{await a.waitForTransactionConfirmation(l,t,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(r){let i=r instanceof Error?r:Error(e.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,n.ActivityStatus.FAILED,t);return}s?.(),await this.updateActivity(o,n.ActivityStatus.SUCCESSFUL,t)}}catch(e){t.Logger.error(`error in updating pending transactions`,e)}}},l=new c;exports.ActivityStorage=c,exports.activityStorage=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/activities.types.cjs`),n=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const o=require(`../../functions/utils/aggregateTokenAmounts.cjs`);let s=require(`idb-keyval`);var c=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,s.get)(n.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:r,to:i,gasInDollar:a,extraNativeTokenFee:c,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?o.aggregateTokensBySymbol(m):[],C=p?.length?o.aggregateTokensBySymbol(p):[],w={id:x,from:r,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:c?.toString(),chainId:l,txHash:d,activityType:f,status:u??t.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let r=await this.getTxRequest(e);if(!r)throw Error(`Activity not found`);let i={...r,txHash:t};await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,r){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:r,timestamp:new Date};return await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,t,n){try{await this.updateTxStatusAndHash(e,t,n)}catch(e){r.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){r.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(n,o,s,c){try{let r=await this.getTxRequest(o);if(!r)throw Error(`Transaction not found`);let{chainId:l}=r;if(!n.success){c?.(n.error),await this.updateActivity(o,t.ActivityStatus.FAILED,`erroredTx`in n?n.erroredTx:void 0);return}if(`txHash`in n){let{txHash:r}=n;try{await a.waitForTransactionConfirmation(l,r,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(n){let i=n instanceof Error?n:Error(e.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,t.ActivityStatus.FAILED,r);return}s?.(),await this.updateActivity(o,t.ActivityStatus.SUCCESSFUL,r)}}catch(e){r.Logger.error(`error in updating pending transactions`,e)}}},l=new c;exports.ActivityStorage=c,exports.activityStorage=l;
@@ -1,8 +1,8 @@
1
1
  import { transactionErrorCodes as e } from "../../error-handling/error-codes.constants.mjs";
2
- import { Logger as t } from "../../error-handling/logger.mjs";
3
- import { ActivityStatus as n } from "../../types/activities.types.mjs";
4
- import { StorageKeys as r } from "../../types/cache.types.mjs";
2
+ import { ActivityStatus as t } from "../../types/activities.types.mjs";
3
+ import { StorageKeys as n } from "../../types/cache.types.mjs";
5
4
  import "../../types/index.mjs";
5
+ import { Logger as r } from "../../error-handling/logger.mjs";
6
6
  import "../../error-handling/index.mjs";
7
7
  import { RELAYER_TX_CONFIRMATION_TIMEOUT as i } from "../../constants/tx-confirmation.constants.mjs";
8
8
  import { waitForTransactionConfirmation as a } from "../../functions/utils/tx-confirmation.utils.mjs";
@@ -15,19 +15,19 @@ var l = class {
15
15
  return `tx_${(/* @__PURE__ */ new Date()).getTime()}_${Math.random().toString(36).substring(2, 15)}`;
16
16
  }
17
17
  async getTransactionRecord() {
18
- return await s(r.TX_ACTIVITY) || {};
18
+ return await s(n.TX_ACTIVITY) || {};
19
19
  }
20
20
  async saveTxRequest(e) {
21
- let { from: t, to: i, gasInDollar: a, extraNativeTokenFee: s, chainId: l, status: u, txHash: d, activityType: f, tokensReceive: p, tokensSpend: m, tokensApprove: h, activityIcon: g, dappUrl: _, dappName: v, integrationProvider: y, knownPartialSignature: b } = e, x = this.generateTxId(), S = m?.length ? o(m) : [], C = p?.length ? o(p) : [], w = {
21
+ let { from: r, to: i, gasInDollar: a, extraNativeTokenFee: s, chainId: l, status: u, txHash: d, activityType: f, tokensReceive: p, tokensSpend: m, tokensApprove: h, activityIcon: g, dappUrl: _, dappName: v, integrationProvider: y, knownPartialSignature: b } = e, x = this.generateTxId(), S = m?.length ? o(m) : [], C = p?.length ? o(p) : [], w = {
22
22
  id: x,
23
- from: t,
23
+ from: r,
24
24
  to: i,
25
25
  gasInDollar: a?.toString(),
26
26
  extraNativeTokenFee: s?.toString(),
27
27
  chainId: l,
28
28
  txHash: d,
29
29
  activityType: f,
30
- status: u ?? n.PENDING,
30
+ status: u ?? t.PENDING,
31
31
  timestamp: /* @__PURE__ */ new Date(),
32
32
  tokensReceive: C,
33
33
  tokensSpend: S,
@@ -38,7 +38,7 @@ var l = class {
38
38
  integrationProvider: y,
39
39
  knownPartialSignature: b
40
40
  };
41
- return await c(r.TX_ACTIVITY, (e = {}) => (e[x] = w, e)), x;
41
+ return await c(n.TX_ACTIVITY, (e = {}) => (e[x] = w, e)), x;
42
42
  }
43
43
  async getTxRequest(e) {
44
44
  return (await this.getTransactionRecord())[e] || null;
@@ -48,61 +48,61 @@ var l = class {
48
48
  return Object.values(t).filter((t) => t.chainId === e).sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime());
49
49
  }
50
50
  async updateTxHash(e, t) {
51
- let n = await this.getTxRequest(e);
52
- if (!n) throw Error("Activity not found");
51
+ let r = await this.getTxRequest(e);
52
+ if (!r) throw Error("Activity not found");
53
53
  let i = {
54
- ...n,
54
+ ...r,
55
55
  txHash: t
56
56
  };
57
- await c(r.TX_ACTIVITY, (t = {}) => (t[e] = i, t));
57
+ await c(n.TX_ACTIVITY, (t = {}) => (t[e] = i, t));
58
58
  }
59
- async updateTxStatusAndHash(e, t, n) {
59
+ async updateTxStatusAndHash(e, t, r) {
60
60
  let i = await this.getTxRequest(e);
61
61
  if (!i) throw Error("Transaction not found");
62
62
  let a = {
63
63
  ...i,
64
64
  status: t,
65
- txHash: n,
65
+ txHash: r,
66
66
  timestamp: /* @__PURE__ */ new Date()
67
67
  };
68
- return await c(r.TX_ACTIVITY, (t = {}) => (t[e] = a, t)), a;
68
+ return await c(n.TX_ACTIVITY, (t = {}) => (t[e] = a, t)), a;
69
69
  }
70
- async updateActivity(e, n, r) {
70
+ async updateActivity(e, t, n) {
71
71
  try {
72
- await this.updateTxStatusAndHash(e, n, r);
72
+ await this.updateTxStatusAndHash(e, t, n);
73
73
  } catch (e) {
74
- t.error("error in updating tx request", e);
74
+ r.error("error in updating tx request", e);
75
75
  }
76
76
  }
77
77
  async removePendingTransactions(e) {
78
78
  try {
79
- await c(r.TX_ACTIVITY, (t = {}) => (delete t[e], t));
79
+ await c(n.TX_ACTIVITY, (t = {}) => (delete t[e], t));
80
80
  } catch (e) {
81
- t.error("error in deleting tx requests", e);
81
+ r.error("error in deleting tx requests", e);
82
82
  }
83
83
  }
84
- async updatePendingTransactions(r, o, s, c) {
84
+ async updatePendingTransactions(n, o, s, c) {
85
85
  try {
86
- let t = await this.getTxRequest(o);
87
- if (!t) throw Error("Transaction not found");
88
- let { chainId: l } = t;
89
- if (!r.success) {
90
- c?.(r.error), await this.updateActivity(o, n.FAILED, "erroredTx" in r ? r.erroredTx : void 0);
86
+ let r = await this.getTxRequest(o);
87
+ if (!r) throw Error("Transaction not found");
88
+ let { chainId: l } = r;
89
+ if (!n.success) {
90
+ c?.(n.error), await this.updateActivity(o, t.FAILED, "erroredTx" in n ? n.erroredTx : void 0);
91
91
  return;
92
92
  }
93
- if ("txHash" in r) {
94
- let { txHash: t } = r;
93
+ if ("txHash" in n) {
94
+ let { txHash: r } = n;
95
95
  try {
96
- await a(l, t, { evmTimeoutMs: i });
97
- } catch (r) {
98
- let i = r instanceof Error ? r : Error(e.UNKNOWN);
99
- c?.(i), await this.updateActivity(o, n.FAILED, t);
96
+ await a(l, r, { evmTimeoutMs: i });
97
+ } catch (n) {
98
+ let i = n instanceof Error ? n : Error(e.UNKNOWN);
99
+ c?.(i), await this.updateActivity(o, t.FAILED, r);
100
100
  return;
101
101
  }
102
- s?.(), await this.updateActivity(o, n.SUCCESSFUL, t);
102
+ s?.(), await this.updateActivity(o, t.SUCCESSFUL, r);
103
103
  }
104
104
  } catch (e) {
105
- t.error("error in updating pending transactions", e);
105
+ r.error("error in updating pending transactions", e);
106
106
  }
107
107
  }
108
108
  }, u = new l();
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/logger.cjs`),t=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);let n=require(`idb-keyval`);new class{generateMessageId(){return`msg_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async saveSignedMessage(r,i,a,o,s,c){try{let e=this.generateMessageId(),l=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{},u={chainId:r,messageText:i,messageType:a,subAccountAddress:o,signature:s,appMetaData:c};l[e]={timestamp:new Date().toISOString(),...u},await(0,n.set)(t.StorageKeys.SIGNED_MESSAGES,l)}catch(t){e.Logger.error(`Failed to save signed message:`,t,{chainId:r,messageType:a})}}async getAllSignedMessages(){try{let e=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{};return Object.values(e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}catch(t){return e.Logger.error(`Failed to retrieve signed messages:`,t),[]}}};
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const t=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);let n=require(`idb-keyval`);new class{generateMessageId(){return`msg_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async saveSignedMessage(r,i,a,o,s,c){try{let t=this.generateMessageId(),l=await(0,n.get)(e.StorageKeys.SIGNED_MESSAGES)||{},u={chainId:r,messageText:i,messageType:a,subAccountAddress:o,signature:s,appMetaData:c};l[t]={timestamp:new Date().toISOString(),...u},await(0,n.set)(e.StorageKeys.SIGNED_MESSAGES,l)}catch(e){t.Logger.error(`Failed to save signed message:`,e,{chainId:r,messageType:a})}}async getAllSignedMessages(){try{let t=await(0,n.get)(e.StorageKeys.SIGNED_MESSAGES)||{};return Object.values(t).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}catch(e){return t.Logger.error(`Failed to retrieve signed messages:`,e),[]}}};
@@ -1,6 +1,6 @@
1
- import { Logger as e } from "../../error-handling/logger.mjs";
2
- import { StorageKeys as t } from "../../types/cache.types.mjs";
1
+ import { StorageKeys as e } from "../../types/cache.types.mjs";
3
2
  import "../../types/index.mjs";
3
+ import { Logger as t } from "../../error-handling/logger.mjs";
4
4
  import "../../error-handling/index.mjs";
5
5
  import { get as n, set as r } from "idb-keyval";
6
6
  new class {
@@ -9,7 +9,7 @@ new class {
9
9
  }
10
10
  async saveSignedMessage(i, a, o, s, c, l) {
11
11
  try {
12
- let e = this.generateMessageId(), u = await n(t.SIGNED_MESSAGES) || {}, d = {
12
+ let t = this.generateMessageId(), u = await n(e.SIGNED_MESSAGES) || {}, d = {
13
13
  chainId: i,
14
14
  messageText: a,
15
15
  messageType: o,
@@ -17,12 +17,12 @@ new class {
17
17
  signature: c,
18
18
  appMetaData: l
19
19
  };
20
- u[e] = {
20
+ u[t] = {
21
21
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
22
22
  ...d
23
- }, await r(t.SIGNED_MESSAGES, u);
24
- } catch (t) {
25
- e.error("Failed to save signed message:", t, {
23
+ }, await r(e.SIGNED_MESSAGES, u);
24
+ } catch (e) {
25
+ t.error("Failed to save signed message:", e, {
26
26
  chainId: i,
27
27
  messageType: o
28
28
  });
@@ -30,10 +30,10 @@ new class {
30
30
  }
31
31
  async getAllSignedMessages() {
32
32
  try {
33
- let e = await n(t.SIGNED_MESSAGES) || {};
34
- return Object.values(e).sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime());
35
- } catch (t) {
36
- return e.error("Failed to retrieve signed messages:", t), [];
33
+ let t = await n(e.SIGNED_MESSAGES) || {};
34
+ return Object.values(t).sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime());
35
+ } catch (e) {
36
+ return t.error("Failed to retrieve signed messages:", e), [];
37
37
  }
38
38
  }
39
39
  }();
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const i=require(`../../error-handling/logger.cjs`),a=require(`../../types/cache.types.cjs`),o=require(`../../API/API.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../../functions/utils/create-provider.cjs`),d=require(`../../functions/utils/publicBalance.utils.cjs`);let f=require(`@solana/web3.js`),p=require(`idb-keyval`),m=require(`@solana/spl-token`);var h=new class{fetchedTokens={};ALCHEMY_URLS={[e.chainIds.ethMainnet]:`eth-mainnet`,[e.chainIds.polygon]:`polygon-mainnet`,[e.chainIds.arbMainnet]:`arb-mainnet`,[e.chainIds.optimism]:`opt-mainnet`,[e.chainIds.optimismTest]:`opt-mainnet`,[e.chainIds.base]:`base-mainnet`,[e.chainIds.solanaMainnet]:`solana-mainnet`,[e.chainIds.sepoliaTestnet]:`eth-sepolia`};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>n.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData((await(0,p.get)(a.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[n]||[],e)}async getFetchedTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData(this.fetchedTokens[n]||[],e)}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let r=s.getStateKey(e,t),[i,l]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(t,e)]),u=Array.from(new Set([...i,...l]));if(!u.length)return;let d=(await o.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),m=d.filter(e=>!n.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,p.update)(a.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[r]:m};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,r){let i=s.getStateKey(e,r),l=await this.getEVMTokenAddresses(r,e),u=await this.getNFTTokens(r,e),d=u.map(e=>e.contractAddress),f=[...l,...d];if(!f.length)return;let m=(await o.API.tokensInfoCall(r,f)).map((e,i)=>{if(e)return e;let a=f[i],o=u.find(e=>n.caseInsensitiveEqual(e.contractAddress,a));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(a,r)?{chainId:r,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:a,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,m),g=m.filter(e=>!n.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>n.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,p.update)(a.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[i]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{fetchRpcUrl:i}=e.networkRegistry[n];if(!i)throw Error(`RPC URL not found for the specified chain ID`);let a=u.createCustomSolanaConnection(i),o=await a.getBalance(new f.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_2022_PROGRAM_ID})]),l=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&l.unshift(t.solanaNativeAddress),Array.from(new Set(l))}async getNFTAddresses(n,a){let{fetchRpcUrl:o}=e.networkRegistry[n];if(!o)throw Error(`RPC URL not found for the specified chain ID`);try{let e=[],n=1;do{let{items:i=[],page:s}=(await r.httpClient.post(o,{jsonrpc:`2.0`,id:1,method:`getAssetsByOwner`,params:{ownerAddress:a,page:n,limit:1e3,displayOptions:{showFungible:!1,showCollectionMetadata:!0}}})).result||{},c=i.filter(e=>e.interface&&t.SOLANA_NFT_INTERFACES.includes(e.interface)).map(e=>e.id);e.push(...c),n=s&&s>n?s:0}while(n>0);return e}catch(e){return i.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(n,i){let a=await d.getPublicBalanceByTokenAddress(n,i,t.zeroAddress),o=this.ALCHEMY_URLS[n];if(!o)throw Error(`Alchemy URL not found for the specified chain ID: ${n}`);let s=`https://${o}.g.alchemy.com/v2/${e.ALCHEMY_API_KEY}`,c=[],l;do{let e=[i,`erc20`];l&&e.push({pageKey:l});let{result:t}=await r.httpClient.post(s,{jsonrpc:`2.0`,id:1,method:`alchemy_getTokenBalances`,params:e});c.push(...t?.tokenBalances??[]),l=t?.pageKey}while(l);a&&a>0n&&c.push({contractAddress:t.zeroAddress,tokenBalance:a.toString()});let u={};return c.forEach(e=>{(!u[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(u[e.contractAddress]=e)}),Object.keys(u)}async getNFTTokens(t,n){let i=`https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e.ALCHEMY_API_KEY}/getNFTsForOwner`,a=[],o;do{let e=new URLSearchParams({owner:n,withMetadata:`false`,pageSize:`100`});o&&e.append(`pageKey`,o);let{ownedNfts:t=[],pageKey:s}=await r.httpClient.get(`${i}?${e.toString()}`);a.push(...t),o=s}while(o);let s=a.filter(({contractAddress:e,tokenId:t})=>e&&t).reduce((e,{contractAddress:t,tokenId:n})=>{let r=t.toLowerCase();return e.has(r)||e.set(r,[]),e.get(r)?.push(n),e},new Map);return Array.from(s.entries()).map(([e,t])=>({contractAddress:e,tokenIds:t}))}};exports.alchemyPublicTokensDB=h;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const i=require(`../../types/cache.types.cjs`),a=require(`../../API/API.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../../functions/utils/create-provider.cjs`),d=require(`../../functions/utils/publicBalance.utils.cjs`);let f=require(`@solana/web3.js`),p=require(`idb-keyval`),m=require(`@solana/spl-token`);var h=new class{fetchedTokens={};ALCHEMY_URLS={[e.chainIds.bnbMainnet]:`bnb-mainnet`,[e.chainIds.ethMainnet]:`eth-mainnet`,[e.chainIds.polygon]:`polygon-mainnet`,[e.chainIds.arbMainnet]:`arb-mainnet`,[e.chainIds.optimism]:`opt-mainnet`,[e.chainIds.optimismTest]:`opt-mainnet`,[e.chainIds.base]:`base-mainnet`,[e.chainIds.solanaMainnet]:`solana-mainnet`,[e.chainIds.sepoliaTestnet]:`eth-sepolia`};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>n.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData((await(0,p.get)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[n]||[],e)}async getFetchedTokens(e,t){let n=s.getStateKey(t,e);return l.overlayTokensWithRegistryData(this.fetchedTokens[n]||[],e)}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let r=s.getStateKey(e,t),[o,l]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(t,e)]),u=Array.from(new Set([...o,...l]));if(!u.length)return;let d=(await a.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),m=d.filter(e=>!n.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,p.update)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[r]:m};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,r){let o=s.getStateKey(e,r),l=await this.getEVMTokenAddresses(r,e),u=await this.getNFTTokens(r,e),d=u.map(e=>e.contractAddress),f=[...l,...d];if(!f.length)return;let m=(await a.API.tokensInfoCall(r,f)).map((e,i)=>{if(e)return e;let a=f[i],o=u.find(e=>n.caseInsensitiveEqual(e.contractAddress,a));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(a,r)?{chainId:r,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:a,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,m),g=m.filter(e=>!n.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>n.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,p.update)(i.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[o]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{fetchRpcUrl:i}=e.networkRegistry[n];if(!i)throw Error(`RPC URL not found for the specified chain ID`);let a=u.createCustomSolanaConnection(i),o=await a.getBalance(new f.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_2022_PROGRAM_ID})]),l=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&l.unshift(t.solanaNativeAddress),Array.from(new Set(l))}async getNFTAddresses(n,i){let{fetchRpcUrl:a}=e.networkRegistry[n];if(!a)throw Error(`RPC URL not found for the specified chain ID`);try{let e=[],n=1;do{let{items:o=[],page:s}=(await r.httpClient.post(a,{jsonrpc:`2.0`,id:1,method:`getAssetsByOwner`,params:{ownerAddress:i,page:n,limit:1e3,displayOptions:{showFungible:!1,showCollectionMetadata:!0}}})).result||{},c=o.filter(e=>e.interface&&t.SOLANA_NFT_INTERFACES.includes(e.interface)).map(e=>e.id);e.push(...c),n=s&&s>n?s:0}while(n>0);return e}catch(e){return o.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(n,i){let a=await d.getPublicBalanceByTokenAddress(n,i,t.zeroAddress),o=this.ALCHEMY_URLS[n];if(!o)throw Error(`Alchemy URL not found for the specified chain ID: ${n}`);let s=`https://${o}.g.alchemy.com/v2/${e.ALCHEMY_API_KEY}`,c=[],l;do{let e=[i,`erc20`];l&&e.push({pageKey:l});let{result:t}=await r.httpClient.post(s,{jsonrpc:`2.0`,id:1,method:`alchemy_getTokenBalances`,params:e});c.push(...t?.tokenBalances??[]),l=t?.pageKey}while(l);a&&a>0n&&c.push({contractAddress:t.zeroAddress,tokenBalance:a.toString()});let u={};return c.forEach(e=>{(!u[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(u[e.contractAddress]=e)}),Object.keys(u)}async getNFTTokens(t,n){let i=`https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e.ALCHEMY_API_KEY}/getNFTsForOwner`,a=[],o;do{let e=new URLSearchParams({owner:n,withMetadata:`false`,pageSize:`100`});o&&e.append(`pageKey`,o);let{ownedNfts:t=[],pageKey:s}=await r.httpClient.get(`${i}?${e.toString()}`);a.push(...t),o=s}while(o);let s=a.filter(({contractAddress:e,tokenId:t})=>e&&t).reduce((e,{contractAddress:t,tokenId:n})=>{let r=t.toLowerCase();return e.has(r)||e.set(r,[]),e.get(r)?.push(n),e},new Map);return Array.from(s.entries()).map(([e,t])=>({contractAddress:e,tokenIds:t}))}};exports.alchemyPublicTokensDB=h;