@hinkal/common 0.3.9 → 0.3.11

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 (275) hide show
  1. package/README.md +26 -10
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +4 -5
  4. package/common/src/API/API.mjs +79 -80
  5. package/common/src/API/callRelayer.d.ts +1 -0
  6. package/common/src/API/dashboardTransactionCalls.cjs +1 -1
  7. package/common/src/API/dashboardTransactionCalls.d.ts +4 -1
  8. package/common/src/API/dashboardTransactionCalls.mjs +2 -2
  9. package/common/src/API/enclaveRecipientInfoCalls.d.ts +0 -2
  10. package/common/src/API/enclaveSignatureCalls.cjs +1 -1
  11. package/common/src/API/enclaveSignatureCalls.d.ts +2 -1
  12. package/common/src/API/enclaveSignatureCalls.mjs +5 -8
  13. package/common/src/API/enclaveUtxoCalls.cjs +1 -1
  14. package/common/src/API/enclaveUtxoCalls.d.ts +12 -8
  15. package/common/src/API/enclaveUtxoCalls.mjs +17 -20
  16. package/common/src/API/privateSendRecipientInfoCalls.cjs +1 -1
  17. package/common/src/API/privateSendRecipientInfoCalls.d.ts +3 -6
  18. package/common/src/API/privateSendRecipientInfoCalls.mjs +12 -6
  19. package/common/src/API/scheduled-transactions-calls.cjs +1 -1
  20. package/common/src/API/scheduled-transactions-calls.d.ts +1 -5
  21. package/common/src/API/scheduled-transactions-calls.mjs +2 -6
  22. package/common/src/constants/bridging.constants.cjs +1 -1
  23. package/common/src/constants/bridging.constants.d.ts +1 -0
  24. package/common/src/constants/bridging.constants.mjs +1 -1
  25. package/common/src/constants/chains.constants.cjs +1 -1
  26. package/common/src/constants/chains.constants.d.ts +18 -17
  27. package/common/src/constants/chains.constants.mjs +108 -89
  28. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  29. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  30. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  31. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  32. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  33. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  34. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  35. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  36. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  37. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  38. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  39. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  40. package/common/src/constants/events.constants.cjs +1 -1
  41. package/common/src/constants/events.constants.mjs +1 -16
  42. package/common/src/constants/protocol.constants.cjs +1 -1
  43. package/common/src/constants/protocol.constants.d.ts +11 -8
  44. package/common/src/constants/protocol.constants.mjs +1 -1
  45. package/common/src/constants/server.constants.cjs +1 -1
  46. package/common/src/constants/server.constants.d.ts +1 -4
  47. package/common/src/constants/server.constants.mjs +1 -4
  48. package/common/src/constants/tx-confirmation.constants.cjs +1 -1
  49. package/common/src/constants/tx-confirmation.constants.d.ts +1 -0
  50. package/common/src/constants/tx-confirmation.constants.mjs +2 -2
  51. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  52. package/common/src/data-structures/Hinkal/Hinkal.d.ts +8 -10
  53. package/common/src/data-structures/Hinkal/Hinkal.mjs +132 -160
  54. package/common/src/data-structures/Hinkal/IHinkal.d.ts +7 -10
  55. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  56. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +23 -23
  57. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  58. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +1 -1
  59. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  60. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +57 -57
  61. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  62. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +10 -10
  63. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  64. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +19 -19
  65. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
  66. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +3 -2
  67. package/common/src/data-structures/Hinkal/hinkalProxySend.cjs +1 -0
  68. package/common/src/data-structures/Hinkal/hinkalProxySend.d.ts +6 -0
  69. package/common/src/data-structures/Hinkal/hinkalProxySend.mjs +16 -0
  70. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  71. package/common/src/data-structures/Hinkal/hinkalProxySwap.d.ts +1 -1
  72. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +13 -12
  73. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  74. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +1 -1
  75. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  76. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +1 -1
  77. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  78. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.d.ts +1 -1
  79. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +9 -9
  80. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs +1 -1
  81. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.d.ts +1 -1
  82. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.mjs +15 -14
  83. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  84. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +44 -47
  85. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.cjs +1 -1
  86. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.mjs +2 -2
  87. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  88. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  89. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  90. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +1 -1
  91. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  93. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  94. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +101 -94
  95. package/common/src/data-structures/Hinkal/index.d.ts +0 -1
  96. package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
  97. package/common/src/data-structures/IndexedDB/activity-db.mjs +34 -34
  98. package/common/src/data-structures/IndexedDB/index.cjs +1 -1
  99. package/common/src/data-structures/IndexedDB/index.d.ts +1 -0
  100. package/common/src/data-structures/IndexedDB/index.mjs +1 -0
  101. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.cjs +1 -0
  102. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.d.ts +11 -0
  103. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.mjs +34 -0
  104. package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
  105. package/common/src/data-structures/IndexedDB/signatures-db.mjs +11 -11
  106. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
  107. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.d.ts +1 -0
  108. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +6 -3
  109. package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
  110. package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +18 -19
  111. package/common/src/data-structures/crypto-keys/keys.cjs +1 -1
  112. package/common/src/data-structures/crypto-keys/keys.d.ts +1 -0
  113. package/common/src/data-structures/crypto-keys/keys.mjs +3 -0
  114. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  115. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.mjs +11 -11
  116. package/common/src/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -1
  117. package/common/src/data-structures/event-service/helpers/ClientEventHelper.mjs +6 -6
  118. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -1
  119. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.d.ts +1 -0
  120. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.mjs +79 -75
  121. package/common/src/data-structures/provider-adapter/IProviderAdapter.d.ts +1 -4
  122. package/common/src/data-structures/token-price-fetcher/TokenChecker.cjs +1 -1
  123. package/common/src/data-structures/token-price-fetcher/TokenChecker.d.ts +1 -0
  124. package/common/src/data-structures/token-price-fetcher/TokenChecker.mjs +1 -0
  125. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  126. package/common/src/error-handling/error-codes.constants.d.ts +6 -0
  127. package/common/src/error-handling/error-codes.constants.mjs +10 -4
  128. package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.cjs +1 -1
  129. package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.mjs +7 -6
  130. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.cjs +1 -1
  131. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.mjs +8 -8
  132. package/common/src/functions/index.cjs +1 -1
  133. package/common/src/functions/index.mjs +1 -2
  134. package/common/src/functions/pre-transaction/getVolatileTransferAmount.cjs +1 -1
  135. package/common/src/functions/pre-transaction/getVolatileTransferAmount.mjs +13 -13
  136. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  137. package/common/src/functions/private-wallet/emporium.helpers.mjs +13 -13
  138. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  139. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +13 -13
  140. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  141. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +4 -4
  142. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  143. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +5 -5
  144. package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -1
  145. package/common/src/functions/snarkjs/constructTxEnclave.d.ts +1 -1
  146. package/common/src/functions/snarkjs/constructTxEnclave.mjs +61 -133
  147. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -0
  148. package/common/src/functions/snarkjs/constructTxEnclaveVerify.d.ts +5 -0
  149. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +295 -0
  150. package/common/src/functions/utils/addresses.cjs +1 -1
  151. package/common/src/functions/utils/addresses.d.ts +1 -0
  152. package/common/src/functions/utils/addresses.mjs +13 -12
  153. package/common/src/functions/utils/bridge-arrival.utils.cjs +1 -1
  154. package/common/src/functions/utils/bridge-arrival.utils.mjs +12 -11
  155. package/common/src/functions/utils/bridge-claimable-utxo.utils.cjs +1 -1
  156. package/common/src/functions/utils/bridge-claimable-utxo.utils.d.ts +1 -1
  157. package/common/src/functions/utils/bridge-claimable-utxo.utils.mjs +4 -4
  158. package/common/src/functions/utils/create-provider.cjs +1 -1
  159. package/common/src/functions/utils/create-provider.mjs +4 -1
  160. package/common/src/functions/utils/enclave-recipient-info-storage.cjs +1 -1
  161. package/common/src/functions/utils/enclave-recipient-info-storage.d.ts +4 -1
  162. package/common/src/functions/utils/enclave-recipient-info-storage.mjs +1 -0
  163. package/common/src/functions/utils/enclave-signature-storage.cjs +1 -1
  164. package/common/src/functions/utils/enclave-signature-storage.d.ts +1 -1
  165. package/common/src/functions/utils/enclave-signature-storage.mjs +3 -3
  166. package/common/src/functions/utils/enclave-utxo-storage.cjs +1 -1
  167. package/common/src/functions/utils/enclave-utxo-storage.d.ts +3 -3
  168. package/common/src/functions/utils/enclave-utxo-storage.mjs +8 -5
  169. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  170. package/common/src/functions/utils/encryptInputForEnclave.d.ts +8 -0
  171. package/common/src/functions/utils/encryptInputForEnclave.mjs +43 -23
  172. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  173. package/common/src/functions/utils/erc20tokenFunctions.mjs +2 -15
  174. package/common/src/functions/utils/fees.utils.cjs +1 -1
  175. package/common/src/functions/utils/fees.utils.mjs +6 -6
  176. package/common/src/functions/utils/index.cjs +1 -1
  177. package/common/src/functions/utils/index.d.ts +1 -0
  178. package/common/src/functions/utils/index.mjs +3 -3
  179. package/common/src/functions/utils/ipfs.d.ts +2 -3
  180. package/common/src/functions/utils/lifi.utils.d.ts +2 -0
  181. package/common/src/functions/utils/nearIntents.utils.cjs +1 -1
  182. package/common/src/functions/utils/nearIntents.utils.mjs +7 -7
  183. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  184. package/common/src/functions/utils/publicBalance.utils.mjs +10 -10
  185. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -0
  186. package/common/src/functions/utils/temporary-wallet-recovery.utils.d.ts +7 -0
  187. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +10 -0
  188. package/common/src/functions/utils/tron.utils.cjs +1 -1
  189. package/common/src/functions/utils/tron.utils.mjs +16 -29
  190. package/common/src/functions/utils/tx-confirmation.utils.cjs +1 -1
  191. package/common/src/functions/utils/tx-confirmation.utils.d.ts +1 -0
  192. package/common/src/functions/utils/tx-confirmation.utils.mjs +16 -13
  193. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  194. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +5 -5
  195. package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
  196. package/common/src/functions/web3/events/getInputUtxosEnclave.d.ts +1 -1
  197. package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +19 -11
  198. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  199. package/common/src/functions/web3/events/getShieldedBalance.d.ts +4 -4
  200. package/common/src/functions/web3/events/getShieldedBalance.mjs +113 -101
  201. package/common/src/functions/web3/functionCalls/transactCallDirectTron.cjs +1 -1
  202. package/common/src/functions/web3/functionCalls/transactCallDirectTron.mjs +16 -16
  203. package/common/src/providers/SolanaProviderAdapter.cjs +1 -1
  204. package/common/src/providers/SolanaProviderAdapter.d.ts +1 -4
  205. package/common/src/providers/SolanaProviderAdapter.mjs +3 -6
  206. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  207. package/common/src/providers/WagmiProviderAdapter.mjs +5 -5
  208. package/common/src/types/cache.types.cjs +1 -1
  209. package/common/src/types/cache.types.d.ts +2 -1
  210. package/common/src/types/cache.types.mjs +1 -1
  211. package/common/src/types/enclaveApi.types.d.ts +2 -3
  212. package/common/src/types/ethereum-network.types.d.ts +1 -0
  213. package/common/src/types/events.types.d.ts +1 -0
  214. package/common/src/types/near-intents.types.d.ts +1 -0
  215. package/common/src/types/remote-proof.types.d.ts +5 -0
  216. package/common/src/types/remote-tx-build.types.d.ts +37 -4
  217. package/common/src/types/scheduled-transactions.types.d.ts +18 -0
  218. package/common/src/types/solana.types.d.ts +0 -3
  219. package/common/src/webworker/{logError-RKYfeI6h.js → logError-cvFNxc-0.js} +1 -1
  220. package/common/src/webworker/package.json +1 -2
  221. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  222. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  223. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  224. package/common/src/webworker/utxoWorker/utxoWorker.types.d.ts +4 -2
  225. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  226. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  227. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  228. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  229. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  230. package/common/src/webworker/workerProxy-BHzCZ9HT.js +1 -0
  231. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  232. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  233. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  234. package/package.json +1 -2
  235. package/providers/prepareEthersHinkal.cjs +1 -1
  236. package/providers/prepareEthersHinkal.d.ts +1 -0
  237. package/providers/prepareEthersHinkal.mjs +2 -2
  238. package/providers/prepareSolanaHinkal.cjs +1 -1
  239. package/providers/prepareSolanaHinkal.d.ts +1 -0
  240. package/providers/prepareSolanaHinkal.mjs +2 -2
  241. package/providers/prepareTronHinkal.cjs +1 -1
  242. package/providers/prepareTronHinkal.d.ts +1 -0
  243. package/providers/prepareTronHinkal.mjs +2 -2
  244. package/providers/prepareWagmiHinkal.cjs +1 -1
  245. package/providers/prepareWagmiHinkal.d.ts +1 -0
  246. package/providers/prepareWagmiHinkal.mjs +2 -2
  247. package/services/Hinkal.cjs +1 -1
  248. package/services/Hinkal.d.ts +8 -2
  249. package/services/Hinkal.mjs +15 -4
  250. package/types/IHinkal.d.ts +8 -2
  251. package/common/src/API/evm-token-assets.cjs +0 -1
  252. package/common/src/API/evm-token-assets.mjs +0 -20
  253. package/common/src/API/getAnyRecipientInfo.d.ts +0 -1
  254. package/common/src/API/solana-nft-assets.cjs +0 -1
  255. package/common/src/API/solana-nft-assets.mjs +0 -11
  256. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredProxySend.d.ts +0 -5
  257. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +0 -1
  258. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +0 -109
  259. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +0 -1
  260. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +0 -94
  261. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +0 -1
  262. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +0 -134
  263. package/common/src/data-structures/TokenDBs/PublicTokensDB.cjs +0 -1
  264. package/common/src/data-structures/TokenDBs/PublicTokensDB.mjs +0 -32
  265. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +0 -1
  266. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +0 -37
  267. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +0 -1
  268. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +0 -51
  269. package/common/src/data-structures/TokenDBs/index.cjs +0 -1
  270. package/common/src/data-structures/TokenDBs/index.mjs +0 -6
  271. package/common/src/functions/utils/ipfs.cjs +0 -1
  272. package/common/src/functions/utils/ipfs.mjs +0 -1
  273. package/common/src/functions/utils/reloadPage.cjs +0 -1
  274. package/common/src/functions/utils/reloadPage.mjs +0 -4
  275. package/common/src/webworker/workerProxy-COB7g4Qc.js +0 -1
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/addresses.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`),s=require(`../../functions/private-wallet/emporium.helpers.cjs`),c=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),l=require(`../../functions/utils/fees.utils.cjs`);var u=async(u,d,f,p,m,h,g,_)=>{if(!g)throw Error(`hinkalProxyToPrivate: subAccount should be provided`);if(!m)throw Error(`Fee token is required in hinkalProxyToPrivate`);if(!t.isValidPrivateAddress(p))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let v=r.validateAndGetChainId(d),y=a.AccountActions.getAddressFromSubAccount(v,g);if(!y)throw Error(`Public account address is not available`);let b=d.map(e=>e.erc20TokenAddress),x=await i.modifyVolatileTokenAmountChanges(v,d,f,y),S=s.createTransaferEmporiumOpsBatch(u,v,b,x),C=await l.calculateModifiedFeeStructureForTokens(v,d,x,h??await o.getFeeStructure(v,m,b,n.ExternalActionId.Emporium,S.map(e=>c.convertEmporiumOpToCallInfo(e,y,v)),10n)),w=d.map((e,t)=>({token:e,amount:-1n*x[t]}));return u.actionPrivateWallet(v,[d[0]],[0n],[!1],S,w,g,m,C,void 0,void 0,void 0,_,{recipientInfo:p,amount:x[0],token:d[0]})};exports.hinkalProxyToPrivate=u;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/addresses.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`),s=require(`../../functions/private-wallet/emporium.helpers.cjs`),c=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),l=require(`../../functions/utils/fees.utils.cjs`);var u=async(u,d,f,p,m,h,g,_)=>{if(!g)throw Error(`hinkalProxyToPrivate: subAccount should be provided`);if(!m)throw Error(`Fee token is required in hinkalProxyToPrivate`);if(!t.isValidPrivateAddress(p))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let v=r.validateAndGetChainId(d),y=a.AccountActions.getAddressFromSubAccount(v,g);if(!y)throw Error(`Public account address is not available`);let b=d.map(e=>e.erc20TokenAddress),x=await i.modifyVolatileTokenAmountChanges(v,d,f,y),S=s.createTransaferEmporiumOpsBatch(u,v,b,x),C=await l.calculateModifiedFeeStructureForTokens(v,d,x,h??await o.getFeeStructure(v,m,b,n.ExternalActionId.Emporium,S.map(e=>c.convertEmporiumOpToCallInfo(e,y,v)),25n)),w=d.map((e,t)=>({token:e,amount:-1n*x[t]}));return u.actionPrivateWallet(v,[d[0]],[0n],[!1],S,w,g,m,C,void 0,void 0,void 0,_,{recipientInfo:p,amount:x[0],token:d[0]})};exports.hinkalProxyToPrivate=u;
@@ -16,7 +16,7 @@ var u = async (u, d, f, p, m, h, g, _) => {
16
16
  if (!t(p)) throw Error(e.RECIPIENT_FORMAT_INCORRECT);
17
17
  let v = r(d), y = a.getAddressFromSubAccount(v, g);
18
18
  if (!y) throw Error("Public account address is not available");
19
- let b = d.map((e) => e.erc20TokenAddress), x = await i(v, d, f, y), S = s(u, v, b, x), C = await l(v, d, x, h ?? await o(v, m, b, n.Emporium, S.map((e) => c(e, y, v)), 10n)), w = d.map((e, t) => ({
19
+ let b = d.map((e) => e.erc20TokenAddress), x = await i(v, d, f, y), S = s(u, v, b, x), C = await l(v, d, x, h ?? await o(v, m, b, n.Emporium, S.map((e) => c(e, y, v)), 25n)), w = d.map((e, t) => ({
20
20
  token: e,
21
21
  amount: -1n * x[t]
22
22
  }));
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/solanaMint.utils.cjs`),c=require(`../../functions/utils/addresses.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/solana-transact.types.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`);require(`../../functions/pre-transaction/index.cjs`);const _=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const y=require(`./hinkalProoflessDeposit.utils.cjs`),b=require(`./hinkalSolanaTransact.cjs`);let x=require(`ethers`),S=require(`@solana/web3.js`),C=require(`@coral-xyz/anchor`);var w=(n,a,o,c)=>{let{hinkalIdl:l,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!l)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(l),g=n.getSolanaPublicKey(),_=new S.PublicKey(d),v=new S.PublicKey(u),{mintPublicKey:y}=s.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),C=p.getStorageVaultPublicKey(v,_),w=p.getMerkleAccountPublicKey(v,_),T=c.map(()=>f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint)),E=T.map(e=>p.buildAnchorStealthAddressStructure(e)),D=i.UserKeys.getEncryptionKeyPair(m).publicKey,O=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:O?null:y,atasValue:O?null:void 0,storageAccount:x,storageVault:C,merkleAccount:w,amounts:c,mintAddressString:b,stealthAddressStructures:T,anchorStealthStructures:E,ownEncryptionKey:D}},T=async(e,t)=>{let n=y.buildProoflessEncryptedOutputs(e.stealthAddressStructures,e.amounts.map(()=>e.ownEncryptionKey)).map(e=>Buffer.from(e.slice(2),`hex`)),{current:r,next:i}=await p.resolveSolanaRootBuckets(e.program,e.merkleAccount,e.amounts.length);return e.program.methods.multiPaymentDepositAt(e.amounts.map(e=>new C.BN(e.toString())),e.anchorStealthStructures,n,!0,t?new C.BN(t):null).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:r,rootBucketNext:i??e.program.programId,storageVaultAta:e.atasValue})},E=async(r,i,c,l,d,f,p,h,_,y)=>{let x=c.erc20TokenAddress;if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:S}=e.networkRegistry[i].contractData;if(!S)throw Error(`missing data`);let C=await r.getRandomRelay(i,!0);if(!C)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=a.getCurrentTimeInSeconds().toString(),T=r.generateProofRemotely?5:1,E=[];for(let e=0;e<l.length;e+=T){let n=l.slice(e,e+T),a=await Promise.all(n.map(async({recipientAddress:n,utxo:a},l)=>{let S=e+l,T={recipient:n,mint:x===`11111111111111111111111111111111`?void 0:x},E=await v.calculateModifiedFeeStructure(i,c,f[S],d),D=m.constructAdminData(p,i,[x],[f[S]],await r.getEthereumAddress()),{compressedAddress:O}=s.formatMintAddress(t.solanaNativeAddress),k=new o.Utxo({amount:0n,mintAddress:x,erc20TokenAddress:O,nullifyingKey:r.userKeys.getShieldedPrivateKey(),timeStamp:w,spendingPublicKey:r.userKeys.getSpendingKeyPair().pubSpendingBJJPoint}),{args:A,commitmentValidationData:j}=await b.hinkalSolanaTransact(r,{chainId:i,mintAddresses:[x],amountChanges:[-a.amount],relayAddress:C,recipient:n,signer:C,functionName:`transact`,accounts:T,relayerFee:E.flatFee,variableRate:E.variableRate,inputUtxos:[[a,k]],useBlockedUtxos:!0,speculative:y&&{pendingLeaves:y,inputUtxos:[[g.toSpeculativeUtxo(a)]]},submit:{mode:u.SolanaSubmitMode.ProofOnly}});return{relayAddress:C,functionName:`transact`,chainId:i,recipientAmount:f[S].toString(),args:A,accounts:T,adminData:D,commitmentValidationData:j,displayRecipient:h?.[S],destinationChainId:_?.chainId,destinationTokenAddress:_?.tokenAddress,destinationTokenAmount:_?.tokenAmounts?.[S]}}));E.push(...a)}return E},D=async(e,t,n,r,i,u,f,p,m,g,y)=>{let b=d.validateAndGetChainId([t]),S=t.erc20TokenAddress,C=c.hashEthereumAddress(await e.getEthereumAddressByChain(b)),D=m?c.hashString(m):void 0,O=u??await h.getFeeStructure(b,S,[S],l.ExternalActionId.Transact,[],5n,{mintTo:S,recipient:r[0],nullifierCount:1}),k=n.map(e=>e+v.calculateTotalFee(e,O)),A=w(e,b,t,k),j=a.getCurrentTimeInSeconds().toString(),{compressedAddress:M}=s.formatMintAddress(S),N=A.stealthAddressStructures.map((t,n)=>({recipientAddress:r[n],utxo:new o.Utxo({amount:k[n],timeStamp:j,nullifyingKey:e.userKeys.getShieldedPrivateKey(),mintAddress:S,erc20TokenAddress:M,stealthAddress:x.ethers.toBeHex(t.stealthAddress),H0:[t.H0x,t.H0y]})})),{connection:P,wallet:F}=A.program.provider,I=async()=>{let e=await(await T(A,j)).transaction();return e.recentBlockhash=(await P.getLatestBlockhash()).blockhash,e.feePayer=A.publicKey,P.sendRawTransaction((await F.signTransaction(e)).serialize())},L=N.map(({utxo:e})=>BigInt(e.getCommitment()).toString()),[R,z]=await Promise.all([I(),E(e,b,t,N,O,n,p,g,y,L)]);return{depositTxHash:R,scheduleId:await _.solanaTransactCallRelayerBatch(b,z,C,i,f,D,R)}};exports.hinkalSolanaDepositAndWithdraw=D;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/solanaMint.utils.cjs`),c=require(`../../functions/utils/addresses.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/solana-transact.types.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`);require(`../../functions/pre-transaction/index.cjs`);const _=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const y=require(`./hinkalProoflessDeposit.utils.cjs`),b=require(`./hinkalSolanaTransact.cjs`);let x=require(`ethers`),S=require(`@solana/web3.js`),C=require(`@coral-xyz/anchor`);var w=(n,a,o,c)=>{let{hinkalIdl:l,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!l)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(l),g=n.getSolanaPublicKey(),_=new S.PublicKey(d),v=new S.PublicKey(u),{mintPublicKey:y}=s.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),C=p.getStorageVaultPublicKey(v,_),w=p.getMerkleAccountPublicKey(v,_),T=c.map(()=>f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint)),E=T.map(e=>p.buildAnchorStealthAddressStructure(e)),D=i.UserKeys.getEncryptionKeyPair(m).publicKey,O=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:O?null:y,atasValue:O?null:void 0,storageAccount:x,storageVault:C,merkleAccount:w,amounts:c,mintAddressString:b,stealthAddressStructures:T,anchorStealthStructures:E,ownEncryptionKey:D}},T=async(e,t)=>{let n=y.buildProoflessEncryptedOutputs(e.stealthAddressStructures,e.amounts.map(()=>e.ownEncryptionKey)).map(e=>Buffer.from(e.slice(2),`hex`)),{current:r,next:i}=await p.resolveSolanaRootBuckets(e.program,e.merkleAccount,e.amounts.length);return e.program.methods.multiPaymentDepositAt(e.amounts.map(e=>new C.BN(e.toString())),e.anchorStealthStructures,n,!0,t?new C.BN(t):null).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:r,rootBucketNext:i??e.program.programId,storageVaultAta:e.atasValue})},E=async(r,i,c,l,d,f,p,h,_,y)=>{let x=c.erc20TokenAddress;if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:S}=e.networkRegistry[i].contractData;if(!S)throw Error(`missing data`);let C=await r.getRandomRelay(i,!0);if(!C)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=a.getCurrentTimeInSeconds().toString(),T=r.generateProofRemotely?5:1,E=[];for(let e=0;e<l.length;e+=T){let n=l.slice(e,e+T),a=await Promise.all(n.map(async({recipientAddress:n,utxo:a},l)=>{let S=e+l,T={recipient:n,mint:x===`11111111111111111111111111111111`?void 0:x},E=await v.calculateModifiedFeeStructure(i,c,f[S],d),D=m.constructAdminData(p,i,[x],[f[S]],await r.getEthereumAddress()),{compressedAddress:O}=s.formatMintAddress(t.solanaNativeAddress),k=new o.Utxo({amount:0n,mintAddress:x,erc20TokenAddress:O,nullifyingKey:r.userKeys.getShieldedPrivateKey(),timeStamp:w,spendingPublicKey:r.userKeys.getSpendingKeyPair().pubSpendingBJJPoint}),{args:A,commitmentValidationData:j}=await b.hinkalSolanaTransact(r,{chainId:i,mintAddresses:[x],amountChanges:[-a.amount],relayAddress:C,recipient:n,signer:C,functionName:`transact`,accounts:T,relayerFee:E.flatFee,variableRate:E.variableRate,inputUtxos:[[a,k]],useBlockedUtxos:!0,speculative:y&&{pendingLeaves:y,inputUtxos:[[g.toSpeculativeUtxo(a)]]},submit:{mode:u.SolanaSubmitMode.ProofOnly}});return{relayAddress:C,functionName:`transact`,chainId:i,recipientAmount:f[S].toString(),args:A,accounts:T,adminData:D,commitmentValidationData:j,displayRecipient:h?.[S],destinationChainId:_?.chainId,destinationTokenAddress:_?.tokenAddress,destinationTokenAmount:_?.tokenAmounts?.[S]}}));E.push(...a)}return E},D=async(e,t,n,r,i,u,f,p,m,g,y)=>{let b=d.validateAndGetChainId([t]),S=t.erc20TokenAddress,C=c.hashEthereumAddress(await e.getEthereumAddressByChain(b)),D=m?c.hashString(m):void 0,O=u??await h.getFeeStructure(b,S,[S],l.ExternalActionId.Transact,[],25n,{mintTo:S,recipient:r[0],nullifierCount:1}),k=n.map(e=>e+v.calculateTotalFee(e,O)),A=w(e,b,t,k),j=a.getCurrentTimeInSeconds().toString(),{compressedAddress:M}=s.formatMintAddress(S),N=A.stealthAddressStructures.map((t,n)=>({recipientAddress:r[n],utxo:new o.Utxo({amount:k[n],timeStamp:j,nullifyingKey:e.userKeys.getShieldedPrivateKey(),mintAddress:S,erc20TokenAddress:M,stealthAddress:x.ethers.toBeHex(t.stealthAddress),H0:[t.H0x,t.H0y]})})),{connection:P,wallet:F}=A.program.provider,I=async()=>{let e=await(await T(A,j)).transaction();return e.recentBlockhash=(await P.getLatestBlockhash()).blockhash,e.feePayer=A.publicKey,P.sendRawTransaction((await F.signTransaction(e)).serialize())},L=N.map(({utxo:e})=>BigInt(e.getCommitment()).toString()),[R,z]=await Promise.all([I(),E(e,b,t,N,O,n,p,g,y,L)]);return{depositTxHash:R,scheduleId:await _.solanaTransactCallRelayerBatch(b,z,C,i,f,D,R)}};exports.hinkalSolanaDepositAndWithdraw=D;
@@ -117,7 +117,7 @@ var A = (n, a, o, c) => {
117
117
  }
118
118
  return T;
119
119
  }, N = async (e, t, n, r, i, d, p, m, h, g, _) => {
120
- let v = f([t]), y = t.erc20TokenAddress, x = c(await e.getEthereumAddressByChain(v)), C = h ? l(h) : void 0, T = d ?? await b(v, y, [y], u.Transact, [], 5n, {
120
+ let v = f([t]), y = t.erc20TokenAddress, x = c(await e.getEthereumAddressByChain(v)), C = h ? l(h) : void 0, T = d ?? await b(v, y, [y], u.Transact, [], 25n, {
121
121
  mintTo: y,
122
122
  recipient: r[0],
123
123
  nullifierCount: 1
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/constructAdminData.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../AccountActions/AccountActions.cjs`),s=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),c=require(`../../functions/pre-transaction/getFeeStructure.cjs`),l=require(`../../API/admin-calls.cjs`);require(`../../constants/index.cjs`);const u=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);require(`../AccountActions/index.cjs`);let d=require(`@solana/web3.js`);var f=async(e,t)=>{let{addressLookupTableAccount:n,instructionLists:r}=JSON.parse(t).data,i=await Promise.all(n.map(async t=>{let n=await e.getAddressLookupTable(new d.PublicKey(t));if(!n.value)throw Error(`Failed to fetch lookup table: ${t}`);return n.value}));if(r.length===0)throw Error(`No instructions found`);return{instructions:r.map(e=>new d.TransactionInstruction({keys:e.accounts.map(e=>({pubkey:new d.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable})),programId:new d.PublicKey(e.programId),data:Buffer.from(e.data,`base64`)})),lookupTableAccounts:i}},p=async(e,t)=>{let n=d.VersionedTransaction.deserialize(Buffer.from(t,`base64`)),r=await Promise.all(n.message.addressTableLookups.map(async({accountKey:t})=>{let n=await e.getAddressLookupTable(t);if(!n.value)throw Error(`Failed to fetch lookup table: ${t.toBase58()}`);return n.value})),{instructions:i}=d.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:r});return{instructions:i,lookupTableAccounts:r}},m=async(t,r,i,s)=>{let c=o.AccountActions.getAddressFromSubAccount(t,i);if(!c)throw Error(`Public account address is not available`);let{rpcUrl:l}=e.networkRegistry[t],u=a.createCustomSolanaConnection(l),m=new d.PublicKey(c),{instructions:h,lookupTableAccounts:g}=s===n.ExternalActionId.Lifi?await p(u,r):await f(u,r);return{connection:u,walletPublicKey:m,instructions:h,lookupTableAccounts:g}},h=async(e,a,o,f,p,h,g,_,v)=>{let y=r.validateAndGetChainId(a),b=h===n.ExternalActionId.Lifi,[{connection:x,walletPublicKey:S,instructions:C,lookupTableAccounts:w},T,E]=await Promise.all([m(y,f,p,h),b?Promise.resolve(null):e.getRandomRelay(y),e.getEthereumAddressByChain(y)]),D=C;if(!b){if(!T)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let e=a[1],r=o[1]*(_??await c.getFeeStructure(y,g,a.map(e=>e.erc20TokenAddress),n.ExternalActionId.Emporium)).variableRate/10000n,{instructions:i}=await u.buildSolanaTransferInstructions(x,S,new d.PublicKey(T),e,r);D=[...C,...i]}let O=await s.sendProxyV0Transaction({connection:x,chainId:y,subAccount:p,payerPublicKey:S,instructions:D,lookupTableAccounts:w});return l.emitTxPublicData(i.constructAdminData(v,y,a.map(e=>e.erc20TokenAddress),o,E,a)),O};exports.hinkalSolanaProxySwap=h;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/constructAdminData.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../AccountActions/AccountActions.cjs`),s=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),c=require(`../../functions/pre-transaction/getFeeStructure.cjs`),l=require(`../../API/admin-calls.cjs`);require(`../../constants/index.cjs`);const u=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);require(`../AccountActions/index.cjs`);let d=require(`@solana/web3.js`);var f=async(e,t)=>{let{addressLookupTableAccount:n,instructionLists:r}=JSON.parse(t).data,i=await Promise.all(n.map(async t=>{let n=await e.getAddressLookupTable(new d.PublicKey(t));if(!n.value)throw Error(`Failed to fetch lookup table: ${t}`);return n.value}));if(r.length===0)throw Error(`No instructions found`);return{instructions:r.map(e=>new d.TransactionInstruction({keys:e.accounts.map(e=>({pubkey:new d.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable})),programId:new d.PublicKey(e.programId),data:Buffer.from(e.data,`base64`)})),lookupTableAccounts:i}},p=async(e,t)=>{let n=d.VersionedTransaction.deserialize(Buffer.from(t,`base64`)),r=await Promise.all(n.message.addressTableLookups.map(async({accountKey:t})=>{let n=await e.getAddressLookupTable(t);if(!n.value)throw Error(`Failed to fetch lookup table: ${t.toBase58()}`);return n.value})),{instructions:i}=d.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:r});return{instructions:i,lookupTableAccounts:r}},m=async(t,r,i,s)=>{let c=o.AccountActions.getAddressFromSubAccount(t,i);if(!c)throw Error(`Public account address is not available`);let{rpcUrl:l}=e.networkRegistry[t],u=a.createCustomSolanaConnection(l),m=new d.PublicKey(c),{instructions:h,lookupTableAccounts:g}=s===n.ExternalActionId.Lifi?await p(u,r):await f(u,r);return{connection:u,walletPublicKey:m,instructions:h,lookupTableAccounts:g}},h=async(e,a,o,f,p,h,g,_,v,y)=>{let b=r.validateAndGetChainId(a),[{connection:x,walletPublicKey:S,instructions:C,lookupTableAccounts:w},T,E]=await Promise.all([m(b,f,p,h),g?e.getRandomRelay(b):Promise.resolve(null),e.getEthereumAddressByChain(b)]),D=C;if(g){if(!T)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let e=a[1],r=o[1]*(v??await c.getFeeStructure(b,_,a.map(e=>e.erc20TokenAddress),n.ExternalActionId.Emporium)).variableRate/10000n,{instructions:i}=await u.buildSolanaTransferInstructions(x,S,new d.PublicKey(T),e,r);D=[...C,...i]}let O=await s.sendProxyV0Transaction({connection:x,chainId:b,subAccount:p,payerPublicKey:S,instructions:D,lookupTableAccounts:w});return l.emitTxPublicData(i.constructAdminData(y,b,a.map(e=>e.erc20TokenAddress),o,E,a)),O};exports.hinkalSolanaProxySwap=h;
@@ -2,5 +2,5 @@ import { AdminTransactionType, ERC20Token, SubAccount } from '../../types';
2
2
  import { IHinkal } from './IHinkal';
3
3
  import { FeeStructure } from '../../types/hinkal.types';
4
4
  import { ExternalActionId } from '../../types/external-action.types';
5
- export declare const hinkalSolanaProxySwap: (hinkal: IHinkal, erc20Tokens: ERC20Token[], amountChanges: bigint[], data: string, subAccount: SubAccount, externalActionId: ExternalActionId, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType) => Promise<string>;
5
+ export declare const hinkalSolanaProxySwap: (hinkal: IHinkal, erc20Tokens: ERC20Token[], amountChanges: bigint[], data: string, subAccount: SubAccount, externalActionId: ExternalActionId, isTheSameChainSwap: boolean, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType) => Promise<string>;
6
6
  export declare const getSolanaProxySwapSerializedTransaction: (chainId: number, data: string, subAccount: SubAccount, externalActionId: ExternalActionId) => Promise<string>;
@@ -52,26 +52,26 @@ var h = async (e, t) => {
52
52
  instructions: p,
53
53
  lookupTableAccounts: m
54
54
  };
55
- }, v = async (e, a, o, f, p, m, h, g, v) => {
56
- let y = r(a), b = m === n.Lifi, [{ connection: x, walletPublicKey: S, instructions: C, lookupTableAccounts: w }, T, E] = await Promise.all([
57
- _(y, f, p, m),
58
- b ? Promise.resolve(null) : e.getRandomRelay(y),
59
- e.getEthereumAddressByChain(y)
55
+ }, v = async (e, a, o, f, p, m, h, g, v, y) => {
56
+ let b = r(a), [{ connection: x, walletPublicKey: S, instructions: C, lookupTableAccounts: w }, T, E] = await Promise.all([
57
+ _(b, f, p, m),
58
+ h ? e.getRandomRelay(b) : Promise.resolve(null),
59
+ e.getEthereumAddressByChain(b)
60
60
  ]), D = C;
61
- if (!b) {
61
+ if (h) {
62
62
  if (!T) throw Error(t.RELAYER_NOT_AVAILABLE);
63
- let e = a[1], r = o[1] * (g ?? await c(y, h, a.map((e) => e.erc20TokenAddress), n.Emporium)).variableRate / 10000n, { instructions: i } = await u(x, S, new d(T), e, r);
63
+ let e = a[1], r = o[1] * (v ?? await c(b, g, a.map((e) => e.erc20TokenAddress), n.Emporium)).variableRate / 10000n, { instructions: i } = await u(x, S, new d(T), e, r);
64
64
  D = [...C, ...i];
65
65
  }
66
66
  let O = await s({
67
67
  connection: x,
68
- chainId: y,
68
+ chainId: b,
69
69
  subAccount: p,
70
70
  payerPublicKey: S,
71
71
  instructions: D,
72
72
  lookupTableAccounts: w
73
73
  });
74
- return l(i(v, y, a.map((e) => e.erc20TokenAddress), o, E, a)), O;
74
+ return l(i(y, b, a.map((e) => e.erc20TokenAddress), o, E, a)), O;
75
75
  };
76
76
  //#endregion
77
77
  export { v as hinkalSolanaProxySwap };
@@ -1 +1 @@
1
- const e=require(`../../types/solana.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/constructAdminData.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../API/admin-calls.cjs`),a=require(`../../functions/utils/solana-sponsored.utils.cjs`);var o=async(o,s,c,l,u,d)=>{let f=t.validateAndGetChainId([s]),p=r.AccountActions.getAddressFromSubAccount(f,c);if(!p)throw Error(`Missing temp wallet address for bridge shield`);let m=await o.getRandomRelay(f,!0);if(!m)throw Error(`No Solana relayer available for bridge shield`);let{txHash:h,feeWei:g}=await a.sendSolanaSponsoredTx({chainId:f,tempSubAccount:c,intent:{kind:e.SolanaSponsoredTxKind.Shield,tokenAddress:s.erc20TokenAddress,amount:l.toString(),senderAddress:p,relayAddress:m,recipientInfo:u}}),_=l-g;return i.emitTxPublicData(n.constructAdminData(d,f,[s.erc20TokenAddress],[_],p)),{txHash:h,shieldedAmount:_}};exports.hinkalSolanaSponsoredShield=o;
1
+ const e=require(`../../types/solana.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/constructAdminData.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../API/admin-calls.cjs`),a=require(`../../functions/utils/solana-sponsored.utils.cjs`);var o=async(o,s,c,l,u,d,f)=>{let p=t.validateAndGetChainId([s]),m=r.AccountActions.getAddressFromSubAccount(p,c);if(!m)throw Error(`Missing temp wallet address for bridge shield`);let h=await o.getRandomRelay(p,!0);if(!h)throw Error(`No Solana relayer available for bridge shield`);let{txHash:g,feeWei:_}=await a.sendSolanaSponsoredTx({chainId:p,tempSubAccount:c,intent:{kind:e.SolanaSponsoredTxKind.Shield,tokenAddress:s.erc20TokenAddress,amount:l.toString(),senderAddress:m,relayAddress:h,recipientInfo:u,variableRate:f?.toString()}}),v=l-_;return i.emitTxPublicData(n.constructAdminData(d,p,[s.erc20TokenAddress],[v],m)),{txHash:g,shieldedAmount:v}};exports.hinkalSolanaSponsoredShield=o;
@@ -2,7 +2,7 @@ import { AdminTransactionType } from '../../types/admin.types';
2
2
  import { SubAccount } from '../../types/proxy.types';
3
3
  import { ERC20Token } from '../../types/token.types';
4
4
  import { IHinkal } from './IHinkal';
5
- export declare const hinkalSolanaSponsoredShield: (hinkal: IHinkal, token: ERC20Token, tempSubAccount: SubAccount, landedAmount: bigint, recipientInfo: string, action?: AdminTransactionType) => Promise<{
5
+ export declare const hinkalSolanaSponsoredShield: (hinkal: IHinkal, token: ERC20Token, tempSubAccount: SubAccount, landedAmount: bigint, recipientInfo: string, action?: AdminTransactionType, variableRate?: bigint) => Promise<{
6
6
  txHash: string;
7
7
  shieldedAmount: bigint;
8
8
  }>;
@@ -5,26 +5,27 @@ import { AccountActions as r } from "../AccountActions/AccountActions.mjs";
5
5
  import { emitTxPublicData as i } from "../../API/admin-calls.mjs";
6
6
  import { sendSolanaSponsoredTx as a } from "../../functions/utils/solana-sponsored.utils.mjs";
7
7
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaSponsoredShield.ts
8
- var o = async (o, s, c, l, u, d) => {
9
- let f = t([s]), p = r.getAddressFromSubAccount(f, c);
10
- if (!p) throw Error("Missing temp wallet address for bridge shield");
11
- let m = await o.getRandomRelay(f, !0);
12
- if (!m) throw Error("No Solana relayer available for bridge shield");
13
- let { txHash: h, feeWei: g } = await a({
14
- chainId: f,
8
+ var o = async (o, s, c, l, u, d, f) => {
9
+ let p = t([s]), m = r.getAddressFromSubAccount(p, c);
10
+ if (!m) throw Error("Missing temp wallet address for bridge shield");
11
+ let h = await o.getRandomRelay(p, !0);
12
+ if (!h) throw Error("No Solana relayer available for bridge shield");
13
+ let { txHash: g, feeWei: _ } = await a({
14
+ chainId: p,
15
15
  tempSubAccount: c,
16
16
  intent: {
17
17
  kind: e.Shield,
18
18
  tokenAddress: s.erc20TokenAddress,
19
19
  amount: l.toString(),
20
- senderAddress: p,
21
- relayAddress: m,
22
- recipientInfo: u
20
+ senderAddress: m,
21
+ relayAddress: h,
22
+ recipientInfo: u,
23
+ variableRate: f?.toString()
23
24
  }
24
- }), _ = l - g;
25
- return i(n(d, f, [s.erc20TokenAddress], [_], p)), {
26
- txHash: h,
27
- shieldedAmount: _
25
+ }), v = l - _;
26
+ return i(n(d, p, [s.erc20TokenAddress], [v], m)), {
27
+ txHash: g,
28
+ shieldedAmount: v
28
29
  };
29
30
  };
30
31
  //#endregion
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/cache.types.cjs`),o=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/pre-transaction/solana.cjs`),l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),d=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`./hinkalSolanaTransact.cjs`);let m=require(`@solana/web3.js`);var h=async(h,g,_,v,y,b,x,S,C)=>{let w=s.validateAndGetChainId(g),T=new m.PublicKey(t.solanaNativeAddress),{hinkalAddress:E,originalDeployer:D}=e.networkRegistry[w].contractData;if(!D)throw Error(`No IDL configured for Solana program on this network`);let O=new m.PublicKey(D),k=new m.PublicKey(E),A=g.map(e=>e.erc20TokenAddress),j=x??A[1];if(x&&x!==A[1])throw Error(`Solana swap fee token must match the output token`);let M={mintFrom:A[0],mintTo:A[1],nullifierCount:await u.calculateSolanaNullifierCount(h,w,A,_),rootInsertCount:2},N=S??await f.getFeeStructure(w,j,A,i.ExternalActionId.Okx,[],void 0,M),P=_[1],F=Number(h.cacheDevice.get(a.StorageKeys.SLIPPAGE_PERCENTAGE)??0),I=g[1],L=r.getAmountInToken(I,P),R=Number(L)*F/100;_[1]-=r.getAmountInWei(I,R.toFixed(I.decimals));let z=P*BigInt(N.variableRate??0)/10000n+N.flatFee;if(_[1]-=z,_[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let[B,V]=await Promise.all([h.getRandomRelay(w,!0),h.getEthereumAddressByChain(w)]);if(!B)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=c.getSwapperAccountPublicKeyFromSalt(k,O,v),{remainingAccounts:U,hinkalInstructions:W}=d.convertOKXToHinkalInstructions(y,H),G=c.getStorageAccountPublicKey(k,O),K=c.getStorageVaultPublicKey(k,O),q=g[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[0].erc20TokenAddress),J=g[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[1].erc20TokenAddress),Y={recipient:T.toString(),storageAccount:G.toString(),storageVault:K.toString(),swapperAccount:H.toString(),mintFrom:q?.toString()??null,mintTo:J?.toString()??null,remainingAccounts:U.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:b},X=l.constructAdminData(C,w,A,_,V,g),Z=W.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}));return p.hinkalSolanaTransact(h,{chainId:w,mintAddresses:A,amountChanges:_,relayAddress:B,recipient:T.toString(),signer:B,functionName:`swap`,accounts:Y,onChainCreation:[!1,!0],relayerFee:N.flatFee,variableRate:N.variableRate,hinkalInstructions:Z,remainingAccounts:Y.remainingAccounts,swapperAccountSalt:v,submit:{mode:o.SolanaSubmitMode.Relayer,adminData:X}})};exports.hinkalSolanaSwap=h;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/cache.types.cjs`),o=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/pre-transaction/solana.cjs`),l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),d=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`./hinkalSolanaTransact.cjs`);let m=require(`@solana/web3.js`);var h=async(h,g,_,v,y,b,x,S,C)=>{let w=s.validateAndGetChainId(g),T=new m.PublicKey(t.solanaNativeAddress),{hinkalAddress:E,originalDeployer:D}=e.networkRegistry[w].contractData;if(!D)throw Error(`No IDL configured for Solana program on this network`);let O=new m.PublicKey(D),k=new m.PublicKey(E),A=g.map(e=>e.erc20TokenAddress),j=x??A[1];if(x&&x!==A[1])throw Error(`Solana swap fee token must match the output token`);let M={mintFrom:A[0],mintTo:A[1],nullifierCount:await u.calculateSolanaNullifierCount(h,w,A,_),rootInsertCount:2},N=S??await f.getFeeStructure(w,j,A,i.ExternalActionId.Okx,[],void 0,M),P=_[1],F=Number(h.cacheDevice.get(a.StorageKeys.SLIPPAGE_PERCENTAGE)??0),I=g[1],L=r.getAmountInToken(I,P),R=Number(L)*F/100;_[1]-=r.getAmountInWei(I,R.toFixed(I.decimals));let z=P*BigInt(N.variableRate??0)/10000n+N.flatFee;if(_[1]-=z,_[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let[B,V]=await Promise.all([h.getRandomRelay(w,!0),h.getEthereumAddressByChain(w)]);if(!B)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{remainingAccounts:H,hinkalInstructions:U}=d.convertOKXToHinkalInstructions(y,c.getSwapperAccountPublicKeyFromSalt(k,O,v)),W=g[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[0].erc20TokenAddress),G=g[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[1].erc20TokenAddress),K={recipient:T.toString(),mintFrom:W?.toString()??null,mintTo:G?.toString()??null,remainingAccounts:H.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:b},q=l.constructAdminData(C,w,A,_,V,g),J=U.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}));return p.hinkalSolanaTransact(h,{chainId:w,mintAddresses:A,amountChanges:_,relayAddress:B,recipient:T.toString(),signer:B,functionName:`swap`,accounts:K,onChainCreation:[!1,!0],relayerFee:N.flatFee,variableRate:N.variableRate,hinkalInstructions:J,remainingAccounts:K.remainingAccounts,swapperAccountSalt:v,submit:{mode:o.SolanaSubmitMode.Relayer,adminData:q}})};exports.hinkalSolanaSwap=h;
@@ -7,68 +7,65 @@ import { StorageKeys as o } from "../../types/cache.types.mjs";
7
7
  import { SolanaSubmitMode as s } from "../../types/solana-transact.types.mjs";
8
8
  import "../../types/index.mjs";
9
9
  import { validateAndGetChainId as c } from "../../functions/utils/token-check.utils.mjs";
10
- import { getStorageAccountPublicKey as l, getStorageVaultPublicKey as u, getSwapperAccountPublicKeyFromSalt as ee } from "../../functions/pre-transaction/solana.mjs";
11
- import { constructAdminData as d } from "../../functions/pre-transaction/constructAdminData.mjs";
12
- import { calculateSolanaNullifierCount as f } from "../../functions/pre-transaction/calculateSolanaNullifierCount.mjs";
13
- import { convertOKXToHinkalInstructions as p } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
14
- import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
- import { hinkalSolanaTransact as h } from "./hinkalSolanaTransact.mjs";
16
- import { PublicKey as g } from "@solana/web3.js";
10
+ import { getSwapperAccountPublicKeyFromSalt as l } from "../../functions/pre-transaction/solana.mjs";
11
+ import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
12
+ import { calculateSolanaNullifierCount as d } from "../../functions/pre-transaction/calculateSolanaNullifierCount.mjs";
13
+ import { convertOKXToHinkalInstructions as f } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
14
+ import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
+ import { hinkalSolanaTransact as m } from "./hinkalSolanaTransact.mjs";
16
+ import { PublicKey as h } from "@solana/web3.js";
17
17
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaSwap.ts
18
- var _ = async (_, v, y, b, x, S, C, w, T) => {
19
- let E = c(v), D = new g(t), { hinkalAddress: O, originalDeployer: k } = e[E].contractData;
20
- if (!k) throw Error("No IDL configured for Solana program on this network");
21
- let A = new g(k), j = new g(O), M = v.map((e) => e.erc20TokenAddress), N = C ?? M[1];
22
- if (C && C !== M[1]) throw Error("Solana swap fee token must match the output token");
23
- let P = {
24
- mintFrom: M[0],
25
- mintTo: M[1],
26
- nullifierCount: await f(_, E, M, y),
18
+ var g = async (g, _, v, y, b, x, S, C, w) => {
19
+ let T = c(_), E = new h(t), { hinkalAddress: D, originalDeployer: O } = e[T].contractData;
20
+ if (!O) throw Error("No IDL configured for Solana program on this network");
21
+ let k = new h(O), A = new h(D), j = _.map((e) => e.erc20TokenAddress), M = S ?? j[1];
22
+ if (S && S !== j[1]) throw Error("Solana swap fee token must match the output token");
23
+ let N = {
24
+ mintFrom: j[0],
25
+ mintTo: j[1],
26
+ nullifierCount: await d(g, T, j, v),
27
27
  rootInsertCount: 2
28
- }, F = w ?? await m(E, N, M, a.Okx, [], void 0, P), I = y[1], L = Number(_.cacheDevice.get(o.SLIPPAGE_PERCENTAGE) ?? 0), R = v[1], z = r(R, I), B = Number(z) * L / 100;
29
- y[1] -= i(R, B.toFixed(R.decimals));
30
- let V = I * BigInt(F.variableRate ?? 0) / 10000n + F.flatFee;
31
- if (y[1] -= V, y[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
32
- let [H, U] = await Promise.all([_.getRandomRelay(E, !0), _.getEthereumAddressByChain(E)]);
33
- if (!H) throw Error(n.RELAYER_NOT_AVAILABLE);
34
- let W = ee(j, A, b), { remainingAccounts: G, hinkalInstructions: K } = p(x, W), q = l(j, A), J = u(j, A), Y = v[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new g(v[0].erc20TokenAddress), X = v[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new g(v[1].erc20TokenAddress), Z = {
35
- recipient: D.toString(),
36
- storageAccount: q.toString(),
37
- storageVault: J.toString(),
38
- swapperAccount: W.toString(),
39
- mintFrom: Y?.toString() ?? null,
40
- mintTo: X?.toString() ?? null,
41
- remainingAccounts: G.map((e) => ({
28
+ }, P = C ?? await p(T, M, j, a.Okx, [], void 0, N), F = v[1], I = Number(g.cacheDevice.get(o.SLIPPAGE_PERCENTAGE) ?? 0), L = _[1], R = r(L, F), z = Number(R) * I / 100;
29
+ v[1] -= i(L, z.toFixed(L.decimals));
30
+ let B = F * BigInt(P.variableRate ?? 0) / 10000n + P.flatFee;
31
+ if (v[1] -= B, v[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
32
+ let [V, H] = await Promise.all([g.getRandomRelay(T, !0), g.getEthereumAddressByChain(T)]);
33
+ if (!V) throw Error(n.RELAYER_NOT_AVAILABLE);
34
+ let { remainingAccounts: U, hinkalInstructions: W } = f(b, l(A, k, y)), G = _[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new h(_[0].erc20TokenAddress), K = _[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new h(_[1].erc20TokenAddress), q = {
35
+ recipient: E.toString(),
36
+ mintFrom: G?.toString() ?? null,
37
+ mintTo: K?.toString() ?? null,
38
+ remainingAccounts: U.map((e) => ({
42
39
  pubkey: e.pubkey.toString(),
43
40
  isSigner: e.isSigner,
44
41
  isWritable: e.isWritable
45
42
  })),
46
- addressLookupTableAccount: S
47
- }, Q = d(T, E, M, y, U, v), $ = K.map((e) => ({
43
+ addressLookupTableAccount: x
44
+ }, J = u(w, T, j, v, H, _), Y = W.map((e) => ({
48
45
  accountIndexes: [...e.accountIndexes],
49
46
  data: [...e.data],
50
47
  programIndex: e.programIndex
51
48
  }));
52
- return h(_, {
53
- chainId: E,
54
- mintAddresses: M,
55
- amountChanges: y,
56
- relayAddress: H,
57
- recipient: D.toString(),
58
- signer: H,
49
+ return m(g, {
50
+ chainId: T,
51
+ mintAddresses: j,
52
+ amountChanges: v,
53
+ relayAddress: V,
54
+ recipient: E.toString(),
55
+ signer: V,
59
56
  functionName: "swap",
60
- accounts: Z,
57
+ accounts: q,
61
58
  onChainCreation: [!1, !0],
62
- relayerFee: F.flatFee,
63
- variableRate: F.variableRate,
64
- hinkalInstructions: $,
65
- remainingAccounts: Z.remainingAccounts,
66
- swapperAccountSalt: b,
59
+ relayerFee: P.flatFee,
60
+ variableRate: P.variableRate,
61
+ hinkalInstructions: Y,
62
+ remainingAccounts: q.remainingAccounts,
63
+ swapperAccountSalt: y,
67
64
  submit: {
68
65
  mode: s.Relayer,
69
- adminData: Q
66
+ adminData: J
70
67
  }
71
68
  });
72
69
  };
73
70
  //#endregion
74
- export { _ as hinkalSolanaSwap };
71
+ export { g as hinkalSolanaSwap };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/solana-transact.types.cjs`),t=require(`../../functions/web3/events/getShieldedBalance.cjs`),n=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),r=require(`../../functions/snarkjs/common.snarkjs.cjs`),i=require(`../../functions/snarkjs/constructTxEnclave.cjs`),a=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),o=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),s=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=(e=[])=>e.map(({accountIndexes:e,data:t,programIndex:n})=>({accountIndexes:Buffer.from(e),data:Buffer.from(t),programIndex:n})),d=(e=[])=>e.map(({pubkey:e,isSigner:t,isWritable:n})=>({pubkey:new l.PublicKey(e),isSigner:t,isWritable:n})),f=async(e,n)=>{let{inputUtxos:r,chainId:i,mintAddresses:a,amountChanges:o,useBlockedUtxos:s}=n;return r||[...await t.addPaddingToUtxos(e,i,a,o,void 0,void 0,s)]},p=(e,t,r)=>{let{amountChanges:i,recipientAddress:a,recipientAmounts:o}=e;return n.buildOutputUtxos(t,r,i,a===void 0?void 0:[a],a===void 0?void 0:[o??[]])},m=async(e,t,n)=>{let{chainId:i,mintAddresses:o,relayAddress:l,recipient:m,relayerFee:h,variableRate:g,functionName:_,hinkalInstructions:v,remainingAccounts:y,swapperAccountSalt:b,onChainCreation:x,speculative:S}=t,C=await f(e,t),w=p(t,n,C),T=e.merkleTreeHinkalByChain[i],E=S?a.speculativeMerkleTree(T,C,S.pendingLeaves):T,D={tokenNumber:o.length,nullifierAmount:C[0].length,outputAmount:w[0].length},{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,commitmentValidationData:M,rootHashHinkalIndex:N,encryptedOutputs:P,onChainEncryptedOutput:F}=await s.constructSolanaZkProof(E,n,o,C,w,h??0n,g??0n,m,l,D,x,i,u(v),d(y),b,E!==T);return{args:{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,encryptedOutputs:P,relayerFee:(h??0n).toString(),..._===`swap`?{variableRate:(g??0n).toString(),onChainEncryptedOutput:F,onChainCreation:x??[],hinkalInstructions:v??[]}:{},dimensions:D,rootHashIndex:N.toString()},commitmentValidationData:M,notes:{inputNullifiers:C.flat().filter(e=>e.amount>0n).map(e=>e.getNullifier()),outCommitments:r.buildOutCommitments(w).flat(),encryptedOutputs:P.map(e=>c.ethers.hexlify(new Uint8Array(e)))}}},h=async(e,t,n)=>{let{inputUtxos:r}=t,{jobId:a,signedMessageHash:o}=await i.prepareSolanaTxEnclaveCall(e,{chainId:t.chainId,mintAddresses:t.mintAddresses,amountChanges:t.amountChanges,relayAddress:t.relayAddress,recipient:t.recipient,signer:t.signer,functionName:t.functionName,accounts:t.accounts,onChainCreation:t.onChainCreation,relayerFee:t.relayerFee,variableRate:t.variableRate,swapperAccountSalt:t.swapperAccountSalt,hinkalInstructions:t.hinkalInstructions,remainingAccounts:t.remainingAccounts,recipientAddress:t.recipientAddress,recipientAmounts:t.recipientAmounts,recipientAmount:t.recipientAmount,displayRecipient:t.displayRecipient,useBlockedUtxos:t.useBlockedUtxos,messageSeed:t.messageSeed,inputCommitments:t.speculative?void 0:i.collectInputCommitments(r),speculative:t.speculative},n),{R8:s,S:c}=n.signEddsa(BigInt(o));return{jobId:a,eddsaSignature:{R8:s,S:c}}},g=(t,n)=>{let{chainId:r,relayAddress:i,functionName:a,accounts:s,submit:c}=t;if(c.mode!==e.SolanaSubmitMode.Relayer)throw Error(`hinkalSolanaTransact: relayer submit expected`);return o.solanaTransactCallRelayer({chainId:r,relayAddress:i,functionName:a,args:n.args,accounts:s,commitmentValidationData:n.commitmentValidationData,adminData:c.adminData})},_=async(t,n)=>{if(t.submit.mode!==e.SolanaSubmitMode.Relayer)return n;let r=await g(t,n);return n.notes&&t.onTxSubmitLocally?.(n.notes),r},v=async(t,n)=>{if(n.userKeys&&!n.inputUtxos)throw Error(`hinkalSolanaTransact: userKeys requires explicit inputUtxos`);let r=n.userKeys??t.userKeys,{chainId:a,submit:o}=n;if(t.generateProofRemotely){let{jobId:s,eddsaSignature:c}=await h(t,n,r);if(o.mode===e.SolanaSubmitMode.Relayer)return i.finalizeSolanaTxEnclaveCallRelay(s,c,a,{adminData:o.adminData});let{solanaArgs:l,commitmentValidationData:u}=await i.finalizeSolanaTxEnclaveCall(s,c);return _(n,{args:l,commitmentValidationData:u})}return _(n,await m(t,n,r))};exports.hinkalSolanaTransact=v;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/solana-transact.types.cjs`),t=require(`../../functions/web3/events/getShieldedBalance.cjs`),n=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),r=require(`../../functions/snarkjs/common.snarkjs.cjs`),i=require(`../../functions/snarkjs/constructTxEnclave.cjs`),a=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),o=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),s=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=(e=[])=>e.map(({accountIndexes:e,data:t,programIndex:n})=>({accountIndexes:Buffer.from(e),data:Buffer.from(t),programIndex:n})),d=(e=[])=>e.map(({pubkey:e,isSigner:t,isWritable:n})=>({pubkey:new l.PublicKey(e),isSigner:t,isWritable:n})),f=async(e,n)=>{let{inputUtxos:r,chainId:i,mintAddresses:a,amountChanges:o,useBlockedUtxos:s,onChainCreation:c}=n;return r||[...await t.addPaddingToUtxos(e,i,a,o,void 0,void 0,s,c)]},p=(e,t,r)=>{let{amountChanges:i,recipientAddress:a,recipientAmounts:o}=e;return n.buildOutputUtxos(t,r,i,a===void 0?void 0:[a],a===void 0?void 0:[o??[]])},m=async(e,t,n)=>{let{chainId:i,mintAddresses:o,relayAddress:l,recipient:m,relayerFee:h,variableRate:g,functionName:_,hinkalInstructions:v,remainingAccounts:y,swapperAccountSalt:b,onChainCreation:x,speculative:S}=t,C=await f(e,t),w=p(t,n,C),T=e.merkleTreeHinkalByChain[i],E=S?a.speculativeMerkleTree(T,C,S.pendingLeaves):T,D={tokenNumber:o.length,nullifierAmount:C[0].length,outputAmount:w[0].length},{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,commitmentValidationData:M,rootHashHinkalIndex:N,encryptedOutputs:P,onChainEncryptedOutput:F}=await s.constructSolanaZkProof(E,n,o,C,w,h??0n,g??0n,m,l,D,x,i,u(v),d(y),b,E!==T);return{args:{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,encryptedOutputs:P,relayerFee:(h??0n).toString(),..._===`swap`?{variableRate:(g??0n).toString(),onChainEncryptedOutput:F,onChainCreation:x??[],hinkalInstructions:v??[]}:{},dimensions:D,rootHashIndex:N.toString()},commitmentValidationData:M,notes:{inputNullifiers:C.flat().filter(e=>e.amount>0n).map(e=>e.getNullifier()),outCommitments:r.buildOutCommitments(w).flat(),encryptedOutputs:P.map(e=>c.ethers.hexlify(new Uint8Array(e)))}}},h=async(e,t,n)=>{let{inputUtxos:r}=t,{jobId:a,signedMessageHash:o}=await i.prepareSolanaTxEnclaveCall(e,{chainId:t.chainId,mintAddresses:t.mintAddresses,amountChanges:t.amountChanges,relayAddress:t.relayAddress,recipient:t.recipient,signer:t.signer,functionName:t.functionName,accounts:t.accounts,onChainCreation:t.onChainCreation,relayerFee:t.relayerFee,variableRate:t.variableRate,swapperAccountSalt:t.swapperAccountSalt,hinkalInstructions:t.hinkalInstructions,remainingAccounts:t.remainingAccounts,recipientAddress:t.recipientAddress,recipientAmounts:t.recipientAmounts,recipientAmount:t.recipientAmount,displayRecipient:t.displayRecipient,useBlockedUtxos:t.useBlockedUtxos,messageSeed:t.messageSeed,inputCommitments:t.speculative?void 0:i.collectInputCommitments(r),speculative:t.speculative},n),{R8:s,S:c}=n.signEddsa(BigInt(o));return{jobId:a,eddsaSignature:{R8:s,S:c}}},g=(t,n)=>{let{chainId:r,relayAddress:i,functionName:a,accounts:s,submit:c}=t;if(c.mode!==e.SolanaSubmitMode.Relayer)throw Error(`hinkalSolanaTransact: relayer submit expected`);return o.solanaTransactCallRelayer({chainId:r,relayAddress:i,functionName:a,args:n.args,accounts:s,commitmentValidationData:n.commitmentValidationData,adminData:c.adminData})},_=async(t,n)=>{if(t.submit.mode!==e.SolanaSubmitMode.Relayer)return n;let r=await g(t,n);return n.notes&&t.onTxSubmitLocally?.(n.notes),r},v=async(t,n)=>{if(n.userKeys&&!n.inputUtxos)throw Error(`hinkalSolanaTransact: userKeys requires explicit inputUtxos`);let r=n.userKeys??t.userKeys,{chainId:a,submit:o}=n;if(t.generateProofRemotely){let{jobId:s,eddsaSignature:c}=await h(t,n,r);if(o.mode===e.SolanaSubmitMode.Relayer)return i.finalizeSolanaTxEnclaveCallRelay(s,c,a,{adminData:o.adminData});let{solanaArgs:l,commitmentValidationData:u}=await i.finalizeSolanaTxEnclaveCall(s,c);return _(n,{args:l,commitmentValidationData:u})}return _(n,await m(t,n,r))};exports.hinkalSolanaTransact=v;
@@ -18,8 +18,8 @@ var p = (e = []) => e.map(({ accountIndexes: e, data: t, programIndex: n }) => (
18
18
  isSigner: t,
19
19
  isWritable: n
20
20
  })), h = async (e, n) => {
21
- let { inputUtxos: r, chainId: i, mintAddresses: a, amountChanges: o, useBlockedUtxos: s } = n;
22
- return r || [...await t(e, i, a, o, void 0, void 0, s)];
21
+ let { inputUtxos: r, chainId: i, mintAddresses: a, amountChanges: o, useBlockedUtxos: s, onChainCreation: c } = n;
22
+ return r || [...await t(e, i, a, o, void 0, void 0, s, c)];
23
23
  }, g = (e, t, r) => {
24
24
  let { amountChanges: i, recipientAddress: a, recipientAmounts: o } = e;
25
25
  return n(t, r, i, a === void 0 ? void 0 : [a], a === void 0 ? void 0 : [o ?? []]);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`../../functions/utils/fees.utils.cjs`),d=require(`./hinkalSolanaTransact.cjs`);var f=async(f,p,m,h,g,_,v,y=!1)=>{if(y)throw Error(`onlyGasEstimate is not supported for Solana transfer`);if(!r.isValidPrivateAddress(h))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let b=o.validateAndGetChainId(p),x=[...m],S=p.map(e=>e.erc20TokenAddress);if(S.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let{originalDeployer:C}=e.networkRegistry[b].contractData;if(!C)throw Error(`missing data`);let w=g??S[0],T={mintTo:w,nullifierCount:await c.calculateSolanaNullifierCount(f,b,S,x),rootInsertCount:2},E=_??await l.getFeeStructure(b,w,S,i.ExternalActionId.Transact,[],5n,T);E.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let D=-x[0],O=u.calculateTotalFee(D,E);x[0]-=O;let[k,A]=await Promise.all([f.getRandomRelay(b,!0),f.getEthereumAddressByChain(b)]);if(!k)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j={recipient:k,mint:S[0]===`11111111111111111111111111111111`?void 0:S[0]},M=s.constructAdminData(v,b,S,x,A);return d.hinkalSolanaTransact(f,{chainId:b,mintAddresses:S,amountChanges:x,relayAddress:k,recipient:t.solanaNativeAddress,signer:k,functionName:`transfer`,accounts:j,relayerFee:O,recipientAddress:h,recipientAmounts:[D],submit:{mode:a.SolanaSubmitMode.Relayer,adminData:M}})};exports.hinkalSolanaTransfer=f;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`../../functions/utils/fees.utils.cjs`),d=require(`./hinkalSolanaTransact.cjs`);var f=async(f,p,m,h,g,_,v,y=!1)=>{if(y)throw Error(`onlyGasEstimate is not supported for Solana transfer`);if(!r.isValidPrivateAddress(h))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let b=o.validateAndGetChainId(p),x=[...m],S=p.map(e=>e.erc20TokenAddress);if(S.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let{originalDeployer:C}=e.networkRegistry[b].contractData;if(!C)throw Error(`missing data`);let w=g??S[0],T={mintTo:w,nullifierCount:await c.calculateSolanaNullifierCount(f,b,S,x),rootInsertCount:2},E=_??await l.getFeeStructure(b,w,S,i.ExternalActionId.Transact,[],25n,T);E.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let D=-x[0],O=u.calculateTotalFee(D,E);x[0]-=O;let[k,A]=await Promise.all([f.getRandomRelay(b,!0),f.getEthereumAddressByChain(b)]);if(!k)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j={recipient:k,mint:S[0]===`11111111111111111111111111111111`?void 0:S[0]},M=s.constructAdminData(v,b,S,x,A);return d.hinkalSolanaTransact(f,{chainId:b,mintAddresses:S,amountChanges:x,relayAddress:k,recipient:t.solanaNativeAddress,signer:k,functionName:`transfer`,accounts:j,relayerFee:O,recipientAddress:h,recipientAmounts:[D],submit:{mode:a.SolanaSubmitMode.Relayer,adminData:M}})};exports.hinkalSolanaTransfer=f;
@@ -24,7 +24,7 @@ var p = async (p, m, h, g, _, v, y, b = !1) => {
24
24
  mintTo: T,
25
25
  nullifierCount: await l(p, x, C, S),
26
26
  rootInsertCount: 2
27
- }, D = v ?? await u(x, T, C, a.Transact, [], 5n, E);
27
+ }, D = v ?? await u(x, T, C, a.Transact, [], 25n, E);
28
28
  D.variableRate ||= t;
29
29
  let O = -S[0], k = d(O, D);
30
30
  S[0] -= k;
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S,y)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
@@ -39,7 +39,7 @@ var h = 2, g = 6, _ = (e, t) => {
39
39
  spendingPublicKey: e.getSpendingKeyPair().pubSpendingBJJPoint
40
40
  }))];
41
41
  }, y = async (e, r, i) => {
42
- let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
42
+ let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S, y)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
43
43
  return {
44
44
  zkCallData: L,
45
45
  circomData: R,
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/addresses.cjs`),r=require(`../../functions/utils/tron.utils.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/transact.types.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`./hinkalTransact.cjs`),d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var p=async(p,m,h,g,_,v,y)=>{let b=o.validateAndGetChainId(m);if(!n.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let x=r.addressToHexFormat(await p.getEthereumAddressByChain(b)),S=m.map(e=>e.erc20TokenAddress),C=await s.modifyVolatileTokenAmountChanges(b,m,h),w=v??await l.getFeeStructure(b,_,S,i.ExternalActionId.Transact,[],5n);w.variableRate||=e.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let T=m[0];if(!T)throw Error(`Transfer Action: No Token Found`);let E=-C[0],D=await d.calculateModifiedFeeStructure(b,T,E,w);await f.mergeWithFeeStructure(b,S,C,D);let O=await p.getRandomRelay(b,!0);if(!O)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=c.constructAdminData(y,b,S,C,x);return u.hinkalTransact(p,{chainId:b,erc20Addresses:S,amountChanges:C,externalAddress:O,feeStructure:D,relay:O,recipientAddress:[g],recipientAmounts:[S.map((e,t)=>t===0?E:0n)],submit:{mode:a.SubmitMode.Relayer,adminData:k}})};exports.hinkalTransfer=p;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/tron.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/transact.types.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`./hinkalTransact.cjs`),d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var p=async(p,m,h,g,_,v,y)=>{let b=o.validateAndGetChainId(m);if(!r.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let x=n.addressToHexFormat(await p.getEthereumAddressByChain(b)),S=m.map(e=>e.erc20TokenAddress),C=await s.modifyVolatileTokenAmountChanges(b,m,h),w=v??await l.getFeeStructure(b,_,S,i.ExternalActionId.Transact,[],25n);w.variableRate||=e.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let T=m[0];if(!T)throw Error(`Transfer Action: No Token Found`);let E=-C[0],D=await d.calculateModifiedFeeStructure(b,T,E,w);await f.mergeWithFeeStructure(b,S,C,D);let O=await p.getRandomRelay(b,!0);if(!O)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=c.constructAdminData(y,b,S,C,x);return u.hinkalTransact(p,{chainId:b,erc20Addresses:S,amountChanges:C,externalAddress:O,feeStructure:D,relay:O,recipientAddress:[g],recipientAmounts:[S.map((e,t)=>t===0?E:0n)],submit:{mode:a.SubmitMode.Relayer,adminData:k}})};exports.hinkalTransfer=p;
@@ -1,7 +1,7 @@
1
1
  import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as e } from "../../constants/protocol.constants.mjs";
2
2
  import { transactionErrorCodes as t } from "../../error-handling/error-codes.constants.mjs";
3
- import { isValidPrivateAddress as n } from "../../functions/utils/addresses.mjs";
4
- import { addressToHexFormat as r } from "../../functions/utils/tron.utils.mjs";
3
+ import { addressToHexFormat as n } from "../../functions/utils/tron.utils.mjs";
4
+ import { isValidPrivateAddress as r } from "../../functions/utils/addresses.mjs";
5
5
  import { ExternalActionId as i } from "../../types/external-action.types.mjs";
6
6
  import { SubmitMode as a } from "../../types/transact.types.mjs";
7
7
  import { validateAndGetChainId as o } from "../../functions/utils/token-check.utils.mjs";
@@ -15,8 +15,8 @@ import { mergeWithFeeStructure as f } from "../../functions/pre-transaction/merg
15
15
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalTransfer.ts
16
16
  var p = async (p, m, h, g, _, v, y) => {
17
17
  let b = o(m);
18
- if (!n(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
19
- let x = r(await p.getEthereumAddressByChain(b)), S = m.map((e) => e.erc20TokenAddress), C = await s(b, m, h), w = v ?? await l(b, _, S, i.Transact, [], 5n);
18
+ if (!r(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
19
+ let x = n(await p.getEthereumAddressByChain(b)), S = m.map((e) => e.erc20TokenAddress), C = await s(b, m, h), w = v ?? await l(b, _, S, i.Transact, [], 25n);
20
20
  w.variableRate ||= e;
21
21
  let T = m[0];
22
22
  if (!T) throw Error("Transfer Action: No Token Found");
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/encodeTokenWithId.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../types/solana-transact.types.cjs`),u=require(`../../error-handling/logger.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/constructTxEnclave.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`./hinkalTransact.cjs`),h=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`./hinkalSolanaTransact.cjs`);var v=6,y=async(t,r,o,c)=>{let l=o.erc20TokenAddress,d=await t.getEthereumAddressByChain(r),[m,h]=await Promise.all([p.getFeeStructure(r,l,[l],s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!h)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await f.prepareStuckWithdrawEnclaveCall(t,{chainId:r,hinkalAddress:e.networkRegistry[r].contractData.hinkalAddress,erc20Address:l,externalAddress:a.addressToHexFormat(c),relay:h,feeStructure:m,hashedEthereumAddress:i.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:n,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await f.finalizeTxEnclaveCallRelay(n,{R8:a,S:o},r))}catch(e){if(!_.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},b=async(e,t,n)=>{let r=await Promise.all(Array.from({length:v},async(r,i)=>{let a=i+1,o=await p.getFeeStructure(e,t,[t],s.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},x=async(e,t,r,a)=>{let o=r.erc20TokenAddress,[s,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),b(t,o,a)]);if(!c)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await f.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:o,recipient:a,relayAddress:c,accounts:{recipient:a,mint:o===`11111111111111111111111111111111`?void 0:o},feeStructures:l,hashedEthereumAddress:i.hashEthereumAddress(s)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await f.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},S=async(e,t,r,i,o)=>{let l=[r.erc20TokenAddress],u=r.erc20TokenAddress,[d,f]=await Promise.all([p.getFeeStructure(t,u,l,s.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a.addressToHexFormat(o),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await g.mergeWithFeeStructure(t,l,y,d),{tx:await m.hinkalTransact(e,{chainId:t,erc20Addresses:l,amountChanges:y,externalAddress:_,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{h.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:c.SubmitMode.Relayer}}),amountToRecipient:v}},C=async(t,r,i,a,o,c)=>{let u=[i.erc20TokenAddress],{originalDeployer:d}=e.networkRegistry[r].contractData;if(!d)throw Error(`missing data`);let f=i.erc20TokenAddress,[m,g]=await Promise.all([p.getFeeStructure(r,f,u,s.ExternalActionId.Transact,void 0,void 0,{mintTo:u[0],recipient:o,nullifierCount:c}),t.getRandomRelay(r,!0)]);if(!g)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let v=a-m.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${m.flatFee}`);let y=[-v];return y[0]-=m.flatFee,{tx:await _.hinkalSolanaTransact(t,{chainId:r,mintAddresses:u,amountChanges:y,relayAddress:g,recipient:o,signer:g,functionName:`transact`,accounts:{recipient:o,mint:u[0]===`11111111111111111111111111111111`?void 0:u[0]},relayerFee:m.flatFee,variableRate:m.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:n,encryptedOutputs:i})=>{h.updateHinkal(r,t,e,n,i)},submit:{mode:l.SolanaSubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?C(t,n,r,i,a,o):S(t,n,r,i,a),T=async(i,a,s)=>{let c=d.validateAndGetChainId([a]);if(i.generateProofRemotely){let t=e.isSolanaLike(c)?await x(i,c,a,s):await y(i,c,a,s);if(!t.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return t}let l=[],f=r.normalizeTokenAddress(c,a.erc20TokenAddress);await i.resetMerkleTreesIfNecessary([c]);let p=((await o.getInputUtxoAndBalancePerToken({hinkal:i,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:c}))?.get(f)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=v){let n=p.slice(e,e+v),r=t.countTotalAmountInUtxos(n);try{let{tx:e}=await w(i,c,a,r,s,n.length);l.push(e)}catch(e){if(!l.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${l.length}/${Math.ceil(p.length/v)})`,e),l}}return l};exports.hinkalWithdrawStuckUtxos=T;
1
+ const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../functions/utils/amounts.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/encodeTokenWithId.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/transact.types.cjs`),d=require(`../../types/solana-transact.types.cjs`),f=require(`../../functions/utils/token-check.utils.cjs`),p=require(`../../functions/snarkjs/constructTxEnclave.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`./hinkalTransact.cjs`),g=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),v=require(`./hinkalSolanaTransact.cjs`);var y=6,b=async(t,n,i,c)=>{let u=i.erc20TokenAddress,d=await t.getEthereumAddressByChain(n),[f,h]=await Promise.all([m.getFeeStructure(n,u,[u],l.ExternalActionId.Transact),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await p.prepareStuckWithdrawEnclaveCall(t,{chainId:n,hinkalAddress:e.networkRegistry[n].contractData.hinkalAddress,erc20Address:u,externalAddress:o.addressToHexFormat(c),relay:h,feeStructure:f,hashedEthereumAddress:s.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:r,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await p.finalizeTxEnclaveCallRelay(r,{R8:a,S:o},n))}catch(e){if(!_.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},x=async(e,t,n)=>{let r=await Promise.all(Array.from({length:y},async(r,i)=>{let a=i+1,o=await m.getFeeStructure(e,t,[t],l.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},S=async(e,t,n,i)=>{let a=n.erc20TokenAddress,[o,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),x(t,a,i)]);if(!c)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await p.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:a,recipient:i,relayAddress:c,accounts:{recipient:i,mint:a===`11111111111111111111111111111111`?void 0:a},feeStructures:l,hashedEthereumAddress:s.hashEthereumAddress(o)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await p.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},C=async(e,t,n,i,a)=>{let s=[n.erc20TokenAddress],c=n.erc20TokenAddress,[d,f]=await Promise.all([m.getFeeStructure(t,c,s,l.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let p=o.addressToHexFormat(a),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await _.mergeWithFeeStructure(t,s,y,d),{tx:await h.hinkalTransact(e,{chainId:t,erc20Addresses:s,amountChanges:y,externalAddress:p,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{g.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:u.SubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,i,a,o,s)=>{let c=[i.erc20TokenAddress],{originalDeployer:u}=e.networkRegistry[n].contractData;if(!u)throw Error(`missing data`);let f=i.erc20TokenAddress,[p,h]=await Promise.all([m.getFeeStructure(n,f,c,l.ExternalActionId.Transact,void 0,void 0,{mintTo:c[0],recipient:o,nullifierCount:s}),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a-p.flatFee;if(_<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);let y=[-_];return y[0]-=p.flatFee,{tx:await v.hinkalSolanaTransact(t,{chainId:n,mintAddresses:c,amountChanges:y,relayAddress:h,recipient:o,signer:h,functionName:`transact`,accounts:{recipient:o,mint:c[0]===`11111111111111111111111111111111`?void 0:c[0]},relayerFee:p.flatFee,variableRate:p.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:r,encryptedOutputs:i})=>{g.updateHinkal(n,t,e,r,i)},submit:{mode:d.SolanaSubmitMode.Relayer}}),amountToRecipient:_}},T=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?w(t,n,r,i,a,o):C(t,n,r,i,a),E=async(e,n,r)=>{try{return((await e.getStuckShieldedBalances([n])).get(n)??[]).find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,r.erc20TokenAddress))?.balance??0n}catch(e){return a.Logger.error(`Failed to read stuck balance after an empty stuck withdrawal`,e),0n}},D=async(t,o,s)=>{let l=f.validateAndGetChainId([o]);if(t.generateProofRemotely){let n=e.isSolanaLike(l)?await S(t,l,o,s):await b(t,l,o,s);if(!n.length)throw await E(t,l,o)>0n?Error(r.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.INSUFFICIENT_FUNDS_FOR_RECOVERY_FEES):Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return n}let u=[],d=i.normalizeTokenAddress(l,o.erc20TokenAddress);await t.resetMerkleTreesIfNecessary([l]);let p=((await c.getInputUtxoAndBalancePerToken({hinkal:t,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:l}))?.get(d)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=y){let r=p.slice(e,e+y),i=n.countTotalAmountInUtxos(r);try{let{tx:e}=await T(t,l,o,i,s,r.length);u.push(e)}catch(e){if(!u.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${u.length}/${Math.ceil(p.length/y)})`,e),u}}return u};exports.hinkalWithdrawStuckUtxos=D;