@hinkal/common 0.3.12 → 0.3.14

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 (302) hide show
  1. package/README.md +67 -4
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +3 -2
  4. package/common/src/API/API.mjs +92 -91
  5. package/common/src/API/admin-calls.cjs +1 -1
  6. package/common/src/API/admin-calls.d.ts +2 -1
  7. package/common/src/API/admin-calls.mjs +1 -0
  8. package/common/src/API/evm-token-assets.cjs +1 -0
  9. package/common/src/API/evm-token-assets.mjs +3 -0
  10. package/common/src/API/get-token-price-chart-data.cjs +1 -1
  11. package/common/src/API/get-token-price-chart-data.mjs +2 -2
  12. package/common/src/API/getTokenPrice.cjs +1 -1
  13. package/common/src/API/getTokenPrice.mjs +2 -2
  14. package/common/src/API/index.cjs +1 -1
  15. package/common/src/API/index.d.ts +2 -0
  16. package/common/src/API/index.mjs +2 -0
  17. package/common/src/API/privacy-score-calls.cjs +1 -1
  18. package/common/src/API/privacy-score-calls.mjs +2 -2
  19. package/common/src/API/receiveVaultCalls.cjs +1 -0
  20. package/common/src/API/receiveVaultCalls.d.ts +12 -0
  21. package/common/src/API/receiveVaultCalls.mjs +36 -0
  22. package/common/src/constants/chains.constants.cjs +1 -1
  23. package/common/src/constants/chains.constants.d.ts +2 -0
  24. package/common/src/constants/chains.constants.mjs +106 -93
  25. package/common/src/constants/coingecko.constants.cjs +1 -1
  26. package/common/src/constants/coingecko.constants.d.ts +2 -0
  27. package/common/src/constants/coingecko.constants.mjs +1 -1
  28. package/common/src/constants/contracts.constants.cjs +1 -1
  29. package/common/src/constants/contracts.constants.mjs +5 -1
  30. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  31. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +3 -1
  32. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  33. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +4 -2
  34. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  35. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +3 -1
  36. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  37. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +3 -1
  38. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  39. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +3 -1
  40. package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
  41. package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +2 -1
  42. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  43. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  44. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
  45. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +2 -1
  46. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  47. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +3 -1
  48. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
  49. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +2 -1
  50. package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.cjs +1 -0
  51. package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.mjs +6 -0
  52. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  53. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +3 -1
  54. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  55. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -1
  56. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  57. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -1
  58. package/common/src/constants/deploy-data/index.cjs +1 -1
  59. package/common/src/constants/deploy-data/index.d.ts +2 -1
  60. package/common/src/constants/deploy-data/index.mjs +7 -6
  61. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  62. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +2 -1
  63. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.cjs +1 -1
  64. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.mjs +1 -1
  65. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  66. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +3 -2
  67. package/common/src/constants/events.constants.d.ts +1 -0
  68. package/common/src/constants/index.cjs +1 -1
  69. package/common/src/constants/index.mjs +1 -1
  70. package/common/src/constants/protocol.constants.cjs +2 -2
  71. package/common/src/constants/protocol.constants.d.ts +4 -0
  72. package/common/src/constants/protocol.constants.mjs +2 -2
  73. package/common/src/constants/save-depths.cjs +1 -1
  74. package/common/src/constants/save-depths.d.ts +1 -0
  75. package/common/src/constants/save-depths.mjs +1 -0
  76. package/common/src/constants/server.constants.cjs +1 -1
  77. package/common/src/constants/server.constants.d.ts +13 -6
  78. package/common/src/constants/server.constants.mjs +13 -6
  79. package/common/src/constants/tokens.constants.cjs +1 -1
  80. package/common/src/constants/tokens.constants.mjs +1 -1
  81. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  82. package/common/src/data-structures/Hinkal/Hinkal.d.ts +8 -4
  83. package/common/src/data-structures/Hinkal/Hinkal.mjs +85 -73
  84. package/common/src/data-structures/Hinkal/IHinkal.d.ts +8 -4
  85. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  86. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +14 -14
  87. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  88. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +4 -4
  89. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  90. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +24 -24
  91. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +72 -71
  93. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  94. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +64 -61
  95. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.d.ts +1 -1
  97. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +29 -29
  98. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  99. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +22 -22
  101. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +8 -8
  103. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  104. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +6 -6
  105. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  106. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +4 -4
  107. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -0
  108. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.d.ts +3 -0
  109. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +12 -0
  110. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -0
  111. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +3 -0
  112. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +29 -0
  113. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -0
  114. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.d.ts +5 -0
  115. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +66 -0
  116. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.cjs +1 -0
  117. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +6 -0
  118. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.mjs +8 -0
  119. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  120. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
  121. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +54 -62
  122. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  123. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +72 -70
  124. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  125. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.mjs +9 -9
  126. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  127. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +20 -20
  128. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  129. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.d.ts +1 -1
  130. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +49 -47
  131. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.cjs +1 -0
  132. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.d.ts +5 -0
  133. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.mjs +60 -0
  134. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  135. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  136. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  137. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  138. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  139. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +7 -6
  140. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  141. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  142. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  143. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -26
  144. package/common/src/data-structures/Hinkal/index.d.ts +5 -0
  145. package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  146. package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +13 -13
  147. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -3
  148. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
  149. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +0 -2
  150. package/common/src/data-structures/crypto-keys/index.cjs +1 -1
  151. package/common/src/data-structures/crypto-keys/index.mjs +1 -1
  152. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  153. package/common/src/error-handling/error-codes.constants.d.ts +6 -0
  154. package/common/src/error-handling/error-codes.constants.mjs +7 -2
  155. package/common/src/error-handling/get-error.message.cjs +1 -1
  156. package/common/src/error-handling/get-error.message.mjs +59 -49
  157. package/common/src/functions/index.cjs +1 -1
  158. package/common/src/functions/index.mjs +8 -3
  159. package/common/src/functions/pre-transaction/addressTableLookup.d.ts +1 -0
  160. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.cjs +1 -0
  161. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.d.ts +4 -0
  162. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.mjs +3 -0
  163. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.cjs +1 -1
  164. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.mjs +7 -7
  165. package/common/src/functions/pre-transaction/constructAdminData.cjs +1 -1
  166. package/common/src/functions/pre-transaction/constructAdminData.mjs +4 -3
  167. package/common/src/functions/pre-transaction/index.cjs +1 -1
  168. package/common/src/functions/pre-transaction/index.d.ts +1 -0
  169. package/common/src/functions/pre-transaction/index.mjs +1 -0
  170. package/common/src/functions/pre-transaction/sendV0Transaction.cjs +1 -1
  171. package/common/src/functions/pre-transaction/sendV0Transaction.d.ts +1 -0
  172. package/common/src/functions/pre-transaction/sendV0Transaction.mjs +22 -2
  173. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  174. package/common/src/functions/private-wallet/emporium.helpers.mjs +15 -15
  175. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -1
  176. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +2 -1
  177. package/common/src/functions/snarkjs/fetchOnChainRootHashes.cjs +1 -1
  178. package/common/src/functions/snarkjs/fetchOnChainRootHashes.mjs +6 -6
  179. package/common/src/functions/utils/abi.utils.cjs +1 -1
  180. package/common/src/functions/utils/abi.utils.mjs +4 -1
  181. package/common/src/functions/utils/addresses.cjs +1 -1
  182. package/common/src/functions/utils/addresses.d.ts +4 -0
  183. package/common/src/functions/utils/addresses.mjs +17 -17
  184. package/common/src/functions/utils/admin-dimensions.cjs +1 -0
  185. package/common/src/functions/utils/admin-dimensions.d.ts +4 -0
  186. package/common/src/functions/utils/admin-dimensions.mjs +206 -0
  187. package/common/src/functions/utils/create-provider.cjs +1 -1
  188. package/common/src/functions/utils/create-provider.mjs +5 -1
  189. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  190. package/common/src/functions/utils/encryptInputForEnclave.d.ts +2 -1
  191. package/common/src/functions/utils/encryptInputForEnclave.mjs +1 -1
  192. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  193. package/common/src/functions/utils/erc20tokenFunctions.mjs +11 -11
  194. package/common/src/functions/utils/fees.utils.cjs +1 -1
  195. package/common/src/functions/utils/fees.utils.d.ts +2 -0
  196. package/common/src/functions/utils/fees.utils.mjs +31 -33
  197. package/common/src/functions/utils/gas-token.utils.cjs +1 -0
  198. package/common/src/functions/utils/gas-token.utils.d.ts +3 -0
  199. package/common/src/functions/utils/gas-token.utils.mjs +7 -0
  200. package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
  201. package/common/src/functions/utils/getSignerFromContract.d.ts +1 -1
  202. package/common/src/functions/utils/getSignerFromContract.mjs +2 -2
  203. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  204. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  205. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  206. package/common/src/functions/utils/getUtxosFromReceiptSolana.d.ts +9 -4
  207. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +1 -1
  208. package/common/src/functions/utils/index.cjs +1 -1
  209. package/common/src/functions/utils/index.d.ts +5 -0
  210. package/common/src/functions/utils/index.mjs +7 -2
  211. package/common/src/functions/utils/isSigner.cjs +1 -0
  212. package/common/src/functions/utils/isSigner.d.ts +2 -0
  213. package/common/src/functions/utils/isSigner.mjs +7 -0
  214. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  215. package/common/src/functions/utils/publicBalance.utils.mjs +7 -7
  216. package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -0
  217. package/common/src/functions/utils/receive-vault-account.utils.d.ts +9 -0
  218. package/common/src/functions/utils/receive-vault-account.utils.mjs +24 -0
  219. package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -0
  220. package/common/src/functions/utils/receive-vault-scan.utils.d.ts +2 -0
  221. package/common/src/functions/utils/receive-vault-scan.utils.mjs +55 -0
  222. package/common/src/functions/utils/receive-vault-solana.utils.cjs +1 -0
  223. package/common/src/functions/utils/receive-vault-solana.utils.d.ts +8 -0
  224. package/common/src/functions/utils/receive-vault-solana.utils.mjs +45 -0
  225. package/common/src/functions/utils/receive-vault.utils.cjs +2 -0
  226. package/common/src/functions/utils/receive-vault.utils.d.ts +31 -0
  227. package/common/src/functions/utils/receive-vault.utils.mjs +166 -0
  228. package/common/src/functions/utils/string.utils.cjs +1 -1
  229. package/common/src/functions/utils/string.utils.mjs +12 -4
  230. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -1
  231. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +1 -1
  232. package/common/src/functions/utils/token-check.utils.d.ts +1 -0
  233. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  234. package/common/src/functions/utils/transfer-claimable.utils.mjs +1 -1
  235. package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -0
  236. package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +9 -0
  237. package/common/src/functions/utils/wallet-token-discovery.utils.mjs +30 -0
  238. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  239. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +11 -11
  240. package/common/src/functions/web3/getContractMetadata.cjs +1 -1
  241. package/common/src/functions/web3/getContractMetadata.mjs +6 -6
  242. package/common/src/functions/web3/index.cjs +1 -1
  243. package/common/src/functions/web3/index.mjs +1 -1
  244. package/common/src/types/admin.types.cjs +1 -1
  245. package/common/src/types/admin.types.d.ts +64 -9
  246. package/common/src/types/admin.types.mjs +10 -2
  247. package/common/src/types/connector.types.d.ts +1 -0
  248. package/common/src/types/ethereum-network.types.cjs +1 -1
  249. package/common/src/types/ethereum-network.types.d.ts +5 -1
  250. package/common/src/types/ethereum-network.types.mjs +1 -1
  251. package/common/src/types/external-action.types.cjs +1 -1
  252. package/common/src/types/external-action.types.d.ts +3 -1
  253. package/common/src/types/external-action.types.mjs +1 -1
  254. package/common/src/types/index.cjs +1 -1
  255. package/common/src/types/index.d.ts +1 -0
  256. package/common/src/types/index.mjs +1 -0
  257. package/common/src/types/receive-vault.types.cjs +1 -0
  258. package/common/src/types/receive-vault.types.d.ts +63 -0
  259. package/common/src/types/receive-vault.types.mjs +8 -0
  260. package/common/src/types/remote-tx-build.types.d.ts +5 -0
  261. package/common/src/webworker/{logError-cvFNxc-0.js → logError-C-ej_TX9.js} +1 -1
  262. package/common/src/webworker/package.json +10 -1
  263. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  264. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  265. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  266. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  267. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  268. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  269. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  270. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  271. package/common/src/webworker/workerProxy-CE-rYA3W.js +1 -0
  272. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  273. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  274. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  275. package/index.cjs +1 -1
  276. package/index.mjs +3 -2
  277. package/internal/monitorConnectedAddress.cjs +1 -1
  278. package/internal/monitorConnectedAddress.d.ts +1 -1
  279. package/internal/monitorConnectedAddress.mjs +1 -3
  280. package/package.json +10 -1
  281. package/providers/prepareEthersHinkal.cjs +1 -1
  282. package/providers/prepareEthersHinkal.mjs +1 -1
  283. package/providers/prepareSolanaHinkal.cjs +1 -1
  284. package/providers/prepareSolanaHinkal.mjs +1 -1
  285. package/providers/prepareTronHinkal.cjs +1 -1
  286. package/providers/prepareTronHinkal.mjs +1 -1
  287. package/providers/prepareWagmiHinkal.cjs +1 -1
  288. package/providers/prepareWagmiHinkal.mjs +1 -1
  289. package/services/Hinkal.cjs +1 -1
  290. package/services/Hinkal.d.ts +7 -3
  291. package/services/Hinkal.mjs +74 -51
  292. package/types/IHinkal.d.ts +7 -2
  293. package/types/index.cjs +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/index.mjs +2 -0
  296. package/types/receive-vault.types.cjs +1 -0
  297. package/types/receive-vault.types.d.ts +14 -0
  298. package/types/receive-vault.types.mjs +2 -0
  299. package/common/src/API/getOdosPriceForToken.cjs +0 -1
  300. package/common/src/API/getOdosPriceForToken.d.ts +0 -1
  301. package/common/src/API/getOdosPriceForToken.mjs +0 -14
  302. package/common/src/webworker/workerProxy-BHzCZ9HT.js +0 -1
@@ -0,0 +1,7 @@
1
+ //#region libs/shared/common/src/functions/utils/isSigner.ts
2
+ var e = (e) => {
3
+ let t = e;
4
+ return typeof t?.getAddress == "function" && typeof t?.sendTransaction == "function";
5
+ };
6
+ //#endregion
7
+ export { e as isSigner };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`./solanaMint.utils.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`./addresses.cjs`),a=require(`./erc20tokenFunctions.cjs`);require(`../../data-structures/token-price-fetcher/TokenChecker.cjs`);const o=require(`./create-provider.cjs`);require(`../../externalABIs/index.cjs`);const s=require(`../../externalABIs/swapAbi.cjs`);require(`../../data-structures/IndexedDB/key-val-store.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=async(e,n,r)=>{try{let i=r.erc20TokenAddress,a,o=new c.ethers.Contract(r.erc20TokenAddress,s.ERC20ABI,e);a=i===t.zeroAddress?await e.getBalance(n):await o?.balanceOf(n);let l=a;return l<=0n?null:{token:r,balance:l}}catch{return null}},d=async(e,t,r)=>{if(r.erc20TokenAddress===`11111111111111111111111111111111`)return BigInt(await e.getBalance(t));let i=await n.getSolanaAtaAddress(r,t);if(!await e.getAccountInfo(i))return 0n;let a=await e.getTokenAccountBalance(i);return BigInt(a.value.amount)},f=async(n,u,f)=>{try{if(e.isSolanaLike(n)){if(!i.isValidSolanaPublicKey(u))return null;let{rpcUrl:t}=e.networkRegistry[n],r=o.createCustomSolanaConnection(t),s=new l.PublicKey(u);if(f===`11111111111111111111111111111111`)return BigInt(await r.getBalance(s));let c=await a.getErc20TokenFromAPI(n,f);return c?d(r,s,c):null}let r=o.createJsonRpcProvider(n),p=new c.ethers.Contract(f,s.ERC20ABI,r),m;return m=f===t.zeroAddress?await r.getBalance(u):await p?.balanceOf(u),m}catch{return r.Logger.error(`Failed to fetch public balance for address ${u}`),null}};exports.getPublicBalance=u,exports.getPublicBalanceByTokenAddress=f;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`./solanaMint.utils.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`./addresses.cjs`);require(`../../externalABIs/index.cjs`);const a=require(`./create-provider.cjs`),o=require(`./erc20tokenFunctions.cjs`);require(`../../data-structures/token-price-fetcher/TokenChecker.cjs`);const s=require(`../../externalABIs/swapAbi.cjs`);require(`../../data-structures/IndexedDB/key-val-store.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=async(e,n,r)=>{try{let i=r.erc20TokenAddress,a,o=new c.ethers.Contract(r.erc20TokenAddress,s.ERC20ABI,e);a=i===t.zeroAddress?await e.getBalance(n):await o?.balanceOf(n);let l=a;return l<=0n?null:{token:r,balance:l}}catch{return null}},d=async(e,t,r)=>{if(r.erc20TokenAddress===`11111111111111111111111111111111`)return BigInt(await e.getBalance(t));let i=await n.getSolanaAtaAddress(r,t);if(!await e.getAccountInfo(i))return 0n;let a=await e.getTokenAccountBalance(i);return BigInt(a.value.amount)},f=async(n,u,f)=>{try{if(e.isSolanaLike(n)){if(!i.isValidSolanaPublicKey(u))return null;let{rpcUrl:t}=e.networkRegistry[n],r=a.createCustomSolanaConnection(t),s=new l.PublicKey(u);if(f===`11111111111111111111111111111111`)return BigInt(await r.getBalance(s));let c=await o.getErc20TokenFromAPI(n,f);return c?d(r,s,c):null}let r=a.createJsonRpcProvider(n),p=new c.ethers.Contract(f,s.ERC20ABI,r),m;return m=f===t.zeroAddress?await r.getBalance(u):await p?.balanceOf(u),m}catch{return r.Logger.error(`Failed to fetch public balance for address ${u}`),null}};exports.getPublicBalance=u,exports.getPublicBalanceByTokenAddress=f;
@@ -4,10 +4,10 @@ import "../../data-structures/http/index.mjs";
4
4
  import { getSolanaAtaAddress as r } from "./solanaMint.utils.mjs";
5
5
  import { Logger as i } from "../../error-handling/logger.mjs";
6
6
  import { isValidSolanaPublicKey as a } from "./addresses.mjs";
7
- import { getErc20TokenFromAPI as o } from "./erc20tokenFunctions.mjs";
8
- import "../../data-structures/token-price-fetcher/TokenChecker.mjs";
9
- import { createCustomSolanaConnection as s, createJsonRpcProvider as c } from "./create-provider.mjs";
10
7
  import "../../externalABIs/index.mjs";
8
+ import { createCustomSolanaConnection as o, createJsonRpcProvider as s } from "./create-provider.mjs";
9
+ import { getErc20TokenFromAPI as c } from "./erc20tokenFunctions.mjs";
10
+ import "../../data-structures/token-price-fetcher/TokenChecker.mjs";
11
11
  import { ERC20ABI as l } from "../../externalABIs/swapAbi.mjs";
12
12
  import "../../data-structures/IndexedDB/key-val-store.mjs";
13
13
  import { ethers as u } from "ethers";
@@ -35,12 +35,12 @@ var f = async (e, t, r) => {
35
35
  try {
36
36
  if (e(r)) {
37
37
  if (!a(f)) return null;
38
- let { rpcUrl: e } = t[r], n = s(e), i = new d(f);
38
+ let { rpcUrl: e } = t[r], n = o(e), i = new d(f);
39
39
  if (m === "11111111111111111111111111111111") return BigInt(await n.getBalance(i));
40
- let c = await o(r, m);
41
- return c ? p(n, i, c) : null;
40
+ let s = await c(r, m);
41
+ return s ? p(n, i, s) : null;
42
42
  }
43
- let i = c(r), h = new u.Contract(m, l, i), g;
43
+ let i = s(r), h = new u.Contract(m, l, i), g;
44
44
  return g = m === n ? await i.getBalance(f) : await h?.balanceOf(f), g;
45
45
  } catch {
46
46
  return i.error(`Failed to fetch public balance for address ${f}`), null;
@@ -0,0 +1 @@
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`./addresses.cjs`),t=require(`./receive-vault.utils.cjs`),n=require(`../../API/receiveVaultCalls.cjs`);var r=new Map,i=async r=>{let{records:i,blocks:a}=await n.fetchReceiveVaultAccount(await t.signReceiveVaultAccount(r,BigInt(Math.floor(Date.now()/1e3)+300)));return{records:(await Promise.all(i.map(async n=>{try{let i=await t.buildReceiveVaultRecord(r,n);return e.addressEqual(t.getReceiveVaultCanonicalChainId(n.network),i.vaultAddress,n.vaultAddress)?n:null}catch{return null}}))).filter(e=>e!==null),blocks:a}},a=e=>{let n=t.getReceiveVaultAccountKey(e),a=i(e).finally(()=>r.delete(n));return r.set(n,a),a},o=e=>r.get(t.getReceiveVaultAccountKey(e))??a(e),s=async(e,r)=>n.fetchReceiveVaultNextIndex(await t.signReceiveVaultAccount(e,BigInt(Math.floor(Date.now()/1e3)+300)),r);exports.getReceiveVaultAccountSnapshot=o,exports.getReceiveVaultNextIndex=s;
@@ -0,0 +1,9 @@
1
+ import { UserKeys } from '../../data-structures/crypto-keys';
2
+ import { ReceiveVaultBlock, ReceiveVaultNetwork, ReceiveVaultRecord } from '../../types/receive-vault.types';
3
+ type ReceiveVaultAccountSnapshot = {
4
+ records: ReceiveVaultRecord[];
5
+ blocks: ReceiveVaultBlock[];
6
+ };
7
+ export declare const getReceiveVaultAccountSnapshot: (userKeys: UserKeys) => Promise<ReceiveVaultAccountSnapshot>;
8
+ export declare const getReceiveVaultNextIndex: (userKeys: UserKeys, network: ReceiveVaultNetwork) => Promise<number>;
9
+ export {};
@@ -0,0 +1,24 @@
1
+ import "../../constants/protocol.constants.mjs";
2
+ import { addressEqual as e } from "./addresses.mjs";
3
+ import { buildReceiveVaultRecord as t, getReceiveVaultAccountKey as n, getReceiveVaultCanonicalChainId as r, signReceiveVaultAccount as i } from "./receive-vault.utils.mjs";
4
+ import { fetchReceiveVaultAccount as a, fetchReceiveVaultNextIndex as o } from "../../API/receiveVaultCalls.mjs";
5
+ //#region libs/shared/common/src/functions/utils/receive-vault-account.utils.ts
6
+ var s = /* @__PURE__ */ new Map(), c = async (n) => {
7
+ let { records: o, blocks: s } = await a(await i(n, BigInt(Math.floor(Date.now() / 1e3) + 300)));
8
+ return {
9
+ records: (await Promise.all(o.map(async (i) => {
10
+ try {
11
+ let a = await t(n, i);
12
+ return e(r(i.network), a.vaultAddress, i.vaultAddress) ? i : null;
13
+ } catch {
14
+ return null;
15
+ }
16
+ }))).filter((e) => e !== null),
17
+ blocks: s
18
+ };
19
+ }, l = (e) => {
20
+ let t = n(e), r = c(e).finally(() => s.delete(t));
21
+ return s.set(t, r), r;
22
+ }, u = (e) => s.get(n(e)) ?? l(e), d = async (e, t) => o(await i(e, BigInt(Math.floor(Date.now() / 1e3) + 300)), t);
23
+ //#endregion
24
+ export { u as getReceiveVaultAccountSnapshot, d as getReceiveVaultNextIndex };
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`./addresses.cjs`),r=require(`../../types/receive-vault.types.cjs`),i=require(`./receive-vault.utils.cjs`),a=require(`./erc20tokenFunctions.cjs`),o=require(`./publicBalance.utils.cjs`),s=require(`./wallet-token-discovery.utils.cjs`);var c=async(e,t,r)=>await o.getPublicBalanceByTokenAddress(t,n.normalizeAddress(t,e),n.normalizeAddress(t,r))??0n,l=async(e,n)=>{try{return await s.getSolanaWalletTokenHoldings(e,n)}catch(n){return t.Logger.error(`receive-vault scan: token discovery failed for chain ${e}`,n),[]}},u=async(t,a)=>{let o=new Map,s=(e,t,r,i)=>{let a=`${t}:${n.normalizeAddress(t,e.vaultAddress)}:${n.normalizeAddress(t,r)}`;o.set(a,{record:e,chainId:t,token:r,reason:i})};return await Promise.all(t.map(async t=>{await Promise.all(i.receiveVaultChainsForNetwork(t.network).filter(e.isSolanaLike).map(async e=>{(await l(e,t.vaultAddress)).filter(({is2022Program:e})=>e).forEach(({token:n})=>s(t,e,n,r.ReceiveVaultBlockReason.NotShieldable))}))})),a.forEach(e=>{let i=t.find(t=>n.addressEqual(e.chainId,t.vaultAddress,e.vaultAddress));i&&s(i,e.chainId,e.token,r.ReceiveVaultBlockReason.RiskySender)}),[...o.values()]},d=async(e,n)=>{try{return(await Promise.all((await u(e,n)).map(async e=>{try{let[t,n]=await Promise.all([a.getErc20TokenFromAPI(e.chainId,e.token),c(e.record.vaultAddress,e.chainId,e.token)]);return t&&!a.isArcNativeToken(t)&&n>0n?{record:e.record,token:t,amount:n,reason:e.reason}:void 0}catch(n){t.Logger.error(`receive-vault scan: balance lookup failed for chain ${e.chainId} token ${e.token}`,n);return}}))).filter(e=>!!e)}catch(e){return t.Logger.log(`Error fetching vault's blocked balances`,e),[]}};exports.getReceiveVaultBlockedFunds=d;
@@ -0,0 +1,2 @@
1
+ import { ReceiveVaultBlock, ReceiveVaultBlockedFund, ReceiveVaultRecord } from '../../types/receive-vault.types';
2
+ export declare const getReceiveVaultBlockedFunds: (records: ReceiveVaultRecord[], blocks: ReceiveVaultBlock[]) => Promise<ReceiveVaultBlockedFund[]>;
@@ -0,0 +1,55 @@
1
+ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
+ import { Logger as t } from "../../error-handling/logger.mjs";
3
+ import { addressEqual as n, normalizeAddress as r } from "./addresses.mjs";
4
+ import { ReceiveVaultBlockReason as i } from "../../types/receive-vault.types.mjs";
5
+ import { receiveVaultChainsForNetwork as a } from "./receive-vault.utils.mjs";
6
+ import { getErc20TokenFromAPI as o, isArcNativeToken as s } from "./erc20tokenFunctions.mjs";
7
+ import { getPublicBalanceByTokenAddress as c } from "./publicBalance.utils.mjs";
8
+ import { getSolanaWalletTokenHoldings as l } from "./wallet-token-discovery.utils.mjs";
9
+ //#region libs/shared/common/src/functions/utils/receive-vault-scan.utils.ts
10
+ var u = async (e, t, n) => await c(t, r(t, e), r(t, n)) ?? 0n, d = async (e, n) => {
11
+ try {
12
+ return await l(e, n);
13
+ } catch (n) {
14
+ return t.error(`receive-vault scan: token discovery failed for chain ${e}`, n), [];
15
+ }
16
+ }, f = async (t, o) => {
17
+ let s = /* @__PURE__ */ new Map(), c = (e, t, n, i) => {
18
+ let a = `${t}:${r(t, e.vaultAddress)}:${r(t, n)}`;
19
+ s.set(a, {
20
+ record: e,
21
+ chainId: t,
22
+ token: n,
23
+ reason: i
24
+ });
25
+ };
26
+ return await Promise.all(t.map(async (t) => {
27
+ await Promise.all(a(t.network).filter(e).map(async (e) => {
28
+ (await d(e, t.vaultAddress)).filter(({ is2022Program: e }) => e).forEach(({ token: n }) => c(t, e, n, i.NotShieldable));
29
+ }));
30
+ })), o.forEach((e) => {
31
+ let r = t.find((t) => n(e.chainId, t.vaultAddress, e.vaultAddress));
32
+ r && c(r, e.chainId, e.token, i.RiskySender);
33
+ }), [...s.values()];
34
+ }, p = async (e, n) => {
35
+ try {
36
+ return (await Promise.all((await f(e, n)).map(async (e) => {
37
+ try {
38
+ let [t, n] = await Promise.all([o(e.chainId, e.token), u(e.record.vaultAddress, e.chainId, e.token)]);
39
+ return t && !s(t) && n > 0n ? {
40
+ record: e.record,
41
+ token: t,
42
+ amount: n,
43
+ reason: e.reason
44
+ } : void 0;
45
+ } catch (n) {
46
+ t.error(`receive-vault scan: balance lookup failed for chain ${e.chainId} token ${e.token}`, n);
47
+ return;
48
+ }
49
+ }))).filter((e) => !!e);
50
+ } catch (e) {
51
+ return t.log("Error fetching vault's blocked balances", e), [];
52
+ }
53
+ };
54
+ //#endregion
55
+ export { p as getReceiveVaultBlockedFunds };
@@ -0,0 +1 @@
1
+ const e=require(`../../../../_virtual/_rolldown/runtime.cjs`);let t=require(`ethers`),n=require(`@solana/web3.js`),r=require(`bs58`);r=e.__toESM(r);let i=require(`tweetnacl`);i=e.__toESM(i);var a=Buffer.from(`hinkal_receive_vault`),o=Buffer.from(`HINKAL_RECEIVE_OUTPUT`),s=Buffer.from(`HINKAL_RECEIVE_RECOVER`),c=Buffer.from(`hinkal_receive_recovery`),l=e=>t.ethers.getBytes(e),u=e=>{if(e<0n||e>255n)throw Error(`receive vault: version must fit in u8`);return Uint8Array.of(Number(e))},d=e=>t.ethers.getBytes(t.ethers.toBeHex(e,32)),f=e=>l(t.ethers.sha256(t.ethers.concat([d(e.recipient.H0x),d(e.recipient.H0y),d(e.recipient.H1x),d(e.recipient.H1y),d(e.recipient.stealthAddress),new n.PublicKey(e.owner).toBytes(),u(e.version)]))),p=(e,t,r)=>n.PublicKey.findProgramAddressSync([a,new n.PublicKey(r).toBytes(),Buffer.from(f(e))],new n.PublicKey(t))[0].toBase58(),m=(e,t,r)=>n.PublicKey.findProgramAddressSync([c,new n.PublicKey(t).toBytes(),Buffer.from(r)],new n.PublicKey(e))[0],h=(e,r,i,a)=>l(t.ethers.sha256(t.ethers.concat([o,new n.PublicKey(e).toBytes(),new n.PublicKey(r).toBytes(),new n.PublicKey(i).toBytes(),t.ethers.sha256(a)]))),g=(e,r,i,a,o,c)=>{if(c<0n||c>9223372036854775807n)throw Error(`receive vault: invalid deadline`);let u=new Uint8Array(8);return new DataView(u.buffer).setBigInt64(0,c,!0),l(t.ethers.sha256(t.ethers.concat([s,new n.PublicKey(e).toBytes(),new n.PublicKey(r).toBytes(),new n.PublicKey(i).toBytes(),new n.PublicKey(a).toBytes(),new n.PublicKey(o).toBytes(),u])))},_=(e,t)=>r.default.encode(i.default.sign.detached(t,e.secretKey));exports.computeSolanaReceiveVaultAddress=p,exports.computeSolanaRecoveryMarkerAddress=m,exports.getSolanaReceiveVaultOutputDigest=h,exports.getSolanaReceiveVaultParamsHash=f,exports.getSolanaReceiveVaultRecoveryDigest=g,exports.signSolanaReceiveVaultDigest=_;
@@ -0,0 +1,8 @@
1
+ import { Keypair, PublicKey } from '@solana/web3.js';
2
+ import { ReceiveVaultParams } from '../../types/receive-vault.types';
3
+ export declare const getSolanaReceiveVaultParamsHash: (params: ReceiveVaultParams) => Uint8Array;
4
+ export declare const computeSolanaReceiveVaultAddress: (params: ReceiveVaultParams, programId: string, originalDeployer: string) => string;
5
+ export declare const computeSolanaRecoveryMarkerAddress: (programId: string, originalDeployer: string, digest: Uint8Array) => PublicKey;
6
+ export declare const getSolanaReceiveVaultOutputDigest: (programId: string, originalDeployer: string, vault: string, encryptedOutput: string) => Uint8Array;
7
+ export declare const getSolanaReceiveVaultRecoveryDigest: (programId: string, originalDeployer: string, vault: string, mint: string, to: string, deadline: bigint) => Uint8Array;
8
+ export declare const signSolanaReceiveVaultDigest: (owner: Keypair, digest: Uint8Array) => string;
@@ -0,0 +1,45 @@
1
+ import { ethers as e } from "ethers";
2
+ import { PublicKey as t } from "@solana/web3.js";
3
+ import n from "bs58";
4
+ import r from "tweetnacl";
5
+ //#region libs/shared/common/src/functions/utils/receive-vault-solana.utils.ts
6
+ var i = Buffer.from("hinkal_receive_vault"), a = Buffer.from("HINKAL_RECEIVE_OUTPUT"), o = Buffer.from("HINKAL_RECEIVE_RECOVER"), s = Buffer.from("hinkal_receive_recovery"), c = (t) => e.getBytes(t), l = (e) => {
7
+ if (e < 0n || e > 255n) throw Error("receive vault: version must fit in u8");
8
+ return Uint8Array.of(Number(e));
9
+ }, u = (t) => e.getBytes(e.toBeHex(t, 32)), d = (n) => c(e.sha256(e.concat([
10
+ u(n.recipient.H0x),
11
+ u(n.recipient.H0y),
12
+ u(n.recipient.H1x),
13
+ u(n.recipient.H1y),
14
+ u(n.recipient.stealthAddress),
15
+ new t(n.owner).toBytes(),
16
+ l(n.version)
17
+ ]))), f = (e, n, r) => t.findProgramAddressSync([
18
+ i,
19
+ new t(r).toBytes(),
20
+ Buffer.from(d(e))
21
+ ], new t(n))[0].toBase58(), p = (e, n, r) => t.findProgramAddressSync([
22
+ s,
23
+ new t(n).toBytes(),
24
+ Buffer.from(r)
25
+ ], new t(e))[0], m = (n, r, i, o) => c(e.sha256(e.concat([
26
+ a,
27
+ new t(n).toBytes(),
28
+ new t(r).toBytes(),
29
+ new t(i).toBytes(),
30
+ e.sha256(o)
31
+ ]))), h = (n, r, i, a, s, l) => {
32
+ if (l < 0n || l > 9223372036854775807n) throw Error("receive vault: invalid deadline");
33
+ let u = new Uint8Array(8);
34
+ return new DataView(u.buffer).setBigInt64(0, l, !0), c(e.sha256(e.concat([
35
+ o,
36
+ new t(n).toBytes(),
37
+ new t(r).toBytes(),
38
+ new t(i).toBytes(),
39
+ new t(a).toBytes(),
40
+ new t(s).toBytes(),
41
+ u
42
+ ])));
43
+ }, g = (e, t) => n.encode(r.sign.detached(t, e.secretKey));
44
+ //#endregion
45
+ export { f as computeSolanaReceiveVaultAddress, p as computeSolanaRecoveryMarkerAddress, m as getSolanaReceiveVaultOutputDigest, d as getSolanaReceiveVaultParamsHash, h as getSolanaReceiveVaultRecoveryDigest, g as signSolanaReceiveVaultDigest };
@@ -0,0 +1,2 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../data-structures/crypto-keys/keys.cjs`),r=require(`../../data-structures/utxo/Utxo.cjs`),i=require(`./tron.utils.cjs`),a=require(`../../types/ethereum-network.types.cjs`),o=require(`../../types/receive-vault.types.cjs`);require(`../../data-structures/crypto-keys/index.cjs`);const s=require(`../web3/getContractMetadata.cjs`),c=require(`./receive-vault-solana.utils.cjs`);let l=require(`ethers`),u=require(`@solana/web3.js`);var d=`HINKAL_RECEIVE_V1`,f=`HINKAL_RECEIVE_RECOVERY_V1`,p=`HINKAL_RECEIVE_SOLANA_OWNER_V1`,m=`HINKAL_RECEIVE_RECOVER`,h=`HINKAL_RECEIVE_OUTPUT`,g=`HINKAL_RECEIVE_ACCOUNT_V1`,_=`HINKAL_RECEIVE_VAULT_ACCOUNT`,v=e=>s.getContractWithFetcherByChainId(e,a.ContractType.ReceiveVaultFactoryContract),y=new Map,b=(e,t)=>{let n=l.ethers.keccak256(l.ethers.toUtf8Bytes(`${f}:${e.getShieldedPrivateKey()}:${t.index}`));return new l.ethers.Wallet(n)},x=(e,t)=>u.Keypair.fromSeed(l.ethers.getBytes(l.ethers.keccak256(l.ethers.toUtf8Bytes(`${p}:${e.getShieldedPrivateKey()}:${t.index}`)))),S=t=>{let n=e.networkRegistry[t]?.contractData?.originalDeployer;if(!n)throw Error(`receive vault: no original deployer on chain ${t}`);return n},C=e=>n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey,w=(e,i)=>{let a=e.getShieldedPrivateKey(),s=BigInt(l.ethers.keccak256(l.ethers.toUtf8Bytes(`${d}:${a}:${i.index}`))),c=new r.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:a,randomization:n.UserKeys.findCorrectRandomization(s,a),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}),{H0:u}=c;if(!u)throw Error(`receive vault: H0 is not set`);let f=n.UserKeys.getH1FromH0(u,a),p=i.network===o.ReceiveVaultNetwork.Solana?x(e,i).publicKey.toBase58():b(e,i).address;return{recipient:{H0x:u[0],H0y:u[1],H1x:f[0],H1y:f[1],stealthAddress:BigInt(c.getStealthAddress())},owner:p,version:BigInt(i.version)}},T=e=>l.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(tuple(uint256,uint256,uint256,uint256,uint256),address,uint256)`],[[[e.recipient.H0x,e.recipient.H0y,e.recipient.H1x,e.recipient.H1y,e.recipient.stealthAddress],e.owner,e.version]]),E=t=>e.isTronLike(t)?`0x41`:`0xff`,D=e=>[[e.recipient.H0x,e.recipient.H0y,e.recipient.H1x,e.recipient.H1y,e.recipient.stealthAddress],e.owner,e.version],O=(e,t,n,r)=>l.ethers.getAddress(l.ethers.dataSlice(l.ethers.solidityPackedKeccak256([`bytes1`,`address`,`bytes32`,`bytes32`],[E(r),i.addressToHexFormat(t),l.ethers.keccak256(T(e)),n]),12)),k=t=>(e.isSolanaLike(t)?e.networkRegistry[t]?.contractData?.hinkalAddress:e.networkRegistry[t]?.contractData?.receiveVaultFactoryAddress)||void 0,A=e=>!!k(e),j=t=>e.isSolanaLike(t)?o.ReceiveVaultNetwork.Solana:e.isTronLike(t)?o.ReceiveVaultNetwork.Tron:o.ReceiveVaultNetwork.Evm,M=t=>e.FRONT_END_SUPPORTED_CHAINS.filter(e=>A(e)&&j(e)===t),N=e=>{let[t]=M(e);if(t===void 0)throw Error(`receive vault: no supported chain for network ${e}`);return t},P=async(e,t)=>{let n=`${e}:${t}`,r=y.get(n);if(r)return r;let i=await v(e).vaultInitCodeHash(t);return y.set(n,i),i},F=async e=>e===o.ReceiveVaultNetwork.Solana?0n:await v(N(e)).vaultVersionCount()-1n,I=async(t,n)=>{let r=k(n);if(!r)throw Error(`receive vault: no factory on chain ${n}`);if(e.isSolanaLike(n))return c.computeSolanaReceiveVaultAddress(t,r,S(n));let a=O(t,r,await P(n,t.version),n);return e.isTronLike(n)?i.evmHexToTronBase58Address(a):a},L=async(e,t)=>({...t,vaultAddress:await I(w(e,t),N(t.network))}),R=e=>({recipient:{H0x:e.recipient.H0x.toString(),H0y:e.recipient.H0y.toString(),H1x:e.recipient.H1x.toString(),H1y:e.recipient.H1y.toString(),stealthAddress:e.recipient.stealthAddress.toString()},owner:e.owner,version:e.version.toString()}),z=e=>new l.ethers.Wallet(l.ethers.keccak256(l.ethers.toUtf8Bytes(`${g}:${e.getShieldedPrivateKey()}`))),B=e=>z(e).address,V=(e,t)=>l.ethers.keccak256(l.ethers.solidityPacked([`string`,`address`,`uint256`],[_,e,t])),H=async(e,t)=>{let n=z(e),r=V(n.address,t);return{accountKey:n.address,deadline:t.toString(),signature:await n.signMessage(l.ethers.getBytes(r))}},U=(e,t,n,r)=>l.ethers.keccak256(l.ethers.solidityPacked([`string`,`uint256`,`address`,`address`,`bytes32`],[h,BigInt(e),i.addressToHexFormat(t),i.addressToHexFormat(n),l.ethers.keccak256(r)])),W=async(t,n,r,i)=>{let a=k(i);if(!a)throw Error(`receive vault: no factory on chain ${i}`);if(e.isSolanaLike(i)){let e=c.getSolanaReceiveVaultOutputDigest(a,S(i),n.vaultAddress,r);return c.signSolanaReceiveVaultDigest(x(t,n),e)}let o=U(i,a,n.vaultAddress,r);return b(t,n).signMessage(l.ethers.getBytes(o))},G=(t,n,r,a,o,s)=>{let c=l.ethers.keccak256(l.ethers.solidityPacked([`string`,`uint256`,`address`,`address`,`address`,`address`,`uint256`],[m,BigInt(t),i.addressToHexFormat(n),i.addressToHexFormat(r),i.addressToHexFormat(a),i.addressToHexFormat(o),s]));return e.isTronLike(t)?l.ethers.keccak256(l.ethers.concat([l.ethers.toUtf8Bytes(`TRON Signed Message:
2
+ 32`),c])):c},K=async(t,n,r,i,a,o)=>{let s=k(i);if(!s)throw Error(`receive vault: no factory on chain ${i}`);if(e.isSolanaLike(i)){let e=c.getSolanaReceiveVaultRecoveryDigest(s,S(i),n.vaultAddress,r,a,o);return c.signSolanaReceiveVaultDigest(x(t,n),e)}let u=G(i,s,n.vaultAddress,r,a,o),d=b(t,n);return e.isTronLike(i)?new l.ethers.SigningKey(d.privateKey).sign(u).serialized:d.signMessage(l.ethers.getBytes(u))};exports.buildReceiveVaultRecord=L,exports.computeReceiveVaultAddress=O,exports.encodeReceiveVaultParams=T,exports.getReceiveVaultAccountKey=B,exports.getReceiveVaultAddress=I,exports.getReceiveVaultCanonicalChainId=N,exports.getReceiveVaultCurrentVersion=F,exports.getReceiveVaultEncryptionKey=C,exports.getReceiveVaultFactoryAddress=k,exports.getReceiveVaultInitCodeHash=P,exports.getReceiveVaultOutputDigest=U,exports.getReceiveVaultParams=w,exports.getReceiveVaultRecoveryDigest=G,exports.getReceiveVaultRecoveryWallet=b,exports.getReceiveVaultSolanaOwner=x,exports.getSolanaOriginalDeployer=S,exports.isReceiveVaultSupported=A,exports.receiveVaultChainsForNetwork=M,exports.receiveVaultNetworkOf=j,exports.receiveVaultParamsToTuple=D,exports.serializeReceiveVaultParams=R,exports.signReceiveVaultAccount=H,exports.signReceiveVaultOutput=W,exports.signReceiveVaultRecovery=K;
@@ -0,0 +1,31 @@
1
+ import { ethers } from 'ethers';
2
+ import { Keypair } from '@solana/web3.js';
3
+ import { UserKeys } from '../../data-structures/crypto-keys';
4
+ import { ReceiveVaultAccountProof, ReceiveVaultNetwork, ReceiveVaultParams, ReceiveVaultRecord } from '../../types/receive-vault.types';
5
+ export type ReceiveVaultTerms = Omit<ReceiveVaultRecord, 'vaultAddress'>;
6
+ export declare const getReceiveVaultRecoveryWallet: (userKeys: UserKeys, terms: ReceiveVaultTerms) => ethers.Wallet;
7
+ export declare const getReceiveVaultSolanaOwner: (userKeys: UserKeys, terms: ReceiveVaultTerms) => Keypair;
8
+ export declare const getSolanaOriginalDeployer: (chainId: number) => string;
9
+ export declare const getReceiveVaultEncryptionKey: (userKeys: UserKeys) => string;
10
+ export declare const getReceiveVaultParams: (userKeys: UserKeys, terms: ReceiveVaultTerms) => ReceiveVaultParams;
11
+ export declare const encodeReceiveVaultParams: (params: ReceiveVaultParams) => string;
12
+ export declare const receiveVaultParamsToTuple: (params: ReceiveVaultParams) => (string | bigint | bigint[])[];
13
+ export declare const computeReceiveVaultAddress: (params: ReceiveVaultParams, factoryAddress: string, initCodeHash: string, chainId: number) => string;
14
+ export declare const getReceiveVaultFactoryAddress: (chainId: number) => string | undefined;
15
+ export declare const isReceiveVaultSupported: (chainId: number) => boolean;
16
+ export declare const receiveVaultNetworkOf: (chainId: number) => ReceiveVaultNetwork;
17
+ export declare const receiveVaultChainsForNetwork: (network: ReceiveVaultNetwork) => number[];
18
+ export declare const getReceiveVaultCanonicalChainId: (network: ReceiveVaultNetwork) => number;
19
+ export declare const getReceiveVaultInitCodeHash: (chainId: number, version: bigint) => Promise<string>;
20
+ export declare const getReceiveVaultCurrentVersion: (network: ReceiveVaultNetwork) => Promise<bigint>;
21
+ export declare const getReceiveVaultAddress: (params: ReceiveVaultParams, chainId: number) => Promise<string>;
22
+ export declare const buildReceiveVaultRecord: (userKeys: UserKeys, terms: ReceiveVaultTerms) => Promise<ReceiveVaultRecord>;
23
+ export declare const serializeReceiveVaultParams: (params: ReceiveVaultParams) => ReceiveVaultParams<string>;
24
+ export declare const deserializeReceiveVaultParams: (params: ReceiveVaultParams<string>) => ReceiveVaultParams;
25
+ export declare const getReceiveVaultRecipientInfo: (params: ReceiveVaultParams, encryptionKey: string) => string;
26
+ export declare const getReceiveVaultAccountKey: (userKeys: UserKeys) => string;
27
+ export declare const signReceiveVaultAccount: (userKeys: UserKeys, deadline: bigint) => Promise<ReceiveVaultAccountProof>;
28
+ export declare const getReceiveVaultOutputDigest: (chainId: number, factoryAddress: string, vault: string, encryptedOutput: string) => string;
29
+ export declare const signReceiveVaultOutput: (userKeys: UserKeys, record: ReceiveVaultRecord, encryptedOutput: string, chainId: number) => Promise<string>;
30
+ export declare const getReceiveVaultRecoveryDigest: (chainId: number, factoryAddress: string, vault: string, token: string, to: string, deadline: bigint) => string;
31
+ export declare const signReceiveVaultRecovery: (userKeys: UserKeys, record: ReceiveVaultRecord, token: string, chainId: number, to: string, deadline: bigint) => Promise<string>;
@@ -0,0 +1,166 @@
1
+ import { FRONT_END_SUPPORTED_CHAINS as e, isSolanaLike as t, isTronLike as n, networkRegistry as r } from "../../constants/chains.constants.mjs";
2
+ import { zeroAddress as i } from "../../constants/protocol.constants.mjs";
3
+ import { UserKeys as a } from "../../data-structures/crypto-keys/keys.mjs";
4
+ import { Utxo as o } from "../../data-structures/utxo/Utxo.mjs";
5
+ import { addressToHexFormat as s, evmHexToTronBase58Address as c } from "./tron.utils.mjs";
6
+ import { ContractType as l } from "../../types/ethereum-network.types.mjs";
7
+ import { ReceiveVaultNetwork as u } from "../../types/receive-vault.types.mjs";
8
+ import "../../data-structures/crypto-keys/index.mjs";
9
+ import { getContractWithFetcherByChainId as d } from "../web3/getContractMetadata.mjs";
10
+ import { computeSolanaReceiveVaultAddress as f, getSolanaReceiveVaultOutputDigest as p, getSolanaReceiveVaultRecoveryDigest as m, signSolanaReceiveVaultDigest as h } from "./receive-vault-solana.utils.mjs";
11
+ import { ethers as g } from "ethers";
12
+ import { Keypair as _ } from "@solana/web3.js";
13
+ //#region libs/shared/common/src/functions/utils/receive-vault.utils.ts
14
+ var v = "HINKAL_RECEIVE_V1", y = "HINKAL_RECEIVE_RECOVERY_V1", b = "HINKAL_RECEIVE_SOLANA_OWNER_V1", x = "HINKAL_RECEIVE_RECOVER", S = "HINKAL_RECEIVE_OUTPUT", C = "HINKAL_RECEIVE_ACCOUNT_V1", w = "HINKAL_RECEIVE_VAULT_ACCOUNT", T = (e) => d(e, l.ReceiveVaultFactoryContract), E = /* @__PURE__ */ new Map(), D = (e, t) => {
15
+ let n = g.keccak256(g.toUtf8Bytes(`${y}:${e.getShieldedPrivateKey()}:${t.index}`));
16
+ return new g.Wallet(n);
17
+ }, O = (e, t) => _.fromSeed(g.getBytes(g.keccak256(g.toUtf8Bytes(`${b}:${e.getShieldedPrivateKey()}:${t.index}`)))), k = (e) => {
18
+ let t = r[e]?.contractData?.originalDeployer;
19
+ if (!t) throw Error(`receive vault: no original deployer on chain ${e}`);
20
+ return t;
21
+ }, A = (e) => a.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey, j = (e, t) => {
22
+ let n = e.getShieldedPrivateKey(), r = BigInt(g.keccak256(g.toUtf8Bytes(`${v}:${n}:${t.index}`))), s = new o({
23
+ amount: 0n,
24
+ erc20TokenAddress: i,
25
+ nullifyingKey: n,
26
+ randomization: a.findCorrectRandomization(r, n),
27
+ spendingPublicKey: e.getSpendingKeyPair().pubSpendingBJJPoint
28
+ }), { H0: c } = s;
29
+ if (!c) throw Error("receive vault: H0 is not set");
30
+ let l = a.getH1FromH0(c, n), d = t.network === u.Solana ? O(e, t).publicKey.toBase58() : D(e, t).address;
31
+ return {
32
+ recipient: {
33
+ H0x: c[0],
34
+ H0y: c[1],
35
+ H1x: l[0],
36
+ H1y: l[1],
37
+ stealthAddress: BigInt(s.getStealthAddress())
38
+ },
39
+ owner: d,
40
+ version: BigInt(t.version)
41
+ };
42
+ }, M = (e) => g.AbiCoder.defaultAbiCoder().encode(["tuple(tuple(uint256,uint256,uint256,uint256,uint256),address,uint256)"], [[
43
+ [
44
+ e.recipient.H0x,
45
+ e.recipient.H0y,
46
+ e.recipient.H1x,
47
+ e.recipient.H1y,
48
+ e.recipient.stealthAddress
49
+ ],
50
+ e.owner,
51
+ e.version
52
+ ]]), N = (e) => n(e) ? "0x41" : "0xff", P = (e) => [
53
+ [
54
+ e.recipient.H0x,
55
+ e.recipient.H0y,
56
+ e.recipient.H1x,
57
+ e.recipient.H1y,
58
+ e.recipient.stealthAddress
59
+ ],
60
+ e.owner,
61
+ e.version
62
+ ], F = (e, t, n, r) => g.getAddress(g.dataSlice(g.solidityPackedKeccak256([
63
+ "bytes1",
64
+ "address",
65
+ "bytes32",
66
+ "bytes32"
67
+ ], [
68
+ N(r),
69
+ s(t),
70
+ g.keccak256(M(e)),
71
+ n
72
+ ]), 12)), I = (e) => (t(e) ? r[e]?.contractData?.hinkalAddress : r[e]?.contractData?.receiveVaultFactoryAddress) || void 0, L = (e) => !!I(e), R = (e) => t(e) ? u.Solana : n(e) ? u.Tron : u.Evm, z = (t) => e.filter((e) => L(e) && R(e) === t), B = (e) => {
73
+ let [t] = z(e);
74
+ if (t === void 0) throw Error(`receive vault: no supported chain for network ${e}`);
75
+ return t;
76
+ }, V = async (e, t) => {
77
+ let n = `${e}:${t}`, r = E.get(n);
78
+ if (r) return r;
79
+ let i = await T(e).vaultInitCodeHash(t);
80
+ return E.set(n, i), i;
81
+ }, H = async (e) => e === u.Solana ? 0n : await T(B(e)).vaultVersionCount() - 1n, U = async (e, r) => {
82
+ let i = I(r);
83
+ if (!i) throw Error(`receive vault: no factory on chain ${r}`);
84
+ if (t(r)) return f(e, i, k(r));
85
+ let a = F(e, i, await V(r, e.version), r);
86
+ return n(r) ? c(a) : a;
87
+ }, W = async (e, t) => ({
88
+ ...t,
89
+ vaultAddress: await U(j(e, t), B(t.network))
90
+ }), G = (e) => ({
91
+ recipient: {
92
+ H0x: e.recipient.H0x.toString(),
93
+ H0y: e.recipient.H0y.toString(),
94
+ H1x: e.recipient.H1x.toString(),
95
+ H1y: e.recipient.H1y.toString(),
96
+ stealthAddress: e.recipient.stealthAddress.toString()
97
+ },
98
+ owner: e.owner,
99
+ version: e.version.toString()
100
+ }), K = (e) => new g.Wallet(g.keccak256(g.toUtf8Bytes(`${C}:${e.getShieldedPrivateKey()}`))), q = (e) => K(e).address, J = (e, t) => g.keccak256(g.solidityPacked([
101
+ "string",
102
+ "address",
103
+ "uint256"
104
+ ], [
105
+ w,
106
+ e,
107
+ t
108
+ ])), Y = async (e, t) => {
109
+ let n = K(e), r = J(n.address, t);
110
+ return {
111
+ accountKey: n.address,
112
+ deadline: t.toString(),
113
+ signature: await n.signMessage(g.getBytes(r))
114
+ };
115
+ }, X = (e, t, n, r) => g.keccak256(g.solidityPacked([
116
+ "string",
117
+ "uint256",
118
+ "address",
119
+ "address",
120
+ "bytes32"
121
+ ], [
122
+ S,
123
+ BigInt(e),
124
+ s(t),
125
+ s(n),
126
+ g.keccak256(r)
127
+ ])), Z = async (e, n, r, i) => {
128
+ let a = I(i);
129
+ if (!a) throw Error(`receive vault: no factory on chain ${i}`);
130
+ if (t(i)) {
131
+ let t = p(a, k(i), n.vaultAddress, r);
132
+ return h(O(e, n), t);
133
+ }
134
+ let o = X(i, a, n.vaultAddress, r);
135
+ return D(e, n).signMessage(g.getBytes(o));
136
+ }, Q = (e, t, r, i, a, o) => {
137
+ let c = g.keccak256(g.solidityPacked([
138
+ "string",
139
+ "uint256",
140
+ "address",
141
+ "address",
142
+ "address",
143
+ "address",
144
+ "uint256"
145
+ ], [
146
+ x,
147
+ BigInt(e),
148
+ s(t),
149
+ s(r),
150
+ s(i),
151
+ s(a),
152
+ o
153
+ ]));
154
+ return n(e) ? g.keccak256(g.concat([g.toUtf8Bytes("TRON Signed Message:\n32"), c])) : c;
155
+ }, $ = async (e, r, i, a, o, s) => {
156
+ let c = I(a);
157
+ if (!c) throw Error(`receive vault: no factory on chain ${a}`);
158
+ if (t(a)) {
159
+ let t = m(c, k(a), r.vaultAddress, i, o, s);
160
+ return h(O(e, r), t);
161
+ }
162
+ let l = Q(a, c, r.vaultAddress, i, o, s), u = D(e, r);
163
+ return n(a) ? new g.SigningKey(u.privateKey).sign(l).serialized : u.signMessage(g.getBytes(l));
164
+ };
165
+ //#endregion
166
+ export { W as buildReceiveVaultRecord, F as computeReceiveVaultAddress, M as encodeReceiveVaultParams, q as getReceiveVaultAccountKey, U as getReceiveVaultAddress, B as getReceiveVaultCanonicalChainId, H as getReceiveVaultCurrentVersion, A as getReceiveVaultEncryptionKey, I as getReceiveVaultFactoryAddress, V as getReceiveVaultInitCodeHash, X as getReceiveVaultOutputDigest, j as getReceiveVaultParams, Q as getReceiveVaultRecoveryDigest, D as getReceiveVaultRecoveryWallet, O as getReceiveVaultSolanaOwner, k as getSolanaOriginalDeployer, L as isReceiveVaultSupported, z as receiveVaultChainsForNetwork, R as receiveVaultNetworkOf, P as receiveVaultParamsToTuple, G as serializeReceiveVaultParams, Y as signReceiveVaultAccount, Z as signReceiveVaultOutput, $ as signReceiveVaultRecovery };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`);var t=(t,n)=>{let r=`${t}-${n}`;return e.isSolanaLike(n)||e.isTronLike(n)?r:r.toLowerCase()},n=(t,n,r=!1)=>{let i=`${t}-${n}`;if(r){let{hinkalAddress:t}=e.networkRegistry[n].contractData;return`${i}-${t}`.toLowerCase()}return i.toLowerCase()},r=(e,t,n)=>{if(!t||!n)throw Error(`oldPart and newPart must be provided`);return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase())};exports.getStateKey=n,exports.getTokenStateKey=t,exports.replaceAllInstances=r;
1
+ const e=require(`../../constants/chains.constants.cjs`);var t=e=>{e.startsWith(`0x`)&&(e=e.slice(2));let t=[];for(let n=0;n<e.length;n+=2){let r=parseInt(e.slice(n,n+2),16);t.push(r)}return new TextDecoder(`utf-8`).decode(new Uint8Array(t))},n=(t,n)=>{let r=`${t}-${n}`;return e.isSolanaLike(n)||e.isTronLike(n)?r:r.toLowerCase()},r=(t,n,r=!1)=>{let i=`${t}-${n}`;if(r){let{hinkalAddress:t}=e.networkRegistry[n].contractData;return`${i}-${t}`.toLowerCase()}return i.toLowerCase()},i=(e,t,n)=>{if(!t||!n)throw Error(`oldPart and newPart must be provided`);return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase())};exports.getStateKey=r,exports.getTokenStateKey=n,exports.hexToUtf8=t,exports.replaceAllInstances=i;
@@ -1,18 +1,26 @@
1
1
  import { isSolanaLike as e, isTronLike as t, networkRegistry as n } from "../../constants/chains.constants.mjs";
2
2
  //#region libs/shared/common/src/functions/utils/string.utils.ts
3
- var r = (n, r) => {
3
+ var r = (e) => {
4
+ e.startsWith("0x") && (e = e.slice(2));
5
+ let t = [];
6
+ for (let n = 0; n < e.length; n += 2) {
7
+ let r = parseInt(e.slice(n, n + 2), 16);
8
+ t.push(r);
9
+ }
10
+ return new TextDecoder("utf-8").decode(new Uint8Array(t));
11
+ }, i = (n, r) => {
4
12
  let i = `${n}-${r}`;
5
13
  return e(r) || t(r) ? i : i.toLowerCase();
6
- }, i = (e, t, r = !1) => {
14
+ }, a = (e, t, r = !1) => {
7
15
  let i = `${e}-${t}`;
8
16
  if (r) {
9
17
  let { hinkalAddress: e } = n[t].contractData;
10
18
  return `${i}-${e}`.toLowerCase();
11
19
  }
12
20
  return i.toLowerCase();
13
- }, a = (e, t, n) => {
21
+ }, o = (e, t, n) => {
14
22
  if (!t || !n) throw Error("oldPart and newPart must be provided");
15
23
  return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase());
16
24
  };
17
25
  //#endregion
18
- export { i as getStateKey, r as getTokenStateKey, a as replaceAllInstances };
26
+ export { a as getStateKey, i as getTokenStateKey, r as hexToUtf8, o as replaceAllInstances };
@@ -1 +1 @@
1
- require(`../../error-handling/error-codes.constants.cjs`),require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`./addresses.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./fees.utils.cjs`),require(`./enclave-utxo-storage.cjs`),require(`../../data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs`),require(`./enclave-recipient-info-storage.cjs`);
1
+ require(`../../error-handling/error-codes.constants.cjs`),require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`./addresses.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`./fees.utils.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`../../data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs`),require(`./enclave-recipient-info-storage.cjs`);
@@ -3,8 +3,8 @@ import "../web3/etherFunctions.mjs";
3
3
  import "../../data-structures/crypto-keys/keys.mjs";
4
4
  import "./addresses.mjs";
5
5
  import "../pre-transaction/getFeeStructure.mjs";
6
- import "./getRecipientInfoFromUserKeys.mjs";
7
6
  import "./fees.utils.mjs";
7
+ import "./getRecipientInfoFromUserKeys.mjs";
8
8
  import "./enclave-utxo-storage.mjs";
9
9
  import "../../data-structures/Hinkal/hinkalSolanaSponsoredShield.mjs";
10
10
  import "./enclave-recipient-info-storage.mjs";
@@ -2,3 +2,4 @@ import { ERC20Token } from '../../types/token.types';
2
2
  export declare const checkTokensForShielding: (chainId: number, erc20Addresses: string[]) => Promise<string[]>;
3
3
  export declare const validateAndGetChainId: (tokens: ERC20Token[]) => number;
4
4
  export declare const isSameERC20Token: (a?: ERC20Token, b?: ERC20Token) => boolean;
5
+ export declare const getTokenKey: (token: ERC20Token) => string;
@@ -1 +1 @@
1
- require(`./token-check.utils.cjs`),require(`../../error-handling/index.cjs`),require(`../../constants/index.cjs`),require(`../../data-structures/crypto-keys/index.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./tx-confirmation.utils.cjs`);
1
+ require(`../../data-structures/crypto-keys/index.cjs`),require(`./token-check.utils.cjs`),require(`../../error-handling/index.cjs`),require(`../../constants/index.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./tx-confirmation.utils.cjs`);
@@ -1,7 +1,7 @@
1
+ import "../../data-structures/crypto-keys/index.mjs";
1
2
  import "./token-check.utils.mjs";
2
3
  import "../../error-handling/index.mjs";
3
4
  import "../../constants/index.mjs";
4
- import "../../data-structures/crypto-keys/index.mjs";
5
5
  import "./getRecipientInfoFromUserKeys.mjs";
6
6
  import "./enclave-utxo-storage.mjs";
7
7
  import "./tx-confirmation.utils.mjs";
@@ -0,0 +1 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`);require(`../../data-structures/http/index.cjs`),require(`./tron.utils.cjs`);const n=require(`./create-provider.cjs`);require(`./publicBalance.utils.cjs`),require(`../../API/evm-token-assets.cjs`);let r=require(`@solana/web3.js`),i=require(`@solana/spl-token`);var a=async(a,o)=>{let{rpcUrl:s}=e.networkRegistry[a],c=n.createCustomSolanaConnection(s),l=await c.getBalance(new r.PublicKey(o)),[u,d]=await Promise.all([c.getParsedTokenAccountsByOwner(new r.PublicKey(o),{programId:i.TOKEN_PROGRAM_ID}),c.getParsedTokenAccountsByOwner(new r.PublicKey(o),{programId:i.TOKEN_2022_PROGRAM_ID})]),f=[...u.value.map(e=>({account:e,is2022Program:!1})),...d.value.map(e=>({account:e,is2022Program:!0}))].filter(({account:e})=>BigInt(e.account.data.parsed.info.tokenAmount.amount)>0n).map(({account:e,is2022Program:t})=>({token:e.account.data.parsed.info.mint,is2022Program:t}));l>0&&f.unshift({token:t.solanaNativeAddress,is2022Program:!1});let p=new Set;return f.filter(({token:e})=>p.has(e)?!1:(p.add(e),!0))};exports.getSolanaWalletTokenHoldings=a;
@@ -0,0 +1,9 @@
1
+ export declare const getEvmWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
2
+ export type SolanaWalletTokenHolding = {
3
+ token: string;
4
+ is2022Program: boolean;
5
+ };
6
+ export declare const getSolanaWalletTokenHoldings: (chainId: number, walletAddress: string) => Promise<SolanaWalletTokenHolding[]>;
7
+ export declare const getSolanaWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
8
+ export declare const getWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
9
+ export declare const getTronWalletTokenAddresses: (walletAddress: string, chainId: number) => Promise<string[]>;
@@ -0,0 +1,30 @@
1
+ import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
+ import { solanaNativeAddress as t } from "../../constants/protocol.constants.mjs";
3
+ import "../../data-structures/http/index.mjs";
4
+ import "./tron.utils.mjs";
5
+ import { createCustomSolanaConnection as n } from "./create-provider.mjs";
6
+ import "./publicBalance.utils.mjs";
7
+ import "../../API/evm-token-assets.mjs";
8
+ import { PublicKey as r } from "@solana/web3.js";
9
+ import { TOKEN_2022_PROGRAM_ID as i, TOKEN_PROGRAM_ID as a } from "@solana/spl-token";
10
+ //#region libs/shared/common/src/functions/utils/wallet-token-discovery.utils.ts
11
+ var o = async (o, s) => {
12
+ let { rpcUrl: c } = e[o], l = n(c), u = await l.getBalance(new r(s)), [d, f] = await Promise.all([l.getParsedTokenAccountsByOwner(new r(s), { programId: a }), l.getParsedTokenAccountsByOwner(new r(s), { programId: i })]), p = [...d.value.map((e) => ({
13
+ account: e,
14
+ is2022Program: !1
15
+ })), ...f.value.map((e) => ({
16
+ account: e,
17
+ is2022Program: !0
18
+ }))].filter(({ account: e }) => BigInt(e.account.data.parsed.info.tokenAmount.amount) > 0n).map(({ account: e, is2022Program: t }) => ({
19
+ token: e.account.data.parsed.info.mint,
20
+ is2022Program: t
21
+ }));
22
+ u > 0 && p.unshift({
23
+ token: t,
24
+ is2022Program: !1
25
+ });
26
+ let m = /* @__PURE__ */ new Set();
27
+ return p.filter(({ token: e }) => m.has(e) ? !1 : (m.add(e), !0));
28
+ };
29
+ //#endregion
30
+ export { o as getSolanaWalletTokenHoldings };
@@ -1 +1 @@
1
- require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../utils/time.utils.cjs`),n=require(`../../../types/ethereum-network.types.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m,h,g,_,v=!0,y=!1)=>{let b=Array.isArray(d)?d:[d],x=Array.isArray(f)?f:[f];if(b.length!==x.length)throw Error(`token and amount length mismatch`);let S=l.getContractWithSigner(u,n.ContractType.HinkalContract),C=await l.getEthereumAddressByChain(u),w=g??S,T=_??S,E=`transact`,D=x.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),O=x.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),k=D===-1?0n:b[D],A=l.getProviderAdapter(u),j=await A.supportsBatchCall?.(u);if(!y&&O&&j&&A.sendBatchCallsTransaction){let e=o.buildApproveAndTransactCalls(x.map(e=>e.erc20TokenAddress),b,r.getContractAddress(w),T,p,h,m,k);return await A.sendBatchCallsTransaction(u,e)}if(!y&&(await a.approveTokensToHinkal(l,u,w,x,b),O)){let e=x.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:b[t]}));await s.waitForErc20Approvals(l,u,C,r.getContractAddress(w),e)}let M={value:k>0n?BigInt(k).toString():void 0,gasLimit:void 0},N,P=[p[0],p[1],p[2],h,m,{...M,from:C}],{runner:F}=T;if(!(F instanceof c.ethers.AbstractSigner))throw Error(`expected signer`);if(v)try{N=Number(await T[E].estimateGas(...P))}catch(e){console.log(`hinkalDeposit: gas estimation error`,{err:e})}let I=N&&N>=0?Math.ceil(N*12/10):void 0;I&&(P[5].gasLimit=I),await t.waitLittle();let L;try{L=y?await T[E].populateTransaction(...P):await T[E](...P)}catch(e){if(!e?.transactionHash)throw e;let t=await i.recoverTransactionFromError(F.provider,e.transactionHash);if(!t)throw e;L=t}return L};exports.transactCallDirect=l;
1
+ const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../utils/time.utils.cjs`),n=require(`../../../types/ethereum-network.types.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`../../utils/isSigner.cjs`),a=require(`./recoverTransactionFromError.cjs`),o=require(`./approveTokensToHinkal.cjs`),s=require(`./constructBatchCall.cjs`),c=require(`./waitForErc20Approvals.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!0,y=!1)=>{let b=Array.isArray(d)?d:[d],x=Array.isArray(f)?f:[f];if(b.length!==x.length)throw Error(`token and amount length mismatch`);let S=l.getContractWithSigner(u,n.ContractType.HinkalContract),C=await l.getEthereumAddressByChain(u),w=g??S,T=_??S,E=`transact`,D=x.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),O=x.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),k=D===-1?0n:b[D],A=l.getProviderAdapter(u),j=await A.supportsBatchCall?.(u);if(!y&&O&&j&&A.sendBatchCallsTransaction){let e=s.buildApproveAndTransactCalls(x.map(e=>e.erc20TokenAddress),b,r.getContractAddress(w),T,p,h,m,k);return await A.sendBatchCallsTransaction(u,e)}if(!y&&(await o.approveTokensToHinkal(l,u,w,x,b),O)){let e=x.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:b[t]}));await c.waitForErc20Approvals(l,u,C,r.getContractAddress(w),e)}let M={value:k>0n?BigInt(k).toString():void 0,gasLimit:void 0},N,P=[p[0],p[1],p[2],h,m,{...M,from:C}],{runner:F}=T;if(!i.isSigner(F))throw Error(`expected signer`);if(v)try{N=Number(await T[E].estimateGas(...P))}catch(e){console.log(`hinkalDeposit: gas estimation error`,{err:e})}let I=N&&N>=0?Math.ceil(N*12/10):void 0;I&&(P[5].gasLimit=I),await t.waitLittle();let L;try{L=y?await T[E].populateTransaction(...P):await T[E](...P)}catch(e){if(!e?.transactionHash||!F.provider)throw e;let t=await a.recoverTransactionFromError(F.provider,e.transactionHash);if(!t)throw e;L=t}return L};exports.transactCallDirect=l;