@hinkal/common 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +67 -4
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +0 -2
  4. package/common/src/API/API.mjs +92 -94
  5. package/common/src/API/admin-calls.cjs +1 -1
  6. package/common/src/API/admin-calls.d.ts +2 -1
  7. package/common/src/API/admin-calls.mjs +1 -0
  8. package/common/src/API/evm-token-assets.cjs +1 -1
  9. package/common/src/API/evm-token-assets.mjs +2 -13
  10. package/common/src/API/get-token-price-chart-data.cjs +1 -1
  11. package/common/src/API/get-token-price-chart-data.mjs +2 -2
  12. package/common/src/API/getTokenPrice.cjs +1 -1
  13. package/common/src/API/getTokenPrice.mjs +2 -2
  14. package/common/src/API/index.cjs +1 -1
  15. package/common/src/API/index.d.ts +1 -0
  16. package/common/src/API/index.mjs +1 -0
  17. package/common/src/API/privacy-score-calls.cjs +1 -1
  18. package/common/src/API/privacy-score-calls.mjs +2 -2
  19. package/common/src/API/receiveVaultCalls.cjs +1 -1
  20. package/common/src/API/receiveVaultCalls.d.ts +4 -2
  21. package/common/src/API/receiveVaultCalls.mjs +8 -4
  22. package/common/src/constants/chains.constants.cjs +1 -1
  23. package/common/src/constants/chains.constants.d.ts +2 -0
  24. package/common/src/constants/chains.constants.mjs +106 -93
  25. package/common/src/constants/coingecko.constants.cjs +1 -1
  26. package/common/src/constants/coingecko.constants.d.ts +2 -0
  27. package/common/src/constants/coingecko.constants.mjs +1 -1
  28. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  29. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  30. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  31. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +3 -2
  32. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  33. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  34. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  35. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  36. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  37. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  38. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  39. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  40. package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.cjs +1 -0
  41. package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.mjs +6 -0
  42. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  43. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +2 -1
  44. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  45. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +1 -1
  46. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  47. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +1 -1
  48. package/common/src/constants/deploy-data/index.cjs +1 -1
  49. package/common/src/constants/deploy-data/index.d.ts +2 -1
  50. package/common/src/constants/deploy-data/index.mjs +7 -6
  51. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  52. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +1 -1
  53. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.cjs +1 -1
  54. package/common/src/constants/deploy-data/shared-deploy-data-solana.json.mjs +1 -1
  55. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  56. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +1 -1
  57. package/common/src/constants/index.cjs +1 -1
  58. package/common/src/constants/index.mjs +1 -1
  59. package/common/src/constants/protocol.constants.cjs +2 -2
  60. package/common/src/constants/protocol.constants.d.ts +0 -2
  61. package/common/src/constants/protocol.constants.mjs +2 -2
  62. package/common/src/constants/save-depths.cjs +1 -1
  63. package/common/src/constants/save-depths.d.ts +1 -0
  64. package/common/src/constants/save-depths.mjs +1 -0
  65. package/common/src/constants/server.constants.cjs +1 -1
  66. package/common/src/constants/server.constants.d.ts +8 -6
  67. package/common/src/constants/server.constants.mjs +8 -6
  68. package/common/src/constants/tokens.constants.cjs +1 -1
  69. package/common/src/constants/tokens.constants.mjs +1 -1
  70. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  71. package/common/src/data-structures/Hinkal/Hinkal.d.ts +4 -4
  72. package/common/src/data-structures/Hinkal/Hinkal.mjs +37 -37
  73. package/common/src/data-structures/Hinkal/IHinkal.d.ts +4 -4
  74. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  75. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +5 -5
  76. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  77. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +1 -1
  78. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  79. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +55 -54
  80. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  81. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +60 -57
  82. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  83. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.d.ts +1 -1
  84. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +29 -29
  85. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  86. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +1 -1
  87. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  88. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +1 -1
  89. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -1
  90. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +7 -15
  91. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +2 -2
  93. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +24 -28
  94. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -1
  95. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +47 -40
  96. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +1 -1
  97. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  98. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +22 -42
  99. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +72 -70
  101. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.mjs +9 -9
  103. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  104. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +15 -15
  105. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  106. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.d.ts +1 -1
  107. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +47 -45
  108. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.cjs +1 -0
  109. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.d.ts +5 -0
  110. package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.mjs +60 -0
  111. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  112. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -26
  113. package/common/src/data-structures/Hinkal/index.d.ts +1 -0
  114. package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  115. package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +13 -13
  116. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  117. package/common/src/error-handling/error-codes.constants.d.ts +2 -0
  118. package/common/src/error-handling/error-codes.constants.mjs +2 -0
  119. package/common/src/error-handling/get-error.message.cjs +1 -1
  120. package/common/src/error-handling/get-error.message.mjs +10 -1
  121. package/common/src/functions/index.cjs +1 -1
  122. package/common/src/functions/index.mjs +6 -2
  123. package/common/src/functions/pre-transaction/addressTableLookup.d.ts +1 -0
  124. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.cjs +1 -1
  125. package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.mjs +7 -7
  126. package/common/src/functions/pre-transaction/constructAdminData.cjs +1 -1
  127. package/common/src/functions/pre-transaction/constructAdminData.mjs +4 -3
  128. package/common/src/functions/pre-transaction/sendV0Transaction.cjs +1 -1
  129. package/common/src/functions/pre-transaction/sendV0Transaction.d.ts +1 -0
  130. package/common/src/functions/pre-transaction/sendV0Transaction.mjs +22 -2
  131. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  132. package/common/src/functions/private-wallet/emporium.helpers.mjs +15 -15
  133. package/common/src/functions/snarkjs/fetchOnChainRootHashes.cjs +1 -1
  134. package/common/src/functions/snarkjs/fetchOnChainRootHashes.mjs +6 -6
  135. package/common/src/functions/utils/addresses.cjs +1 -1
  136. package/common/src/functions/utils/addresses.d.ts +4 -0
  137. package/common/src/functions/utils/addresses.mjs +17 -17
  138. package/common/src/functions/utils/admin-dimensions.cjs +1 -0
  139. package/common/src/functions/utils/admin-dimensions.d.ts +4 -0
  140. package/common/src/functions/utils/admin-dimensions.mjs +206 -0
  141. package/common/src/functions/utils/create-provider.cjs +1 -1
  142. package/common/src/functions/utils/create-provider.mjs +5 -1
  143. package/common/src/functions/utils/fees.utils.cjs +1 -1
  144. package/common/src/functions/utils/fees.utils.d.ts +2 -0
  145. package/common/src/functions/utils/fees.utils.mjs +31 -33
  146. package/common/src/functions/utils/gas-token.utils.cjs +1 -0
  147. package/common/src/functions/utils/gas-token.utils.d.ts +3 -0
  148. package/common/src/functions/utils/gas-token.utils.mjs +7 -0
  149. package/common/src/functions/utils/getUtxosFromReceiptSolana.d.ts +9 -4
  150. package/common/src/functions/utils/index.cjs +1 -1
  151. package/common/src/functions/utils/index.d.ts +4 -0
  152. package/common/src/functions/utils/index.mjs +5 -1
  153. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  154. package/common/src/functions/utils/publicBalance.utils.mjs +7 -7
  155. package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -1
  156. package/common/src/functions/utils/receive-vault-account.utils.d.ts +2 -1
  157. package/common/src/functions/utils/receive-vault-account.utils.mjs +16 -15
  158. package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -1
  159. package/common/src/functions/utils/receive-vault-scan.utils.mjs +37 -42
  160. package/common/src/functions/utils/receive-vault-solana.utils.cjs +1 -0
  161. package/common/src/functions/utils/receive-vault-solana.utils.d.ts +8 -0
  162. package/common/src/functions/utils/receive-vault-solana.utils.mjs +45 -0
  163. package/common/src/functions/utils/receive-vault.utils.cjs +2 -2
  164. package/common/src/functions/utils/receive-vault.utils.d.ts +13 -11
  165. package/common/src/functions/utils/receive-vault.utils.mjs +97 -82
  166. package/common/src/functions/utils/token-check.utils.d.ts +1 -0
  167. package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -1
  168. package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +5 -0
  169. package/common/src/functions/utils/wallet-token-discovery.utils.mjs +25 -31
  170. package/common/src/functions/web3/getContractMetadata.cjs +1 -1
  171. package/common/src/functions/web3/getContractMetadata.mjs +6 -6
  172. package/common/src/functions/web3/index.cjs +1 -1
  173. package/common/src/functions/web3/index.mjs +1 -1
  174. package/common/src/types/admin.types.cjs +1 -1
  175. package/common/src/types/admin.types.d.ts +64 -9
  176. package/common/src/types/admin.types.mjs +10 -2
  177. package/common/src/types/connector.types.d.ts +1 -0
  178. package/common/src/types/ethereum-network.types.d.ts +1 -0
  179. package/common/src/types/external-action.types.cjs +1 -1
  180. package/common/src/types/external-action.types.d.ts +2 -1
  181. package/common/src/types/external-action.types.mjs +1 -1
  182. package/common/src/types/receive-vault.types.cjs +1 -1
  183. package/common/src/types/receive-vault.types.d.ts +15 -20
  184. package/common/src/types/receive-vault.types.mjs +4 -2
  185. package/common/src/webworker/{logError-BeXPKuv9.js → logError-C-ej_TX9.js} +1 -1
  186. package/common/src/webworker/package.json +1 -1
  187. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  188. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  189. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  190. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  191. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  192. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  193. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  194. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  195. package/common/src/webworker/workerProxy-CE-rYA3W.js +1 -0
  196. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  197. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  198. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  199. package/index.cjs +1 -1
  200. package/index.mjs +3 -2
  201. package/internal/monitorConnectedAddress.cjs +1 -1
  202. package/internal/monitorConnectedAddress.d.ts +1 -1
  203. package/internal/monitorConnectedAddress.mjs +1 -3
  204. package/package.json +1 -1
  205. package/providers/prepareEthersHinkal.cjs +1 -1
  206. package/providers/prepareEthersHinkal.mjs +1 -1
  207. package/providers/prepareSolanaHinkal.cjs +1 -1
  208. package/providers/prepareSolanaHinkal.mjs +1 -1
  209. package/providers/prepareTronHinkal.cjs +1 -1
  210. package/providers/prepareTronHinkal.mjs +1 -1
  211. package/providers/prepareWagmiHinkal.cjs +1 -1
  212. package/providers/prepareWagmiHinkal.mjs +1 -1
  213. package/services/Hinkal.cjs +1 -1
  214. package/services/Hinkal.d.ts +6 -2
  215. package/services/Hinkal.mjs +74 -51
  216. package/types/IHinkal.d.ts +6 -1
  217. package/types/index.cjs +1 -1
  218. package/types/index.d.ts +1 -0
  219. package/types/index.mjs +2 -0
  220. package/types/receive-vault.types.cjs +1 -0
  221. package/types/receive-vault.types.d.ts +14 -0
  222. package/types/receive-vault.types.mjs +2 -0
  223. package/common/src/API/getOdosPriceForToken.cjs +0 -1
  224. package/common/src/API/getOdosPriceForToken.d.ts +0 -1
  225. package/common/src/API/getOdosPriceForToken.mjs +0 -14
  226. package/common/src/webworker/workerProxy-DF35H7vU.js +0 -1
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const S=require(`./hinkalDepositOnChainUtxos.cjs`);var C=async(o,u,d,m,h,v,x,S)=>{if(m.length===0)throw Error(`No recipients to bridge`);let C=d.erc20TokenAddress,{contractData:w}=e.networkRegistry[u],{emporiumAddress:T}=w;if(!T)throw Error(`No Emporium Address`);let E=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!E)throw Error(`LIFI not configured for chain ${u}`);let D=await o.getRandomRelay(u);if(!D)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let O=await o.getEthereumAddressByChain(u),k=o.generateProofRemotely,A=k?5:1,j=[];for(let i=0;i<m.length;i+=A){let d=m.slice(i,i+A),b=await Promise.all(d.map(async({utxo:d,nativeUtxo:m,bridgeAmount:b,quote:w,temporarySubAccount:A,recipientAddress:j,destinationChainId:M,destinationTokenAddress:N},P)=>{let F=h[i+P];await l.API.addTemporaryWalletNonce(u,v,A.index);let I=n.caseInsensitiveEqual(C,t.zeroAddress),L=w.nativeFee>0n&&!I,R=[C],z=[-d.amount],B=[!1],V=[[d]];L&&m&&(R.push(t.zeroAddress),z.push(-m.amount),B.push(!1),V.push([m]));let H=_.createLifiBridgeOps(o,u,A.ethAddress,E,C,d.amount,b,w),U=f.constructAdminData(x,u,R,[-d.amount],O),[W,G]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=k?await _.encodeEmporiumMetadata(u,T,A.privateKey,H,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),A.privateKey),F.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:R,amountChanges:z,externalAddress:T,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:B,feeStructure:F,relay:D??t.zeroAddress,messageSeed:n,inputUtxos:V,useBlockedUtxos:!0,speculative:S&&{pendingLeaves:S,inputUtxos:V.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:A.privateKey,emporiumOps:H,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,A.privateKey)]),{zkCallData:K,circomData:q,dimData:J,commitmentValidationData:Y,tronProofSignature:X}=W;return{zkCallData:K,dimData:J,circomData:q,commitmentValidationData:Y,authorizationData:G,recipientAddress:j,adminData:U,tronProofSignature:X,destinationChainId:M,destinationTokenAddress:N,destinationTokenAmount:w.expectedAmount.toString()}}));j.push(...b)}return j},w=e=>e.map(e=>e.quote.nativeFee),T=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(w(r))}let y=await S.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[T,E=[]]=b,D=r.map((e,t)=>({...e,utxo:T[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([S.submitDepositOnChainUtxos(e,y,h),C(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},E=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),S=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!S)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,S,g,r,n.bridgeAmount,n.quote).map(e=>x.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let E=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return T(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:E>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=E;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/admin-dimensions.cjs`),S=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const C=require(`./hinkalDepositOnChainUtxos.cjs`);var w=async(o,u,m,h,v,S,C,w)=>{if(h.length===0)throw Error(`No recipients to bridge`);let T=m.erc20TokenAddress,{contractData:E}=e.networkRegistry[u],{emporiumAddress:D}=E;if(!D)throw Error(`No Emporium Address`);let O=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!O)throw Error(`LIFI not configured for chain ${u}`);let k=await o.getRandomRelay(u);if(!k)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=await o.getEthereumAddressByChain(u),j=o.generateProofRemotely,M=j?5:1,N=[];for(let i=0;i<h.length;i+=M){let b=h.slice(i,i+M),E=await Promise.all(b.map(async({utxo:h,nativeUtxo:b,bridgeAmount:E,quote:M,temporarySubAccount:N,recipientAddress:P,destinationChainId:F,destinationTokenAddress:I},L)=>{let R=v[i+L];await l.API.addTemporaryWalletNonce(u,S,N.index);let z=n.caseInsensitiveEqual(T,t.zeroAddress),B=M.nativeFee>0n&&!z,V=[T],H=[-h.amount],U=[!1],W=[[h]];B&&b&&(V.push(t.zeroAddress),H.push(-b.amount),U.push(!1),W.push([b]));let G=_.createLifiBridgeOps(o,u,N.ethAddress,O,T,h.amount,E,M),K=I?await d.getErc20TokenFromAPI(F??u,I):void 0,q=x.resolveSwapPairTokens(C,[m],K),J=f.constructAdminData(C,u,V,[-h.amount],A,q),[Y,X]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=j?await _.encodeEmporiumMetadata(u,D,N.privateKey,G,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),N.privateKey),R.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:V,amountChanges:H,externalAddress:D,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:U,feeStructure:R,relay:k??t.zeroAddress,messageSeed:n,inputUtxos:W,useBlockedUtxos:!0,speculative:w&&{pendingLeaves:w,inputUtxos:W.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:N.privateKey,emporiumOps:G,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,N.privateKey)]),{zkCallData:Z,circomData:Q,dimData:$,commitmentValidationData:ee,tronProofSignature:te}=Y;return{zkCallData:Z,dimData:$,circomData:Q,commitmentValidationData:ee,authorizationData:X,recipientAddress:P,adminData:J,tronProofSignature:te,destinationChainId:F,destinationTokenAddress:I,destinationTokenAmount:M.expectedAmount.toString()}}));N.push(...E)}return N},T=e=>e.map(e=>e.quote.nativeFee),E=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(T(r))}let y=await C.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[S,E=[]]=b,D=r.map((e,t)=>({...e,utxo:S[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([C.submitDepositOnChainUtxos(e,y,h),w(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},D=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),x=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!x)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,x,g,r,n.bridgeAmount,n.quote).map(e=>S.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let T=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return E(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:T>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=D;
@@ -19,100 +19,101 @@ import { createLifiBridgeOps as b, encodeEmporiumMetadata as x, getAuthorization
19
19
  import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
20
  import { hinkalTransact as w } from "./hinkalTransact.mjs";
21
21
  import { SWAP_ROUTER_ADDRESSES as T } from "../../constants/addresses.constants.mjs";
22
- import { convertEmporiumOpToCallInfo as E } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
22
+ import { resolveSwapPairTokens as E } from "../../functions/utils/admin-dimensions.mjs";
23
+ import { convertEmporiumOpToCallInfo as D } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
23
24
  import "../../functions/utils/index.mjs";
24
- import { prepareDepositOnChainUtxos as D, submitDepositOnChainUtxos as O } from "./hinkalDepositOnChainUtxos.mjs";
25
+ import { prepareDepositOnChainUtxos as O, submitDepositOnChainUtxos as k } from "./hinkalDepositOnChainUtxos.mjs";
25
26
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
26
- var k = async (n, c, l, p, m, _, v, C) => {
27
+ var A = async (n, c, l, p, _, v, C, D) => {
27
28
  if (p.length === 0) throw Error("No recipients to bridge");
28
- let E = l.erc20TokenAddress, { contractData: D } = t[c], { emporiumAddress: O } = D;
29
- if (!O) throw Error("No Emporium Address");
30
- let k = T[u.Lifi][c];
31
- if (!k) throw Error(`LIFI not configured for chain ${c}`);
32
- let A = await n.getRandomRelay(c);
33
- if (!A) throw Error(o.RELAYER_NOT_AVAILABLE);
34
- let j = await n.getEthereumAddressByChain(c), M = n.generateProofRemotely, N = M ? 5 : 1, P = [];
35
- for (let t = 0; t < p.length; t += N) {
36
- let o = p.slice(t, t + N), l = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: l, bridgeAmount: p, quote: T, temporarySubAccount: D, recipientAddress: N, destinationChainId: P, destinationTokenAddress: F }, I) => {
37
- let L = m[t + I];
38
- await f.addTemporaryWalletNonce(c, _, D.index);
39
- let R = i(E, r), z = T.nativeFee > 0n && !R, B = [E], V = [-o.amount], H = [!1], U = [[o]];
40
- z && l && (B.push(r), V.push(-l.amount), H.push(!1), U.push([l]));
41
- let W = b(n, c, D.ethAddress, k, E, o.amount, p, T), G = h(v, c, B, [-o.amount], j), [K, q] = await Promise.all([(async () => {
42
- let t = s(31), i = M ? await x(c, O, D.privateKey, W, a(t), g.getSignerAddressFromPrivateKey(e(c), D.privateKey), L.flatFee) : void 0;
29
+ let O = l.erc20TokenAddress, { contractData: k } = t[c], { emporiumAddress: A } = k;
30
+ if (!A) throw Error("No Emporium Address");
31
+ let j = T[u.Lifi][c];
32
+ if (!j) throw Error(`LIFI not configured for chain ${c}`);
33
+ let M = await n.getRandomRelay(c);
34
+ if (!M) throw Error(o.RELAYER_NOT_AVAILABLE);
35
+ let N = await n.getEthereumAddressByChain(c), P = n.generateProofRemotely, F = P ? 5 : 1, I = [];
36
+ for (let t = 0; t < p.length; t += F) {
37
+ let o = p.slice(t, t + F), T = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: p, bridgeAmount: T, quote: k, temporarySubAccount: F, recipientAddress: I, destinationChainId: L, destinationTokenAddress: R }, z) => {
38
+ let B = _[t + z];
39
+ await f.addTemporaryWalletNonce(c, v, F.index);
40
+ let V = i(O, r), H = k.nativeFee > 0n && !V, U = [O], W = [-o.amount], G = [!1], K = [[o]];
41
+ H && p && (U.push(r), W.push(-p.amount), G.push(!1), K.push([p]));
42
+ let q = b(n, c, F.ethAddress, j, O, o.amount, T, k), J = R ? await m(L ?? c, R) : void 0, Y = E(C, [l], J), X = h(C, c, U, [-o.amount], N, Y), [Z, Q] = await Promise.all([(async () => {
43
+ let t = s(31), i = P ? await x(c, A, F.privateKey, q, a(t), g.getSignerAddressFromPrivateKey(e(c), F.privateKey), B.flatFee) : void 0;
43
44
  return w(n, {
44
45
  chainId: c,
45
- erc20Addresses: B,
46
- amountChanges: V,
47
- externalAddress: O,
46
+ erc20Addresses: U,
47
+ amountChanges: W,
48
+ externalAddress: A,
48
49
  externalActionId: u.Emporium,
49
50
  externalActionMetadata: i,
50
- onChainCreation: H,
51
- feeStructure: L,
52
- relay: A ?? r,
51
+ onChainCreation: G,
52
+ feeStructure: B,
53
+ relay: M ?? r,
53
54
  messageSeed: t,
54
- inputUtxos: U,
55
+ inputUtxos: K,
55
56
  useBlockedUtxos: !0,
56
- speculative: C && {
57
- pendingLeaves: C,
58
- inputUtxos: U.map((e) => e.map(y))
57
+ speculative: D && {
58
+ pendingLeaves: D,
59
+ inputUtxos: K.map((e) => e.map(y))
59
60
  },
60
- subAccountPrivateKey: D.privateKey,
61
- emporiumOps: W,
61
+ subAccountPrivateKey: F.privateKey,
62
+ emporiumOps: q,
62
63
  submit: { mode: d.ProofOnly }
63
64
  });
64
- })(), S(c, D.privateKey)]), { zkCallData: J, circomData: Y, dimData: X, commitmentValidationData: Z, tronProofSignature: Q } = K;
65
+ })(), S(c, F.privateKey)]), { zkCallData: $, circomData: ee, dimData: te, commitmentValidationData: ne, tronProofSignature: re } = Z;
65
66
  return {
66
- zkCallData: J,
67
- dimData: X,
68
- circomData: Y,
69
- commitmentValidationData: Z,
70
- authorizationData: q,
71
- recipientAddress: N,
72
- adminData: G,
73
- tronProofSignature: Q,
74
- destinationChainId: P,
75
- destinationTokenAddress: F,
76
- destinationTokenAmount: T.expectedAmount.toString()
67
+ zkCallData: $,
68
+ dimData: te,
69
+ circomData: ee,
70
+ commitmentValidationData: ne,
71
+ authorizationData: Q,
72
+ recipientAddress: I,
73
+ adminData: X,
74
+ tronProofSignature: re,
75
+ destinationChainId: L,
76
+ destinationTokenAddress: R,
77
+ destinationTokenAmount: k.expectedAmount.toString()
77
78
  };
78
79
  }));
79
- P.push(...l);
80
+ I.push(...T);
80
81
  }
81
- return P;
82
- }, A = (e) => e.map((e) => e.quote.nativeFee), j = async (e, t, n, i) => {
82
+ return I;
83
+ }, j = (e) => e.map((e) => e.quote.nativeFee), M = async (e, t, n, i) => {
83
84
  let { chainId: a, hashedEthereumAddress: o, feeStructures: s, mainTokenAmounts: c } = i, { needsNativeDeposit: l, txCompletionTime: u, ref: d, action: f, hashedDashboardAccountId: p, preEstimateGas: h } = i, g = [t], _ = [c];
84
85
  if (l) {
85
86
  let e = await m(a, r);
86
87
  if (!e) throw Error("No native token");
87
- g.push(e), _.push(A(n));
88
+ g.push(e), _.push(j(n));
88
89
  }
89
- let v = await D(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
90
+ let v = await O(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
90
91
  ...e,
91
92
  utxo: x[t],
92
93
  nativeUtxo: l ? S[t] : void 0
93
- })), [T, E] = await Promise.all([O(e, v, h), k(e, a, t, w, s, o, f, b)]);
94
+ })), [T, E] = await Promise.all([k(e, v, h), A(e, a, t, w, s, o, f, b)]);
94
95
  return {
95
96
  depositTxHash: T,
96
97
  scheduleId: await C(a, E, o, u, d, p, T)
97
98
  };
98
- }, M = async (e, t, a, o, s, d, f, m, h = !0) => {
99
+ }, N = async (e, t, a, o, s, d, f, m, h = !0) => {
99
100
  if (a.length === 0) throw Error("No recipients to bridge");
100
101
  let g = t.erc20TokenAddress, y = p([t]), x = await e.getEthereumAddressByChain(y), S = T[u.Lifi][y];
101
102
  if (!S) throw Error("LIFI router not configured");
102
103
  let C = i(g, r), w;
103
104
  if (s) w = s;
104
105
  else {
105
- let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => E(e, t.temporarySubAccount.ethAddress, y));
106
+ let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => D(e, t.temporarySubAccount.ethAddress, y));
106
107
  w = await _(y, g, [g], u.Emporium, i, n);
107
108
  }
108
- let D = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
109
- return j(e, t, a, {
109
+ let E = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
110
+ return M(e, t, a, {
110
111
  chainId: y,
111
112
  ethereumAddress: x,
112
113
  hashedEthereumAddress: c(x),
113
114
  feeStructures: k,
114
115
  mainTokenAmounts: O.map((e, t) => e + k[t].flatFee),
115
- needsNativeDeposit: D > 0n && !C,
116
+ needsNativeDeposit: E > 0n && !C,
116
117
  txCompletionTime: o,
117
118
  ref: d,
118
119
  action: f,
@@ -121,4 +122,4 @@ var k = async (n, c, l, p, m, _, v, C) => {
121
122
  });
122
123
  };
123
124
  //#endregion
124
- export { M as hinkalDepositAndBridge };
125
+ export { N as hinkalDepositAndBridge };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.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/speculativeUtxo.cjs`),m=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`./hinkalTransact.cjs`);require(`../../functions/index.cjs`);const _=require(`./hinkalDepositOnChainUtxos.cjs`);let v=require(`ethers`);var y=async(e,o,s,l,u,f,m,h)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[v,y]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!v)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let b=e.generateProofRemotely?5:1,x=[],S=a.addressToHexFormat(y);for(let r=0;r<l.length;r+=b){let s=l.slice(r,r+b),y=await Promise.all(s.map(async({recipientAddress:s,utxo:l},y)=>{let b=r+y,x=a.addressToHexFormat(s),C=n.caseInsensitiveEqual(l.erc20TokenAddress,_)?l:i.Utxo.createFrom(l,{erc20TokenAddress:_}),w=d.constructAdminData(f,o,[_],[-l.amount],S),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O,tronProofSignature:k}=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-l.amount],externalAddress:x,feeStructure:u,relay:v??t.zeroAddress,inputUtxos:[[C]],useBlockedUtxos:!0,speculative:h&&{pendingLeaves:h,inputUtxos:[[p.toSpeculativeUtxo(C)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:T,dimData:D,circomData:E,commitmentValidationData:O,adminData:w,recipientAddress:s,tronProofSignature:k,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[b]}}));x.push(...y)}return x},b=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,m=n.map(e=>e+s.flatFee),g=await _.prepareDepositOnChainUtxos(e,a,[t],[m]),{depositedUtxos:v,pendingLeaves:b}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[S,C]=await Promise.all([_.submitDepositOnChainUtxos(e,g,p),y(e,a,t,x,s,c,l,b)]);return{depositTxHash:S,scheduleId:await h.transactCallRelayerBatch(a,C,o,u,d,f,S)}},x=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:_,ref:b,hashedDashboardAccountId:x,preEstimateGas:S}=i,C=n.map(e=>e+d.flatFee),w=C.reduce((e,t)=>e+t,0n),T=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[w],externalAddress:s,selfOutputAmounts:C,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),E=T.circomData.encryptedOutputs?.[0];if(!E||E.length!==C.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let D=E.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(v.ethers.getBytes(t),e.userKeys)})),O=T.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[k,A]=await Promise.all([(async()=>{a.swapTronBCoordinate(T.zkCallData);let n=await m.transactCallDirectTron(e,o,w,t,T.zkCallData,T.circomData,T.dimData,void 0,void 0,S,T.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),y(e,o,t,D,d,f,p,O)]);return{depositTxHash:k,scheduleId:await h.transactCallRelayerBatch(o,A,u,_,b,x,k)}},S=async(t,n,r,i,c,l,d,p,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),S={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await f.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:p,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return b(t,n,r,i,S);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return x(t,n,r,i,S)};exports.hinkalDepositAndWithdraw=S;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../functions/utils/admin-dimensions.cjs`);require(`../../functions/index.cjs`);const b=require(`./hinkalDepositOnChainUtxos.cjs`);let x=require(`ethers`);var S=async(e,o,s,l,u,p,m,g)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[b,x]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!b)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let S=e.generateProofRemotely?5:1,C=[],w=a.addressToHexFormat(x);for(let r=0;r<l.length;r+=S){let x=l.slice(r,r+S),T=await Promise.all(x.map(async({recipientAddress:l,utxo:x},S)=>{let C=r+S,T=a.addressToHexFormat(l),E=n.caseInsensitiveEqual(x.erc20TokenAddress,_)?x:i.Utxo.createFrom(x,{erc20TokenAddress:_}),D=m?.tokenAddress?await d.getErc20TokenFromAPI(m.chainId??o,m.tokenAddress):void 0,O=y.resolveSwapPairTokens(p,[s],D),k=f.constructAdminData(p,o,[_],[-x.amount],w,O),{zkCallData:A,circomData:j,dimData:M,commitmentValidationData:N,tronProofSignature:P}=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-x.amount],externalAddress:T,feeStructure:u,relay:b??t.zeroAddress,inputUtxos:[[E]],useBlockedUtxos:!0,speculative:g&&{pendingLeaves:g,inputUtxos:[[h.toSpeculativeUtxo(E)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:A,dimData:M,circomData:j,commitmentValidationData:N,adminData:k,recipientAddress:l,tronProofSignature:P,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[C]}}));C.push(...T)}return C},C=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,h=m.calculateGrossUtxoAmounts(n,s),g=await b.prepareDepositOnChainUtxos(e,a,[t],[h]),{depositedUtxos:v,pendingLeaves:y}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[C,w]=await Promise.all([b.submitDepositOnChainUtxos(e,g,p),S(e,a,t,x,s,c,l,y)]);return{depositTxHash:C,scheduleId:await _.transactCallRelayerBatch(a,w,o,u,d,f,C)}},w=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:h,ref:y,hashedDashboardAccountId:b,preEstimateGas:C}=i,w=m.calculateGrossUtxoAmounts(n,d),T=w.reduce((e,t)=>e+t,0n),E=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[T],externalAddress:s,selfOutputAmounts:w,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),D=E.circomData.encryptedOutputs?.[0];if(!D||D.length!==w.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let O=D.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(x.ethers.getBytes(t),e.userKeys)})),k=E.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[A,j]=await Promise.all([(async()=>{a.swapTronBCoordinate(E.zkCallData);let n=await g.transactCallDirectTron(e,o,T,t,E.zkCallData,E.circomData,E.dimData,void 0,void 0,C,E.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),S(e,o,t,O,d,f,p,k)]);return{depositTxHash:A,scheduleId:await _.transactCallRelayerBatch(o,j,u,h,y,b,A)}},T=async(t,n,r,i,c,l,d,f,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),b={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await p.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:f,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return C(t,n,r,i,b);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return w(t,n,r,i,b)};exports.hinkalDepositAndWithdraw=T;
@@ -9,105 +9,108 @@ import { ExternalActionId as l } from "../../types/external-action.types.mjs";
9
9
  import { SubmitMode as u } from "../../types/transact.types.mjs";
10
10
  import { decryptUtxo as d } from "../crypto-keys/encryptDecryptUtxo.mjs";
11
11
  import { validateAndGetChainId as f } from "../../functions/utils/token-check.utils.mjs";
12
- import { constructAdminData as p } from "../../functions/pre-transaction/constructAdminData.mjs";
13
- import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
14
- import { toSpeculativeUtxo as h } from "../../functions/pre-transaction/speculativeUtxo.mjs";
15
- import { transactCallDirectTron as g } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
16
- import { transactCallRelayerBatch as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
17
- import { hinkalTransact as v } from "./hinkalTransact.mjs";
12
+ import { getErc20TokenFromAPI as p } from "../../functions/utils/erc20tokenFunctions.mjs";
13
+ import { constructAdminData as m } from "../../functions/pre-transaction/constructAdminData.mjs";
14
+ import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
+ import { calculateGrossUtxoAmounts as g } from "../../functions/utils/fees.utils.mjs";
16
+ import { toSpeculativeUtxo as _ } from "../../functions/pre-transaction/speculativeUtxo.mjs";
17
+ import { transactCallDirectTron as v } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
18
+ import { transactCallRelayerBatch as y } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
19
+ import { hinkalTransact as b } from "./hinkalTransact.mjs";
20
+ import { resolveSwapPairTokens as x } from "../../functions/utils/admin-dimensions.mjs";
18
21
  import "../../functions/index.mjs";
19
- import { prepareDepositOnChainUtxos as y, submitDepositOnChainUtxos as b } from "./hinkalDepositOnChainUtxos.mjs";
20
- import { ethers as x } from "ethers";
22
+ import { prepareDepositOnChainUtxos as S, submitDepositOnChainUtxos as C } from "./hinkalDepositOnChainUtxos.mjs";
23
+ import { ethers as w } from "ethers";
21
24
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.ts
22
- var S = async (e, o, s, c, l, d, f, m) => {
25
+ var T = async (e, o, s, c, l, d, f, h) => {
23
26
  if (c.length === 0) throw Error("userDepositedUtxos must not be empty");
24
- let g = s.erc20TokenAddress, [_, y] = await Promise.all([e.getRandomRelay(o), e.getEthereumAddressByChain(o)]);
25
- if (!_) throw Error(r.RELAYER_NOT_AVAILABLE);
26
- let b = e.generateProofRemotely ? 5 : 1, x = [], S = a(y);
27
- for (let r = 0; r < c.length; r += b) {
28
- let s = c.slice(r, r + b), y = await Promise.all(s.map(async ({ recipientAddress: s, utxo: c }, y) => {
29
- let b = r + y, x = a(s), C = n(c.erc20TokenAddress, g) ? c : i.createFrom(c, { erc20TokenAddress: g }), w = p(d, o, [g], [-c.amount], S), { zkCallData: T, circomData: E, dimData: D, commitmentValidationData: O, tronProofSignature: k } = await v(e, {
27
+ let g = s.erc20TokenAddress, [v, y] = await Promise.all([e.getRandomRelay(o), e.getEthereumAddressByChain(o)]);
28
+ if (!v) throw Error(r.RELAYER_NOT_AVAILABLE);
29
+ let S = e.generateProofRemotely ? 5 : 1, C = [], w = a(y);
30
+ for (let r = 0; r < c.length; r += S) {
31
+ let y = c.slice(r, r + S), T = await Promise.all(y.map(async ({ recipientAddress: c, utxo: y }, S) => {
32
+ let C = r + S, T = a(c), E = n(y.erc20TokenAddress, g) ? y : i.createFrom(y, { erc20TokenAddress: g }), D = f?.tokenAddress ? await p(f.chainId ?? o, f.tokenAddress) : void 0, O = x(d, [s], D), k = m(d, o, [g], [-y.amount], w, O), { zkCallData: A, circomData: j, dimData: M, commitmentValidationData: N, tronProofSignature: P } = await b(e, {
30
33
  chainId: o,
31
34
  erc20Addresses: [g],
32
- amountChanges: [-c.amount],
33
- externalAddress: x,
35
+ amountChanges: [-y.amount],
36
+ externalAddress: T,
34
37
  feeStructure: l,
35
- relay: _ ?? t,
36
- inputUtxos: [[C]],
38
+ relay: v ?? t,
39
+ inputUtxos: [[E]],
37
40
  useBlockedUtxos: !0,
38
- speculative: m && {
39
- pendingLeaves: m,
40
- inputUtxos: [[h(C)]]
41
+ speculative: h && {
42
+ pendingLeaves: h,
43
+ inputUtxos: [[_(E)]]
41
44
  },
42
45
  submit: { mode: u.ProofOnly },
43
46
  skipLock: !0
44
47
  });
45
48
  return {
46
- zkCallData: T,
47
- dimData: D,
48
- circomData: E,
49
- commitmentValidationData: O,
50
- adminData: w,
51
- recipientAddress: s,
52
- tronProofSignature: k,
49
+ zkCallData: A,
50
+ dimData: M,
51
+ circomData: j,
52
+ commitmentValidationData: N,
53
+ adminData: k,
54
+ recipientAddress: c,
55
+ tronProofSignature: P,
53
56
  destinationChainId: f?.chainId,
54
57
  destinationTokenAddress: f?.tokenAddress,
55
- destinationTokenAmount: f?.tokenAmounts?.[b]
58
+ destinationTokenAmount: f?.tokenAmounts?.[C]
56
59
  };
57
60
  }));
58
- x.push(...y);
61
+ C.push(...T);
59
62
  }
60
- return x;
61
- }, C = async (e, t, n, r, i) => {
62
- let { chainId: a, hashedEthereumAddress: o, feeStructure: s, action: c, destination: l } = i, { txCompletionTime: u, ref: d, hashedDashboardAccountId: f, preEstimateGas: p } = i, m = n.map((e) => e + s.flatFee), h = await y(e, a, [t], [m]), { depositedUtxos: g, pendingLeaves: v } = h, x = g[0].map((e, t) => ({
63
+ return C;
64
+ }, E = async (e, t, n, r, i) => {
65
+ let { chainId: a, hashedEthereumAddress: o, feeStructure: s, action: c, destination: l } = i, { txCompletionTime: u, ref: d, hashedDashboardAccountId: f, preEstimateGas: p } = i, m = g(n, s), h = await S(e, a, [t], [m]), { depositedUtxos: _, pendingLeaves: v } = h, b = _[0].map((e, t) => ({
63
66
  recipientAddress: r[t],
64
67
  utxo: e
65
- })), [C, w] = await Promise.all([b(e, h, p), S(e, a, t, x, s, c, l, v)]);
68
+ })), [x, w] = await Promise.all([C(e, h, p), T(e, a, t, b, s, c, l, v)]);
66
69
  return {
67
- depositTxHash: C,
68
- scheduleId: await _(a, w, o, u, d, f, C)
70
+ depositTxHash: x,
71
+ scheduleId: await y(a, w, o, u, d, f, x)
69
72
  };
70
- }, w = async (e, t, n, r, i) => {
71
- let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: f, destination: p } = i, { txCompletionTime: m, ref: h, hashedDashboardAccountId: y, preEstimateGas: b } = i, C = n.map((e) => e + l.flatFee), w = C.reduce((e, t) => e + t, 0n), T = await v(e, {
73
+ }, D = async (e, t, n, r, i) => {
74
+ let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: f, destination: p } = i, { txCompletionTime: m, ref: h, hashedDashboardAccountId: _, preEstimateGas: x } = i, S = g(n, l), C = S.reduce((e, t) => e + t, 0n), E = await b(e, {
72
75
  chainId: a,
73
76
  erc20Addresses: [t.erc20TokenAddress],
74
- amountChanges: [w],
77
+ amountChanges: [C],
75
78
  externalAddress: s,
76
- selfOutputAmounts: C,
79
+ selfOutputAmounts: S,
77
80
  createBlockedUtxos: !0,
78
81
  forceEmptyUtxos: !0,
79
82
  submit: { mode: u.ProofOnly }
80
- }), E = T.circomData.encryptedOutputs?.[0];
81
- if (!E || E.length !== C.length) throw Error("Deposit proof is missing encryptedOutputs for the deposited UTXOs");
82
- let D = E.map((t, n) => ({
83
+ }), D = E.circomData.encryptedOutputs?.[0];
84
+ if (!D || D.length !== S.length) throw Error("Deposit proof is missing encryptedOutputs for the deposited UTXOs");
85
+ let O = D.map((t, n) => ({
83
86
  recipientAddress: r[n],
84
- utxo: d(x.getBytes(t), e.userKeys)
85
- })), O = T.circomData.outCommitments.flat().map((e) => BigInt(e)).filter((e) => e !== 0n).map((e) => e.toString()), [k, A] = await Promise.all([(async () => {
86
- o(T.zkCallData);
87
- let n = await g(e, a, w, t, T.zkCallData, T.circomData, T.dimData, void 0, void 0, b, T.tronProofSignature);
87
+ utxo: d(w.getBytes(t), e.userKeys)
88
+ })), k = E.circomData.outCommitments.flat().map((e) => BigInt(e)).filter((e) => e !== 0n).map((e) => e.toString()), [A, j] = await Promise.all([(async () => {
89
+ o(E.zkCallData);
90
+ let n = await v(e, a, C, t, E.zkCallData, E.circomData, E.dimData, void 0, void 0, x, E.tronProofSignature);
88
91
  if (!n) throw Error("Deposit transaction hash not found");
89
92
  return n;
90
- })(), S(e, a, t, D, l, f, p, O)]);
93
+ })(), T(e, a, t, O, l, f, p, k)]);
91
94
  return {
92
- depositTxHash: k,
93
- scheduleId: await _(a, A, c, m, h, y, k)
95
+ depositTxHash: A,
96
+ scheduleId: await y(a, j, c, m, h, _, A)
94
97
  };
95
- }, T = async (t, n, r, i, o, u, d, p, h, g = !0, _) => {
98
+ }, O = async (t, n, r, i, o, u, d, p, m, g = !0, _) => {
96
99
  let v = f([n]), y = n.erc20TokenAddress, b = a(await t.getEthereumAddressByChain(v)), x = {
97
100
  chainId: v,
98
101
  ethereumAddress: b,
99
102
  hashedEthereumAddress: s(b),
100
- feeStructure: u ?? await m(v, y, [y], l.Transact, [], 25n),
103
+ feeStructure: u ?? await h(v, y, [y], l.Transact, [], 25n),
101
104
  txCompletionTime: o,
102
105
  ref: d,
103
106
  action: p,
104
- hashedDashboardAccountId: h ? c(h) : void 0,
107
+ hashedDashboardAccountId: m ? c(m) : void 0,
105
108
  preEstimateGas: g,
106
109
  destination: _
107
110
  };
108
- if (!e(v)) return C(t, n, r, i, x);
111
+ if (!e(v)) return E(t, n, r, i, x);
109
112
  if (r.length > 4) throw Error("Tron supports at most 4 recipients per deposit - no circuit emits more outputs");
110
- return w(t, n, r, i, x);
113
+ return D(t, n, r, i, x);
111
114
  };
112
115
  //#endregion
113
- export { T as hinkalDepositAndWithdraw };
116
+ export { O as hinkalDepositAndWithdraw };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/admin.types.cjs`),c=require(`../../types/transact.types.cjs`);require(`../../error-handling/index.cjs`);const l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const f=require(`../../functions/private-wallet/emporium.helpers.cjs`),p=require(`./hinkalTransact.cjs`),m=require(`../../functions/utils/involves-permit2-op.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),v=require(`./handleAutoDepositBack.cjs`);var y=async(y,b,x,S,C,w,T,E,D,O,k,A=!1,j,M,N)=>{if(N&&!a.isValidPrivateAddress(N.recipientInfo))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(T.length>0&&!E)throw Error(`Subaccount is required for private wallet transactions`);let P=x.map(e=>e.erc20TokenAddress),F=await y.getEthereumAddress(),I=E?u.AccountActions.getAddressFromSubAccount(b,E):void 0,{contractData:L}=e.networkRegistry[b],{emporiumAddress:R}=L;if(!R)throw Error(`No Emporium Address Provided`);let z=O??await d.getFeeStructure(b,D,P,o.ExternalActionId.Emporium,w.map(e=>h.convertEmporiumOpToCallInfo(e,I??``,b)));for(I?await _.mergeWithFeeStructureEmporium(y,b,I,w,P,S,z,T.find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,z.feeToken))?.amount??0n):await g.mergeWithFeeStructure(b,P,S,z);C.length<P.length;)C.push(!1);let B=k??await y.getRandomRelay(b,!0);if(!B)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let V=E?u.AccountActions.getPrivateKeyFromSubAccount(b,E):void 0,H=e.getOnchainChainId(b),U=V?u.AccountActions.getSignerAddressFromPrivateKey(H,V):void 0,W=i.randomBigInt(31),G=y.generateProofRemotely?await f.encodeEmporiumMetadata(b,R,V,w,n.poseidonFunction(W),U,z.flatFee):void 0,K=await f.getAuthorizationDataIfNeeded(b,V),q=m.uniswapWorkaround(w),J=l.constructAdminData(M,b,T.map(e=>e.token.erc20TokenAddress),T.map(e=>e.amount),F,M===s.AdminTransactionType.PublicSwap?T.map(({token:e})=>e):void 0),Y,X=await p.hinkalTransact(y,{chainId:b,erc20Addresses:P,amountChanges:S,externalAddress:R,externalActionId:o.ExternalActionId.Emporium,externalActionMetadata:G,onChainCreation:C,feeStructure:z,relay:B,messageSeed:W,recipientAddress:N?[N.recipientInfo]:void 0,recipientAmounts:N?[P.map(e=>t.caseInsensitiveEqual(e,N.token.erc20TokenAddress)?N.amount:0n)]:void 0,subAccountPrivateKey:V,emporiumOps:w,onTxSubmitLocally:e=>{Y=e},submit:{mode:c.SubmitMode.Relayer,adminData:J,authorizationData:K,withUniswapWorkAround:q}});return A&&E&&v.handleAutoDepositBack(y,b,I,E,z.feeToken,j,T,Y),X};exports.hinkalPrivateWallet=y;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/transact.types.cjs`);require(`../../error-handling/index.cjs`);const c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../AccountActions/AccountActions.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const d=require(`../../functions/private-wallet/emporium.helpers.cjs`),f=require(`./hinkalTransact.cjs`),p=require(`../../functions/utils/admin-dimensions.cjs`),m=require(`../../functions/utils/involves-permit2-op.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),v=require(`./handleAutoDepositBack.cjs`);var y=async(y,b,x,S,C,w,T,E,D,O,k,A=!1,j,M,N,P)=>{if(N&&!a.isValidPrivateAddress(N.recipientInfo))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(T.length>0&&!E)throw Error(`Subaccount is required for private wallet transactions`);let F=x.map(e=>e.erc20TokenAddress),I=await y.getEthereumAddress(),L=E?l.AccountActions.getAddressFromSubAccount(b,E):void 0,{contractData:R}=e.networkRegistry[b],{emporiumAddress:z}=R;if(!z)throw Error(`No Emporium Address Provided`);let B=O??await u.getFeeStructure(b,D,F,o.ExternalActionId.Emporium,w.map(e=>h.convertEmporiumOpToCallInfo(e,L??``,b)));for(L?await _.mergeWithFeeStructureEmporium(y,b,L,w,F,S,B,T.find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,B.feeToken))?.amount??0n):await g.mergeWithFeeStructure(b,F,S,B);C.length<F.length;)C.push(!1);let V=k??await y.getRandomRelay(b,!0);if(!V)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=E?l.AccountActions.getPrivateKeyFromSubAccount(b,E):void 0,U=e.getOnchainChainId(b),W=H?l.AccountActions.getSignerAddressFromPrivateKey(U,H):void 0,G=i.randomBigInt(31),K=y.generateProofRemotely?await d.encodeEmporiumMetadata(b,z,H,w,n.poseidonFunction(G),W,B.flatFee):void 0,q=await d.getAuthorizationDataIfNeeded(b,H),J=m.uniswapWorkaround(w),Y=p.resolveSwapPairTokens(M,T.map(({token:e})=>e),P),X=c.constructAdminData(M,b,T.map(e=>e.token.erc20TokenAddress),T.map(e=>e.amount),I,Y),Z,Q=await f.hinkalTransact(y,{chainId:b,erc20Addresses:F,amountChanges:S,externalAddress:z,externalActionId:o.ExternalActionId.Emporium,externalActionMetadata:K,onChainCreation:C,feeStructure:B,relay:V,messageSeed:G,recipientAddress:N?[N.recipientInfo]:void 0,recipientAmounts:N?[F.map(e=>t.caseInsensitiveEqual(e,N.token.erc20TokenAddress)?N.amount:0n)]:void 0,subAccountPrivateKey:H,emporiumOps:w,onTxSubmitLocally:e=>{Z=e},submit:{mode:s.SubmitMode.Relayer,adminData:X,authorizationData:q,withUniswapWorkAround:J}});return A&&E&&v.handleAutoDepositBack(y,b,L,E,B.feeToken,j,T,Z),Q};exports.hinkalPrivateWallet=y;
@@ -3,4 +3,4 @@ import { FeeStructure } from '../../types/hinkal.types';
3
3
  import { ERC20Token, PrivateRecipientInfo, TokenChanges } from '../../types/token.types';
4
4
  import { SubAccount } from '../../types/proxy.types';
5
5
  import { AdminTransactionType } from '../../types/admin.types';
6
- export declare const hinkalPrivateWallet: (hinkal: IHinkal, chainId: number, erc20Tokens: ERC20Token[], deltaChanges: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo) => Promise<string>;
6
+ export declare const hinkalPrivateWallet: (hinkal: IHinkal, chainId: number, erc20Tokens: ERC20Token[], deltaChanges: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo, bridgedToken?: ERC20Token) => Promise<string>;
@@ -5,56 +5,56 @@ import { transactionErrorCodes as i } from "../../error-handling/error-codes.con
5
5
  import { randomBigInt as a } from "../../functions/web3/etherFunctions.mjs";
6
6
  import { isValidPrivateAddress as o } from "../../functions/utils/addresses.mjs";
7
7
  import { ExternalActionId as s } from "../../types/external-action.types.mjs";
8
- import { AdminTransactionType as c } from "../../types/admin.types.mjs";
9
- import { SubmitMode as l } from "../../types/transact.types.mjs";
8
+ import { SubmitMode as c } from "../../types/transact.types.mjs";
10
9
  import "../../error-handling/index.mjs";
11
- import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
12
- import { AccountActions as d } from "../AccountActions/AccountActions.mjs";
13
- import { getFeeStructure as f } from "../../functions/pre-transaction/getFeeStructure.mjs";
10
+ import { constructAdminData as l } from "../../functions/pre-transaction/constructAdminData.mjs";
11
+ import { AccountActions as u } from "../AccountActions/AccountActions.mjs";
12
+ import { getFeeStructure as d } from "../../functions/pre-transaction/getFeeStructure.mjs";
14
13
  import "../../functions/pre-transaction/index.mjs";
15
- import { encodeEmporiumMetadata as p, getAuthorizationDataIfNeeded as m } from "../../functions/private-wallet/emporium.helpers.mjs";
16
- import { hinkalTransact as h } from "./hinkalTransact.mjs";
14
+ import { encodeEmporiumMetadata as f, getAuthorizationDataIfNeeded as p } from "../../functions/private-wallet/emporium.helpers.mjs";
15
+ import { hinkalTransact as m } from "./hinkalTransact.mjs";
16
+ import { resolveSwapPairTokens as h } from "../../functions/utils/admin-dimensions.mjs";
17
17
  import { uniswapWorkaround as g } from "../../functions/utils/involves-permit2-op.mjs";
18
18
  import { convertEmporiumOpToCallInfo as _ } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
19
19
  import { mergeWithFeeStructure as v } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
20
20
  import { mergeWithFeeStructureEmporium as y } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
21
21
  import { handleAutoDepositBack as b } from "./handleAutoDepositBack.mjs";
22
22
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalPrivateWallet.ts
23
- var x = async (x, S, C, w, T, E, D, O, k, A, j, M = !1, N, P, F) => {
23
+ var x = async (x, S, C, w, T, E, D, O, k, A, j, M = !1, N, P, F, I) => {
24
24
  if (F && !o(F.recipientInfo)) throw Error(i.RECIPIENT_FORMAT_INCORRECT);
25
25
  if (D.length > 0 && !O) throw Error("Subaccount is required for private wallet transactions");
26
- let I = C.map((e) => e.erc20TokenAddress), L = await x.getEthereumAddress(), R = O ? d.getAddressFromSubAccount(S, O) : void 0, { contractData: z } = t[S], { emporiumAddress: B } = z;
27
- if (!B) throw Error("No Emporium Address Provided");
28
- let V = A ?? await f(S, k, I, s.Emporium, E.map((e) => _(e, R ?? "", S)));
29
- for (R ? await y(x, S, R, E, I, w, V, D.find((e) => n(e.token.erc20TokenAddress, V.feeToken))?.amount ?? 0n) : await v(S, I, w, V); T.length < I.length;) T.push(!1);
30
- let H = j ?? await x.getRandomRelay(S, !0);
31
- if (!H) throw Error(i.RELAYER_NOT_AVAILABLE);
32
- let U = O ? d.getPrivateKeyFromSubAccount(S, O) : void 0, W = e(S), G = U ? d.getSignerAddressFromPrivateKey(W, U) : void 0, K = a(31), q = x.generateProofRemotely ? await p(S, B, U, E, r(K), G, V.flatFee) : void 0, J = await m(S, U), Y = g(E), X = u(P, S, D.map((e) => e.token.erc20TokenAddress), D.map((e) => e.amount), L, P === c.PublicSwap ? D.map(({ token: e }) => e) : void 0), Z, Q = await h(x, {
26
+ let L = C.map((e) => e.erc20TokenAddress), R = await x.getEthereumAddress(), z = O ? u.getAddressFromSubAccount(S, O) : void 0, { contractData: B } = t[S], { emporiumAddress: V } = B;
27
+ if (!V) throw Error("No Emporium Address Provided");
28
+ let H = A ?? await d(S, k, L, s.Emporium, E.map((e) => _(e, z ?? "", S)));
29
+ for (z ? await y(x, S, z, E, L, w, H, D.find((e) => n(e.token.erc20TokenAddress, H.feeToken))?.amount ?? 0n) : await v(S, L, w, H); T.length < L.length;) T.push(!1);
30
+ let U = j ?? await x.getRandomRelay(S, !0);
31
+ if (!U) throw Error(i.RELAYER_NOT_AVAILABLE);
32
+ let W = O ? u.getPrivateKeyFromSubAccount(S, O) : void 0, G = e(S), K = W ? u.getSignerAddressFromPrivateKey(G, W) : void 0, q = a(31), J = x.generateProofRemotely ? await f(S, V, W, E, r(q), K, H.flatFee) : void 0, Y = await p(S, W), X = g(E), Z = h(P, D.map(({ token: e }) => e), I), Q = l(P, S, D.map((e) => e.token.erc20TokenAddress), D.map((e) => e.amount), R, Z), $, ee = await m(x, {
33
33
  chainId: S,
34
- erc20Addresses: I,
34
+ erc20Addresses: L,
35
35
  amountChanges: w,
36
- externalAddress: B,
36
+ externalAddress: V,
37
37
  externalActionId: s.Emporium,
38
- externalActionMetadata: q,
38
+ externalActionMetadata: J,
39
39
  onChainCreation: T,
40
- feeStructure: V,
41
- relay: H,
42
- messageSeed: K,
40
+ feeStructure: H,
41
+ relay: U,
42
+ messageSeed: q,
43
43
  recipientAddress: F ? [F.recipientInfo] : void 0,
44
- recipientAmounts: F ? [I.map((e) => n(e, F.token.erc20TokenAddress) ? F.amount : 0n)] : void 0,
45
- subAccountPrivateKey: U,
44
+ recipientAmounts: F ? [L.map((e) => n(e, F.token.erc20TokenAddress) ? F.amount : 0n)] : void 0,
45
+ subAccountPrivateKey: W,
46
46
  emporiumOps: E,
47
47
  onTxSubmitLocally: (e) => {
48
- Z = e;
48
+ $ = e;
49
49
  },
50
50
  submit: {
51
- mode: l.Relayer,
52
- adminData: X,
53
- authorizationData: J,
54
- withUniswapWorkAround: Y
51
+ mode: c.Relayer,
52
+ adminData: Q,
53
+ authorizationData: Y,
54
+ withUniswapWorkAround: X
55
55
  }
56
56
  });
57
- return M && O && b(x, S, R, O, V.feeToken, N, D, Z), Q;
57
+ return M && O && b(x, S, z, O, H.feeToken, N, D, $), ee;
58
58
  };
59
59
  //#endregion
60
60
  export { x as hinkalPrivateWallet };
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../crypto-keys/encryptDecryptUtxo.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`);require(`../../externalABIs/index.cjs`);const o=require(`../../functions/utils/tx-confirmation.utils.cjs`);var s=(e,t)=>{if(e.length!==t.length)throw Error(`stealthAddressStructures and recipientEncryptionKeys must have equal length`);return e.map((e,n)=>{let r=t[n];if(!r)throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);return`0x${Buffer.from(i.encryptEncryptionKeyAndStealthAddress(r,e.stealthAddress)).toString(`hex`)}`})},c=(e,t)=>{let r=n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;return Array.from({length:t},()=>r)},l=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let o=!1;for(let s=0;s<r;s+=1)if(a.isSameERC20Token(n[s].token,e[i])){n[s].balance+=t[i],o=!0;break}o||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},u=async(n,i,a,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await o.waitForEthereumTransactionConfirmation(i,(await n.getContractWithSigner(i,r.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(a,s[c].balance)).hash)},d=e=>{let t=new Set;e.forEach(({H0x: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=l,exports.approveTokens=u,exports.assertNoDuplicateStealthAddressStructures=d,exports.buildProoflessEncryptedOutputs=s,exports.getOwnRecipientEncryptionKeys=c;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../crypto-keys/encryptDecryptUtxo.cjs`);require(`../../externalABIs/index.cjs`);const a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/utils/tx-confirmation.utils.cjs`);var s=(e,t)=>{if(e.length!==t.length)throw Error(`stealthAddressStructures and recipientEncryptionKeys must have equal length`);return e.map((e,n)=>{let r=t[n];if(!r)throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);return`0x${Buffer.from(i.encryptEncryptionKeyAndStealthAddress(r,e.stealthAddress)).toString(`hex`)}`})},c=(e,t)=>{let r=n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;return Array.from({length:t},()=>r)},l=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let o=!1;for(let s=0;s<r;s+=1)if(a.isSameERC20Token(n[s].token,e[i])){n[s].balance+=t[i],o=!0;break}o||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},u=async(n,i,a,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await o.waitForEthereumTransactionConfirmation(i,(await n.getContractWithSigner(i,r.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(a,s[c].balance)).hash)},d=e=>{let t=new Set;e.forEach(({H0x: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=l,exports.approveTokens=u,exports.assertNoDuplicateStealthAddressStructures=d,exports.buildProoflessEncryptedOutputs=s,exports.getOwnRecipientEncryptionKeys=c;
@@ -3,8 +3,8 @@ import { caseInsensitiveEqual as t } from "../../functions/utils/caseInsensitive
3
3
  import { UserKeys as n } from "../crypto-keys/keys.mjs";
4
4
  import { ContractType as r } from "../../types/ethereum-network.types.mjs";
5
5
  import { encryptEncryptionKeyAndStealthAddress as i } from "../crypto-keys/encryptDecryptUtxo.mjs";
6
- import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
7
6
  import "../../externalABIs/index.mjs";
7
+ import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
8
8
  import { waitForEthereumTransactionConfirmation as o } from "../../functions/utils/tx-confirmation.utils.mjs";
9
9
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.ts
10
10
  var s = (e, t) => {
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../constants/addresses.constants.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,o.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>s.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await a.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0)};exports.hinkalProxySwap=l;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../constants/addresses.constants.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,o.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>s.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await a.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0,x)};exports.hinkalProxySwap=l;
@@ -19,7 +19,7 @@ var l = async (l, u, d, f, p, m, h, g, _, v = !1, y, b, x, S) => {
19
19
  token: e,
20
20
  amount: d[t]
21
21
  })), A = x && S !== void 0 ? await a(C, x, S, O) : O;
22
- return l.actionPrivateWallet(C, [], [], [], D, k, h, g, A, E, v, y, b, void 0);
22
+ return l.actionPrivateWallet(C, [], [], [], D, k, h, g, A, E, v, y, b, void 0, x);
23
23
  };
24
24
  //#endregion
25
25
  export { l as hinkalProxySwap };
@@ -1 +1 @@
1
- const e=require(`../../functions/utils/erc20tokenFunctions.cjs`),t=require(`../../functions/utils/receive-vault-account.utils.cjs`),n=require(`../../functions/utils/receive-vault-scan.utils.cjs`);var r=async r=>{let{records:i,blocks:a}=await t.getReceiveVaultAccountSnapshot(r.userKeys);return{entries:(await Promise.all(i.map(async t=>{let n=await e.getErc20TokenFromAPI(t.chainId,t.token);return n?{record:t,token:n,expiresAt:new Date(Number(t.expiry)*1e3)}:void 0}))).filter(e=>!!e).sort((e,t)=>t.expiresAt.getTime()-e.expiresAt.getTime()),blockedFunds:await n.getReceiveVaultBlockedFunds(i,a)}};exports.hinkalGetReceiveVaultAccount=r;
1
+ const e=require(`../../functions/utils/receive-vault-account.utils.cjs`),t=require(`../../functions/utils/receive-vault-scan.utils.cjs`);var n=async n=>{let{records:r,blocks:i}=await e.getReceiveVaultAccountSnapshot(n.userKeys);return{entries:[...r].sort((e,t)=>t.index-e.index),blockedFunds:await t.getReceiveVaultBlockedFunds(r,i)}};exports.hinkalGetReceiveVaultAccount=n;
@@ -1,20 +1,12 @@
1
- import { getErc20TokenFromAPI as e } from "../../functions/utils/erc20tokenFunctions.mjs";
2
- import { getReceiveVaultAccountSnapshot as t } from "../../functions/utils/receive-vault-account.utils.mjs";
3
- import { getReceiveVaultBlockedFunds as n } from "../../functions/utils/receive-vault-scan.utils.mjs";
1
+ import { getReceiveVaultAccountSnapshot as e } from "../../functions/utils/receive-vault-account.utils.mjs";
2
+ import { getReceiveVaultBlockedFunds as t } from "../../functions/utils/receive-vault-scan.utils.mjs";
4
3
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.ts
5
- var r = async (r) => {
6
- let { records: i, blocks: a } = await t(r.userKeys);
4
+ var n = async (n) => {
5
+ let { records: r, blocks: i } = await e(n.userKeys);
7
6
  return {
8
- entries: (await Promise.all(i.map(async (t) => {
9
- let n = await e(t.chainId, t.token);
10
- return n ? {
11
- record: t,
12
- token: n,
13
- expiresAt: /* @__PURE__ */ new Date(Number(t.expiry) * 1e3)
14
- } : void 0;
15
- }))).filter((e) => !!e).sort((e, t) => t.expiresAt.getTime() - e.expiresAt.getTime()),
16
- blockedFunds: await n(i, a)
7
+ entries: [...r].sort((e, t) => t.index - e.index),
8
+ blockedFunds: await t(r, i)
17
9
  };
18
10
  };
19
11
  //#endregion
20
- export { r as hinkalGetReceiveVaultAccount };
12
+ export { n as hinkalGetReceiveVaultAccount };