@gurge/sdk 0.3.13 → 0.3.15

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 (321) hide show
  1. package/README.md +184 -32
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +0 -5
  4. package/common/src/API/API.mjs +114 -119
  5. package/common/src/API/TokenCallsCachedHelper.cjs +1 -0
  6. package/common/src/API/TokenCallsCachedHelper.d.ts +15 -0
  7. package/common/src/API/TokenCallsCachedHelper.mjs +62 -0
  8. package/common/src/API/callLifiAPI.cjs +1 -1
  9. package/common/src/API/callLifiAPI.mjs +2 -7
  10. package/common/src/API/enclaveUtxoCalls.cjs +1 -1
  11. package/common/src/API/enclaveUtxoCalls.mjs +6 -7
  12. package/common/src/API/getServerURL.cjs +1 -1
  13. package/common/src/API/getServerURL.mjs +2 -2
  14. package/common/src/API/scheduled-transactions-calls.cjs +1 -1
  15. package/common/src/API/scheduled-transactions-calls.mjs +3 -3
  16. package/common/src/API/token-calls.cjs +1 -1
  17. package/common/src/API/token-calls.d.ts +1 -1
  18. package/common/src/API/token-calls.mjs +3 -13
  19. package/common/src/constants/chains.constants.cjs +1 -1
  20. package/common/src/constants/chains.constants.d.ts +1 -0
  21. package/common/src/constants/chains.constants.mjs +3 -2
  22. package/common/src/constants/deploy-data/mergeDeployData.cjs +1 -1
  23. package/common/src/constants/deploy-data/mergeDeployData.mjs +11 -10
  24. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  25. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +60 -3517
  26. package/common/src/constants/events.constants.cjs +1 -1
  27. package/common/src/constants/events.constants.mjs +3 -1
  28. package/common/src/constants/index.cjs +1 -1
  29. package/common/src/constants/index.d.ts +0 -3
  30. package/common/src/constants/index.mjs +0 -3
  31. package/common/src/constants/lifi.constants.cjs +1 -1
  32. package/common/src/constants/lifi.constants.mjs +3 -6
  33. package/common/src/constants/mediaUrls.constants.d.ts +0 -1
  34. package/common/src/constants/rewards.constants.d.ts +0 -2
  35. package/common/src/constants/server.constants.cjs +1 -1
  36. package/common/src/constants/server.constants.d.ts +1 -5
  37. package/common/src/constants/server.constants.mjs +3 -8
  38. package/common/src/constants/vite.constants.cjs +1 -1
  39. package/common/src/constants/vite.constants.d.ts +1 -0
  40. package/common/src/constants/vite.constants.mjs +3 -3
  41. package/common/src/crypto/BabyJubRN.cjs +1 -0
  42. package/common/src/crypto/BabyJubRN.d.ts +18 -0
  43. package/common/src/crypto/BabyJubRN.mjs +33 -0
  44. package/common/src/crypto/babyJub.cjs +1 -1
  45. package/common/src/crypto/babyJub.mjs +7 -5
  46. package/common/src/crypto/poseidon.cjs +1 -1
  47. package/common/src/crypto/poseidon.mjs +22 -12
  48. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  49. package/common/src/data-structures/Hinkal/Hinkal.d.ts +10 -6
  50. package/common/src/data-structures/Hinkal/Hinkal.mjs +104 -113
  51. package/common/src/data-structures/Hinkal/IHinkal.d.ts +9 -5
  52. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  53. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +37 -37
  54. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  55. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.d.ts +2 -2
  56. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +8 -5
  57. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  58. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.d.ts +2 -2
  59. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +4 -1
  60. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
  61. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +1 -1
  62. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  63. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +4 -4
  64. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  65. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +3 -3
  66. package/common/src/data-structures/Hinkal/hinkalProoflessDepositViaWrapper.cjs +1 -1
  67. package/common/src/data-structures/Hinkal/hinkalProoflessDepositViaWrapper.mjs +15 -15
  68. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  69. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
  70. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +4 -1
  71. package/common/src/data-structures/Hinkal/index.d.ts +0 -1
  72. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
  73. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
  74. package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  75. package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +29 -31
  76. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
  77. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +7 -6
  78. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +1 -1
  79. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +18 -18
  80. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
  81. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +43 -43
  82. package/common/src/data-structures/TokenDBs/PublicTokensDB.cjs +1 -1
  83. package/common/src/data-structures/TokenDBs/PublicTokensDB.mjs +23 -20
  84. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +1 -0
  85. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.d.ts +9 -0
  86. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +41 -0
  87. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +1 -0
  88. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +9 -0
  89. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +47 -0
  90. package/common/src/data-structures/TokenDBs/index.cjs +1 -1
  91. package/common/src/data-structures/TokenDBs/index.d.ts +2 -0
  92. package/common/src/data-structures/TokenDBs/index.mjs +2 -0
  93. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +3 -3
  94. package/common/src/data-structures/event-service/evm/ClientBlockchainEventEmitter.d.ts +2 -2
  95. package/common/src/data-structures/event-service/solana/ClientSolanaBlockchainEventEmitter.d.ts +2 -2
  96. package/common/src/data-structures/event-service/solana/SolanaBlockchainEventEmitter.d.ts +3 -3
  97. package/common/src/data-structures/index.d.ts +1 -0
  98. package/common/src/data-structures/private-balances/BalanceChangedHandler.cjs +1 -0
  99. package/common/src/data-structures/private-balances/BalanceChangedHandler.d.ts +9 -0
  100. package/common/src/data-structures/private-balances/BalanceChangedHandler.mjs +12 -0
  101. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -0
  102. package/common/src/data-structures/{Hinkal → private-balances}/HinkalPrivateBalanceController.d.ts +4 -2
  103. package/common/src/data-structures/{Hinkal → private-balances}/HinkalPrivateBalanceController.mjs +34 -90
  104. package/common/src/data-structures/private-balances/index.cjs +1 -0
  105. package/common/src/data-structures/private-balances/index.d.ts +3 -0
  106. package/common/src/data-structures/private-balances/index.mjs +3 -0
  107. package/common/src/data-structures/private-balances/privateBalancesReducer.cjs +1 -0
  108. package/common/src/data-structures/private-balances/privateBalancesReducer.d.ts +2 -0
  109. package/common/src/data-structures/private-balances/privateBalancesReducer.mjs +73 -0
  110. package/common/src/data-structures/token-price-fetcher/TokenChecker.cjs +1 -1
  111. package/common/src/data-structures/token-price-fetcher/TokenChecker.mjs +5 -5
  112. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  113. package/common/src/error-handling/error-codes.constants.d.ts +2 -5
  114. package/common/src/error-handling/error-codes.constants.mjs +3 -6
  115. package/common/src/externalABIs/index.cjs +1 -1
  116. package/common/src/externalABIs/index.d.ts +1 -36
  117. package/common/src/externalABIs/index.mjs +3 -5
  118. package/common/src/functions/index.cjs +1 -1
  119. package/common/src/functions/index.d.ts +0 -1
  120. package/common/src/functions/index.mjs +4 -5
  121. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  122. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +37 -36
  123. package/common/src/functions/pre-transaction/merge-with-fee-structure-emporium.cjs +1 -1
  124. package/common/src/functions/pre-transaction/merge-with-fee-structure-emporium.mjs +4 -4
  125. package/common/src/functions/pre-transaction/sendV0Transaction.cjs +2 -2
  126. package/common/src/functions/pre-transaction/sendV0Transaction.mjs +54 -42
  127. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  128. package/common/src/functions/private-wallet/emporium.helpers.mjs +17 -17
  129. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  130. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +16 -16
  131. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  132. package/common/src/functions/snarkjs/common.snarkjs.d.ts +9 -1
  133. package/common/src/functions/snarkjs/common.snarkjs.mjs +13 -9
  134. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.cjs +1 -1
  135. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.d.ts +2 -3
  136. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.mjs +49 -32
  137. package/common/src/functions/utils/abi.utils.cjs +1 -0
  138. package/common/src/functions/utils/abi.utils.d.ts +3 -0
  139. package/common/src/functions/utils/abi.utils.mjs +5 -0
  140. package/common/src/functions/utils/bigint-math.utils.cjs +1 -0
  141. package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
  142. package/common/src/functions/utils/bigint-math.utils.mjs +12 -0
  143. package/common/src/functions/utils/dispatchBalanceRefreshes.cjs +1 -1
  144. package/common/src/functions/utils/dispatchBalanceRefreshes.mjs +1 -1
  145. package/common/src/functions/utils/enclaveHandshakeService.cjs +1 -0
  146. package/common/src/functions/utils/enclaveHandshakeService.d.ts +10 -0
  147. package/common/src/functions/utils/enclaveHandshakeService.mjs +22 -0
  148. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  149. package/common/src/functions/utils/encryptInputForEnclave.mjs +23 -25
  150. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  151. package/common/src/functions/utils/erc20tokenFunctions.d.ts +4 -1
  152. package/common/src/functions/utils/erc20tokenFunctions.mjs +28 -12
  153. package/common/src/functions/utils/evmNetworkFunctions.cjs +1 -1
  154. package/common/src/functions/utils/evmNetworkFunctions.d.ts +1 -0
  155. package/common/src/functions/utils/evmNetworkFunctions.mjs +4 -0
  156. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  157. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +10 -10
  158. package/common/src/functions/utils/index.cjs +1 -1
  159. package/common/src/functions/utils/index.d.ts +4 -0
  160. package/common/src/functions/utils/index.mjs +4 -0
  161. package/common/src/functions/utils/map.utils.cjs +1 -0
  162. package/common/src/functions/utils/map.utils.d.ts +1 -0
  163. package/common/src/functions/utils/map.utils.mjs +9 -0
  164. package/common/src/functions/utils/mutexes.utils.cjs +1 -1
  165. package/common/src/functions/utils/mutexes.utils.d.ts +2 -2
  166. package/common/src/functions/utils/mutexes.utils.mjs +4 -3
  167. package/common/src/functions/utils/process.utils.cjs +1 -1
  168. package/common/src/functions/utils/process.utils.d.ts +1 -0
  169. package/common/src/functions/utils/process.utils.mjs +7 -2
  170. package/common/src/functions/utils/tron.utils.cjs +1 -1
  171. package/common/src/functions/utils/tron.utils.d.ts +1 -0
  172. package/common/src/functions/utils/tron.utils.mjs +1 -1
  173. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  174. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +26 -26
  175. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  176. package/common/src/functions/web3/events/getShieldedBalance.mjs +29 -11
  177. package/common/src/functions/web3/events/index.cjs +1 -1
  178. package/common/src/functions/web3/events/index.d.ts +0 -1
  179. package/common/src/functions/web3/events/index.mjs +0 -1
  180. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  181. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +4 -4
  182. package/common/src/functions/web3/functionCalls/waitForErc20Approvals.cjs +1 -1
  183. package/common/src/functions/web3/functionCalls/waitForErc20Approvals.mjs +10 -10
  184. package/common/src/functions/web3/index.cjs +1 -1
  185. package/common/src/functions/web3/index.mjs +0 -1
  186. package/common/src/functions/web3/lifiAPI.cjs +1 -1
  187. package/common/src/functions/web3/lifiAPI.mjs +7 -38
  188. package/common/src/functions/web3/oneInchAPI.cjs +1 -1
  189. package/common/src/functions/web3/oneInchAPI.mjs +10 -10
  190. package/common/src/functions/web3/uniswapAPI.cjs +1 -1
  191. package/common/src/functions/web3/uniswapAPI.mjs +16 -16
  192. package/common/src/mutexes/chainBalanceRwLock.cjs +1 -0
  193. package/common/src/mutexes/chainBalanceRwLock.d.ts +18 -0
  194. package/common/src/mutexes/chainBalanceRwLock.mjs +31 -0
  195. package/common/src/mutexes/index.d.ts +1 -0
  196. package/common/src/types/cache.types.cjs +1 -1
  197. package/common/src/types/cache.types.d.ts +2 -0
  198. package/common/src/types/cache.types.mjs +1 -1
  199. package/common/src/types/commitments.types.d.ts +0 -10
  200. package/common/src/types/hinkal.types.cjs +1 -1
  201. package/common/src/types/hinkal.types.d.ts +4 -7
  202. package/common/src/types/hinkal.types.mjs +1 -1
  203. package/common/src/types/index.cjs +1 -1
  204. package/common/src/types/index.d.ts +0 -1
  205. package/common/src/types/index.mjs +1 -2
  206. package/common/src/types/new-rewards.type.cjs +1 -1
  207. package/common/src/types/new-rewards.type.d.ts +0 -1
  208. package/common/src/types/new-rewards.type.mjs +1 -1
  209. package/common/src/types/scheduled-transactions.types.d.ts +5 -0
  210. package/common/src/webworker/logError-BTCYh_YM.js +2 -0
  211. package/common/src/webworker/package.json +34 -4
  212. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  213. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  214. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  215. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  216. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  217. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  218. package/common/src/webworker/viteWorkerURL.constant.cjs +4 -4
  219. package/common/src/webworker/viteWorkerURL.constant.mjs +4 -4
  220. package/common/src/webworker/workerFactory.cjs +1 -1
  221. package/common/src/webworker/workerFactory.d.ts +1 -0
  222. package/common/src/webworker/workerFactory.mjs +3 -2
  223. package/common/src/webworker/workerProxy-DPeuP2Mg.js +1 -0
  224. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  225. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  226. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  227. package/functions/index.cjs +1 -1
  228. package/functions/index.mjs +0 -4
  229. package/functions/integrations/index.cjs +1 -1
  230. package/functions/integrations/index.mjs +0 -4
  231. package/functions/integrations/swapApi.cjs +1 -1
  232. package/functions/integrations/swapApi.d.ts +21 -7
  233. package/functions/integrations/swapApi.mjs +29 -10
  234. package/functions/utils/refreshBalance.cjs +1 -1
  235. package/functions/utils/refreshBalance.mjs +2 -2
  236. package/index.cjs +1 -1
  237. package/index.mjs +4 -8
  238. package/internal/token.utils.cjs +1 -1
  239. package/internal/token.utils.d.ts +1 -3
  240. package/internal/token.utils.mjs +10 -21
  241. package/package.json +34 -4
  242. package/react-native/HinkalWebViewWorker.cjs +98 -0
  243. package/react-native/HinkalWebViewWorker.d.ts +2 -0
  244. package/react-native/HinkalWebViewWorker.mjs +174 -0
  245. package/react-native/bridge/HinkalRNWorker.cjs +1 -0
  246. package/react-native/bridge/HinkalRNWorker.d.ts +13 -0
  247. package/react-native/bridge/HinkalRNWorker.mjs +26 -0
  248. package/react-native/bridge/serialization.utils.cjs +1 -0
  249. package/react-native/bridge/serialization.utils.d.ts +3 -0
  250. package/react-native/bridge/serialization.utils.mjs +13 -0
  251. package/react-native/metro-config.js +90 -0
  252. package/react-native/shims/circomlibjs-hinkal-fork.js +14 -0
  253. package/react-native/shims/circomlibjs.js +15 -0
  254. package/react-native/shims/constants.js +7 -0
  255. package/react-native/shims/crypto.js +103 -0
  256. package/react-native/shims/ffjavascript.js +5 -0
  257. package/react-native/shims/fs.js +5 -0
  258. package/react-native/shims/globals.js +10 -0
  259. package/react-native/shims/idb-keyval.js +75 -0
  260. package/react-native/shims/multiformats.js +1 -0
  261. package/react-native/shims/os.js +7 -0
  262. package/react-native/shims/path.js +11 -0
  263. package/react-native/shims/readline.js +6 -0
  264. package/react-native/shims/snarkjs.js +21 -0
  265. package/react-native/shims/url.js +5 -0
  266. package/react-native/shims/web-worker.js +7 -0
  267. package/react-native/shims/worker_threads.js +6 -0
  268. package/react-native/shims.d.ts +16 -0
  269. package/react-native/workerCDNUrls.cjs +1 -0
  270. package/react-native/workerCDNUrls.d.ts +2 -0
  271. package/react-native/workerCDNUrls.mjs +14 -0
  272. package/sdk/package.json.cjs +1 -0
  273. package/sdk/package.json.mjs +130 -0
  274. package/services/Hinkal.cjs +1 -1
  275. package/services/Hinkal.d.ts +6 -5
  276. package/services/Hinkal.mjs +50 -48
  277. package/types/IHinkal.d.ts +6 -5
  278. package/common/src/API/kycCalls.cjs +0 -1
  279. package/common/src/API/kycCalls.d.ts +0 -14
  280. package/common/src/API/kycCalls.mjs +0 -26
  281. package/common/src/constants/assets.constants.cjs +0 -1
  282. package/common/src/constants/assets.constants.d.ts +0 -13
  283. package/common/src/constants/assets.constants.mjs +0 -4
  284. package/common/src/constants/kyc.constants.cjs +0 -1
  285. package/common/src/constants/kyc.constants.d.ts +0 -29
  286. package/common/src/constants/kyc.constants.mjs +0 -126
  287. package/common/src/constants/token.limits.constants.cjs +0 -1
  288. package/common/src/constants/token.limits.constants.d.ts +0 -5
  289. package/common/src/constants/token.limits.constants.mjs +0 -3
  290. package/common/src/data-structures/Hinkal/HinkalPrivateBalanceController.cjs +0 -1
  291. package/common/src/data-structures/Hinkal/hinkalGetZkMeProvider.cjs +0 -1
  292. package/common/src/data-structures/Hinkal/hinkalGetZkMeProvider.d.ts +0 -28
  293. package/common/src/data-structures/Hinkal/hinkalGetZkMeProvider.mjs +0 -22
  294. package/common/src/externalABIs/BabPassport.json.cjs +0 -1
  295. package/common/src/externalABIs/BabPassport.json.mjs +0 -20
  296. package/common/src/externalABIs/GalxePassport.json.cjs +0 -1
  297. package/common/src/externalABIs/GalxePassport.json.mjs +0 -37
  298. package/common/src/functions/kyc/aiPriseHelper.d.ts +0 -0
  299. package/common/src/functions/kyc/checkTokenLimitsUSD.cjs +0 -1
  300. package/common/src/functions/kyc/checkTokenLimitsUSD.d.ts +0 -1
  301. package/common/src/functions/kyc/checkTokenLimitsUSD.mjs +0 -29
  302. package/common/src/functions/kyc/index.cjs +0 -1
  303. package/common/src/functions/kyc/index.d.ts +0 -3
  304. package/common/src/functions/kyc/index.mjs +0 -3
  305. package/common/src/functions/kyc/openDefaultPassportWindow.cjs +0 -1
  306. package/common/src/functions/kyc/openDefaultPassportWindow.d.ts +0 -1
  307. package/common/src/functions/kyc/openDefaultPassportWindow.mjs +0 -7
  308. package/common/src/functions/kyc/passportHelper.cjs +0 -1
  309. package/common/src/functions/kyc/passportHelper.d.ts +0 -3
  310. package/common/src/functions/kyc/passportHelper.mjs +0 -1
  311. package/common/src/functions/kyc/zkMeHelper.cjs +0 -1
  312. package/common/src/functions/kyc/zkMeHelper.d.ts +0 -4
  313. package/common/src/functions/kyc/zkMeHelper.mjs +0 -42
  314. package/common/src/functions/web3/events/balanceChangedHandler.cjs +0 -1
  315. package/common/src/functions/web3/events/balanceChangedHandler.d.ts +0 -5
  316. package/common/src/functions/web3/events/balanceChangedHandler.mjs +0 -21
  317. package/common/src/types/kyc.types.cjs +0 -1
  318. package/common/src/types/kyc.types.d.ts +0 -41
  319. package/common/src/types/kyc.types.mjs +0 -10
  320. package/common/src/webworker/logError-CmD5XYI9.js +0 -2
  321. package/common/src/webworker/workerProxy-C49-EPZz.js +0 -1
@@ -1,19 +1,19 @@
1
1
  import { chainIds as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
2
  import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
3
- import { gasErrorCodes as r, transactionErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
4
- import { getAmountInToken as a } from "../../functions/web3/etherFunctions.mjs";
5
- import { waitLittle as o } from "../../functions/utils/time.utils.mjs";
6
- import { ErrorWithRelayerTransaction as s } from "../../error-handling/customErrors/ErrorWithTx.mjs";
7
- import { ExternalActionId as c } from "../../types/external-action.types.mjs";
8
- import { TransactionStatus as l } from "../../types/transactions.types.mjs";
9
- import { AdminTransactionType as u } from "../../types/admin.types.mjs";
10
- import { ActivityTypes as ee } from "../../types/activities.types.mjs";
3
+ import { gasErrorCodes as ee, transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
4
+ import { getAmountInToken as i } from "../../functions/web3/etherFunctions.mjs";
5
+ import { waitLittle as a } from "../../functions/utils/time.utils.mjs";
6
+ import { ErrorWithRelayerTransaction as o } from "../../error-handling/customErrors/ErrorWithTx.mjs";
7
+ import { ExternalActionId as s } from "../../types/external-action.types.mjs";
8
+ import { TransactionStatus as c } from "../../types/transactions.types.mjs";
9
+ import { AdminTransactionType as l } from "../../types/admin.types.mjs";
10
+ import { ActivityTypes as u } from "../../types/activities.types.mjs";
11
11
  import { TransactionRequestType as d } from "../../types/transaction.types.mjs";
12
12
  import { MessagesFromOffscreen as f } from "../../types/offscreen.types.mjs";
13
13
  import "../../types/index.mjs";
14
14
  import { Logger as p } from "../../error-handling/logger.mjs";
15
15
  import { API as m } from "../../API/API.mjs";
16
- import { getErc20TokenBySymbolFromAPI as h, getErc20TokenFromAPI as g } from "../../functions/utils/erc20tokenFunctions.mjs";
16
+ import { getErc20TokenFromAPI as h, getErc20TokensBySymbolsFromAPI as g } from "../../functions/utils/erc20tokenFunctions.mjs";
17
17
  import { getErrorMessageFromTransactionRequest as _ } from "../../error-handling/get-error.message.mjs";
18
18
  import "../../error-handling/index.mjs";
19
19
  import { modifyVolatileTokenAmountChanges as v } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
@@ -26,68 +26,68 @@ import { createTransaferEmporiumOpsBatch as w } from "../../functions/private-wa
26
26
  import { getTokensToDepositBack as T } from "../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.mjs";
27
27
  import { getGasTokenRecords as E } from "../../functions/auto-deposit-back-helpers/get-gas-token-records.mjs";
28
28
  import { selectGasToken as D } from "../../functions/auto-deposit-back-helpers/select-gas-token.mjs";
29
- import { updateHinkal as te } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
29
+ import { updateHinkal as O } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
30
30
  import "../../functions/index.mjs";
31
- import { activityStorage as O } from "../IndexedDB/activity-db.mjs";
31
+ import { activityStorage as k } from "../IndexedDB/activity-db.mjs";
32
32
  import "../IndexedDB/index.mjs";
33
33
  //#region libs/shared/common/src/data-structures/Hinkal/handleAutoDepositBack.ts
34
- var ne = 3 * 1e3, re = 13 * 1e3, k = async (k, A, j, M, N, P, F, I) => {
35
- if (!j || F.length === 0) return;
36
- let L;
34
+ var te = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
35
+ if (!M || I.length === 0) return;
36
+ let R;
37
37
  try {
38
- let s = y(A);
39
- await o(A === e.ethMainnet ? re : ne);
40
- let d = await T(F, N, j, s);
38
+ let o = y(j);
39
+ await a(j === e.ethMainnet ? ne : te);
40
+ let d = await T(I, P, M, o);
41
41
  if (!d.length) {
42
- S(f.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
42
+ S(f.AutoShieldTxStatus, { message: r.AUTO_SHIELD_SKIPPED });
43
43
  return;
44
44
  }
45
- let p = await C(A), _ = (await Promise.all(p.map(async (e) => await h(e, A)))).filter((e) => e !== void 0), { prices: R } = await m.getTokenPrices(A, _.map((e) => e.erc20TokenAddress)), z = new Map(R.map((e, t) => [_[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(k, A, H, await v(A, B, V, j)), W = await b(A, N, H, c.Emporium, U.map((e) => x(e, j, A))), { flatFee: G } = W ?? {}, K = await g(A, W.feeToken);
45
+ let p = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, p.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [p[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(A, j, H, await v(j, B, V, M)), W = await b(j, P, H, s.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
46
46
  if (!K) return;
47
- let q = a(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(N, J, A, B, U, await E(_, A, k, j, s, z), W, H, j);
47
+ let q = i(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(P, J, j, B, U, await E(p, j, A, M, o, z), W, H, M);
48
48
  if (!Y) return;
49
49
  let { feeToken: X, feeStructure: Z } = Y ?? {};
50
- if (P && Number(P) < J) {
51
- S(f.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
50
+ if (F && Number(F) < J) {
51
+ S(f.AutoShieldTxStatus, { message: ee.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
52
52
  return;
53
53
  }
54
54
  let Q = B.findIndex((e) => n(e.erc20TokenAddress, X));
55
55
  Q !== -1 && (V[Q] -= Z?.flatFee ?? 0n);
56
- let { hinkalAddress: ie } = t[A].contractData, $ = {
57
- activityType: ee.AUTO_SHIELD,
58
- chainId: A,
59
- from: j,
60
- to: ie,
56
+ let { hinkalAddress: re } = t[j].contractData, $ = {
57
+ activityType: u.AUTO_SHIELD,
58
+ chainId: j,
59
+ from: M,
60
+ to: re,
61
61
  gasInDollar: J.toString(),
62
62
  tokensReceive: B.map((e, t) => ({
63
- amount: a(e, V[t]),
63
+ amount: i(e, V[t]),
64
64
  token: e
65
65
  }))
66
66
  };
67
- L = await O.saveTxRequest($), S(f.AutoShieldTxStatus, { status: l.Loading }), te(I, A, k);
68
- let ae = {
67
+ R = await k.saveTxRequest($), S(f.AutoShieldTxStatus, { status: c.Loading }), O(L, j, A);
68
+ let ie = {
69
69
  id: 0,
70
70
  success: !0,
71
- txHash: await k.actionReceive(B, V, X, Z, M, u.AutoShield)
71
+ txHash: await A.actionReceive(B, V, X, Z, N, l.AutoShield)
72
72
  };
73
- await O.updatePendingTransactions(ae, L), S(f.AutoShieldTxStatus, {
74
- status: l.Confirmed,
73
+ await k.updatePendingTransactions(ie, R), S(f.AutoShieldTxStatus, {
74
+ status: c.Confirmed,
75
75
  activityRequest: $
76
76
  });
77
77
  } catch (e) {
78
78
  let t;
79
- e instanceof s && (t = e.txHash);
79
+ e instanceof o && (t = e.txHash);
80
80
  let n = {
81
81
  error: e,
82
82
  id: 0,
83
83
  success: !1,
84
84
  ...t ? { erroredTx: t } : {}
85
85
  };
86
- L && await O.updatePendingTransactions(n, L), S(f.AutoShieldTxStatus, {
87
- status: l.Failed,
86
+ R && await k.updatePendingTransactions(n, R), S(f.AutoShieldTxStatus, {
87
+ status: c.Failed,
88
88
  error: _(e, d.ReceiveFromShieldedAccount)
89
89
  }), p.error("Error in auto deposit back:", e);
90
90
  }
91
91
  };
92
92
  //#endregion
93
- export { k as handleAutoDepositBack };
93
+ export { A as handleAutoDepositBack };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),h=require(`../../constants/addresses.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),b=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),x=require(`../../API/deposit-and-withdraw-status-calls.cjs`),S=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var C=async(c,u,d,p,m,g,S,C,w,T,E)=>{if(p.length===0)throw Error(`No recipients to bridge`);let D=d.erc20TokenAddress,{contractData:O}=e.networkRegistry[u],{emporiumAddress:k}=O;if(!k)throw Error(`No Emporium Address`);let A=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][u];if(!A)throw Error(`LIFI not configured for chain ${u}`);let j=await c.getRandomRelay(u);if(!j)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=await c.getEthereumAddressByChain(u),N=i.getCurrentTimeInSeconds().toString(),P=c.generateProofRemotely?5:1,F=[];for(let e=0;e<p.length;e+=P){let r=p.slice(e,e+P),i=await Promise.all(r.map(async({utxo:e,nativeUtxo:r,bridgeAmount:i,quote:s,temporarySubAccount:p,recipientAddress:h})=>{await l.API.addTemporaryWalletNonce(u,g,p.index);let b=s.nativeFee>0n&&!n.caseInsensitiveEqual(D,t.zeroAddress),x=[D],S=[-e.amount],C=[!1],w=new a.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...e.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),E=[[e,w]],O=[[w]];if(b&&r){let e=new a.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...r.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}});x.push(t.zeroAddress),S.push(-r.amount),C.push(!1),E.push([r,e]),O.push([e])}let P=v.createLifiBridgeOps(c,u,p.ethAddress,A,D,e.amount,i,s),F=await _.calculateModifiedFeeStructure(u,d,i,m),I=f.constructAdminData(T,u,x,[-e.amount],M),[{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B},V]=await Promise.all([y.constructZkProof(c.merkleTreeHinkalByChain[u],E,O,c.userKeys,o.ExternalActionId.Emporium,k,P,c.generateProofRemotely,F,j??t.zeroAddress,u,C,void 0,void 0,p.privateKey),v.getAuthorizationDataIfNeeded(u,p.privateKey)]);return{zkCallData:L,dimData:z,circomData:R,commitmentValidationData:B,authorizationData:V,recipientAddress:h,adminData:I}}));F.push(...i)}await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let I=await b.transactCallRelayerBatch(u,F,g,C,w,E);return await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:I}),I},w=async(e,r,i,a,s,l,f,_,y=!0)=>{let b=r.erc20TokenAddress,x=u.validateAndGetChainId([r]),w=_?c.hashString(_):void 0,T=c.hashEthereumAddress(await e.getEthereumAddressByChain(x)),E=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][x];if(!E)throw Error(`LIFI router not configured`);let D;if(s)D=s;else{let n=i[0],r=v.createLifiBridgeOps(e,x,n.temporarySubAccount.ethAddress,E,b,n.bridgeAmount,n.bridgeAmount,n.quote).map(e=>g.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,x));D=await p.getFeeStructure(x,b,[b],o.ExternalActionId.Emporium,r,t.PAY_SEND_VARIABLE_RATE)}let O={feeToken:D.feeToken,flatFee:0n,variableRate:0n},k=i.reduce((e,t)=>e+t.quote.nativeFee,0n)>0n&&!n.caseInsensitiveEqual(b,t.zeroAddress),A=i.map(e=>e.bridgeAmount),j=i.map(e=>e.recipientAddress),{userDepositedUtxos:M,statusId:N,depositTxHash:P}=await S.hinkalDepositOnChainUtxos(e,x,r,A,j,D,T,y),F=[];if(k){let n=await d.getErc20TokenFromAPI(x,t.zeroAddress);if(!n)throw Error(`No native token`);let{userDepositedUtxos:r}=await S.hinkalDepositOnChainUtxos(e,x,n,i.map(e=>e.quote.nativeFee),j,O,T,y);F=r}return await m.waitForDepositedUtxosInMerkleTree(e,x,[...M,...F]),await C(e,x,r,i.map((e,t)=>({...e,utxo:M[t].utxo,nativeUtxo:k?F[t]?.utxo:void 0})),D,T,N,a,l,f,w),P};exports.hinkalDepositAndBridge=w;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),h=require(`../../constants/addresses.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),b=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),x=require(`../../API/deposit-and-withdraw-status-calls.cjs`),S=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var C=async(c,u,d,p,m,g,S,C,w,T,E)=>{if(p.length===0)throw Error(`No recipients to bridge`);let D=d.erc20TokenAddress,{contractData:O}=e.networkRegistry[u],{emporiumAddress:k}=O;if(!k)throw Error(`No Emporium Address`);let A=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][u];if(!A)throw Error(`LIFI not configured for chain ${u}`);let j=await c.getRandomRelay(u);if(!j)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=await c.getEthereumAddressByChain(u),N=i.getCurrentTimeInSeconds().toString(),P=c.generateProofRemotely?5:1,F=[];for(let e=0;e<p.length;e+=P){let r=p.slice(e,e+P),i=await Promise.all(r.map(async({utxo:e,nativeUtxo:r,bridgeAmount:i,quote:s,temporarySubAccount:p,recipientAddress:h})=>{await l.API.addTemporaryWalletNonce(u,g,p.index);let b=s.nativeFee>0n&&!n.caseInsensitiveEqual(D,t.zeroAddress),x=[D],S=[-e.amount],C=[!1],w=new a.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...e.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),E=[[e,w]],O=[[w]];if(b&&r){let e=new a.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...r.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}});x.push(t.zeroAddress),S.push(-r.amount),C.push(!1),E.push([r,e]),O.push([e])}let P=v.createLifiBridgeOps(c,u,p.ethAddress,A,D,e.amount,i,s),F=await _.calculateModifiedFeeStructure(u,d,i,m),I=f.constructAdminData(T,u,x,[-e.amount],M),[{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B},V]=await Promise.all([y.constructZkProof(c.merkleTreeHinkalByChain[u],E,O,c.userKeys,o.ExternalActionId.Emporium,k,P,c.generateProofRemotely,F,j??t.zeroAddress,u,C,void 0,void 0,p.privateKey),v.getAuthorizationDataIfNeeded(u,p.privateKey)]);return{zkCallData:L,dimData:z,circomData:R,commitmentValidationData:B,authorizationData:V,recipientAddress:h,adminData:I}}));F.push(...i)}await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let I=await b.transactCallRelayerBatch(u,F,g,C,w,E);return await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:I}),I},w=async(e,r,i,a,s,l,f,_,y=!0)=>{let b=r.erc20TokenAddress,x=u.validateAndGetChainId([r]),w=_?c.hashString(_):void 0,T=c.hashEthereumAddress(await e.getEthereumAddressByChain(x)),E=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][x];if(!E)throw Error(`LIFI router not configured`);let D;if(s)D=s;else{let n=i[0],r=v.createLifiBridgeOps(e,x,n.temporarySubAccount.ethAddress,E,b,n.bridgeAmount,n.bridgeAmount,n.quote).map(e=>g.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,x));D=await p.getFeeStructure(x,b,[b],o.ExternalActionId.Emporium,r,t.PAY_SEND_VARIABLE_RATE)}let O={feeToken:D.feeToken,flatFee:0n,variableRate:0n},k=i.reduce((e,t)=>e+t.quote.nativeFee,0n)>0n&&!n.caseInsensitiveEqual(b,t.zeroAddress),A=i.map(e=>e.bridgeAmount),j=i.map(e=>e.recipientAddress),{userDepositedUtxos:M,statusId:N,depositTxHash:P}=await S.hinkalDepositOnChainUtxos(e,x,r,A,j,D,T,y),F=[];if(k){let n=await d.getErc20TokenFromAPI(x,t.zeroAddress);if(!n)throw Error(`No native token`);let{userDepositedUtxos:r}=await S.hinkalDepositOnChainUtxos(e,x,n,i.map(e=>e.quote.nativeFee),j,O,T,y);F=r}return await m.waitForDepositedUtxosInMerkleTree(e,x,[...M,...F]),{depositTxHash:P,scheduleId:await C(e,x,r,i.map((e,t)=>({...e,utxo:M[t].utxo,nativeUtxo:k?F[t]?.utxo:void 0})),D,T,N,a,l,f,w)}};exports.hinkalDepositAndBridge=w;
@@ -1,4 +1,4 @@
1
1
  import { IHinkal } from './IHinkal';
2
- import { AdminTransactionType, BridgeRecipient, ERC20Token } from '../../types';
2
+ import { AdminTransactionType, BridgeRecipient, DepositAndSendExtendedResult, ERC20Token } from '../../types';
3
3
  import { FeeStructure } from '../../types/hinkal.types';
4
- export declare const hinkalDepositAndBridge: (hinkal: IHinkal, erc20Token: ERC20Token, recipients: BridgeRecipient[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean) => Promise<string>;
4
+ export declare const hinkalDepositAndBridge: (hinkal: IHinkal, erc20Token: ERC20Token, recipients: BridgeRecipient[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean) => Promise<DepositAndSendExtendedResult>;
@@ -107,11 +107,14 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
107
107
  let { userDepositedUtxos: r } = await T(e, C, t, a.map((e) => e.quote.nativeFee), N, A, D, x);
108
108
  L = r;
109
109
  }
110
- return await g(e, C, [...P, ...L]), await E(e, C, i, a.map((e, t) => ({
111
- ...e,
112
- utxo: P[t].utxo,
113
- nativeUtxo: j ? L[t]?.utxo : void 0
114
- })), k, D, F, o, d, m, w), I;
110
+ return await g(e, C, [...P, ...L]), {
111
+ depositTxHash: I,
112
+ scheduleId: await E(e, C, i, a.map((e, t) => ({
113
+ ...e,
114
+ utxo: P[t].utxo,
115
+ nativeUtxo: j ? L[t]?.utxo : void 0
116
+ })), k, D, F, o, d, m, w)
117
+ };
115
118
  };
116
119
  //#endregion
117
120
  export { D as hinkalDepositAndBridge };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(o,c,u,f,p,v,y,b,x,S,C,w)=>{let T=e.isTronLike(c);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([o.getRandomRelay(c),o.getEthereumAddressByChain(c)]);if(!D)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=i.getCurrentTimeInSeconds().toString(),A=o.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let e=0;e<f.length;e+=A){let r=f.slice(e,e+A),i=await Promise.all(r.map(async({recipientAddress:r,utxo:i},s)=>{let f=e+s,g=l.addressToHexFormat(r),_=new a.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:o.userKeys.getShieldedPrivateKey(),timeStamp:k,...i.isNewStyle?{spendingPublicKey:o.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[n.caseInsensitiveEqual(i.erc20TokenAddress,E)?i:a.Utxo.createFrom(i,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,c,[E],[-i.amount],M),w=await m.calculateModifiedFeeStructure(c,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(o.merkleTreeHinkalByChain[c],y,b,o.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,o.generateProofRemotely,w,D??t.zeroAddress,c);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...i)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(c,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(e,t,n,r,i,a,s,d,m,h=!0)=>{let g=u.validateAndGetChainId([t]),_=m?c.hashString(m):void 0,b=t.erc20TokenAddress,x=c.hashEthereumAddress(l.addressToHexFormat(await e.getEthereumAddressByChain(g))),S=a??await f.getFeeStructure(g,b,[b],o.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(e,g,t,n,r,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(e,g,C),await y(e,g,t,C,n,S,x,w,i,s,d,_),T};exports.hinkalDepositAndWithdraw=b;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(o,c,u,f,p,v,y,b,x,S,C,w)=>{let T=e.isTronLike(c);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([o.getRandomRelay(c),o.getEthereumAddressByChain(c)]);if(!D)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=i.getCurrentTimeInSeconds().toString(),A=o.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let e=0;e<f.length;e+=A){let r=f.slice(e,e+A),i=await Promise.all(r.map(async({recipientAddress:r,utxo:i},s)=>{let f=e+s,g=l.addressToHexFormat(r),_=new a.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:o.userKeys.getShieldedPrivateKey(),timeStamp:k,...i.isNewStyle?{spendingPublicKey:o.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[n.caseInsensitiveEqual(i.erc20TokenAddress,E)?i:a.Utxo.createFrom(i,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,c,[E],[-i.amount],M),w=await m.calculateModifiedFeeStructure(c,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(o.merkleTreeHinkalByChain[c],y,b,o.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,o.generateProofRemotely,w,D??t.zeroAddress,c);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...i)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(c,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(e,t,n,r,i,a,s,d,m,h=!0)=>{let g=u.validateAndGetChainId([t]),_=m?c.hashString(m):void 0,b=t.erc20TokenAddress,x=c.hashEthereumAddress(l.addressToHexFormat(await e.getEthereumAddressByChain(g))),S=a??await f.getFeeStructure(g,b,[b],o.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(e,g,t,n,r,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(e,g,C),{depositTxHash:T,scheduleId:await y(e,g,t,C,n,S,x,w,i,s,d,_)}};exports.hinkalDepositAndWithdraw=b;
@@ -1,6 +1,6 @@
1
1
  import { IHinkal } from './IHinkal';
2
- import { AdminTransactionType, ERC20Token, RecipientUtxo } from '../../types';
2
+ import { AdminTransactionType, DepositAndSendExtendedResult, ERC20Token, RecipientUtxo } from '../../types';
3
3
  import { FeeStructure } from '../../types/hinkal.types';
4
4
  export declare const hinkalWithdrawBatch: (hinkal: IHinkal, chainId: number, erc20Token: ERC20Token, userDepositedUtxos: RecipientUtxo[], recipientAmounts: bigint[], feeStructure: FeeStructure, hashedEthereumAddress: string, statusId: string | undefined, txCompletionTime?: number, ref?: string, action?: AdminTransactionType, hashedDashboardAccountId?: string) => Promise<string>;
5
5
  export declare const hinkalDepositAndWithdraw: (hinkal: IHinkal, erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, // Should be passed fee for only one withdraw transaction, multiplication happening in this function
6
- ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean) => Promise<string>;
6
+ ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean) => Promise<DepositAndSendExtendedResult>;
@@ -70,7 +70,10 @@ var x = async (o, c, l, f, m, h, b, x, S, C, w, T) => {
70
70
  }), P;
71
71
  }, S = async (e, t, n, r, i, a, s, d, p, g = !0) => {
72
72
  let _ = f([t]), v = p ? l(p) : void 0, y = t.erc20TokenAddress, S = c(u(await e.getEthereumAddressByChain(_))), C = a ?? await m(_, y, [y], o.Transact, [], 10n), { userDepositedUtxos: w, statusId: T, depositTxHash: E } = await b(e, _, t, n, r, C, S, g);
73
- return await h(e, _, w), await x(e, _, t, w, n, C, S, T, i, s, d, v), E;
73
+ return await h(e, _, w), {
74
+ depositTxHash: E,
75
+ scheduleId: await x(e, _, t, w, n, C, S, T, i, s, d, v)
76
+ };
74
77
  };
75
78
  //#endregion
76
79
  export { S as hinkalDepositAndWithdraw };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../constants/bridging.constants.cjs`),i=require(`../../API/callNearIntentsAPI.cjs`),a=require(`../../functions/utils/nearIntents.utils.cjs`),o=require(`./hinkalDepositAndWithdraw.cjs`),s=require(`./hinkalSolanaDepositAndWithdraw.cjs`);var c=async(c,l,u,d,f,p,m,h,g,_)=>{if(u.length!==d.length)throw Error(`recipientAmounts and recipientAddresses length mismatch`);if(u.length===0)throw Error(`No recipients to bridge`);let v=n.validateAndGetChainId([l]),y=t.secondsToMs(p),b=new Date(y+r.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),x=await Promise.all(d.map(async(e,t)=>{let n=u[t],{quote:r}=await i.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:f.slippageBps??100,originAsset:f.originAsset,depositType:`ORIGIN_CHAIN`,destinationAsset:f.destinationAsset,amount:n.toString(),recipient:e,recipientType:`DESTINATION_CHAIN`,refundTo:c.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:b});if(!r.depositAddress)throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);if(r.deadline&&new Date(r.deadline).getTime()<y)throw Error(`Bridge quote expires before the scheduled execution time. Choose a sooner time.`);return{destinationRecipient:e,amount:n,depositAddress:r.depositAddress,quote:r}})),S=m??await a.buildNearBridgeFeeStructure(v,l,x[0].depositAddress),C=x.map(e=>e.amount),w=x.map(e=>e.depositAddress),T;return T=e.isSolanaLike(v)?await s.hinkalSolanaDepositAndWithdraw(c,l,C,w,p,S,h,g,_,x.map(e=>e.destinationRecipient)):await o.hinkalDepositAndWithdraw(c,l,C,w,p,S,h,g,_),{depositTxHash:T,legs:x}};exports.hinkalNearDepositAndBridge=c;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../constants/bridging.constants.cjs`),i=require(`../../API/callNearIntentsAPI.cjs`),a=require(`../../functions/utils/nearIntents.utils.cjs`),o=require(`./hinkalDepositAndWithdraw.cjs`),s=require(`./hinkalSolanaDepositAndWithdraw.cjs`);var c=async(c,l,u,d,f,p,m,h,g,_)=>{if(u.length!==d.length)throw Error(`recipientAmounts and recipientAddresses length mismatch`);if(u.length===0)throw Error(`No recipients to bridge`);let v=n.validateAndGetChainId([l]),y=t.secondsToMs(p),b=new Date(y+r.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),x=await Promise.all(d.map(async(e,t)=>{let n=u[t],{quote:r}=await i.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:f.slippageBps??100,originAsset:f.originAsset,depositType:`ORIGIN_CHAIN`,destinationAsset:f.destinationAsset,amount:n.toString(),recipient:e,recipientType:`DESTINATION_CHAIN`,refundTo:c.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:b});if(!r.depositAddress)throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);if(r.deadline&&new Date(r.deadline).getTime()<y)throw Error(`Bridge quote expires before the scheduled execution time. Choose a sooner time.`);return{destinationRecipient:e,amount:n,depositAddress:r.depositAddress,quote:r}})),S=m??await a.buildNearBridgeFeeStructure(v,l,x[0].depositAddress),C=x.map(e=>e.amount),w=x.map(e=>e.depositAddress),T;return e.isSolanaLike(v)?{depositTxHash:T}=await s.hinkalSolanaDepositAndWithdraw(c,l,C,w,p,S,h,g,_,x.map(e=>e.destinationRecipient)):{depositTxHash:T}=await o.hinkalDepositAndWithdraw(c,l,C,w,p,S,h,g,_),{depositTxHash:T,legs:x}};exports.hinkalNearDepositAndBridge=c;
@@ -34,7 +34,7 @@ var c = async (c, l, u, d, f, p, m, h, g, _) => {
34
34
  quote: r
35
35
  };
36
36
  })), S = m ?? await a(v, l, x[0].depositAddress), C = x.map((e) => e.amount), w = x.map((e) => e.depositAddress), T;
37
- return T = e(v) ? await s(c, l, C, w, p, S, h, g, _, x.map((e) => e.destinationRecipient)) : await o(c, l, C, w, p, S, h, g, _), {
37
+ return e(v) ? {depositTxHash: T} = await s(c, l, C, w, p, S, h, g, _, x.map((e) => e.destinationRecipient)) : {depositTxHash: T} = await o(c, l, C, w, p, S, h, g, _), {
38
38
  depositTxHash: T,
39
39
  legs: x
40
40
  };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../error-handling/logger.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/utils/getRecipientInfoFromUserKeys.cjs`),l=require(`../../functions/utils/getContractAddress.cjs`),u=require(`../../functions/utils/tronSimulation.utils.cjs`),d=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),f=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),p=require(`../../API/admin-calls.cjs`),m=require(`./hinkalProoflessDeposit.utils.cjs`),h=require(`./hinkalProoflessDepositViaWrapper.cjs`);var g=async(n,r,o,s,c,l=!1)=>{let d=n.getTronWeb(),{hinkalAddress:p}=e.networkRegistry[r].contractData,h=a.evmHexToTronBase58Address(p),g=await n.getEthereumAddressByChain(r),_=o.map(e=>e.erc20TokenAddress),v=o.map(()=>0n),{totalTrxValue:y,tokensNeedingApproval:b}=a.splitTronTokensByNative(o,s),x=c.map(e=>({extraRandomization:e.extraRandomization.toString(),stealthAddress:e.stealthAddress.toString(),H0:e.H0.toString(),H1:e.H1.toString()}));if(y>0n){let{hinkalABI:t}=e.networkRegistry[r].contractData;if(!t)throw Error(`Hinkal ABI not found`);await a.assertTronSufficientBalance(d,r,h,g,a.createTronCallData(t,`prooflessDeposit`,[_,s.map(String),v.map(String),c.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])]),y)}let{transaction:S}=await d.transactionBuilder.triggerSmartContract(h,`prooflessDeposit(address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:y>0n?Number(y):0},[{type:`address[]`,value:_},{type:`uint256[]`,value:s.map(String)},{type:`uint256[]`,value:v.map(String)},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:x.map(e=>[e.extraRandomization,e.stealthAddress,e.H0,e.H1])}],g);if(l)return S;await m.approveTronTokens(d,g,h,b),await f.waitForTronErc20Approvals(d,g,h,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),await u.simulateTronTransaction(r,h,`prooflessDeposit`,e.networkRegistry[r].contractData.hinkalABI,[_,s.map(String),v.map(String),c.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])],g,y>0n?y:void 0);let C=await d.trx.sign(S),w=await d.trx.sendRawTransaction(C);if(!w.result)throw i.Logger.error(`Tron prooflessDeposit broadcast failed`,w),Error(`Tron prooflessDeposit broadcast failed`);let T=typeof w==`string`?w:w?.txid??w?.transaction?.txID;if(!T)throw Error(`Tron prooflessDeposit failed (missing txid)`);return T},_=async(i,a,u,h,_,v=!1)=>{let y=o.validateAndGetChainId(a),b=e.isTronLike(y),x=await i.getEthereumAddressByChain(y),S=h??a.map(()=>c.getStealthAddressStructureFromUserKeys(i.userKeys));if(S.length!==a.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);m.assertNoDuplicateStealthAddressStructures(S);let C;if(b){let e=await g(i,y,a,u,S,v);if(v)return e;C=e}else{let e=i.getContractWithSigner(y,n.ContractType.HinkalContract),o=[a.map(({erc20TokenAddress:e})=>e),u,a.map(()=>0n),S];if(v)return e.prooflessDeposit.populateTransaction(...o);let s=i.getProviderAdapter(y),c=m.aggregateAmountsForApproval(a,u),p=a.reduce((e,n,i)=>r.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+u[i]:e,0n),h=c.filter(({token:e,balance:n})=>!r.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),g;if(h.length>0&&await s.supportsBatchCall?.(y)&&s.sendBatchCallsTransaction){let t=d.buildApproveAndProoflessDepositCalls(h.map(({token:e})=>e.erc20TokenAddress),h.map(({balance:e})=>e),l.getContractAddress(e),e,...o,p);g=await s.sendBatchCallsTransaction(y,t)}else{await m.approveTokens(i,y,l.getContractAddress(e),c);let t=await i.getEthereumAddressByChain(y),n=c.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await f.waitForErc20Approvals(i,y,t,l.getContractAddress(e),n),g=await e.prooflessDeposit(...o,{value:p>0n?p:void 0})}C=g.hash}return p.emitTxPublicData(s.constructAdminData(_,y,a.map(({erc20TokenAddress:e})=>e),u,x)),C},v=async(t,n,r,i,a,o,s)=>{let c=i.map(()=>r),l=r.erc20TokenAddress;return e.isTronLike(n)?h.hinkalTronProoflessDepositViaWrapper(t,n,l,o,c,i,a,s):e.networkRegistry[n]?.contractData?.hinkalWrapperAddress?h.hinkalEvmProoflessDepositViaWrapper(t,n,l,o,c,i,a,s):await _(t,c,i,a,s,!0)};exports.hinkalProoflessDeposit=_,exports.hinkalProoflessDepositWithPublicFee=v;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../../error-handling/logger.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/utils/getRecipientInfoFromUserKeys.cjs`),l=require(`../../functions/utils/getContractAddress.cjs`),u=require(`../../functions/utils/tronSimulation.utils.cjs`),d=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),f=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),p=require(`../../API/admin-calls.cjs`),m=require(`./hinkalProoflessDeposit.utils.cjs`),h=require(`./hinkalProoflessDepositViaWrapper.cjs`);var g=async(n,r,o,s,c,l=!1)=>{let d=n.getTronWeb(),{hinkalAddress:p}=e.networkRegistry[r].contractData,h=a.evmHexToTronBase58Address(p),g=await n.getEthereumAddressByChain(r),_=o.map(e=>e.erc20TokenAddress),v=o.map(()=>0n),{totalTrxValue:y,tokensNeedingApproval:b}=a.splitTronTokensByNative(o,s),x=c.map(e=>({extraRandomization:e.extraRandomization.toString(),stealthAddress:e.stealthAddress.toString(),H0:e.H0.toString(),H1:e.H1.toString()}));if(y>0n){let{hinkalABI:t}=e.networkRegistry[r].contractData;if(!t)throw Error(`Hinkal ABI not found`);await a.assertTronSufficientBalance(d,r,h,g,a.createTronCallData(t,`prooflessDeposit`,[_,s.map(String),v.map(String),c.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])]),y)}let{transaction:S}=await d.transactionBuilder.triggerSmartContract(h,`prooflessDeposit(address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:y>0n?Number(y):0},[{type:`address[]`,value:_},{type:`uint256[]`,value:s.map(String)},{type:`uint256[]`,value:v.map(String)},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:x.map(e=>[e.extraRandomization,e.stealthAddress,e.H0,e.H1])}],g);if(l)return S;await m.approveTronTokens(d,g,h,b),await f.waitForTronErc20Approvals(d,g,h,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),await u.simulateTronTransaction(r,h,`prooflessDeposit`,e.networkRegistry[r].contractData.hinkalABI,[_,s.map(String),v.map(String),c.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])],g,y>0n?y:void 0);let C=await d.trx.sign(S),w=await d.trx.sendRawTransaction(C);if(!w.result)throw i.Logger.error(`Tron prooflessDeposit broadcast failed`,w),Error(`Tron prooflessDeposit broadcast failed`);let T=typeof w==`string`?w:w?.txid??w?.transaction?.txID;if(!T)throw Error(`Tron prooflessDeposit failed (missing txid)`);return T},_=async(i,a,u,h,_,v=!1)=>{let y=o.validateAndGetChainId(a),b=e.isTronLike(y),x=await i.getEthereumAddressByChain(y),S=h??a.map(()=>c.getStealthAddressStructureFromUserKeys(i.userKeys));if(S.length!==a.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);m.assertNoDuplicateStealthAddressStructures(S);let C;if(b){let e=await g(i,y,a,u,S,v);if(v)return e;C=e}else{let e=i.getContractWithSigner(y,r.ContractType.HinkalContract),o=[a.map(({erc20TokenAddress:e})=>e),u,a.map(()=>0n),S];if(v)return e.prooflessDeposit.populateTransaction(...o);let s=i.getProviderAdapter(y),c=m.aggregateAmountsForApproval(a,u),p=a.reduce((e,r,i)=>n.caseInsensitiveEqual(r.erc20TokenAddress,t.zeroAddress)?e+u[i]:e,0n),h=c.filter(({token:e,balance:r})=>!n.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&r>0n),g;if(h.length>0&&await s.supportsBatchCall?.(y)&&s.sendBatchCallsTransaction){let t=d.buildApproveAndProoflessDepositCalls(h.map(({token:e})=>e.erc20TokenAddress),h.map(({balance:e})=>e),l.getContractAddress(e),e,...o,p);g=await s.sendBatchCallsTransaction(y,t)}else{await m.approveTokens(i,y,l.getContractAddress(e),c);let t=await i.getEthereumAddressByChain(y),n=c.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await f.waitForErc20Approvals(i,y,t,l.getContractAddress(e),n),g=await e.prooflessDeposit(...o,{value:p>0n?p:void 0})}C=g.hash}return p.emitTxPublicData(s.constructAdminData(_,y,a.map(({erc20TokenAddress:e})=>e),u,x)),C},v=async(t,n,r,i,a,o,s)=>{let c=i.map(()=>r),l=r.erc20TokenAddress;return e.isTronLike(n)?h.hinkalTronProoflessDepositViaWrapper(t,n,l,o,c,i,a,s):e.networkRegistry[n]?.contractData?.hinkalWrapperAddress?h.hinkalEvmProoflessDepositViaWrapper(t,n,l,o,c,i,a,s):await _(t,c,i,a,s,!0)};exports.hinkalProoflessDeposit=_,exports.hinkalProoflessDepositWithPublicFee=v;
@@ -1,7 +1,7 @@
1
1
  import { isTronLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
2
  import { TRON_DEFAULT_FEE_LIMIT_SUN as n, zeroAddress as r } from "../../constants/protocol.constants.mjs";
3
- import { ContractType as i } from "../../types/ethereum-network.types.mjs";
4
- import { caseInsensitiveEqual as a } from "../../functions/utils/caseInsensitive.utils.mjs";
3
+ import { caseInsensitiveEqual as i } from "../../functions/utils/caseInsensitive.utils.mjs";
4
+ import { ContractType as a } from "../../types/ethereum-network.types.mjs";
5
5
  import { Logger as o } from "../../error-handling/logger.mjs";
6
6
  import { assertTronSufficientBalance as s, createTronCallData as c, evmHexToTronBase58Address as l, splitTronTokensByNative as u } from "../../functions/utils/tron.utils.mjs";
7
7
  import { validateAndGetChainId as d } from "../../functions/utils/token-check.utils.mjs";
@@ -93,14 +93,14 @@ var E = async (e, r, i, a, d, f = !1) => {
93
93
  if (l) return e;
94
94
  w = e;
95
95
  } else {
96
- let e = t.getContractWithSigner(u, i.HinkalContract), s = [
96
+ let e = t.getContractWithSigner(u, a.HinkalContract), s = [
97
97
  n.map(({ erc20TokenAddress: e }) => e),
98
98
  o,
99
99
  n.map(() => 0n),
100
100
  S
101
101
  ];
102
102
  if (l) return e.prooflessDeposit.populateTransaction(...s);
103
- let c = t.getProviderAdapter(u), d = b(n, o), f = n.reduce((e, t, n) => a(t.erc20TokenAddress, r) ? e + o[n] : e, 0n), p = d.filter(({ token: e, balance: t }) => !a(e.erc20TokenAddress, r) && t > 0n), h;
103
+ let c = t.getProviderAdapter(u), d = b(n, o), f = n.reduce((e, t, n) => i(t.erc20TokenAddress, r) ? e + o[n] : e, 0n), p = d.filter(({ token: e, balance: t }) => !i(e.erc20TokenAddress, r) && t > 0n), h;
104
104
  if (p.length > 0 && await c.supportsBatchCall?.(u) && c.sendBatchCallsTransaction) {
105
105
  let t = g(p.map(({ token: e }) => e.erc20TokenAddress), p.map(({ balance: e }) => e), m(e), e, ...s, f);
106
106
  h = await c.sendBatchCallsTransaction(u, t);
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../externalABIs/index.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);var o=(e,t)=>{let n=[],r=0;for(let a=0;a<e.length;a+=1){let o=!1;for(let s=0;s<r;s+=1)if(i.isSameERC20Token(n[s].token,e[a])){n[s].balance+=t[a],o=!0;break}o||(n[r]={token:e[a],balance:t[a]},r+=1)}return n},s=async(r,i,o,s)=>{for(let c=0;c<s.length;c+=1)n.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await a.waitForEthereumTransactionConfirmation(i,(await r.getContractWithSigner(i,t.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(o,s[c].balance)).hash)},c=async(t,n,i,a)=>{let o=Array.from(a.entries());for(let a=0;a<o.length;a+=1){let[s,c]=o[a],l=await t.contract(r.ERC20ABI,s).allowance(n,i).call({from:n});if(BigInt(String(l))<c){let{transaction:r}=await t.transactionBuilder.triggerSmartContract(s,`approve(address,uint256)`,{feeLimit:e.TRON_DEFAULT_FEE_LIMIT_SUN},[{type:`address`,value:i},{type:`uint256`,value:c.toString()}],n),a=await t.trx.sign(r),o=await t.trx.sendRawTransaction(a);if(!o.result){let e=o.code??`UNKNOWN`,t=o.message?Buffer.from(o.message,`hex`).toString():`no message`;throw Error(`Tron token approval failed: ${e} - ${t}`)}}}},l=e=>{let t=new Set;e.forEach(({extraRandomization:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})};exports.aggregateAmountsForApproval=o,exports.approveTokens=s,exports.approveTronTokens=c,exports.assertNoDuplicateStealthAddressStructures=l;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../externalABIs/index.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);var o=(e,t)=>{let n=[],r=0;for(let a=0;a<e.length;a+=1){let o=!1;for(let s=0;s<r;s+=1)if(i.isSameERC20Token(n[s].token,e[a])){n[s].balance+=t[a],o=!0;break}o||(n[r]={token:e[a],balance:t[a]},r+=1)}return n},s=async(r,i,o,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await a.waitForEthereumTransactionConfirmation(i,(await r.getContractWithSigner(i,n.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(o,s[c].balance)).hash)},c=async(t,n,i,a)=>{let o=Array.from(a.entries());for(let a=0;a<o.length;a+=1){let[s,c]=o[a],l=await t.contract(r.ERC20ABI,s).allowance(n,i).call({from:n});if(BigInt(String(l))<c){let{transaction:r}=await t.transactionBuilder.triggerSmartContract(s,`approve(address,uint256)`,{feeLimit:e.TRON_DEFAULT_FEE_LIMIT_SUN},[{type:`address`,value:i},{type:`uint256`,value:c.toString()}],n),a=await t.trx.sign(r),o=await t.trx.sendRawTransaction(a);if(!o.result){let e=o.code??`UNKNOWN`,t=o.message?Buffer.from(o.message,`hex`).toString():`no message`;throw Error(`Tron token approval failed: ${e} - ${t}`)}}}},l=e=>{let t=new Set;e.forEach(({extraRandomization:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})};exports.aggregateAmountsForApproval=o,exports.approveTokens=s,exports.approveTronTokens=c,exports.assertNoDuplicateStealthAddressStructures=l;
@@ -1,6 +1,6 @@
1
1
  import { TRON_DEFAULT_FEE_LIMIT_SUN as e, zeroAddress as t } from "../../constants/protocol.constants.mjs";
2
- import { ContractType as n } from "../../types/ethereum-network.types.mjs";
3
- import { caseInsensitiveEqual as r } from "../../functions/utils/caseInsensitive.utils.mjs";
2
+ import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
3
+ import { ContractType as r } from "../../types/ethereum-network.types.mjs";
4
4
  import { ERC20ABI as i } from "../../externalABIs/index.mjs";
5
5
  import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
6
6
  import { waitForEthereumTransactionConfirmation as o } from "../../functions/utils/tx-confirmation.utils.mjs";
@@ -20,7 +20,7 @@ var s = (e, t) => {
20
20
  }
21
21
  return n;
22
22
  }, c = async (e, i, a, s) => {
23
- for (let c = 0; c < s.length; c += 1) r(s[c].token.erc20TokenAddress, t) || await o(i, (await e.getContractWithSigner(i, n.ERC20Contract, s[c].token.erc20TokenAddress).approve(a, s[c].balance)).hash);
23
+ for (let c = 0; c < s.length; c += 1) n(s[c].token.erc20TokenAddress, t) || await o(i, (await e.getContractWithSigner(i, r.ERC20Contract, s[c].token.erc20TokenAddress).approve(a, s[c].balance)).hash);
24
24
  }, l = async (t, n, r, a) => {
25
25
  let o = Array.from(a.entries());
26
26
  for (let a = 0; a < o.length; a += 1) {
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/utils/tronSimulation.utils.cjs`),l=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),u=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),d=require(`../../API/admin-calls.cjs`),f=require(`./hinkalProoflessDeposit.utils.cjs`);var p=(e,n,i,a)=>{let o=r.caseInsensitiveEqual(e,t.zeroAddress),s=i.reduce((e,n,i)=>r.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+a[i]:e,0n)+(o?n:0n),c=f.aggregateAmountsForApproval(i,a),l=c.filter(({token:e})=>!r.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)).map(t=>!o&&r.caseInsensitiveEqual(t.token.erc20TokenAddress,e)?{token:t.token,balance:t.balance+n}:t).filter(({balance:e})=>e>0n);return!o&&n>0n&&(c.some(({token:t})=>r.caseInsensitiveEqual(t.erc20TokenAddress,e))||l.push({token:{erc20TokenAddress:e,chainId:i[0]?.chainId},balance:n})),{tokensForApproval:l,ethValue:s}},m=(e,t,n,r)=>{if(t.length!==n.length||n.length!==r.length)throw Error(`${e}: array length mismatch`)},h=async(n,l,h,g,_,v,y,b)=>{m(`hinkalTronProoflessDepositViaWrapper`,_,v,y),f.assertNoDuplicateStealthAddressStructures(y);let{hinkalWrapperAddress:x,hinkalWrapperABI:S}=e.networkRegistry[l]?.contractData??{};if(!x||!S)throw Error(`No HinkalWrapper configured for chainId ${l}`);let C=await n.getRandomRelay(l,!1);if(!C)throw Error(`No relay available for chainId ${l}`);let w=n.getTronWeb(),T=await n.getEthereumAddressByChain(l),E=o.evmHexToTronBase58Address(x),D=r.caseInsensitiveEqual(h,t.zeroAddress)?h:o.evmHexToTronBase58Address(h),{tokensForApproval:O,ethValue:k}=p(h,g,_,v),A=_.map(e=>e.erc20TokenAddress),j=v.map(()=>`0`),M=y.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()]);if(k>0n){let e=BigInt(await w.trx.getBalance(T)),n=BigInt(t.TRON_DEFAULT_FEE_LIMIT_SUN);try{n=await o.estimateTronFeeSunWithPadding(w,l,E,T,o.createTronCallData(S,`prooflessDeposit`,[o.evmHexToTronBase58Address(C),D,g.toString(),A,v.map(String),j,M]),k)}catch(e){a.Logger.error(`Error estimating Tron wrapper deposit fee`,e)}if(e<k+n)throw Error(i.insufficientResourcesErrorCodes.INSUFFICIENT_TRON_BALANCE_FOR_FEE)}let{transaction:N}=await w.transactionBuilder.triggerSmartContract(E,`prooflessDeposit(address,address,uint256,address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:k>0n?Number(k):0},[{type:`address`,value:o.evmHexToTronBase58Address(C)},{type:`address`,value:D},{type:`uint256`,value:g.toString()},{type:`address[]`,value:A},{type:`uint256[]`,value:v.map(String)},{type:`uint256[]`,value:j},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:M}],T),P=new Map(O.map(({token:e,balance:t})=>[o.evmHexToTronBase58Address(e.erc20TokenAddress),t]));await f.approveTronTokens(w,T,E,P),P.size>0&&await u.waitForTronErc20Approvals(w,T,E,Array.from(P.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),await c.simulateTronTransaction(l,E,`prooflessDeposit`,S,[o.evmHexToTronBase58Address(C),D,g.toString(),A,v.map(String),j,M],T,k>0n?k:void 0);let F=await w.trx.sign(N),I=await w.trx.sendRawTransaction(F);if(!I.result)throw Error(`Tron wrapper deposit failed`);let L=typeof I==`string`?I:I?.txid??I?.transaction?.txID;if(!L)throw Error(`Tron wrapper deposit failed (missing txid)`);return d.emitTxPublicData(s.constructAdminData(b,l,A,v,T)),L},g=async(t,r,i,a,o,c,h,g)=>{m(`hinkalEvmProoflessDepositViaWrapper`,o,c,h),f.assertNoDuplicateStealthAddressStructures(h);let _=e.networkRegistry[r]?.contractData?.hinkalWrapperAddress;if(!_)throw Error(`No HinkalWrapper configured for chainId ${r}`);let v=await t.getRandomRelay(r,!1);if(!v)throw Error(`No relay available for chainId ${r}`);let y=o.map(e=>e.erc20TokenAddress),b=c.map(()=>0n),{tokensForApproval:x,ethValue:S}=p(i,a,o,c),C=await t.getEthereumAddressByChain(r),w=t.getProviderAdapter(r),T=t.getContractWithSigner(r,n.ContractType.HinkalWrapper),E;if(x.length>0&&await w.supportsBatchCall?.(r)&&w.sendBatchCallsTransaction){let e=l.buildApproveAndDepositWrapperCalls(x.map(({token:e})=>e.erc20TokenAddress),x.map(({balance:e})=>e),_,T.interface,v,i,a,y,c,b,h,S);E=await w.sendBatchCallsTransaction(r,e)}else await f.approveTokens(t,r,_,x),await u.waitForErc20Approvals(t,r,C,_,x.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}))),E=await T.prooflessDeposit(v,i,a,y,c,b,h,{value:S>0n?S:void 0});return d.emitTxPublicData(s.constructAdminData(g,r,y,c,C)),E.hash};exports.hinkalEvmProoflessDepositViaWrapper=g,exports.hinkalTronProoflessDepositViaWrapper=h;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../types/ethereum-network.types.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/utils/tronSimulation.utils.cjs`),l=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),u=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),d=require(`../../API/admin-calls.cjs`),f=require(`./hinkalProoflessDeposit.utils.cjs`);var p=(e,r,i,a)=>{let o=n.caseInsensitiveEqual(e,t.zeroAddress),s=i.reduce((e,r,i)=>n.caseInsensitiveEqual(r.erc20TokenAddress,t.zeroAddress)?e+a[i]:e,0n)+(o?r:0n),c=f.aggregateAmountsForApproval(i,a),l=c.filter(({token:e})=>!n.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)).map(t=>!o&&n.caseInsensitiveEqual(t.token.erc20TokenAddress,e)?{token:t.token,balance:t.balance+r}:t).filter(({balance:e})=>e>0n);return!o&&r>0n&&(c.some(({token:t})=>n.caseInsensitiveEqual(t.erc20TokenAddress,e))||l.push({token:{erc20TokenAddress:e,chainId:i[0]?.chainId},balance:r})),{tokensForApproval:l,ethValue:s}},m=(e,t,n,r)=>{if(t.length!==n.length||n.length!==r.length)throw Error(`${e}: array length mismatch`)},h=async(i,l,h,g,_,v,y,b)=>{m(`hinkalTronProoflessDepositViaWrapper`,_,v,y),f.assertNoDuplicateStealthAddressStructures(y);let{hinkalWrapperAddress:x,hinkalWrapperABI:S}=e.networkRegistry[l]?.contractData??{};if(!x||!S)throw Error(`No HinkalWrapper configured for chainId ${l}`);let C=await i.getRandomRelay(l,!1);if(!C)throw Error(`No relay available for chainId ${l}`);let w=i.getTronWeb(),T=await i.getEthereumAddressByChain(l),E=o.evmHexToTronBase58Address(x),D=n.caseInsensitiveEqual(h,t.zeroAddress)?h:o.evmHexToTronBase58Address(h),{tokensForApproval:O,ethValue:k}=p(h,g,_,v),A=_.map(e=>e.erc20TokenAddress),j=v.map(()=>`0`),M=y.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()]);if(k>0n){let e=BigInt(await w.trx.getBalance(T)),n=BigInt(t.TRON_DEFAULT_FEE_LIMIT_SUN);try{n=await o.estimateTronFeeSunWithPadding(w,l,E,T,o.createTronCallData(S,`prooflessDeposit`,[o.evmHexToTronBase58Address(C),D,g.toString(),A,v.map(String),j,M]),k)}catch(e){a.Logger.error(`Error estimating Tron wrapper deposit fee`,e)}if(e<k+n)throw Error(r.insufficientResourcesErrorCodes.INSUFFICIENT_TRON_BALANCE_FOR_FEE)}let{transaction:N}=await w.transactionBuilder.triggerSmartContract(E,`prooflessDeposit(address,address,uint256,address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:k>0n?Number(k):0},[{type:`address`,value:o.evmHexToTronBase58Address(C)},{type:`address`,value:D},{type:`uint256`,value:g.toString()},{type:`address[]`,value:A},{type:`uint256[]`,value:v.map(String)},{type:`uint256[]`,value:j},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:M}],T),P=new Map(O.map(({token:e,balance:t})=>[o.evmHexToTronBase58Address(e.erc20TokenAddress),t]));await f.approveTronTokens(w,T,E,P),P.size>0&&await u.waitForTronErc20Approvals(w,T,E,Array.from(P.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),await c.simulateTronTransaction(l,E,`prooflessDeposit`,S,[o.evmHexToTronBase58Address(C),D,g.toString(),A,v.map(String),j,M],T,k>0n?k:void 0);let F=await w.trx.sign(N),I=await w.trx.sendRawTransaction(F);if(!I.result)throw Error(`Tron wrapper deposit failed`);let L=typeof I==`string`?I:I?.txid??I?.transaction?.txID;if(!L)throw Error(`Tron wrapper deposit failed (missing txid)`);return d.emitTxPublicData(s.constructAdminData(b,l,A,v,T)),L},g=async(t,n,r,a,o,c,h,g)=>{m(`hinkalEvmProoflessDepositViaWrapper`,o,c,h),f.assertNoDuplicateStealthAddressStructures(h);let _=e.networkRegistry[n]?.contractData?.hinkalWrapperAddress;if(!_)throw Error(`No HinkalWrapper configured for chainId ${n}`);let v=await t.getRandomRelay(n,!1);if(!v)throw Error(`No relay available for chainId ${n}`);let y=o.map(e=>e.erc20TokenAddress),b=c.map(()=>0n),{tokensForApproval:x,ethValue:S}=p(r,a,o,c),C=await t.getEthereumAddressByChain(n),w=t.getProviderAdapter(n),T=t.getContractWithSigner(n,i.ContractType.HinkalWrapper),E;if(x.length>0&&await w.supportsBatchCall?.(n)&&w.sendBatchCallsTransaction){let e=l.buildApproveAndDepositWrapperCalls(x.map(({token:e})=>e.erc20TokenAddress),x.map(({balance:e})=>e),_,T.interface,v,r,a,y,c,b,h,S);E=await w.sendBatchCallsTransaction(n,e)}else await f.approveTokens(t,n,_,x),await u.waitForErc20Approvals(t,n,C,_,x.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}))),E=await T.prooflessDeposit(v,r,a,y,c,b,h,{value:S>0n?S:void 0});return d.emitTxPublicData(s.constructAdminData(g,n,y,c,C)),E.hash};exports.hinkalEvmProoflessDepositViaWrapper=g,exports.hinkalTronProoflessDepositViaWrapper=h;
@@ -1,8 +1,8 @@
1
1
  import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
2
  import { TRON_DEFAULT_FEE_LIMIT_SUN as t, zeroAddress as n } from "../../constants/protocol.constants.mjs";
3
- import { ContractType as r } from "../../types/ethereum-network.types.mjs";
4
- import { caseInsensitiveEqual as i } from "../../functions/utils/caseInsensitive.utils.mjs";
5
- import { insufficientResourcesErrorCodes as a } from "../../error-handling/error-codes.constants.mjs";
3
+ import { caseInsensitiveEqual as r } from "../../functions/utils/caseInsensitive.utils.mjs";
4
+ import { insufficientResourcesErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
5
+ import { ContractType as a } from "../../types/ethereum-network.types.mjs";
6
6
  import { Logger as o } from "../../error-handling/logger.mjs";
7
7
  import { createTronCallData as s, estimateTronFeeSunWithPadding as c, evmHexToTronBase58Address as l } from "../../functions/utils/tron.utils.mjs";
8
8
  import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
@@ -12,15 +12,15 @@ import { waitForErc20Approvals as p, waitForTronErc20Approvals as m } from "../.
12
12
  import { emitTxPublicData as h } from "../../API/admin-calls.mjs";
13
13
  import { aggregateAmountsForApproval as g, approveTokens as _, approveTronTokens as v, assertNoDuplicateStealthAddressStructures as y } from "./hinkalProoflessDeposit.utils.mjs";
14
14
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDepositViaWrapper.ts
15
- var b = (e, t, r, a) => {
16
- let o = i(e, n), s = r.reduce((e, t, r) => i(t.erc20TokenAddress, n) ? e + a[r] : e, 0n) + (o ? t : 0n), c = g(r, a), l = c.filter(({ token: e }) => !i(e.erc20TokenAddress, n)).map((n) => !o && i(n.token.erc20TokenAddress, e) ? {
15
+ var b = (e, t, i, a) => {
16
+ let o = r(e, n), s = i.reduce((e, t, i) => r(t.erc20TokenAddress, n) ? e + a[i] : e, 0n) + (o ? t : 0n), c = g(i, a), l = c.filter(({ token: e }) => !r(e.erc20TokenAddress, n)).map((n) => !o && r(n.token.erc20TokenAddress, e) ? {
17
17
  token: n.token,
18
18
  balance: n.balance + t
19
19
  } : n).filter(({ balance: e }) => e > 0n);
20
- return !o && t > 0n && (c.some(({ token: t }) => i(t.erc20TokenAddress, e)) || l.push({
20
+ return !o && t > 0n && (c.some(({ token: t }) => r(t.erc20TokenAddress, e)) || l.push({
21
21
  token: {
22
22
  erc20TokenAddress: e,
23
- chainId: r[0]?.chainId
23
+ chainId: i[0]?.chainId
24
24
  },
25
25
  balance: t
26
26
  })), {
@@ -29,13 +29,13 @@ var b = (e, t, r, a) => {
29
29
  };
30
30
  }, x = (e, t, n, r) => {
31
31
  if (t.length !== n.length || n.length !== r.length) throw Error(`${e}: array length mismatch`);
32
- }, S = async (r, f, p, g, _, S, C, w) => {
32
+ }, S = async (a, f, p, g, _, S, C, w) => {
33
33
  x("hinkalTronProoflessDepositViaWrapper", _, S, C), y(C);
34
34
  let { hinkalWrapperAddress: T, hinkalWrapperABI: E } = e[f]?.contractData ?? {};
35
35
  if (!T || !E) throw Error(`No HinkalWrapper configured for chainId ${f}`);
36
- let D = await r.getRandomRelay(f, !1);
36
+ let D = await a.getRandomRelay(f, !1);
37
37
  if (!D) throw Error(`No relay available for chainId ${f}`);
38
- let O = r.getTronWeb(), k = await r.getEthereumAddressByChain(f), A = l(T), j = i(p, n) ? p : l(p), { tokensForApproval: M, ethValue: N } = b(p, g, _, S), P = _.map((e) => e.erc20TokenAddress), F = S.map(() => "0"), I = C.map((e) => [
38
+ let O = a.getTronWeb(), k = await a.getEthereumAddressByChain(f), A = l(T), j = r(p, n) ? p : l(p), { tokensForApproval: M, ethValue: N } = b(p, g, _, S), P = _.map((e) => e.erc20TokenAddress), F = S.map(() => "0"), I = C.map((e) => [
39
39
  e.extraRandomization.toString(),
40
40
  e.stealthAddress.toString(),
41
41
  e.H0.toString(),
@@ -56,7 +56,7 @@ var b = (e, t, r, a) => {
56
56
  } catch (e) {
57
57
  o.error("Error estimating Tron wrapper deposit fee", e);
58
58
  }
59
- if (e < N + n) throw Error(a.INSUFFICIENT_TRON_BALANCE_FOR_FEE);
59
+ if (e < N + n) throw Error(i.INSUFFICIENT_TRON_BALANCE_FOR_FEE);
60
60
  }
61
61
  let { transaction: L } = await O.transactionBuilder.triggerSmartContract(A, "prooflessDeposit(address,address,uint256,address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])", {
62
62
  feeLimit: t,
@@ -108,20 +108,20 @@ var b = (e, t, r, a) => {
108
108
  let V = typeof B == "string" ? B : B?.txid ?? B?.transaction?.txID;
109
109
  if (!V) throw Error("Tron wrapper deposit failed (missing txid)");
110
110
  return h(u(w, f, P, S, k)), V;
111
- }, C = async (t, n, i, a, o, s, c, l) => {
111
+ }, C = async (t, n, r, i, o, s, c, l) => {
112
112
  x("hinkalEvmProoflessDepositViaWrapper", o, s, c), y(c);
113
113
  let d = e[n]?.contractData?.hinkalWrapperAddress;
114
114
  if (!d) throw Error(`No HinkalWrapper configured for chainId ${n}`);
115
115
  let m = await t.getRandomRelay(n, !1);
116
116
  if (!m) throw Error(`No relay available for chainId ${n}`);
117
- let g = o.map((e) => e.erc20TokenAddress), v = s.map(() => 0n), { tokensForApproval: S, ethValue: C } = b(i, a, o, s), w = await t.getEthereumAddressByChain(n), T = t.getProviderAdapter(n), E = t.getContractWithSigner(n, r.HinkalWrapper), D;
117
+ let g = o.map((e) => e.erc20TokenAddress), v = s.map(() => 0n), { tokensForApproval: S, ethValue: C } = b(r, i, o, s), w = await t.getEthereumAddressByChain(n), T = t.getProviderAdapter(n), E = t.getContractWithSigner(n, a.HinkalWrapper), D;
118
118
  if (S.length > 0 && await T.supportsBatchCall?.(n) && T.sendBatchCallsTransaction) {
119
- let e = f(S.map(({ token: e }) => e.erc20TokenAddress), S.map(({ balance: e }) => e), d, E.interface, m, i, a, g, s, v, c, C);
119
+ let e = f(S.map(({ token: e }) => e.erc20TokenAddress), S.map(({ balance: e }) => e), d, E.interface, m, r, i, g, s, v, c, C);
120
120
  D = await T.sendBatchCallsTransaction(n, e);
121
121
  } else await _(t, n, d, S), await p(t, n, w, d, S.map(({ token: e, balance: t }) => ({
122
122
  tokenAddress: e.erc20TokenAddress,
123
123
  requiredAmount: t
124
- }))), D = await E.prooflessDeposit(m, i, a, g, s, v, c, { value: C > 0n ? C : void 0 });
124
+ }))), D = await E.prooflessDeposit(m, r, i, g, s, v, c, { value: C > 0n ? C : void 0 });
125
125
  return h(u(l, n, g, s, w)), D.hash;
126
126
  };
127
127
  //#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(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/solanaMint.utils.cjs`),u=require(`../../functions/utils/addresses.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/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),y=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const b=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),x=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),S=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let C=require(`ethers`),w=require(`@solana/web3.js`),T=require(`@coral-xyz/anchor`);var E=(n,a,o,s)=>{let{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!c)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(c),g=n.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(u),{mintPublicKey:y}=l.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=s.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:s,anchorStealthStructures:T}},D=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new T.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),O=async(e,t,n,r,i,a,o)=>{let s=r.map(e=>e+y.calculateTotalFee(e,a)),u=E(e,t,n,s),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(u).rpc(),p=await u.program.provider.connection.getLatestBlockhash();await u.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(u.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=l.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,u.program,e.userKeys,g),b=[],x=[..._];return i.forEach((e,t)=>{let n=s[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);b.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:b,depositTxHash:f,statusId:d}},k=async(s,u,d,p,h,g,_,v,w,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=e.networkRegistry[u].contractData;if(!A)throw Error(`missing data`);let j=await s.getRandomRelay(u,!0);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=a.getCurrentTimeInSeconds().toString(),N=s.generateProofRemotely?5:1,P=[];for(let e=0;e<p.length;e+=N){let n=p.slice(e,e+N),a=await Promise.all(n.map(async({recipientAddress:e,utxo:n},a)=>{let{compressedAddress:c}=l.formatMintAddress(t.solanaNativeAddress),p=new o.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:s.userKeys.getShieldedPrivateKey(),timeStamp:M,...n.isNewStyle?{spendingPublicKey:s.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[n,p],v=[p],x=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=f.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(u,d,_[a],h),A=m.constructAdminData(E,u,[k],[_[a]],await s.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(s.generateProofRemotely,s.merkleTreeHinkalByChain[u],s.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,e,j,S,[T],u),R={recipient:e,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:u,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[T],relayerFee:D.flatFee.toString(),dimensions:S},accounts:R,adminData:A,commitmentValidationData:L,displayRecipient:O?.[a]}}));P.push(...a)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(u,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(e,t,n,r,i,a,o,c,l,f)=>{let p=d.validateAndGetChainId([t]),m=t.erc20TokenAddress,h=u.hashEthereumAddress(await e.getEthereumAddressByChain(p)),v=l?u.hashString(l):void 0,y=a??await g.getFeeStructure(p,m,[m],s.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(e,p,t,n,r,y,h);return await _.waitForDepositedUtxosInMerkleTree(e,p,b),await k(e,p,t,b,y,h,n,S,i,o,c,v,f),x};exports.hinkalSolanaDepositAndWithdraw=A;
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(`../../types/external-action.types.cjs`),c=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/solanaMint.utils.cjs`),u=require(`../../functions/utils/addresses.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/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),y=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const b=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),x=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),S=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let C=require(`ethers`),w=require(`@solana/web3.js`),T=require(`@coral-xyz/anchor`);var E=(n,a,o,s)=>{let{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!c)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(c),g=n.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(u),{mintPublicKey:y}=l.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=s.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:s,anchorStealthStructures:T}},D=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new T.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),O=async(e,t,n,r,i,a,o)=>{let s=r.map(e=>e+y.calculateTotalFee(e,a)),u=E(e,t,n,s),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(u).rpc(),p=await u.program.provider.connection.getLatestBlockhash();await u.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(u.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=l.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,u.program,e.userKeys,g),b=[],x=[..._];return i.forEach((e,t)=>{let n=s[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);b.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:b,depositTxHash:f,statusId:d}},k=async(s,u,d,p,h,g,_,v,w,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=e.networkRegistry[u].contractData;if(!A)throw Error(`missing data`);let j=await s.getRandomRelay(u,!0);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=a.getCurrentTimeInSeconds().toString(),N=s.generateProofRemotely?5:1,P=[];for(let e=0;e<p.length;e+=N){let n=p.slice(e,e+N),a=await Promise.all(n.map(async({recipientAddress:e,utxo:n},a)=>{let{compressedAddress:c}=l.formatMintAddress(t.solanaNativeAddress),p=new o.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:s.userKeys.getShieldedPrivateKey(),timeStamp:M,...n.isNewStyle?{spendingPublicKey:s.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[n,p],v=[p],x=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=f.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(u,d,_[a],h),A=m.constructAdminData(E,u,[k],[_[a]],await s.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(s.generateProofRemotely,s.merkleTreeHinkalByChain[u],s.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,e,j,S,[T],u),R={recipient:e,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:u,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[T],relayerFee:D.flatFee.toString(),dimensions:S},accounts:R,adminData:A,commitmentValidationData:L,displayRecipient:O?.[a]}}));P.push(...a)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(u,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(e,t,n,r,i,a,o,c,l,f)=>{let p=d.validateAndGetChainId([t]),m=t.erc20TokenAddress,h=u.hashEthereumAddress(await e.getEthereumAddressByChain(p)),v=l?u.hashString(l):void 0,y=a??await g.getFeeStructure(p,m,[m],s.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(e,p,t,n,r,y,h);return await _.waitForDepositedUtxosInMerkleTree(e,p,b),{depositTxHash:x,scheduleId:await k(e,p,t,b,y,h,n,S,i,o,c,v,f)}};exports.hinkalSolanaDepositAndWithdraw=A;
@@ -1,7 +1,7 @@
1
1
  import { FeeStructure } from '../../types/hinkal.types';
2
2
  import { IHinkal } from './IHinkal';
3
3
  import { PublicKey } from '@solana/web3.js';
4
- import { AdminTransactionType, RecipientUtxo } from '../../types';
4
+ import { AdminTransactionType, DepositAndSendExtendedResult, RecipientUtxo } from '../../types';
5
5
  import { ERC20Token } from '../../types/token.types';
6
6
  export declare const buildMultiPaymentDepositSetup: (hinkal: IHinkal, chainId: number, token: ERC20Token, amounts: bigint[]) => {
7
7
  program: import('@coral-xyz/anchor').Program<import('@coral-xyz/anchor').Idl>;
@@ -21,4 +21,4 @@ export declare const buildMultiPaymentDepositBuilder: (setup: MultiPaymentDeposi
21
21
  }, import('@coral-xyz/anchor/dist/cjs/idl').IdlInstructionAccountItem>;
22
22
  export declare const hinkalSolanaWithdrawBatch: (hinkal: IHinkal, chainId: number, token: ERC20Token, userDepositedUtxos: RecipientUtxo[], feeStructure: FeeStructure, hashedEthereumAddress: string, recipientAmounts: bigint[], statusId: string | undefined, txCompletionTime?: number, ref?: string, action?: AdminTransactionType, hashedDashboardAccountId?: string, displayRecipients?: string[]) => Promise<string>;
23
23
  export declare const hinkalSolanaDepositAndWithdraw: (hinkal: IHinkal, token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, // Should be passed fee for only one withdraw transaction, multiplication happening in this function
24
- ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, displayRecipients?: string[]) => Promise<string>;
24
+ ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, displayRecipients?: string[]) => Promise<DepositAndSendExtendedResult>;
@@ -154,7 +154,10 @@ var N = (n, a, o, s) => {
154
154
  }), F;
155
155
  }, L = async (e, t, n, r, i, a, o, c, l, p) => {
156
156
  let m = f([t]), h = t.erc20TokenAddress, g = u(await e.getEthereumAddressByChain(m)), _ = l ? d(l) : void 0, v = a ?? await x(m, h, [h], s.Transact, [], 5n), { userDepositedUtxos: y, depositTxHash: b, statusId: C } = await F(e, m, t, n, r, v, g);
157
- return await S(e, m, y), await I(e, m, t, y, v, g, n, C, i, o, c, _, p), b;
157
+ return await S(e, m, y), {
158
+ depositTxHash: b,
159
+ scheduleId: await I(e, m, t, y, v, g, n, C, i, o, c, _, p)
160
+ };
158
161
  };
159
162
  //#endregion
160
163
  export { L as hinkalSolanaDepositAndWithdraw };
@@ -1,5 +1,4 @@
1
1
  export * from './Hinkal';
2
- export * from './HinkalPrivateBalanceController';
3
2
  export * from './IHinkal';
4
3
  export * from './hinkalDeposit';
5
4
  export * from './hinkalSwap';
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
@@ -11,7 +11,7 @@ import { ethers as c } from "ethers";
11
11
  var l = async (l, u, d, f, p, m = {}) => {
12
12
  let h = d.erc20TokenAddress, g = f.map((e) => e + o(e, p)), _ = g.reduce((e, t) => e + t, 0n), v = [h], y = [0n], b = [!0], x = c.AbiCoder.defaultAbiCoder().encode(["uint256[]"], [g]), { hinkalWrapperAddress: S, hinkalWrapperABI: C, depositOnChainUtxosExternalActionAddress: w, depositOnChainUtxosExternalActionABI: T } = e[u].contractData;
13
13
  if (!S || !C || !w || !T) throw Error("contract data not set in networkRegistry");
14
- let E = [...await i(l, u, v, y)], D = [];
14
+ let E = [...await i(l, u, v, y, 2, void 0, !0)], D = [];
15
15
  for (let e = 0; e < E.length; e += 1) {
16
16
  let { outputUtxos: t } = a(l.userKeys, E[e], y[e]);
17
17
  D.push(t);
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/mutexes.utils.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../../functions/utils/getContractAddress.cjs`),s=require(`../../functions/web3/events/balanceChangedHandler.cjs`),c=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),l=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const u=require(`../snapshot/SnapshotFetcherService.cjs`),d=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),p=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let h=require(`@solana/web3.js`),g=require(`async-mutex`);var _=new Map,v=e=>{let t=_.get(e);return t||(t=new g.Mutex,_.set(e,t)),t},y=async(g,_)=>{let y=(_??g.getSupportedChains()).map(_=>v(_).runExclusive(async()=>{g.commitmentsSnapshotServiceByChain[_]?.intervalClear(),g.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new l.ClientSolanaBlockchainEventEmitter(_,a.createCustomSolanaConnection(y),new h.PublicKey(e),0,i.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new u.SnapshotFetcherService(_,e);g.commitmentsSnapshotServiceByChain[_]=new d.ClientSolanaCommitmentsSnapshotService(x,n),g.nullifierSnapshotServiceByChain[_]=new f.ClientSolanaNullifierSnapshotService(x,n)}else{let e=g.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=g.getContractWithFetcherByChainId(_,t.ContractType.DepositOnChainUtxos),a=i.getChainBalanceFetchingMutex(_);x=new c.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,a,v,n);let s=new u.SnapshotFetcherService(_,o.getContractAddress(e));g.commitmentsSnapshotServiceByChain[_]=new p.ClientCommitmentsSnapshotService(x,s),g.nullifierSnapshotServiceByChain[_]=new m.ClientNullifierSnapshotService(x,s)}let S=g.commitmentsSnapshotServiceByChain[_],C=g.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),g.merkleTreeHinkalByChain[_]=S.merkleTree,g.nullifiersByChain[_]=C.nullifiers,g.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&s.balanceChangedHandler({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(y)};exports.resetMerkleTrees=y;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=i.getContractWithFetcherByChainId(_,t.ContractType.DepositOnChainUtxos),o=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,o,v,n);let c=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,c),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,c)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;