@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
@@ -20,6 +20,7 @@ import { PublicKey } from '@solana/web3.js';
20
20
  import { PrivateBridgeRecipient, PrivateBridgeResult, PublicBridgeRecipient } from '../../types/bridging-tx.types';
21
21
  import { NearBridgeParams, NearBridgeResult } from '../../types/near-intents.types';
22
22
  import { PrivateBalancesState } from '../../types/balances.types';
23
+ import { ReceiveVaultAccount, ReceiveVaultNetwork, ReceiveVaultRecord } from '../../types/receive-vault.types';
23
24
  import { Utxo } from '../utxo/Utxo';
24
25
  import { ScheduledTransactionByIdResponse } from '../../API/scheduled-transactions-calls';
25
26
  import { DepositAndSendExtendedResult } from '../../types/scheduled-transactions.types';
@@ -61,14 +62,17 @@ export interface IHinkal<ConnectorType = unknown> {
61
62
  bridgePrivateToPrivate(sourceToken: ERC20Token, destToken: ERC20Token, amount: string, recipient: PrivateBridgeRecipient, slippage?: number, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<PrivateBridgeResult>;
62
63
  checkSendTransactionStatus(scheduleId: string): Promise<ScheduledTransactionByIdResponse>;
63
64
  nearDepositAndBridge(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], params: NearBridgeParams, txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string): Promise<NearBridgeResult>;
64
- prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], recipientEncryptionKeys?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
65
+ prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], recipientEncryptionKeys?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, skipDuplicateCheck?: boolean, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
65
66
  getSolanaProgram(idl: Idl): Program;
66
67
  getSolanaPublicKey(): PublicKey;
67
68
  depositSolana(amount: bigint, token: ERC20Token): Promise<string>;
68
- depositSolanaForOther(amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, action?: AdminTransactionType): Promise<string>;
69
+ depositSolanaForOther(amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, variableRate?: bigint, action?: AdminTransactionType): Promise<string>;
69
70
  transfer(erc20Tokens: ERC20Token[], amountChanges: bigint[], recipientAddress: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<string>;
70
71
  withdraw(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure, variableRateOverride?: bigint, action?: AdminTransactionType): Promise<ethers.TransactionResponse | string>;
71
72
  withdrawStuckUtxos(erc20Token: ERC20Token, recipientAddress: string): Promise<string[]>;
73
+ createReceiveAddress(network: ReceiveVaultNetwork, forceFresh?: boolean): Promise<ReceiveVaultRecord>;
74
+ getReceiveVaultAccount(): Promise<ReceiveVaultAccount>;
75
+ recoverReceiveVault(record: ReceiveVaultRecord, token: string, chainId: number, to: string, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
72
76
  swap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure, slippagePercentage?: number, action?: AdminTransactionType): Promise<string>;
73
77
  getProviderAdapter(chainId?: number): IProviderAdapter;
74
78
  getTronWeb(): TronWeb;
@@ -81,7 +85,7 @@ export interface IHinkal<ConnectorType = unknown> {
81
85
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
82
86
  initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<void>;
83
87
  storeAndGetInitialSignature(authSignature: string): Promise<string>;
84
- initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
88
+ initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<number>;
85
89
  disconnectFromConnector(): Promise<void>;
86
90
  resetProviderAdapters(): Promise<void>;
87
91
  setListeners(providerAdapter: IProviderAdapter): Promise<void>;
@@ -96,7 +100,7 @@ export interface IHinkal<ConnectorType = unknown> {
96
100
  signMessage(message: string): Promise<string>;
97
101
  signTypedData(domain: ethers.TypedDataDomain, types: Record<string, ethers.TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
98
102
  signWithSubAccount(chainId: number, messageToSign: string | undefined, typedData: TypedData | undefined, subAccount: SubAccount): Promise<string>;
99
- actionPrivateWallet(chainId: number, erc20Tokens: ERC20Token[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo): Promise<string>;
103
+ actionPrivateWallet(chainId: number, erc20Tokens: ERC20Token[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo, bridgedToken?: ERC20Token): Promise<string>;
100
104
  actionReceive(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], feeTokens?: string, feeStructureOverride?: FeeStructure, subAccount?: SubAccount, action?: AdminTransactionType): Promise<string>;
101
105
  proxySwap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, autoDepositBack?: boolean, maxGasInDollar?: string, bridgedToken?: ERC20Token, bridgedTokenAmount?: bigint, action?: AdminTransactionType): Promise<string>;
102
106
  proxyToPrivate(erc20Tokens: ERC20Token[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<string>;
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transactions.types.cjs`),l=require(`../../types/admin.types.cjs`),u=require(`../../types/activities.types.cjs`),d=require(`../../types/transaction.types.cjs`),f=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const ee=require(`../../API/API.cjs`),p=require(`../../functions/utils/erc20tokenFunctions.cjs`),m=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const h=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),g=require(`../../functions/utils/create-provider.cjs`),_=require(`../../functions/pre-transaction/getFeeStructure.cjs`),v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),w=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),T=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let a=g.createJsonRpcProvider(A);await i.waitLittle(A===e.chainIds.ethMainnet?O:D);let o=await S.getTokensToDepositBack(F,N,j,a);if(!o.length){b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let d=(await p.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(A),A)).filter(e=>e!==void 0),{prices:m}=await ee.API.getTokenPrices(A,d.map(e=>e.erc20TokenAddress)),R=new Map(m.map((e,t)=>[d[t].erc20TokenAddress.toLowerCase(),e])),z=o.map(({token:e})=>e),B=o.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=v.createTransaferEmporiumOpsBatch(k,A,V,await h.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await _.getFeeStructure(A,N,V,s.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=await p.getErc20TokenFromAPI(A,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await w.selectGasToken(N,q,A,z,H,await C.getGasTokenRecords(d,A,k,j,a,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[A].contractData,$={activityType:u.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};if(L=await E.activityStorage.saveTxRequest($),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Loading}),I)T.updateHinkal(A,k,I.inputNullifiers?.flat(),I.outCommitments?.flat(),I.encryptedOutputs?.flat());else if(!k.generateProofRemotely)throw Error(`Circomdata should be passed if tx is done locally`);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,l.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Failed,error:m.getErrorMessageFromTransactionRequest(e,d.TransactionRequestType.ReceiveFromShieldedAccount)}),o.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transactions.types.cjs`),l=require(`../../types/admin.types.cjs`),u=require(`../../types/activities.types.cjs`),d=require(`../../types/transaction.types.cjs`),f=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const ee=require(`../../functions/utils/create-provider.cjs`),p=require(`../../API/API.cjs`),m=require(`../../functions/utils/erc20tokenFunctions.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/pre-transaction/getFeeStructure.cjs`),v=require(`../../functions/utils/fees.utils.cjs`),y=require(`../../functions/private-wallet/emporium.helpers.cjs`),b=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),x=require(`../../functions/utils/postToOffscreen.cjs`),S=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),w=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),T=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let a=ee.createJsonRpcProvider(A);await i.waitLittle(A===e.chainIds.ethMainnet?O:D);let o=await S.getTokensToDepositBack(F,N,j,a);if(!o.length){x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let d=(await m.getErc20TokensBySymbolsFromAPI(await v.getGasTokenSymbols(A),A)).filter(e=>e!==void 0),{prices:h}=await p.API.getTokenPrices(A,d.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[d[t].erc20TokenAddress.toLowerCase(),e])),z=o.map(({token:e})=>e),B=o.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=y.createTransaferEmporiumOpsBatch(k,A,V,await g.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await _.getFeeStructure(A,N,V,s.ExternalActionId.Emporium,H.map(e=>b.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=await m.getErc20TokenFromAPI(A,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await w.selectGasToken(N,q,A,z,H,await C.getGasTokenRecords(d,A,k,j,a,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[A].contractData,$={activityType:u.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};if(L=await E.activityStorage.saveTxRequest($),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Loading}),I)T.updateHinkal(A,k,I.inputNullifiers?.flat(),I.outCommitments?.flat(),I.encryptedOutputs?.flat());else if(!k.generateProofRemotely)throw Error(`Circomdata should be passed if tx is done locally`);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,l.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(n,L),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,d.TransactionRequestType.ReceiveFromShieldedAccount)}),o.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
@@ -12,17 +12,17 @@ import { ActivityTypes as d } from "../../types/activities.types.mjs";
12
12
  import { TransactionRequestType as f } from "../../types/transaction.types.mjs";
13
13
  import { MessagesFromOffscreen as p } from "../../types/offscreen.types.mjs";
14
14
  import "../../types/index.mjs";
15
- import { API as m } from "../../API/API.mjs";
15
+ import { createJsonRpcProvider as m } from "../../functions/utils/create-provider.mjs";
16
+ import { API as te } from "../../API/API.mjs";
16
17
  import { getErc20TokenFromAPI as h, getErc20TokensBySymbolsFromAPI as g } from "../../functions/utils/erc20tokenFunctions.mjs";
17
18
  import { getErrorMessageFromTransactionRequest as _ } from "../../error-handling/get-error.message.mjs";
18
19
  import "../../error-handling/index.mjs";
19
- import { modifyVolatileTokenAmountChanges as te } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
20
- import { createJsonRpcProvider as v } from "../../functions/utils/create-provider.mjs";
20
+ import { modifyVolatileTokenAmountChanges as v } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
21
21
  import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
22
- import { createTransaferEmporiumOpsBatch as b } from "../../functions/private-wallet/emporium.helpers.mjs";
23
- import { convertEmporiumOpToCallInfo as x } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
24
- import { postToOffscreen as S } from "../../functions/utils/postToOffscreen.mjs";
25
- import { getGasTokenSymbols as C } from "../../functions/utils/fees.utils.mjs";
22
+ import { getGasTokenSymbols as b } from "../../functions/utils/fees.utils.mjs";
23
+ import { createTransaferEmporiumOpsBatch as x } from "../../functions/private-wallet/emporium.helpers.mjs";
24
+ import { convertEmporiumOpToCallInfo as S } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
25
+ import { postToOffscreen as C } from "../../functions/utils/postToOffscreen.mjs";
26
26
  import { getTokensToDepositBack as w } from "../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.mjs";
27
27
  import { getGasTokenRecords as T } from "../../functions/auto-deposit-back-helpers/get-gas-token-records.mjs";
28
28
  import { selectGasToken as E } from "../../functions/auto-deposit-back-helpers/select-gas-token.mjs";
@@ -35,20 +35,20 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
35
35
  if (!M || I.length === 0) return;
36
36
  let R;
37
37
  try {
38
- let o = v(j);
38
+ let o = m(j);
39
39
  await ee(j === e.ethMainnet ? ne : k);
40
40
  let s = await w(I, P, M, o);
41
41
  if (!s.length) {
42
- S(p.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
42
+ C(p.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
43
43
  return;
44
44
  }
45
- let f = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, f.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [f[t].erc20TokenAddress.toLowerCase(), e])), B = s.map(({ token: e }) => e), V = s.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = b(A, j, H, await te(j, B, V, M)), W = await y(j, P, H, c.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
45
+ let f = (await g(await b(j), j)).filter((e) => e !== void 0), { prices: _ } = await te.getTokenPrices(j, f.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [f[t].erc20TokenAddress.toLowerCase(), e])), B = s.map(({ token: e }) => e), V = s.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = x(A, j, H, await v(j, B, V, M)), W = await y(j, P, H, c.Emporium, U.map((e) => S(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
46
46
  if (!K) return;
47
47
  let q = a(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await E(P, J, j, B, U, await T(f, j, A, M, o, z), W, H, M);
48
48
  if (!Y) return;
49
49
  let { feeToken: X, feeStructure: Z } = Y ?? {};
50
50
  if (F && Number(F) < J) {
51
- S(p.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
51
+ C(p.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
52
52
  return;
53
53
  }
54
54
  let Q = B.findIndex((e) => n(e.erc20TokenAddress, X));
@@ -64,14 +64,14 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
64
64
  token: e
65
65
  }))
66
66
  };
67
- if (R = await O.saveTxRequest($), S(p.AutoShieldTxStatus, { status: l.Loading }), L) D(j, A, L.inputNullifiers?.flat(), L.outCommitments?.flat(), L.encryptedOutputs?.flat());
67
+ if (R = await O.saveTxRequest($), C(p.AutoShieldTxStatus, { status: l.Loading }), L) D(j, A, L.inputNullifiers?.flat(), L.outCommitments?.flat(), L.encryptedOutputs?.flat());
68
68
  else if (!A.generateProofRemotely) throw Error("Circomdata should be passed if tx is done locally");
69
69
  let ie = {
70
70
  id: 0,
71
71
  success: !0,
72
72
  txHash: await A.actionReceive(B, V, X, Z, N, u.AutoShield)
73
73
  };
74
- await O.updatePendingTransactions(ie, R), S(p.AutoShieldTxStatus, {
74
+ await O.updatePendingTransactions(ie, R), C(p.AutoShieldTxStatus, {
75
75
  status: l.Confirmed,
76
76
  activityRequest: $
77
77
  });
@@ -84,7 +84,7 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
84
84
  success: !1,
85
85
  ...t ? { erroredTx: t } : {}
86
86
  };
87
- R && await O.updatePendingTransactions(n, R), S(p.AutoShieldTxStatus, {
87
+ R && await O.updatePendingTransactions(n, R), C(p.AutoShieldTxStatus, {
88
88
  status: l.Failed,
89
89
  error: _(e, f.ReceiveFromShieldedAccount)
90
90
  }), s.error("Error in auto deposit back:", e);
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/private-wallet/emporium.helpers.cjs`),o=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),s=require(`../../functions/utils/fees.utils.cjs`);var c=async(c,l,u,d,f,p,m)=>{if(!p)throw Error(`hinkalActionReceive: subAccount should be provided`);if(!d)throw Error(`Fee token is required in hinkalActionReceive`);let h=t.validateAndGetChainId(l),g=r.AccountActions.getAddressFromSubAccount(h,p);if(!g)throw Error(`Public account address is not available`);let _=l.map(e=>e.erc20TokenAddress),v=await n.modifyVolatileTokenAmountChanges(h,l,u,g),y=a.createTransaferEmporiumOpsBatch(c,h,_,v),b=await s.calculateModifiedFeeStructureForTokens(h,l,v,f??await i.getFeeStructure(h,d,_,e.ExternalActionId.Emporium,y.map(e=>o.convertEmporiumOpToCallInfo(e,g,h)),25n)),x=l.map((e,t)=>({token:e,amount:-1n*v[t]}));return c.actionPrivateWallet(h,l,v,v.map(()=>!1),y,x,p,d,b,void 0,void 0,void 0,m,void 0)};exports.hinkalActionReceive=c;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../functions/private-wallet/emporium.helpers.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);var c=async(c,l,u,d,f,p,m)=>{if(!p)throw Error(`hinkalActionReceive: subAccount should be provided`);if(!d)throw Error(`Fee token is required in hinkalActionReceive`);let h=t.validateAndGetChainId(l),g=r.AccountActions.getAddressFromSubAccount(h,p);if(!g)throw Error(`Public account address is not available`);let _=l.map(e=>e.erc20TokenAddress),v=await n.modifyVolatileTokenAmountChanges(h,l,u,g),y=o.createTransaferEmporiumOpsBatch(c,h,_,v),b=await a.calculateModifiedFeeStructureForTokens(h,l,v,f??await i.getFeeStructure(h,d,_,e.ExternalActionId.Emporium,y.map(e=>s.convertEmporiumOpToCallInfo(e,g,h)),25n)),x=l.map((e,t)=>({token:e,amount:-1n*v[t]}));return c.actionPrivateWallet(h,l,v,v.map(()=>!1),y,x,p,d,b,void 0,void 0,void 0,m,void 0)};exports.hinkalActionReceive=c;
@@ -4,16 +4,16 @@ import { validateAndGetChainId as t } from "../../functions/utils/token-check.ut
4
4
  import { modifyVolatileTokenAmountChanges as n } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
5
5
  import { AccountActions as r } from "../AccountActions/AccountActions.mjs";
6
6
  import { getFeeStructure as i } from "../../functions/pre-transaction/getFeeStructure.mjs";
7
- import { createTransaferEmporiumOpsBatch as a } from "../../functions/private-wallet/emporium.helpers.mjs";
8
- import { convertEmporiumOpToCallInfo as o } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
9
- import { calculateModifiedFeeStructureForTokens as s } from "../../functions/utils/fees.utils.mjs";
7
+ import { calculateModifiedFeeStructureForTokens as a } from "../../functions/utils/fees.utils.mjs";
8
+ import { createTransaferEmporiumOpsBatch as o } from "../../functions/private-wallet/emporium.helpers.mjs";
9
+ import { convertEmporiumOpToCallInfo as s } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
10
10
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalActionReceive.ts
11
11
  var c = async (c, l, u, d, f, p, m) => {
12
12
  if (!p) throw Error("hinkalActionReceive: subAccount should be provided");
13
13
  if (!d) throw Error("Fee token is required in hinkalActionReceive");
14
14
  let h = t(l), g = r.getAddressFromSubAccount(h, p);
15
15
  if (!g) throw Error("Public account address is not available");
16
- let _ = l.map((e) => e.erc20TokenAddress), v = await n(h, l, u, g), y = a(c, h, _, v), b = await s(h, l, v, f ?? await i(h, d, _, e.Emporium, y.map((e) => o(e, g, h)), 25n)), x = l.map((e, t) => ({
16
+ let _ = l.map((e) => e.erc20TokenAddress), v = await n(h, l, u, g), y = o(c, h, _, v), b = await a(h, l, v, f ?? await i(h, d, _, e.Emporium, y.map((e) => s(e, g, h)), 25n)), x = l.map((e, t) => ({
17
17
  token: e,
18
18
  amount: -1n * v[t]
19
19
  }));
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/private-wallet/emporium.helpers.cjs`),p=require(`../../constants/addresses.constants.cjs`),m=require(`../../constants/bridging.constants.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/utils/fees.utils.cjs`),_=require(`../../functions/utils/enclave-utxo-storage.cjs`),v=require(`../../functions/utils/bridge-arrival.utils.cjs`),y=require(`../../functions/utils/temp-wallet.utils.cjs`),b=require(`../../API/callNearIntentsAPI.cjs`),x=require(`../../functions/utils/nearIntents.utils.cjs`),S=require(`../../functions/web3/lifiAPI.cjs`),C=require(`../../functions/utils/bridge-claimable-utxo.utils.cjs`);var w=async(e,r,d,m,h,g,_,v)=>{let{chainId:b}=r,x=d.chainId,C=r.erc20TokenAddress,w=p.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][b];if(!w)throw Error(`LIFI not configured for chain ${b}`);let T=i.randomBigInt(6),{sourceSubAccount:E,destinationSubAccount:D}=y.deriveBridgeTempWallets(e,b,x,T),O=u.AccountActions.getAddressFromSubAccount(b,E),k=u.AccountActions.getAddressFromSubAccount(x,D);if(!O||!k)throw Error(`Missing temp wallet address for LIFI bridge`);let{lifiDataValue:A,outSwapAmountValue:j,extraNativeTokenFee:M}=await S.getLifiPrice(r,d,m,h,O,k),N={calldata:A,expectedAmount:j,nativeFee:M},P=i.getAmountInWei(r,m),F=Array.from(new Set([b,x])),I=a.hashEthereumAddress(await e.getEthereumAddress());await Promise.all(F.map(e=>c.API.addTemporaryWalletNonce(e,I,Number(T),s.TemporaryWalletRecoveryDestination.Confidential)));let L=n.caseInsensitiveEqual(C,t.zeroAddress),R=N.nativeFee>0n&&!L,z=L?P+N.nativeFee:P,B=[r],V=[-z];if(R){let e=await l.getErc20TokenFromAPI(b,t.zeroAddress);if(!e)throw Error(`Native token not found for bridge fee`);B.push(e),V.push(-N.nativeFee)}let H=f.createLifiBridgeOps(e,b,O,w,C,z,P,N),U=B.map((e,t)=>({token:e,amount:V[t]}));return{tempSubAccount:D,sourceTxHash:await e.actionPrivateWallet(b,B,V,V.map(()=>!1),H,U,E,g??C,_,void 0,!1,void 0,v,void 0),expectedAmount:N.expectedAmount}},T=async(e,t,n,r,o,l,d,f)=>{let p=n.chainId,h=i.randomBigInt(6),g=y.buildTempSubAccountForChain(e,p,h),_=u.AccountActions.getAddressFromSubAccount(p,g);if(!_)throw Error(`Missing temp wallet address for NEAR bridge`);let v=a.hashEthereumAddress(await e.getEthereumAddress());await c.API.addTemporaryWalletNonce(p,v,Number(h),s.TemporaryWalletRecoveryDestination.Confidential);let[S,C]=await Promise.all([x.resolveNearAssetId(t.chainId,t.erc20TokenAddress),x.resolveNearAssetId(p,n.erc20TokenAddress)]),w=i.getAmountInWei(t,r),T=new Date(Date.now()+m.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),{quote:E}=await b.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:Math.round(o*1e4)||100,originAsset:S,depositType:`ORIGIN_CHAIN`,destinationAsset:C,amount:w.toString(),recipient:_,recipientType:`DESTINATION_CHAIN`,refundTo:e.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:T});if(!E.depositAddress)throw Error(`NEAR Intents quote returned no deposit address`);let D=await e.withdraw([t],[-w],E.depositAddress,!1,l??t.erc20TokenAddress,d,void 0,f);return{tempSubAccount:g,sourceTxHash:typeof D==`string`?D:D.hash,expectedAmount:BigInt(E.amountOut)}},E=async(n,i,a,s,c)=>{let l=i.chainId,p=i.erc20TokenAddress,m=u.AccountActions.getAddressFromSubAccount(l,a);if(!m)throw Error(`Missing temp wallet address for bridge shield`);let{recipientInfo:v,claimable:y}=C.resolveBridgeRecipient(n,c);if(y&&await _.storeClaimableKeyInEnclave(await n.getEthereumAddressByChain(l),y.ethAddress,y.keys.getShieldedPrivateKey(),l,y.signature,n.userKeys.getSignature()),e.isSolanaLike(l))return C.hinkalSolanaShieldBridged(n,i,a,s,v,t.HINKAL_SHIELD_VARIABLE_RATE);let b=f.createTransaferEmporiumOpsBatch(n,l,[p],[s]),x=await g.calculateModifiedFeeStructure(l,i,s,await d.getFeeStructure(l,p,[p],o.ExternalActionId.Emporium,b.map(e=>h.convertEmporiumOpToCallInfo(e,m,l)),t.HINKAL_PRIVATE_SEND_VARIABLE_RATE)),S=s-g.calculateTotalFee(s,x);if(S<=0n)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{destTxHash:await n.proxyToPrivate([i],[S],a,v,x.feeToken,x),shieldedAmount:S}},D=async(t,n,r,i,a,o=m.DEFAULT_BRIDGING_SLIPPAGE_DECIMAL,s,c,l)=>{let{tempSubAccount:d,sourceTxHash:f,expectedAmount:p}=e.isNearIntentsBridgeSource(n.chainId)?await T(t,n,r,i,o,s,c,l):await w(t,n,r,i,o,s,c,l),h=u.AccountActions.getAddressFromSubAccount(r.chainId,d);if(!h)throw Error(`Missing temp wallet address for bridge`);let{destTxHash:g,shieldedAmount:_}=await E(t,r,d,await v.waitForBridgeArrival(r.chainId,h,r.erc20TokenAddress,p,o),a);return{sourceTxHash:f,destTxHash:g,destinationTokenAmount:_.toString()}};exports.hinkalBridgePrivateToPrivate=D;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/utils/fees.utils.cjs`),p=require(`../../functions/private-wallet/emporium.helpers.cjs`),m=require(`../../constants/addresses.constants.cjs`),h=require(`../../constants/bridging.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/enclave-utxo-storage.cjs`),v=require(`../../functions/utils/bridge-arrival.utils.cjs`),y=require(`../../functions/utils/temp-wallet.utils.cjs`),b=require(`../../API/callNearIntentsAPI.cjs`),x=require(`../../functions/utils/nearIntents.utils.cjs`),S=require(`../../functions/web3/lifiAPI.cjs`),C=require(`../../functions/utils/bridge-claimable-utxo.utils.cjs`);var w=async(e,r,d,f,h,g,_,v)=>{let{chainId:b}=r,x=d.chainId,C=r.erc20TokenAddress,w=m.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][b];if(!w)throw Error(`LIFI not configured for chain ${b}`);let T=i.randomBigInt(6),{sourceSubAccount:E,destinationSubAccount:D}=y.deriveBridgeTempWallets(e,b,x,T),O=u.AccountActions.getAddressFromSubAccount(b,E),k=u.AccountActions.getAddressFromSubAccount(x,D);if(!O||!k)throw Error(`Missing temp wallet address for LIFI bridge`);let{lifiDataValue:A,outSwapAmountValue:j,extraNativeTokenFee:M}=await S.getLifiPrice(r,d,f,h,O,k),N={calldata:A,expectedAmount:j,nativeFee:M},P=i.getAmountInWei(r,f),F=Array.from(new Set([b,x])),I=a.hashEthereumAddress(await e.getEthereumAddress());await Promise.all(F.map(e=>c.API.addTemporaryWalletNonce(e,I,Number(T),s.TemporaryWalletRecoveryDestination.Confidential)));let L=n.caseInsensitiveEqual(C,t.zeroAddress),R=N.nativeFee>0n&&!L,z=L?P+N.nativeFee:P,B=[r],V=[-z];if(R){let e=await l.getErc20TokenFromAPI(b,t.zeroAddress);if(!e)throw Error(`Native token not found for bridge fee`);B.push(e),V.push(-N.nativeFee)}let H=p.createLifiBridgeOps(e,b,O,w,C,z,P,N),U=B.map((e,t)=>({token:e,amount:V[t]}));return{tempSubAccount:D,sourceTxHash:await e.actionPrivateWallet(b,B,V,V.map(()=>!1),H,U,E,g??C,_,void 0,!1,void 0,v,void 0,d),expectedAmount:N.expectedAmount}},T=async(e,t,n,r,o,l,d,f)=>{let p=n.chainId,m=i.randomBigInt(6),g=y.buildTempSubAccountForChain(e,p,m),_=u.AccountActions.getAddressFromSubAccount(p,g);if(!_)throw Error(`Missing temp wallet address for NEAR bridge`);let v=a.hashEthereumAddress(await e.getEthereumAddress());await c.API.addTemporaryWalletNonce(p,v,Number(m),s.TemporaryWalletRecoveryDestination.Confidential);let[S,C]=await Promise.all([x.resolveNearAssetId(t.chainId,t.erc20TokenAddress),x.resolveNearAssetId(p,n.erc20TokenAddress)]),w=i.getAmountInWei(t,r),T=new Date(Date.now()+h.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),{quote:E}=await b.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:Math.round(o*1e4)||100,originAsset:S,depositType:`ORIGIN_CHAIN`,destinationAsset:C,amount:w.toString(),recipient:_,recipientType:`DESTINATION_CHAIN`,refundTo:e.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:T});if(!E.depositAddress)throw Error(`NEAR Intents quote returned no deposit address`);let D=await e.withdraw([t],[-w],E.depositAddress,!1,l??t.erc20TokenAddress,d,void 0,f);return{tempSubAccount:g,sourceTxHash:typeof D==`string`?D:D.hash,expectedAmount:BigInt(E.amountOut)}},E=async(n,i,a,s,c)=>{let l=i.chainId,m=i.erc20TokenAddress,h=u.AccountActions.getAddressFromSubAccount(l,a);if(!h)throw Error(`Missing temp wallet address for bridge shield`);let{recipientInfo:v,claimable:y}=C.resolveBridgeRecipient(n,c);if(y&&await _.storeClaimableKeyInEnclave(await n.getEthereumAddressByChain(l),y.ethAddress,y.keys.getShieldedPrivateKey(),l,y.signature,n.userKeys.getSignature()),e.isSolanaLike(l))return C.hinkalSolanaShieldBridged(n,i,a,s,v,t.HINKAL_SHIELD_VARIABLE_RATE);let b=p.createTransaferEmporiumOpsBatch(n,l,[m],[s]),x=await f.calculateModifiedFeeStructure(l,i,s,await d.getFeeStructure(l,m,[m],o.ExternalActionId.Emporium,b.map(e=>g.convertEmporiumOpToCallInfo(e,h,l)),t.HINKAL_PRIVATE_SEND_VARIABLE_RATE)),S=s-f.calculateTotalFee(s,x);if(S<=0n)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{destTxHash:await n.proxyToPrivate([i],[S],a,v,x.feeToken,x),shieldedAmount:S}},D=async(t,n,r,i,a,o=h.DEFAULT_BRIDGING_SLIPPAGE_DECIMAL,s,c,l)=>{let{tempSubAccount:d,sourceTxHash:f,expectedAmount:p}=e.isNearIntentsBridgeSource(n.chainId)?await T(t,n,r,i,o,s,c,l):await w(t,n,r,i,o,s,c,l),m=u.AccountActions.getAddressFromSubAccount(r.chainId,d);if(!m)throw Error(`Missing temp wallet address for bridge`);let{destTxHash:g,shieldedAmount:_}=await E(t,r,d,await v.waitForBridgeArrival(r.chainId,m,r.erc20TokenAddress,p,o),a);return{sourceTxHash:f,destTxHash:g,destinationTokenAmount:_.toString()}};exports.hinkalBridgePrivateToPrivate=D;
@@ -10,11 +10,11 @@ import { API as f } from "../../API/API.mjs";
10
10
  import { getErc20TokenFromAPI as p } from "../../functions/utils/erc20tokenFunctions.mjs";
11
11
  import { AccountActions as m } from "../AccountActions/AccountActions.mjs";
12
12
  import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
13
- import { createLifiBridgeOps as g, createTransaferEmporiumOpsBatch as _ } from "../../functions/private-wallet/emporium.helpers.mjs";
14
- import { SWAP_ROUTER_ADDRESSES as v } from "../../constants/addresses.constants.mjs";
15
- import { DEFAULT_BRIDGING_SLIPPAGE_DECIMAL as y, NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as b } from "../../constants/bridging.constants.mjs";
16
- import { convertEmporiumOpToCallInfo as x } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
17
- import { calculateModifiedFeeStructure as S, calculateTotalFee as C } from "../../functions/utils/fees.utils.mjs";
13
+ import { calculateModifiedFeeStructure as g, calculateTotalFee as _ } from "../../functions/utils/fees.utils.mjs";
14
+ import { createLifiBridgeOps as v, createTransaferEmporiumOpsBatch as y } from "../../functions/private-wallet/emporium.helpers.mjs";
15
+ import { SWAP_ROUTER_ADDRESSES as b } from "../../constants/addresses.constants.mjs";
16
+ import { DEFAULT_BRIDGING_SLIPPAGE_DECIMAL as x, NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as S } from "../../constants/bridging.constants.mjs";
17
+ import { convertEmporiumOpToCallInfo as C } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
18
18
  import { storeClaimableKeyInEnclave as w } from "../../functions/utils/enclave-utxo-storage.mjs";
19
19
  import { waitForBridgeArrival as T } from "../../functions/utils/bridge-arrival.utils.mjs";
20
20
  import { buildTempSubAccountForChain as E, deriveBridgeTempWallets as D } from "../../functions/utils/temp-wallet.utils.mjs";
@@ -23,30 +23,30 @@ import { resolveNearAssetId as k } from "../../functions/utils/nearIntents.utils
23
23
  import { getLifiPrice as A } from "../../functions/web3/lifiAPI.mjs";
24
24
  import { hinkalSolanaShieldBridged as j, resolveBridgeRecipient as M } from "../../functions/utils/bridge-claimable-utxo.utils.mjs";
25
25
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.ts
26
- var N = async (e, t, n, r, o, h, _, y) => {
27
- let { chainId: b } = t, x = n.chainId, S = t.erc20TokenAddress, C = v[u.Lifi][b];
28
- if (!C) throw Error(`LIFI not configured for chain ${b}`);
29
- let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e, b, x, w), O = m.getAddressFromSubAccount(b, T), k = m.getAddressFromSubAccount(x, E);
26
+ var N = async (e, t, n, r, o, h, g, _) => {
27
+ let { chainId: y } = t, x = n.chainId, S = t.erc20TokenAddress, C = b[u.Lifi][y];
28
+ if (!C) throw Error(`LIFI not configured for chain ${y}`);
29
+ let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e, y, x, w), O = m.getAddressFromSubAccount(y, T), k = m.getAddressFromSubAccount(x, E);
30
30
  if (!O || !k) throw Error("Missing temp wallet address for LIFI bridge");
31
31
  let { lifiDataValue: j, outSwapAmountValue: M, extraNativeTokenFee: N } = await A(t, n, r, o, O, k), P = {
32
32
  calldata: j,
33
33
  expectedAmount: M,
34
34
  nativeFee: N
35
- }, F = s(t, r), I = Array.from(new Set([b, x])), L = l(await e.getEthereumAddress());
35
+ }, F = s(t, r), I = Array.from(new Set([y, x])), L = l(await e.getEthereumAddress());
36
36
  await Promise.all(I.map((e) => f.addTemporaryWalletNonce(e, L, Number(w), d.Confidential)));
37
37
  let R = a(S, i), z = P.nativeFee > 0n && !R, B = R ? F + P.nativeFee : F, V = [t], H = [-B];
38
38
  if (z) {
39
- let e = await p(b, i);
39
+ let e = await p(y, i);
40
40
  if (!e) throw Error("Native token not found for bridge fee");
41
41
  V.push(e), H.push(-P.nativeFee);
42
42
  }
43
- let U = g(e, b, O, C, S, B, F, P), W = V.map((e, t) => ({
43
+ let U = v(e, y, O, C, S, B, F, P), W = V.map((e, t) => ({
44
44
  token: e,
45
45
  amount: H[t]
46
46
  }));
47
47
  return {
48
48
  tempSubAccount: E,
49
- sourceTxHash: await e.actionPrivateWallet(b, V, H, H.map(() => !1), U, W, T, h ?? S, _, void 0, !1, void 0, y, void 0),
49
+ sourceTxHash: await e.actionPrivateWallet(y, V, H, H.map(() => !1), U, W, T, h ?? S, g, void 0, !1, void 0, _, void 0, n),
50
50
  expectedAmount: P.expectedAmount
51
51
  };
52
52
  }, P = async (e, t, n, r, i, a, o, u) => {
@@ -54,14 +54,14 @@ var N = async (e, t, n, r, o, h, _, y) => {
54
54
  if (!_) throw Error("Missing temp wallet address for NEAR bridge");
55
55
  let v = l(await e.getEthereumAddress());
56
56
  await f.addTemporaryWalletNonce(p, v, Number(h), d.Confidential);
57
- let [y, x] = await Promise.all([k(t.chainId, t.erc20TokenAddress), k(p, n.erc20TokenAddress)]), S = s(t, r), C = new Date(Date.now() + b).toISOString(), { quote: w } = await O({
57
+ let [y, b] = await Promise.all([k(t.chainId, t.erc20TokenAddress), k(p, n.erc20TokenAddress)]), x = s(t, r), C = new Date(Date.now() + S).toISOString(), { quote: w } = await O({
58
58
  dry: !1,
59
59
  swapType: "EXACT_INPUT",
60
60
  slippageTolerance: Math.round(i * 1e4) || 100,
61
61
  originAsset: y,
62
62
  depositType: "ORIGIN_CHAIN",
63
- destinationAsset: x,
64
- amount: S.toString(),
63
+ destinationAsset: b,
64
+ amount: x.toString(),
65
65
  recipient: _,
66
66
  recipientType: "DESTINATION_CHAIN",
67
67
  refundTo: e.userKeys.getNearIntentsAccountId(),
@@ -69,7 +69,7 @@ var N = async (e, t, n, r, o, h, _, y) => {
69
69
  deadline: C
70
70
  });
71
71
  if (!w.depositAddress) throw Error("NEAR Intents quote returned no deposit address");
72
- let T = await e.withdraw([t], [-S], w.depositAddress, !1, a ?? t.erc20TokenAddress, o, void 0, u);
72
+ let T = await e.withdraw([t], [-x], w.depositAddress, !1, a ?? t.erc20TokenAddress, o, void 0, u);
73
73
  return {
74
74
  tempSubAccount: g,
75
75
  sourceTxHash: typeof T == "string" ? T : T.hash,
@@ -78,15 +78,15 @@ var N = async (e, t, n, r, o, h, _, y) => {
78
78
  }, F = async (e, i, a, s, c) => {
79
79
  let l = i.chainId, d = i.erc20TokenAddress, f = m.getAddressFromSubAccount(l, a);
80
80
  if (!f) throw Error("Missing temp wallet address for bridge shield");
81
- let { recipientInfo: p, claimable: g } = M(e, c);
82
- if (g && await w(await e.getEthereumAddressByChain(l), g.ethAddress, g.keys.getShieldedPrivateKey(), l, g.signature, e.userKeys.getSignature()), t(l)) return j(e, i, a, s, p, r);
83
- let v = _(e, l, [d], [s]), y = await S(l, i, s, await h(l, d, [d], u.Emporium, v.map((e) => x(e, f, l)), n)), b = s - C(s, y);
84
- if (b <= 0n) throw Error(o.INSUFFICIENT_FUNDS_TO_TRANSACT);
81
+ let { recipientInfo: p, claimable: v } = M(e, c);
82
+ if (v && await w(await e.getEthereumAddressByChain(l), v.ethAddress, v.keys.getShieldedPrivateKey(), l, v.signature, e.userKeys.getSignature()), t(l)) return j(e, i, a, s, p, r);
83
+ let b = y(e, l, [d], [s]), x = await g(l, i, s, await h(l, d, [d], u.Emporium, b.map((e) => C(e, f, l)), n)), S = s - _(s, x);
84
+ if (S <= 0n) throw Error(o.INSUFFICIENT_FUNDS_TO_TRANSACT);
85
85
  return {
86
- destTxHash: await e.proxyToPrivate([i], [b], a, p, y.feeToken, y),
87
- shieldedAmount: b
86
+ destTxHash: await e.proxyToPrivate([i], [S], a, p, x.feeToken, x),
87
+ shieldedAmount: S
88
88
  };
89
- }, I = async (t, n, r, i, a, o = y, s, c, l) => {
89
+ }, I = async (t, n, r, i, a, o = x, s, c, l) => {
90
90
  let { tempSubAccount: u, sourceTxHash: d, expectedAmount: f } = e(n.chainId) ? await P(t, n, r, i, o, s, c, l) : await N(t, n, r, i, o, s, c, l), p = m.getAddressFromSubAccount(r.chainId, u);
91
91
  if (!p) throw Error("Missing temp wallet address for bridge");
92
92
  let { destTxHash: h, shieldedAmount: g } = await F(t, r, u, await T(r.chainId, p, r.erc20TokenAddress, f, o), a);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/private-wallet/emporium.helpers.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../constants/addresses.constants.cjs`),b=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),x=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const S=require(`./hinkalDepositOnChainUtxos.cjs`);var C=async(o,u,d,m,_,b,x,S)=>{if(m.length===0)throw Error(`No recipients to bridge`);let C=d.erc20TokenAddress,{contractData:w}=e.networkRegistry[u],{emporiumAddress:T}=w;if(!T)throw Error(`No Emporium Address`);let E=y.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!E)throw Error(`LIFI not configured for chain ${u}`);let D=await o.getRandomRelay(u);if(!D)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let O=await o.getEthereumAddressByChain(u),k=o.generateProofRemotely,A=k?5:1,j=[];for(let i=0;i<m.length;i+=A){let d=m.slice(i,i+A),y=await Promise.all(d.map(async({utxo:d,nativeUtxo:m,bridgeAmount:y,quote:w,temporarySubAccount:A,recipientAddress:j,destinationChainId:M,destinationTokenAddress:N},P)=>{let F=_[i+P];await l.API.addTemporaryWalletNonce(u,b,A.index);let I=n.caseInsensitiveEqual(C,t.zeroAddress),L=w.nativeFee>0n&&!I,R=[C],z=[-d.amount],B=[!1],V=[[d]];L&&m&&(R.push(t.zeroAddress),z.push(-m.amount),B.push(!1),V.push([m]));let H=g.createLifiBridgeOps(o,u,A.ethAddress,E,C,d.amount,y,w),U=f.constructAdminData(x,u,R,[-d.amount],O),[W,G]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=k?await g.encodeEmporiumMetadata(u,T,A.privateKey,H,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),A.privateKey),F.flatFee):void 0;return v.hinkalTransact(o,{chainId:u,erc20Addresses:R,amountChanges:z,externalAddress:T,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:B,feeStructure:F,relay:D??t.zeroAddress,messageSeed:n,inputUtxos:V,useBlockedUtxos:!0,speculative:S&&{pendingLeaves:S,inputUtxos:V.map(e=>e.map(h.toSpeculativeUtxo))},subAccountPrivateKey:A.privateKey,emporiumOps:H,submit:{mode:c.SubmitMode.ProofOnly}})})(),g.getAuthorizationDataIfNeeded(u,A.privateKey)]),{zkCallData:K,circomData:q,dimData:J,commitmentValidationData:Y,tronProofSignature:X}=W;return{zkCallData:K,dimData:J,circomData:q,commitmentValidationData:Y,authorizationData:G,recipientAddress:j,adminData:U,tronProofSignature:X,destinationChainId:M,destinationTokenAddress:N,destinationTokenAmount:w.expectedAmount.toString()}}));j.push(...y)}return j},w=e=>e.map(e=>e.quote.nativeFee),T=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],v=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),v.push(w(r))}let y=await S.prepareDepositOnChainUtxos(e,a,g,v),{depositedUtxos:b,pendingLeaves:x}=y,[T,E=[]]=b,D=r.map((e,t)=>({...e,utxo:T[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([S.submitDepositOnChainUtxos(e,y,h),C(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await _.transactCallRelayerBatch(a,k,o,u,f,m,O)}},E=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let h=r.erc20TokenAddress,_=u.validateAndGetChainId([r]),v=await e.getEthereumAddressByChain(_),S=y.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][_];if(!S)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(h,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=g.createLifiBridgeOps(e,_,n.temporarySubAccount.ethAddress,S,h,r,n.bridgeAmount,n.quote).map(e=>b.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,_));w=await m.getFeeStructure(_,h,[h],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let E=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>x.calculateModifiedFeeStructure(_,r,e,w)));return T(e,r,i,{chainId:_,ethereumAddress:v,hashedEthereumAddress:o.hashEthereumAddress(v),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:E>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=E;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/admin-dimensions.cjs`),S=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const C=require(`./hinkalDepositOnChainUtxos.cjs`);var w=async(o,u,m,h,v,S,C,w)=>{if(h.length===0)throw Error(`No recipients to bridge`);let T=m.erc20TokenAddress,{contractData:E}=e.networkRegistry[u],{emporiumAddress:D}=E;if(!D)throw Error(`No Emporium Address`);let O=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!O)throw Error(`LIFI not configured for chain ${u}`);let k=await o.getRandomRelay(u);if(!k)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=await o.getEthereumAddressByChain(u),j=o.generateProofRemotely,M=j?5:1,N=[];for(let i=0;i<h.length;i+=M){let b=h.slice(i,i+M),E=await Promise.all(b.map(async({utxo:h,nativeUtxo:b,bridgeAmount:E,quote:M,temporarySubAccount:N,recipientAddress:P,destinationChainId:F,destinationTokenAddress:I},L)=>{let R=v[i+L];await l.API.addTemporaryWalletNonce(u,S,N.index);let z=n.caseInsensitiveEqual(T,t.zeroAddress),B=M.nativeFee>0n&&!z,V=[T],H=[-h.amount],U=[!1],W=[[h]];B&&b&&(V.push(t.zeroAddress),H.push(-b.amount),U.push(!1),W.push([b]));let G=_.createLifiBridgeOps(o,u,N.ethAddress,O,T,h.amount,E,M),K=I?await d.getErc20TokenFromAPI(F??u,I):void 0,q=x.resolveSwapPairTokens(C,[m],K),J=f.constructAdminData(C,u,V,[-h.amount],A,q),[Y,X]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=j?await _.encodeEmporiumMetadata(u,D,N.privateKey,G,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),N.privateKey),R.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:V,amountChanges:H,externalAddress:D,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:U,feeStructure:R,relay:k??t.zeroAddress,messageSeed:n,inputUtxos:W,useBlockedUtxos:!0,speculative:w&&{pendingLeaves:w,inputUtxos:W.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:N.privateKey,emporiumOps:G,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,N.privateKey)]),{zkCallData:Z,circomData:Q,dimData:$,commitmentValidationData:ee,tronProofSignature:te}=Y;return{zkCallData:Z,dimData:$,circomData:Q,commitmentValidationData:ee,authorizationData:X,recipientAddress:P,adminData:J,tronProofSignature:te,destinationChainId:F,destinationTokenAddress:I,destinationTokenAmount:M.expectedAmount.toString()}}));N.push(...E)}return N},T=e=>e.map(e=>e.quote.nativeFee),E=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(T(r))}let y=await C.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[S,E=[]]=b,D=r.map((e,t)=>({...e,utxo:S[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([C.submitDepositOnChainUtxos(e,y,h),w(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},D=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),x=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!x)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,x,g,r,n.bridgeAmount,n.quote).map(e=>S.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let T=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return E(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:T>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=D;
@@ -13,106 +13,107 @@ import { getErc20TokenFromAPI as m } from "../../functions/utils/erc20tokenFunct
13
13
  import { constructAdminData as h } from "../../functions/pre-transaction/constructAdminData.mjs";
14
14
  import { AccountActions as g } from "../AccountActions/AccountActions.mjs";
15
15
  import { getFeeStructure as _ } from "../../functions/pre-transaction/getFeeStructure.mjs";
16
- import { toSpeculativeUtxo as v } from "../../functions/pre-transaction/speculativeUtxo.mjs";
17
- import { createLifiBridgeOps as y, encodeEmporiumMetadata as b, getAuthorizationDataIfNeeded as x } from "../../functions/private-wallet/emporium.helpers.mjs";
18
- import { transactCallRelayerBatch as S } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
19
- import { hinkalTransact as C } from "./hinkalTransact.mjs";
20
- import { SWAP_ROUTER_ADDRESSES as w } from "../../constants/addresses.constants.mjs";
21
- import { convertEmporiumOpToCallInfo as T } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
22
- import { calculateModifiedFeeStructure as E } from "../../functions/utils/fees.utils.mjs";
16
+ import { calculateModifiedFeeStructure as v } from "../../functions/utils/fees.utils.mjs";
17
+ import { toSpeculativeUtxo as y } from "../../functions/pre-transaction/speculativeUtxo.mjs";
18
+ import { createLifiBridgeOps as b, encodeEmporiumMetadata as x, getAuthorizationDataIfNeeded as S } from "../../functions/private-wallet/emporium.helpers.mjs";
19
+ import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
+ import { hinkalTransact as w } from "./hinkalTransact.mjs";
21
+ import { SWAP_ROUTER_ADDRESSES as T } from "../../constants/addresses.constants.mjs";
22
+ import { resolveSwapPairTokens as E } from "../../functions/utils/admin-dimensions.mjs";
23
+ import { convertEmporiumOpToCallInfo as D } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
23
24
  import "../../functions/utils/index.mjs";
24
- import { prepareDepositOnChainUtxos as D, submitDepositOnChainUtxos as O } from "./hinkalDepositOnChainUtxos.mjs";
25
+ import { prepareDepositOnChainUtxos as O, submitDepositOnChainUtxos as k } from "./hinkalDepositOnChainUtxos.mjs";
25
26
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
26
- var k = async (n, c, l, p, m, _, S, T) => {
27
+ var A = async (n, c, l, p, _, v, C, D) => {
27
28
  if (p.length === 0) throw Error("No recipients to bridge");
28
- let E = l.erc20TokenAddress, { contractData: D } = t[c], { emporiumAddress: O } = D;
29
- if (!O) throw Error("No Emporium Address");
30
- let k = w[u.Lifi][c];
31
- if (!k) throw Error(`LIFI not configured for chain ${c}`);
32
- let A = await n.getRandomRelay(c);
33
- if (!A) throw Error(o.RELAYER_NOT_AVAILABLE);
34
- let j = await n.getEthereumAddressByChain(c), M = n.generateProofRemotely, N = M ? 5 : 1, P = [];
35
- for (let t = 0; t < p.length; t += N) {
36
- let o = p.slice(t, t + N), l = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: l, bridgeAmount: p, quote: w, temporarySubAccount: D, recipientAddress: N, destinationChainId: P, destinationTokenAddress: F }, I) => {
37
- let L = m[t + I];
38
- await f.addTemporaryWalletNonce(c, _, D.index);
39
- let R = i(E, r), z = w.nativeFee > 0n && !R, B = [E], V = [-o.amount], H = [!1], U = [[o]];
40
- z && l && (B.push(r), V.push(-l.amount), H.push(!1), U.push([l]));
41
- let W = y(n, c, D.ethAddress, k, E, o.amount, p, w), G = h(S, c, B, [-o.amount], j), [K, q] = await Promise.all([(async () => {
42
- let t = s(31), i = M ? await b(c, O, D.privateKey, W, a(t), g.getSignerAddressFromPrivateKey(e(c), D.privateKey), L.flatFee) : void 0;
43
- return C(n, {
29
+ let O = l.erc20TokenAddress, { contractData: k } = t[c], { emporiumAddress: A } = k;
30
+ if (!A) throw Error("No Emporium Address");
31
+ let j = T[u.Lifi][c];
32
+ if (!j) throw Error(`LIFI not configured for chain ${c}`);
33
+ let M = await n.getRandomRelay(c);
34
+ if (!M) throw Error(o.RELAYER_NOT_AVAILABLE);
35
+ let N = await n.getEthereumAddressByChain(c), P = n.generateProofRemotely, F = P ? 5 : 1, I = [];
36
+ for (let t = 0; t < p.length; t += F) {
37
+ let o = p.slice(t, t + F), T = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: p, bridgeAmount: T, quote: k, temporarySubAccount: F, recipientAddress: I, destinationChainId: L, destinationTokenAddress: R }, z) => {
38
+ let B = _[t + z];
39
+ await f.addTemporaryWalletNonce(c, v, F.index);
40
+ let V = i(O, r), H = k.nativeFee > 0n && !V, U = [O], W = [-o.amount], G = [!1], K = [[o]];
41
+ H && p && (U.push(r), W.push(-p.amount), G.push(!1), K.push([p]));
42
+ let q = b(n, c, F.ethAddress, j, O, o.amount, T, k), J = R ? await m(L ?? c, R) : void 0, Y = E(C, [l], J), X = h(C, c, U, [-o.amount], N, Y), [Z, Q] = await Promise.all([(async () => {
43
+ let t = s(31), i = P ? await x(c, A, F.privateKey, q, a(t), g.getSignerAddressFromPrivateKey(e(c), F.privateKey), B.flatFee) : void 0;
44
+ return w(n, {
44
45
  chainId: c,
45
- erc20Addresses: B,
46
- amountChanges: V,
47
- externalAddress: O,
46
+ erc20Addresses: U,
47
+ amountChanges: W,
48
+ externalAddress: A,
48
49
  externalActionId: u.Emporium,
49
50
  externalActionMetadata: i,
50
- onChainCreation: H,
51
- feeStructure: L,
52
- relay: A ?? r,
51
+ onChainCreation: G,
52
+ feeStructure: B,
53
+ relay: M ?? r,
53
54
  messageSeed: t,
54
- inputUtxos: U,
55
+ inputUtxos: K,
55
56
  useBlockedUtxos: !0,
56
- speculative: T && {
57
- pendingLeaves: T,
58
- inputUtxos: U.map((e) => e.map(v))
57
+ speculative: D && {
58
+ pendingLeaves: D,
59
+ inputUtxos: K.map((e) => e.map(y))
59
60
  },
60
- subAccountPrivateKey: D.privateKey,
61
- emporiumOps: W,
61
+ subAccountPrivateKey: F.privateKey,
62
+ emporiumOps: q,
62
63
  submit: { mode: d.ProofOnly }
63
64
  });
64
- })(), x(c, D.privateKey)]), { zkCallData: J, circomData: Y, dimData: X, commitmentValidationData: Z, tronProofSignature: Q } = K;
65
+ })(), S(c, F.privateKey)]), { zkCallData: $, circomData: ee, dimData: te, commitmentValidationData: ne, tronProofSignature: re } = Z;
65
66
  return {
66
- zkCallData: J,
67
- dimData: X,
68
- circomData: Y,
69
- commitmentValidationData: Z,
70
- authorizationData: q,
71
- recipientAddress: N,
72
- adminData: G,
73
- tronProofSignature: Q,
74
- destinationChainId: P,
75
- destinationTokenAddress: F,
76
- destinationTokenAmount: w.expectedAmount.toString()
67
+ zkCallData: $,
68
+ dimData: te,
69
+ circomData: ee,
70
+ commitmentValidationData: ne,
71
+ authorizationData: Q,
72
+ recipientAddress: I,
73
+ adminData: X,
74
+ tronProofSignature: re,
75
+ destinationChainId: L,
76
+ destinationTokenAddress: R,
77
+ destinationTokenAmount: k.expectedAmount.toString()
77
78
  };
78
79
  }));
79
- P.push(...l);
80
+ I.push(...T);
80
81
  }
81
- return P;
82
- }, A = (e) => e.map((e) => e.quote.nativeFee), j = async (e, t, n, i) => {
82
+ return I;
83
+ }, j = (e) => e.map((e) => e.quote.nativeFee), M = async (e, t, n, i) => {
83
84
  let { chainId: a, hashedEthereumAddress: o, feeStructures: s, mainTokenAmounts: c } = i, { needsNativeDeposit: l, txCompletionTime: u, ref: d, action: f, hashedDashboardAccountId: p, preEstimateGas: h } = i, g = [t], _ = [c];
84
85
  if (l) {
85
86
  let e = await m(a, r);
86
87
  if (!e) throw Error("No native token");
87
- g.push(e), _.push(A(n));
88
+ g.push(e), _.push(j(n));
88
89
  }
89
- let v = await D(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, C = []] = y, w = n.map((e, t) => ({
90
+ let v = await O(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
90
91
  ...e,
91
92
  utxo: x[t],
92
- nativeUtxo: l ? C[t] : void 0
93
- })), [T, E] = await Promise.all([O(e, v, h), k(e, a, t, w, s, o, f, b)]);
93
+ nativeUtxo: l ? S[t] : void 0
94
+ })), [T, E] = await Promise.all([k(e, v, h), A(e, a, t, w, s, o, f, b)]);
94
95
  return {
95
96
  depositTxHash: T,
96
- scheduleId: await S(a, E, o, u, d, p, T)
97
+ scheduleId: await C(a, E, o, u, d, p, T)
97
98
  };
98
- }, M = async (e, t, a, o, s, d, f, m, h = !0) => {
99
+ }, N = async (e, t, a, o, s, d, f, m, h = !0) => {
99
100
  if (a.length === 0) throw Error("No recipients to bridge");
100
- let g = t.erc20TokenAddress, v = p([t]), b = await e.getEthereumAddressByChain(v), x = w[u.Lifi][v];
101
- if (!x) throw Error("LIFI router not configured");
102
- let S = i(g, r), C;
103
- if (s) C = s;
101
+ let g = t.erc20TokenAddress, y = p([t]), x = await e.getEthereumAddressByChain(y), S = T[u.Lifi][y];
102
+ if (!S) throw Error("LIFI router not configured");
103
+ let C = i(g, r), w;
104
+ if (s) w = s;
104
105
  else {
105
- let t = a[0], r = S ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = y(e, v, t.temporarySubAccount.ethAddress, x, g, r, t.bridgeAmount, t.quote).map((e) => T(e, t.temporarySubAccount.ethAddress, v));
106
- C = await _(v, g, [g], u.Emporium, i, n);
106
+ let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => D(e, t.temporarySubAccount.ethAddress, y));
107
+ w = await _(y, g, [g], u.Emporium, i, n);
107
108
  }
108
- let D = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => S ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => E(v, t, e, C)));
109
- return j(e, t, a, {
110
- chainId: v,
111
- ethereumAddress: b,
112
- hashedEthereumAddress: c(b),
109
+ let E = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
110
+ return M(e, t, a, {
111
+ chainId: y,
112
+ ethereumAddress: x,
113
+ hashedEthereumAddress: c(x),
113
114
  feeStructures: k,
114
115
  mainTokenAmounts: O.map((e, t) => e + k[t].flatFee),
115
- needsNativeDeposit: D > 0n && !S,
116
+ needsNativeDeposit: E > 0n && !C,
116
117
  txCompletionTime: o,
117
118
  ref: d,
118
119
  action: f,
@@ -121,4 +122,4 @@ var k = async (n, c, l, p, m, _, S, T) => {
121
122
  });
122
123
  };
123
124
  //#endregion
124
- export { M as hinkalDepositAndBridge };
125
+ export { N as hinkalDepositAndBridge };
@@ -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(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../crypto-keys/encryptDecryptUtxo.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),m=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`./hinkalTransact.cjs`);require(`../../functions/index.cjs`);const _=require(`./hinkalDepositOnChainUtxos.cjs`);let v=require(`ethers`);var y=async(e,o,s,l,u,f,m,h)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[v,y]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!v)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let b=e.generateProofRemotely?5:1,x=[],S=a.addressToHexFormat(y);for(let r=0;r<l.length;r+=b){let s=l.slice(r,r+b),y=await Promise.all(s.map(async({recipientAddress:s,utxo:l},y)=>{let b=r+y,x=a.addressToHexFormat(s),C=n.caseInsensitiveEqual(l.erc20TokenAddress,_)?l:i.Utxo.createFrom(l,{erc20TokenAddress:_}),w=d.constructAdminData(f,o,[_],[-l.amount],S),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O,tronProofSignature:k}=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-l.amount],externalAddress:x,feeStructure:u,relay:v??t.zeroAddress,inputUtxos:[[C]],useBlockedUtxos:!0,speculative:h&&{pendingLeaves:h,inputUtxos:[[p.toSpeculativeUtxo(C)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:T,dimData:D,circomData:E,commitmentValidationData:O,adminData:w,recipientAddress:s,tronProofSignature:k,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[b]}}));x.push(...y)}return x},b=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,m=n.map(e=>e+s.flatFee),g=await _.prepareDepositOnChainUtxos(e,a,[t],[m]),{depositedUtxos:v,pendingLeaves:b}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[S,C]=await Promise.all([_.submitDepositOnChainUtxos(e,g,p),y(e,a,t,x,s,c,l,b)]);return{depositTxHash:S,scheduleId:await h.transactCallRelayerBatch(a,C,o,u,d,f,S)}},x=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:l,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:_,ref:b,hashedDashboardAccountId:x,preEstimateGas:S}=i,C=n.map(e=>e+d.flatFee),w=C.reduce((e,t)=>e+t,0n),T=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[w],externalAddress:s,selfOutputAmounts:C,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),E=T.circomData.encryptedOutputs?.[0];if(!E||E.length!==C.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let D=E.map((t,n)=>({recipientAddress:r[n],utxo:u.decryptUtxo(v.ethers.getBytes(t),e.userKeys)})),O=T.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[k,A]=await Promise.all([(async()=>{a.swapTronBCoordinate(T.zkCallData);let n=await m.transactCallDirectTron(e,o,w,t,T.zkCallData,T.circomData,T.dimData,void 0,void 0,S,T.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),y(e,o,t,D,d,f,p,O)]);return{depositTxHash:k,scheduleId:await h.transactCallRelayerBatch(o,A,l,_,b,x,k)}},S=async(t,n,r,i,c,u,d,p,m,h=!0,g)=>{let _=l.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),S={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:u??await f.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:p,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return b(t,n,r,i,S);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return x(t,n,r,i,S)};exports.hinkalDepositAndWithdraw=S;
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(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../functions/utils/admin-dimensions.cjs`);require(`../../functions/index.cjs`);const b=require(`./hinkalDepositOnChainUtxos.cjs`);let x=require(`ethers`);var S=async(e,o,s,l,u,p,m,g)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[b,x]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!b)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let S=e.generateProofRemotely?5:1,C=[],w=a.addressToHexFormat(x);for(let r=0;r<l.length;r+=S){let x=l.slice(r,r+S),T=await Promise.all(x.map(async({recipientAddress:l,utxo:x},S)=>{let C=r+S,T=a.addressToHexFormat(l),E=n.caseInsensitiveEqual(x.erc20TokenAddress,_)?x:i.Utxo.createFrom(x,{erc20TokenAddress:_}),D=m?.tokenAddress?await d.getErc20TokenFromAPI(m.chainId??o,m.tokenAddress):void 0,O=y.resolveSwapPairTokens(p,[s],D),k=f.constructAdminData(p,o,[_],[-x.amount],w,O),{zkCallData:A,circomData:j,dimData:M,commitmentValidationData:N,tronProofSignature:P}=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-x.amount],externalAddress:T,feeStructure:u,relay:b??t.zeroAddress,inputUtxos:[[E]],useBlockedUtxos:!0,speculative:g&&{pendingLeaves:g,inputUtxos:[[h.toSpeculativeUtxo(E)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:A,dimData:M,circomData:j,commitmentValidationData:N,adminData:k,recipientAddress:l,tronProofSignature:P,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[C]}}));C.push(...T)}return C},C=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,h=m.calculateGrossUtxoAmounts(n,s),g=await b.prepareDepositOnChainUtxos(e,a,[t],[h]),{depositedUtxos:v,pendingLeaves:y}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[C,w]=await Promise.all([b.submitDepositOnChainUtxos(e,g,p),S(e,a,t,x,s,c,l,y)]);return{depositTxHash:C,scheduleId:await _.transactCallRelayerBatch(a,w,o,u,d,f,C)}},w=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:h,ref:y,hashedDashboardAccountId:b,preEstimateGas:C}=i,w=m.calculateGrossUtxoAmounts(n,d),T=w.reduce((e,t)=>e+t,0n),E=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[T],externalAddress:s,selfOutputAmounts:w,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),D=E.circomData.encryptedOutputs?.[0];if(!D||D.length!==w.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let O=D.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(x.ethers.getBytes(t),e.userKeys)})),k=E.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[A,j]=await Promise.all([(async()=>{a.swapTronBCoordinate(E.zkCallData);let n=await g.transactCallDirectTron(e,o,T,t,E.zkCallData,E.circomData,E.dimData,void 0,void 0,C,E.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),S(e,o,t,O,d,f,p,k)]);return{depositTxHash:A,scheduleId:await _.transactCallRelayerBatch(o,j,u,h,y,b,A)}},T=async(t,n,r,i,c,l,d,f,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),b={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await p.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:f,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return C(t,n,r,i,b);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return w(t,n,r,i,b)};exports.hinkalDepositAndWithdraw=T;