@hinkal/common 0.3.8 → 0.3.10

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 (230) hide show
  1. package/README.md +2 -8
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +4 -5
  4. package/common/src/API/API.mjs +79 -80
  5. package/common/src/API/dashboardTransactionCalls.cjs +1 -1
  6. package/common/src/API/dashboardTransactionCalls.d.ts +4 -1
  7. package/common/src/API/dashboardTransactionCalls.mjs +2 -2
  8. package/common/src/API/enclaveRecipientInfoCalls.d.ts +0 -2
  9. package/common/src/API/enclaveSignatureCalls.cjs +1 -1
  10. package/common/src/API/enclaveSignatureCalls.d.ts +2 -1
  11. package/common/src/API/enclaveSignatureCalls.mjs +5 -8
  12. package/common/src/API/enclaveUtxoCalls.cjs +1 -1
  13. package/common/src/API/enclaveUtxoCalls.d.ts +12 -8
  14. package/common/src/API/enclaveUtxoCalls.mjs +17 -20
  15. package/common/src/API/privateSendRecipientInfoCalls.cjs +1 -1
  16. package/common/src/API/privateSendRecipientInfoCalls.d.ts +3 -6
  17. package/common/src/API/privateSendRecipientInfoCalls.mjs +12 -6
  18. package/common/src/API/scheduled-transactions-calls.cjs +1 -1
  19. package/common/src/API/scheduled-transactions-calls.d.ts +1 -5
  20. package/common/src/API/scheduled-transactions-calls.mjs +2 -6
  21. package/common/src/constants/bridging.constants.cjs +1 -1
  22. package/common/src/constants/bridging.constants.d.ts +1 -0
  23. package/common/src/constants/bridging.constants.mjs +1 -1
  24. package/common/src/constants/chains.constants.cjs +1 -1
  25. package/common/src/constants/chains.constants.d.ts +18 -17
  26. package/common/src/constants/chains.constants.mjs +108 -89
  27. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  28. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  29. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  30. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  31. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  32. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  33. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  34. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  35. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  36. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  37. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  38. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  39. package/common/src/constants/events.constants.cjs +1 -1
  40. package/common/src/constants/events.constants.mjs +1 -16
  41. package/common/src/constants/protocol.constants.d.ts +1 -3
  42. package/common/src/constants/server.constants.cjs +1 -1
  43. package/common/src/constants/server.constants.d.ts +1 -4
  44. package/common/src/constants/server.constants.mjs +1 -4
  45. package/common/src/constants/tx-confirmation.constants.cjs +1 -1
  46. package/common/src/constants/tx-confirmation.constants.d.ts +1 -0
  47. package/common/src/constants/tx-confirmation.constants.mjs +2 -2
  48. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  49. package/common/src/data-structures/Hinkal/Hinkal.d.ts +6 -9
  50. package/common/src/data-structures/Hinkal/Hinkal.mjs +129 -160
  51. package/common/src/data-structures/Hinkal/IHinkal.d.ts +5 -9
  52. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  53. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +23 -23
  54. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  55. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +1 -1
  56. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  57. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +10 -10
  58. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  59. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +18 -18
  60. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
  61. package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +3 -2
  62. package/common/src/data-structures/Hinkal/hinkalProxySend.cjs +1 -0
  63. package/common/src/data-structures/Hinkal/hinkalProxySend.d.ts +6 -0
  64. package/common/src/data-structures/Hinkal/hinkalProxySend.mjs +16 -0
  65. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  66. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +44 -47
  67. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.cjs +1 -1
  68. package/common/src/data-structures/Hinkal/hinkalSolanaTransact.mjs +2 -2
  69. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  70. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +1 -1
  71. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  72. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  73. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  74. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +101 -94
  75. package/common/src/data-structures/Hinkal/index.d.ts +0 -1
  76. package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
  77. package/common/src/data-structures/IndexedDB/activity-db.mjs +34 -34
  78. package/common/src/data-structures/IndexedDB/index.cjs +1 -1
  79. package/common/src/data-structures/IndexedDB/index.d.ts +1 -0
  80. package/common/src/data-structures/IndexedDB/index.mjs +1 -0
  81. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.cjs +1 -0
  82. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.d.ts +11 -0
  83. package/common/src/data-structures/IndexedDB/scheduled-transactions-db.mjs +34 -0
  84. package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
  85. package/common/src/data-structures/IndexedDB/signatures-db.mjs +11 -11
  86. package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
  87. package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +18 -19
  88. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
  89. package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.mjs +11 -11
  90. package/common/src/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -1
  91. package/common/src/data-structures/event-service/helpers/ClientEventHelper.mjs +6 -6
  92. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -1
  93. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.d.ts +1 -0
  94. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.mjs +79 -75
  95. package/common/src/data-structures/provider-adapter/IProviderAdapter.d.ts +1 -4
  96. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  97. package/common/src/error-handling/error-codes.constants.d.ts +6 -0
  98. package/common/src/error-handling/error-codes.constants.mjs +10 -4
  99. package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.cjs +1 -1
  100. package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.mjs +7 -6
  101. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.cjs +1 -1
  102. package/common/src/functions/auto-deposit-back-helpers/select-gas-token.mjs +8 -8
  103. package/common/src/functions/index.cjs +1 -1
  104. package/common/src/functions/index.mjs +1 -2
  105. package/common/src/functions/pre-transaction/getVolatileTransferAmount.cjs +1 -1
  106. package/common/src/functions/pre-transaction/getVolatileTransferAmount.mjs +12 -12
  107. package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
  108. package/common/src/functions/private-wallet/emporium.helpers.mjs +13 -13
  109. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  110. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +13 -13
  111. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  112. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +4 -4
  113. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  114. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +5 -5
  115. package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -1
  116. package/common/src/functions/snarkjs/constructTxEnclave.d.ts +1 -1
  117. package/common/src/functions/snarkjs/constructTxEnclave.mjs +61 -133
  118. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -0
  119. package/common/src/functions/snarkjs/constructTxEnclaveVerify.d.ts +5 -0
  120. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +295 -0
  121. package/common/src/functions/utils/addresses.cjs +1 -1
  122. package/common/src/functions/utils/addresses.d.ts +1 -0
  123. package/common/src/functions/utils/addresses.mjs +13 -12
  124. package/common/src/functions/utils/bridge-arrival.utils.cjs +1 -1
  125. package/common/src/functions/utils/bridge-arrival.utils.mjs +12 -11
  126. package/common/src/functions/utils/create-provider.cjs +1 -1
  127. package/common/src/functions/utils/create-provider.mjs +4 -1
  128. package/common/src/functions/utils/enclave-recipient-info-storage.cjs +1 -1
  129. package/common/src/functions/utils/enclave-recipient-info-storage.d.ts +4 -1
  130. package/common/src/functions/utils/enclave-recipient-info-storage.mjs +1 -0
  131. package/common/src/functions/utils/enclave-signature-storage.cjs +1 -1
  132. package/common/src/functions/utils/enclave-signature-storage.d.ts +1 -1
  133. package/common/src/functions/utils/enclave-signature-storage.mjs +3 -3
  134. package/common/src/functions/utils/enclave-utxo-storage.cjs +1 -1
  135. package/common/src/functions/utils/enclave-utxo-storage.d.ts +3 -3
  136. package/common/src/functions/utils/enclave-utxo-storage.mjs +8 -5
  137. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  138. package/common/src/functions/utils/encryptInputForEnclave.d.ts +8 -0
  139. package/common/src/functions/utils/encryptInputForEnclave.mjs +43 -23
  140. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  141. package/common/src/functions/utils/erc20tokenFunctions.mjs +2 -15
  142. package/common/src/functions/utils/fees.utils.cjs +1 -1
  143. package/common/src/functions/utils/fees.utils.mjs +6 -6
  144. package/common/src/functions/utils/index.cjs +1 -1
  145. package/common/src/functions/utils/index.d.ts +1 -0
  146. package/common/src/functions/utils/index.mjs +3 -3
  147. package/common/src/functions/utils/ipfs.d.ts +2 -3
  148. package/common/src/functions/utils/lifi.utils.d.ts +2 -0
  149. package/common/src/functions/utils/nearIntents.utils.cjs +1 -1
  150. package/common/src/functions/utils/nearIntents.utils.mjs +6 -6
  151. package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
  152. package/common/src/functions/utils/publicBalance.utils.mjs +9 -10
  153. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -0
  154. package/common/src/functions/utils/temporary-wallet-recovery.utils.d.ts +7 -0
  155. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +10 -0
  156. package/common/src/functions/utils/tron.utils.cjs +1 -1
  157. package/common/src/functions/utils/tron.utils.mjs +16 -29
  158. package/common/src/functions/utils/tx-confirmation.utils.cjs +1 -1
  159. package/common/src/functions/utils/tx-confirmation.utils.d.ts +1 -0
  160. package/common/src/functions/utils/tx-confirmation.utils.mjs +16 -13
  161. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  162. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +5 -5
  163. package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
  164. package/common/src/functions/web3/events/getInputUtxosEnclave.d.ts +1 -1
  165. package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +19 -11
  166. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  167. package/common/src/functions/web3/events/getShieldedBalance.d.ts +4 -4
  168. package/common/src/functions/web3/events/getShieldedBalance.mjs +113 -102
  169. package/common/src/functions/web3/functionCalls/transactCallDirectTron.cjs +1 -1
  170. package/common/src/functions/web3/functionCalls/transactCallDirectTron.mjs +16 -16
  171. package/common/src/providers/SolanaProviderAdapter.cjs +1 -1
  172. package/common/src/providers/SolanaProviderAdapter.d.ts +1 -4
  173. package/common/src/providers/SolanaProviderAdapter.mjs +3 -6
  174. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  175. package/common/src/providers/WagmiProviderAdapter.mjs +5 -5
  176. package/common/src/types/cache.types.cjs +1 -1
  177. package/common/src/types/cache.types.d.ts +2 -1
  178. package/common/src/types/cache.types.mjs +1 -1
  179. package/common/src/types/enclaveApi.types.d.ts +2 -3
  180. package/common/src/types/ethereum-network.types.d.ts +1 -0
  181. package/common/src/types/events.types.d.ts +1 -0
  182. package/common/src/types/near-intents.types.d.ts +1 -0
  183. package/common/src/types/remote-proof.types.d.ts +5 -0
  184. package/common/src/types/remote-tx-build.types.d.ts +37 -4
  185. package/common/src/types/scheduled-transactions.types.d.ts +18 -0
  186. package/common/src/types/solana.types.d.ts +0 -3
  187. package/common/src/webworker/{logError-RKYfeI6h.js → logError-CIIt1CO3.js} +1 -1
  188. package/common/src/webworker/package.json +5 -6
  189. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  190. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  191. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  192. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  193. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  194. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  195. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  196. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  197. package/common/src/webworker/workerProxy-BHzCZ9HT.js +1 -0
  198. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  199. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  200. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  201. package/package.json +5 -6
  202. package/services/Hinkal.cjs +1 -1
  203. package/services/Hinkal.d.ts +6 -2
  204. package/services/Hinkal.mjs +9 -4
  205. package/types/IHinkal.d.ts +6 -2
  206. package/common/src/API/evm-token-assets.cjs +0 -1
  207. package/common/src/API/evm-token-assets.mjs +0 -20
  208. package/common/src/API/getAnyRecipientInfo.d.ts +0 -1
  209. package/common/src/API/solana-nft-assets.cjs +0 -1
  210. package/common/src/API/solana-nft-assets.mjs +0 -11
  211. package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredProxySend.d.ts +0 -5
  212. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +0 -1
  213. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +0 -109
  214. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +0 -1
  215. package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +0 -94
  216. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +0 -1
  217. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +0 -134
  218. package/common/src/data-structures/TokenDBs/PublicTokensDB.cjs +0 -1
  219. package/common/src/data-structures/TokenDBs/PublicTokensDB.mjs +0 -32
  220. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +0 -1
  221. package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +0 -37
  222. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +0 -1
  223. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +0 -51
  224. package/common/src/data-structures/TokenDBs/index.cjs +0 -1
  225. package/common/src/data-structures/TokenDBs/index.mjs +0 -6
  226. package/common/src/functions/utils/ipfs.cjs +0 -1
  227. package/common/src/functions/utils/ipfs.mjs +0 -1
  228. package/common/src/functions/utils/reloadPage.cjs +0 -1
  229. package/common/src/functions/utils/reloadPage.mjs +0 -4
  230. package/common/src/webworker/workerProxy-COB7g4Qc.js +0 -1
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S,y)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
@@ -39,7 +39,7 @@ var h = 2, g = 6, _ = (e, t) => {
39
39
  spendingPublicKey: e.getSpendingKeyPair().pubSpendingBJJPoint
40
40
  }))];
41
41
  }, y = async (e, r, i) => {
42
- let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
42
+ let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S, y)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
43
43
  return {
44
44
  zkCallData: L,
45
45
  circomData: R,
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/addresses.cjs`),r=require(`../../functions/utils/tron.utils.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/transact.types.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`./hinkalTransact.cjs`),d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var p=async(p,m,h,g,_,v,y)=>{let b=o.validateAndGetChainId(m);if(!n.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let x=r.addressToHexFormat(await p.getEthereumAddressByChain(b)),S=m.map(e=>e.erc20TokenAddress),C=await s.modifyVolatileTokenAmountChanges(b,m,h),w=v??await l.getFeeStructure(b,_,S,i.ExternalActionId.Transact,[],5n);w.variableRate||=e.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let T=m[0];if(!T)throw Error(`Transfer Action: No Token Found`);let E=-C[0],D=await d.calculateModifiedFeeStructure(b,T,E,w);await f.mergeWithFeeStructure(b,S,C,D);let O=await p.getRandomRelay(b,!0);if(!O)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=c.constructAdminData(y,b,S,C,x);return u.hinkalTransact(p,{chainId:b,erc20Addresses:S,amountChanges:C,externalAddress:O,feeStructure:D,relay:O,recipientAddress:[g],recipientAmounts:[S.map((e,t)=>t===0?E:0n)],submit:{mode:a.SubmitMode.Relayer,adminData:k}})};exports.hinkalTransfer=p;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/tron.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/transact.types.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`./hinkalTransact.cjs`),d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var p=async(p,m,h,g,_,v,y)=>{let b=o.validateAndGetChainId(m);if(!r.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let x=n.addressToHexFormat(await p.getEthereumAddressByChain(b)),S=m.map(e=>e.erc20TokenAddress),C=await s.modifyVolatileTokenAmountChanges(b,m,h),w=v??await l.getFeeStructure(b,_,S,i.ExternalActionId.Transact,[],5n);w.variableRate||=e.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let T=m[0];if(!T)throw Error(`Transfer Action: No Token Found`);let E=-C[0],D=await d.calculateModifiedFeeStructure(b,T,E,w);await f.mergeWithFeeStructure(b,S,C,D);let O=await p.getRandomRelay(b,!0);if(!O)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=c.constructAdminData(y,b,S,C,x);return u.hinkalTransact(p,{chainId:b,erc20Addresses:S,amountChanges:C,externalAddress:O,feeStructure:D,relay:O,recipientAddress:[g],recipientAmounts:[S.map((e,t)=>t===0?E:0n)],submit:{mode:a.SubmitMode.Relayer,adminData:k}})};exports.hinkalTransfer=p;
@@ -1,7 +1,7 @@
1
1
  import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as e } from "../../constants/protocol.constants.mjs";
2
2
  import { transactionErrorCodes as t } from "../../error-handling/error-codes.constants.mjs";
3
- import { isValidPrivateAddress as n } from "../../functions/utils/addresses.mjs";
4
- import { addressToHexFormat as r } from "../../functions/utils/tron.utils.mjs";
3
+ import { addressToHexFormat as n } from "../../functions/utils/tron.utils.mjs";
4
+ import { isValidPrivateAddress as r } from "../../functions/utils/addresses.mjs";
5
5
  import { ExternalActionId as i } from "../../types/external-action.types.mjs";
6
6
  import { SubmitMode as a } from "../../types/transact.types.mjs";
7
7
  import { validateAndGetChainId as o } from "../../functions/utils/token-check.utils.mjs";
@@ -15,8 +15,8 @@ import { mergeWithFeeStructure as f } from "../../functions/pre-transaction/merg
15
15
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalTransfer.ts
16
16
  var p = async (p, m, h, g, _, v, y) => {
17
17
  let b = o(m);
18
- if (!n(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
19
- let x = r(await p.getEthereumAddressByChain(b)), S = m.map((e) => e.erc20TokenAddress), C = await s(b, m, h), w = v ?? await l(b, _, S, i.Transact, [], 5n);
18
+ if (!r(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
19
+ let x = n(await p.getEthereumAddressByChain(b)), S = m.map((e) => e.erc20TokenAddress), C = await s(b, m, h), w = v ?? await l(b, _, S, i.Transact, [], 5n);
20
20
  w.variableRate ||= e;
21
21
  let T = m[0];
22
22
  if (!T) throw Error("Transfer Action: No Token Found");
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/encodeTokenWithId.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../types/solana-transact.types.cjs`),u=require(`../../error-handling/logger.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/constructTxEnclave.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`./hinkalTransact.cjs`),h=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`./hinkalSolanaTransact.cjs`);var v=6,y=async(t,r,o,c)=>{let l=o.erc20TokenAddress,d=await t.getEthereumAddressByChain(r),[m,h]=await Promise.all([p.getFeeStructure(r,l,[l],s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!h)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await f.prepareStuckWithdrawEnclaveCall(t,{chainId:r,hinkalAddress:e.networkRegistry[r].contractData.hinkalAddress,erc20Address:l,externalAddress:a.addressToHexFormat(c),relay:h,feeStructure:m,hashedEthereumAddress:i.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:n,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await f.finalizeTxEnclaveCallRelay(n,{R8:a,S:o},r))}catch(e){if(!_.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},b=async(e,t,n)=>{let r=await Promise.all(Array.from({length:v},async(r,i)=>{let a=i+1,o=await p.getFeeStructure(e,t,[t],s.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},x=async(e,t,r,a)=>{let o=r.erc20TokenAddress,[s,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),b(t,o,a)]);if(!c)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await f.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:o,recipient:a,relayAddress:c,accounts:{recipient:a,mint:o===`11111111111111111111111111111111`?void 0:o},feeStructures:l,hashedEthereumAddress:i.hashEthereumAddress(s)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await f.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},S=async(e,t,r,i,o)=>{let l=[r.erc20TokenAddress],u=r.erc20TokenAddress,[d,f]=await Promise.all([p.getFeeStructure(t,u,l,s.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a.addressToHexFormat(o),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await g.mergeWithFeeStructure(t,l,y,d),{tx:await m.hinkalTransact(e,{chainId:t,erc20Addresses:l,amountChanges:y,externalAddress:_,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{h.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:c.SubmitMode.Relayer}}),amountToRecipient:v}},C=async(t,r,i,a,o,c)=>{let u=[i.erc20TokenAddress],{originalDeployer:d}=e.networkRegistry[r].contractData;if(!d)throw Error(`missing data`);let f=i.erc20TokenAddress,[m,g]=await Promise.all([p.getFeeStructure(r,f,u,s.ExternalActionId.Transact,void 0,void 0,{mintTo:u[0],recipient:o,nullifierCount:c}),t.getRandomRelay(r,!0)]);if(!g)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let v=a-m.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${m.flatFee}`);let y=[-v];return y[0]-=m.flatFee,{tx:await _.hinkalSolanaTransact(t,{chainId:r,mintAddresses:u,amountChanges:y,relayAddress:g,recipient:o,signer:g,functionName:`transact`,accounts:{recipient:o,mint:u[0]===`11111111111111111111111111111111`?void 0:u[0]},relayerFee:m.flatFee,variableRate:m.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:n,encryptedOutputs:i})=>{h.updateHinkal(r,t,e,n,i)},submit:{mode:l.SolanaSubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?C(t,n,r,i,a,o):S(t,n,r,i,a),T=async(i,a,s)=>{let c=d.validateAndGetChainId([a]);if(i.generateProofRemotely){let t=e.isSolanaLike(c)?await x(i,c,a,s):await y(i,c,a,s);if(!t.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return t}let l=[],f=r.normalizeTokenAddress(c,a.erc20TokenAddress);await i.resetMerkleTreesIfNecessary([c]);let p=((await o.getInputUtxoAndBalancePerToken({hinkal:i,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:c}))?.get(f)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(n.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=v){let n=p.slice(e,e+v),r=t.countTotalAmountInUtxos(n);try{let{tx:e}=await w(i,c,a,r,s,n.length);l.push(e)}catch(e){if(!l.length)throw e;return u.Logger.error(`Stuck withdrawal partially submitted (${l.length}/${Math.ceil(p.length/v)})`,e),l}}return l};exports.hinkalWithdrawStuckUtxos=T;
1
+ const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../functions/utils/amounts.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/encodeTokenWithId.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/transact.types.cjs`),d=require(`../../types/solana-transact.types.cjs`),f=require(`../../functions/utils/token-check.utils.cjs`),p=require(`../../functions/snarkjs/constructTxEnclave.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`./hinkalTransact.cjs`),g=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),v=require(`./hinkalSolanaTransact.cjs`);var y=6,b=async(t,n,i,c)=>{let u=i.erc20TokenAddress,d=await t.getEthereumAddressByChain(n),[f,h]=await Promise.all([m.getFeeStructure(n,u,[u],l.ExternalActionId.Transact),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await p.prepareStuckWithdrawEnclaveCall(t,{chainId:n,hinkalAddress:e.networkRegistry[n].contractData.hinkalAddress,erc20Address:u,externalAddress:o.addressToHexFormat(c),relay:h,feeStructure:f,hashedEthereumAddress:s.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:r,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await p.finalizeTxEnclaveCallRelay(r,{R8:a,S:o},n))}catch(e){if(!_.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},x=async(e,t,n)=>{let r=await Promise.all(Array.from({length:y},async(r,i)=>{let a=i+1,o=await m.getFeeStructure(e,t,[t],l.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},S=async(e,t,n,i)=>{let a=n.erc20TokenAddress,[o,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),x(t,a,i)]);if(!c)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await p.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:a,recipient:i,relayAddress:c,accounts:{recipient:i,mint:a===`11111111111111111111111111111111`?void 0:a},feeStructures:l,hashedEthereumAddress:s.hashEthereumAddress(o)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await p.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},C=async(e,t,n,i,a)=>{let s=[n.erc20TokenAddress],c=n.erc20TokenAddress,[d,f]=await Promise.all([m.getFeeStructure(t,c,s,l.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let p=o.addressToHexFormat(a),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await _.mergeWithFeeStructure(t,s,y,d),{tx:await h.hinkalTransact(e,{chainId:t,erc20Addresses:s,amountChanges:y,externalAddress:p,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{g.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:u.SubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,i,a,o,s)=>{let c=[i.erc20TokenAddress],{originalDeployer:u}=e.networkRegistry[n].contractData;if(!u)throw Error(`missing data`);let f=i.erc20TokenAddress,[p,h]=await Promise.all([m.getFeeStructure(n,f,c,l.ExternalActionId.Transact,void 0,void 0,{mintTo:c[0],recipient:o,nullifierCount:s}),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a-p.flatFee;if(_<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);let y=[-_];return y[0]-=p.flatFee,{tx:await v.hinkalSolanaTransact(t,{chainId:n,mintAddresses:c,amountChanges:y,relayAddress:h,recipient:o,signer:h,functionName:`transact`,accounts:{recipient:o,mint:c[0]===`11111111111111111111111111111111`?void 0:c[0]},relayerFee:p.flatFee,variableRate:p.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:r,encryptedOutputs:i})=>{g.updateHinkal(n,t,e,r,i)},submit:{mode:d.SolanaSubmitMode.Relayer}}),amountToRecipient:_}},T=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?w(t,n,r,i,a,o):C(t,n,r,i,a),E=async(e,n,r)=>{try{return((await e.getStuckShieldedBalances([n])).get(n)??[]).find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,r.erc20TokenAddress))?.balance??0n}catch(e){return a.Logger.error(`Failed to read stuck balance after an empty stuck withdrawal`,e),0n}},D=async(t,o,s)=>{let l=f.validateAndGetChainId([o]);if(t.generateProofRemotely){let n=e.isSolanaLike(l)?await S(t,l,o,s):await b(t,l,o,s);if(!n.length)throw await E(t,l,o)>0n?Error(r.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.INSUFFICIENT_FUNDS_FOR_RECOVERY_FEES):Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return n}let u=[],d=i.normalizeTokenAddress(l,o.erc20TokenAddress);await t.resetMerkleTreesIfNecessary([l]);let p=((await c.getInputUtxoAndBalancePerToken({hinkal:t,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:l}))?.get(d)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=y){let r=p.slice(e,e+y),i=n.countTotalAmountInUtxos(r);try{let{tx:e}=await T(t,l,o,i,s,r.length);u.push(e)}catch(e){if(!u.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${u.length}/${Math.ceil(p.length/y)})`,e),u}}return u};exports.hinkalWithdrawStuckUtxos=D;
@@ -1,49 +1,50 @@
1
1
  import { isSolanaLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
2
  import "../../constants/protocol.constants.mjs";
3
- import { countTotalAmountInUtxos as n } from "../../functions/utils/amounts.utils.mjs";
4
- import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
- import { normalizeTokenAddress as i } from "../../functions/utils/encodeTokenWithId.mjs";
6
- import { hashEthereumAddress as a } from "../../functions/utils/addresses.mjs";
7
- import { addressToHexFormat as o } from "../../functions/utils/tron.utils.mjs";
8
- import { getInputUtxoAndBalancePerToken as s } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
9
- import { ExternalActionId as c } from "../../types/external-action.types.mjs";
10
- import { SubmitMode as l } from "../../types/transact.types.mjs";
11
- import { SolanaSubmitMode as u } from "../../types/solana-transact.types.mjs";
12
- import { Logger as d } from "../../error-handling/logger.mjs";
13
- import { validateAndGetChainId as f } from "../../functions/utils/token-check.utils.mjs";
14
- import { finalizeSolanaTxEnclaveCallRelay as p, finalizeTxEnclaveCallRelay as m, prepareSolanaStuckWithdrawEnclaveCall as h, prepareStuckWithdrawEnclaveCall as g } from "../../functions/snarkjs/constructTxEnclave.mjs";
15
- import { getFeeStructure as _ } from "../../functions/pre-transaction/getFeeStructure.mjs";
16
- import { hinkalTransact as v } from "./hinkalTransact.mjs";
17
- import { updateHinkal as y } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
18
- import { mergeWithFeeStructure as b } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
19
- import { hinkalSolanaTransact as x } from "./hinkalSolanaTransact.mjs";
3
+ import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
4
+ import { countTotalAmountInUtxos as r } from "../../functions/utils/amounts.utils.mjs";
5
+ import { DIRECTLY_SHOW_MESSAGE_ERROR_CODES as i, transactionErrorCodes as a } from "../../error-handling/error-codes.constants.mjs";
6
+ import { normalizeTokenAddress as o } from "../../functions/utils/encodeTokenWithId.mjs";
7
+ import { Logger as s } from "../../error-handling/logger.mjs";
8
+ import { addressToHexFormat as c } from "../../functions/utils/tron.utils.mjs";
9
+ import { hashEthereumAddress as l } from "../../functions/utils/addresses.mjs";
10
+ import { getInputUtxoAndBalancePerToken as u } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
11
+ import { ExternalActionId as d } from "../../types/external-action.types.mjs";
12
+ import { SubmitMode as f } from "../../types/transact.types.mjs";
13
+ import { SolanaSubmitMode as p } from "../../types/solana-transact.types.mjs";
14
+ import { validateAndGetChainId as m } from "../../functions/utils/token-check.utils.mjs";
15
+ import { finalizeSolanaTxEnclaveCallRelay as h, finalizeTxEnclaveCallRelay as g, prepareSolanaStuckWithdrawEnclaveCall as _, prepareStuckWithdrawEnclaveCall as v } from "../../functions/snarkjs/constructTxEnclave.mjs";
16
+ import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
17
+ import { hinkalTransact as b } from "./hinkalTransact.mjs";
18
+ import { updateHinkal as x } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
19
+ import { mergeWithFeeStructure as S } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
20
+ import { hinkalSolanaTransact as C } from "./hinkalSolanaTransact.mjs";
20
21
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.ts
21
- var S = 6, C = async (e, n, i, s) => {
22
- let l = i.erc20TokenAddress, u = await e.getEthereumAddressByChain(n), [f, p] = await Promise.all([_(n, l, [l], c.Transact), e.getRandomRelay(n, !0)]);
23
- if (!p) throw Error(r.RELAYER_NOT_AVAILABLE);
24
- let h = await g(e, {
22
+ var w = 6, T = async (e, n, r, i) => {
23
+ let o = r.erc20TokenAddress, u = await e.getEthereumAddressByChain(n), [f, p] = await Promise.all([y(n, o, [o], d.Transact), e.getRandomRelay(n, !0)]);
24
+ if (!p) throw Error(a.RELAYER_NOT_AVAILABLE);
25
+ let m = await v(e, {
25
26
  chainId: n,
26
27
  hinkalAddress: t[n].contractData.hinkalAddress,
27
- erc20Address: l,
28
- externalAddress: o(s),
28
+ erc20Address: o,
29
+ externalAddress: c(i),
29
30
  relay: p,
30
31
  feeStructure: f,
31
- hashedEthereumAddress: a(u)
32
- }), v = [];
33
- for (let t = 0; t < h.length; t += 1) try {
34
- let { jobId: r, signedMessageHash: i } = h[t], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
35
- v.push(await m(r, {
32
+ hashedEthereumAddress: l(u)
33
+ }), h = [];
34
+ for (let t = 0; t < m.length; t += 1) try {
35
+ let { jobId: r, signedMessageHash: i } = m[t], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
36
+ h.push(await g(r, {
36
37
  R8: a,
37
38
  S: o
38
39
  }, n));
39
40
  } catch (e) {
40
- if (!v.length) throw e;
41
- return d.error(`Stuck withdrawal partially submitted (${v.length}/${h.length})`, e), v;
41
+ if (!h.length) throw e;
42
+ return s.error(`Stuck withdrawal partially submitted (${h.length}/${m.length})`, e), h;
42
43
  }
43
- return v;
44
- }, w = async (e, t, n) => {
45
- let r = await Promise.all(Array.from({ length: S }, async (r, i) => {
46
- let a = i + 1, o = await _(e, t, [t], c.Transact, void 0, void 0, {
44
+ return h;
45
+ }, E = async (e, t, n) => {
46
+ let r = await Promise.all(Array.from({ length: w }, async (r, i) => {
47
+ let a = i + 1, o = await y(e, t, [t], d.Transact, void 0, void 0, {
47
48
  mintTo: t,
48
49
  recipient: n,
49
50
  nullifierCount: a
@@ -51,71 +52,71 @@ var S = 6, C = async (e, n, i, s) => {
51
52
  return [String(a), o];
52
53
  }));
53
54
  return Object.fromEntries(r);
54
- }, T = async (e, t, n, i) => {
55
- let o = n.erc20TokenAddress, [s, c, l] = await Promise.all([
55
+ }, D = async (e, t, n, r) => {
56
+ let i = n.erc20TokenAddress, [o, s, c] = await Promise.all([
56
57
  e.getEthereumAddressByChain(t),
57
58
  e.getRandomRelay(t, !0),
58
- w(t, o, i)
59
+ E(t, i, r)
59
60
  ]);
60
- if (!c) throw Error(r.RELAYER_NOT_AVAILABLE);
61
- let u = await h(e, {
61
+ if (!s) throw Error(a.RELAYER_NOT_AVAILABLE);
62
+ let u = await _(e, {
62
63
  chainId: t,
63
- mintAddress: o,
64
- recipient: i,
65
- relayAddress: c,
64
+ mintAddress: i,
65
+ recipient: r,
66
+ relayAddress: s,
66
67
  accounts: {
67
- recipient: i,
68
- mint: o === "11111111111111111111111111111111" ? void 0 : o
68
+ recipient: r,
69
+ mint: i === "11111111111111111111111111111111" ? void 0 : i
69
70
  },
70
- feeStructures: l,
71
- hashedEthereumAddress: a(s)
71
+ feeStructures: c,
72
+ hashedEthereumAddress: l(o)
72
73
  }), d = [];
73
74
  for (let n = 0; n < u.length; n += 1) {
74
75
  let { jobId: r, signedMessageHash: i } = u[n], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
75
- d.push(await p(r, {
76
+ d.push(await h(r, {
76
77
  R8: a,
77
78
  S: o
78
79
  }, t));
79
80
  }
80
81
  return d;
81
- }, E = async (e, t, n, i, a) => {
82
- let s = [n.erc20TokenAddress], u = n.erc20TokenAddress, [d, f] = await Promise.all([_(t, u, s, c.Transact), e.getRandomRelay(t, !0)]);
83
- if (!f) throw Error(r.RELAYER_NOT_AVAILABLE);
84
- let p = o(a), m = i - d.flatFee;
85
- if (m <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);
82
+ }, O = async (e, t, n, r, i) => {
83
+ let o = [n.erc20TokenAddress], s = n.erc20TokenAddress, [l, u] = await Promise.all([y(t, s, o, d.Transact), e.getRandomRelay(t, !0)]);
84
+ if (!u) throw Error(a.RELAYER_NOT_AVAILABLE);
85
+ let p = c(i), m = r - l.flatFee;
86
+ if (m <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${r}, Fee: ${l.flatFee}`);
86
87
  let h = [-m];
87
- return await b(t, s, h, d), {
88
- tx: await v(e, {
88
+ return await S(t, o, h, l), {
89
+ tx: await b(e, {
89
90
  chainId: t,
90
- erc20Addresses: s,
91
+ erc20Addresses: o,
91
92
  amountChanges: h,
92
93
  externalAddress: p,
93
- feeStructure: d,
94
- relay: f,
94
+ feeStructure: l,
95
+ relay: u,
95
96
  useBlockedUtxos: !0,
96
97
  onTxSubmitLocally: (n) => {
97
- y(t, e, n.inputNullifiers?.flat(), n.outCommitments?.flat(), n.encryptedOutputs?.flat());
98
+ x(t, e, n.inputNullifiers?.flat(), n.outCommitments?.flat(), n.encryptedOutputs?.flat());
98
99
  },
99
- submit: { mode: l.Relayer }
100
+ submit: { mode: f.Relayer }
100
101
  }),
101
102
  amountToRecipient: m
102
103
  };
103
- }, D = async (e, n, i, a, o, s) => {
104
- let l = [i.erc20TokenAddress], { originalDeployer: d } = t[n].contractData;
105
- if (!d) throw Error("missing data");
106
- let f = i.erc20TokenAddress, [p, m] = await Promise.all([_(n, f, l, c.Transact, void 0, void 0, {
107
- mintTo: l[0],
104
+ }, k = async (e, n, r, i, o, s) => {
105
+ let c = [r.erc20TokenAddress], { originalDeployer: l } = t[n].contractData;
106
+ if (!l) throw Error("missing data");
107
+ let u = r.erc20TokenAddress, [f, m] = await Promise.all([y(n, u, c, d.Transact, void 0, void 0, {
108
+ mintTo: c[0],
108
109
  recipient: o,
109
110
  nullifierCount: s
110
111
  }), e.getRandomRelay(n, !0)]);
111
- if (!m) throw Error(r.RELAYER_NOT_AVAILABLE);
112
- let h = a - p.flatFee;
113
- if (h <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);
112
+ if (!m) throw Error(a.RELAYER_NOT_AVAILABLE);
113
+ let h = i - f.flatFee;
114
+ if (h <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${f.flatFee}`);
114
115
  let g = [-h];
115
- return g[0] -= p.flatFee, {
116
- tx: await x(e, {
116
+ return g[0] -= f.flatFee, {
117
+ tx: await C(e, {
117
118
  chainId: n,
118
- mintAddresses: l,
119
+ mintAddresses: c,
119
120
  amountChanges: g,
120
121
  relayAddress: m,
121
122
  recipient: o,
@@ -123,45 +124,51 @@ var S = 6, C = async (e, n, i, s) => {
123
124
  functionName: "transact",
124
125
  accounts: {
125
126
  recipient: o,
126
- mint: l[0] === "11111111111111111111111111111111" ? void 0 : l[0]
127
+ mint: c[0] === "11111111111111111111111111111111" ? void 0 : c[0]
127
128
  },
128
- relayerFee: p.flatFee,
129
- variableRate: p.variableRate,
129
+ relayerFee: f.flatFee,
130
+ variableRate: f.variableRate,
130
131
  useBlockedUtxos: !0,
131
132
  onTxSubmitLocally: ({ inputNullifiers: t, outCommitments: r, encryptedOutputs: i }) => {
132
- y(n, e, t, r, i);
133
+ x(n, e, t, r, i);
133
134
  },
134
- submit: { mode: u.Relayer }
135
+ submit: { mode: p.Relayer }
135
136
  }),
136
137
  amountToRecipient: h
137
138
  };
138
- }, O = async (t, n, r, i, a, o) => e(n) ? D(t, n, r, i, a, o) : E(t, n, r, i, a), k = async (t, a, o) => {
139
- let c = f([a]);
139
+ }, A = async (t, n, r, i, a, o) => e(n) ? k(t, n, r, i, a, o) : O(t, n, r, i, a), j = async (e, t, r) => {
140
+ try {
141
+ return ((await e.getStuckShieldedBalances([t])).get(t) ?? []).find((e) => n(e.token.erc20TokenAddress, r.erc20TokenAddress))?.balance ?? 0n;
142
+ } catch (e) {
143
+ return s.error("Failed to read stuck balance after an empty stuck withdrawal", e), 0n;
144
+ }
145
+ }, M = async (t, n, c) => {
146
+ let l = m([n]);
140
147
  if (t.generateProofRemotely) {
141
- let n = e(c) ? await T(t, c, a, o) : await C(t, c, a, o);
142
- if (!n.length) throw Error(r.NO_STUCK_BALANCE_TO_WITHDRAW);
143
- return n;
148
+ let r = e(l) ? await D(t, l, n, c) : await T(t, l, n, c);
149
+ if (!r.length) throw await j(t, l, n) > 0n ? Error(i.INSUFFICIENT_FUNDS_FOR_RECOVERY_FEES) : Error(a.NO_STUCK_BALANCE_TO_WITHDRAW);
150
+ return r;
144
151
  }
145
- let l = [], u = i(c, a.erc20TokenAddress);
146
- await t.resetMerkleTreesIfNecessary([c]);
147
- let p = ((await s({
152
+ let d = [], f = o(l, n.erc20TokenAddress);
153
+ await t.resetMerkleTreesIfNecessary([l]);
154
+ let p = ((await u({
148
155
  hinkal: t,
149
156
  sliceIfMore6: !1,
150
157
  useBlockedUtxos: !0,
151
- chainId: c
152
- }))?.get(u) ?? []).filter((e) => e.amount > 0n).sort((e, t) => Number(t.amount - e.amount));
153
- if (!p.length) throw Error(r.NO_STUCK_BALANCE_TO_WITHDRAW);
154
- for (let e = 0; e < p.length; e += S) {
155
- let r = p.slice(e, e + S), i = n(r);
158
+ chainId: l
159
+ }))?.get(f) ?? []).filter((e) => e.amount > 0n).sort((e, t) => Number(t.amount - e.amount));
160
+ if (!p.length) throw Error(a.NO_STUCK_BALANCE_TO_WITHDRAW);
161
+ for (let e = 0; e < p.length; e += w) {
162
+ let i = p.slice(e, e + w), a = r(i);
156
163
  try {
157
- let { tx: e } = await O(t, c, a, i, o, r.length);
158
- l.push(e);
164
+ let { tx: e } = await A(t, l, n, a, c, i.length);
165
+ d.push(e);
159
166
  } catch (e) {
160
- if (!l.length) throw e;
161
- return d.error(`Stuck withdrawal partially submitted (${l.length}/${Math.ceil(p.length / S)})`, e), l;
167
+ if (!d.length) throw e;
168
+ return s.error(`Stuck withdrawal partially submitted (${d.length}/${Math.ceil(p.length / w)})`, e), d;
162
169
  }
163
170
  }
164
- return l;
171
+ return d;
165
172
  };
166
173
  //#endregion
167
- export { k as hinkalWithdrawStuckUtxos };
174
+ export { M as hinkalWithdrawStuckUtxos };
@@ -23,4 +23,3 @@ export * from './hinkalSolanaDepositAndWithdraw';
23
23
  export * from './hinkalNearDepositAndBridge';
24
24
  export * from './hinkalBridgePrivateToPrivate';
25
25
  export * from './hinkalSolanaSponsoredShield';
26
- export * from './hinkalSolanaSponsoredProxySend';
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/activities.types.cjs`),n=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const o=require(`../../functions/utils/aggregateTokenAmounts.cjs`);let s=require(`idb-keyval`);var c=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,s.get)(n.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:r,to:i,gasInDollar:a,extraNativeTokenFee:c,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?o.aggregateTokensBySymbol(m):[],C=p?.length?o.aggregateTokensBySymbol(p):[],w={id:x,from:r,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:c?.toString(),chainId:l,txHash:d,activityType:f,status:u??t.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let r=await this.getTxRequest(e);if(!r)throw Error(`Activity not found`);let i={...r,txHash:t};await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,r){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:r,timestamp:new Date};return await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,t,n){try{await this.updateTxStatusAndHash(e,t,n)}catch(e){r.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,s.update)(n.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){r.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(n,o,s,c){try{let r=await this.getTxRequest(o);if(!r)throw Error(`Transaction not found`);let{chainId:l}=r;if(!n.success){c?.(n.error),await this.updateActivity(o,t.ActivityStatus.FAILED,`erroredTx`in n?n.erroredTx:void 0);return}if(`txHash`in n){let{txHash:r}=n;try{await a.waitForTransactionConfirmation(l,r,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(n){let i=n instanceof Error?n:Error(e.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,t.ActivityStatus.FAILED,r);return}s?.(),await this.updateActivity(o,t.ActivityStatus.SUCCESSFUL,r)}}catch(e){r.Logger.error(`error in updating pending transactions`,e)}}},l=new c;exports.ActivityStorage=c,exports.activityStorage=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../../types/activities.types.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const o=require(`../../functions/utils/aggregateTokenAmounts.cjs`);let s=require(`idb-keyval`);var c=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,s.get)(r.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:t,to:i,gasInDollar:a,extraNativeTokenFee:c,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?o.aggregateTokensBySymbol(m):[],C=p?.length?o.aggregateTokensBySymbol(p):[],w={id:x,from:t,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:c?.toString(),chainId:l,txHash:d,activityType:f,status:u??n.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let n=await this.getTxRequest(e);if(!n)throw Error(`Activity not found`);let i={...n,txHash:t};await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,n){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:n,timestamp:new Date};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,n,r){try{await this.updateTxStatusAndHash(e,n,r)}catch(e){t.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){t.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(r,o,s,c){try{let t=await this.getTxRequest(o);if(!t)throw Error(`Transaction not found`);let{chainId:l}=t;if(!r.success){c?.(r.error),await this.updateActivity(o,n.ActivityStatus.FAILED,`erroredTx`in r?r.erroredTx:void 0);return}if(`txHash`in r){let{txHash:t}=r;try{await a.waitForTransactionConfirmation(l,t,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(r){let i=r instanceof Error?r:Error(e.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,n.ActivityStatus.FAILED,t);return}s?.(),await this.updateActivity(o,n.ActivityStatus.SUCCESSFUL,t)}}catch(e){t.Logger.error(`error in updating pending transactions`,e)}}},l=new c;exports.ActivityStorage=c,exports.activityStorage=l;
@@ -1,8 +1,8 @@
1
1
  import { transactionErrorCodes as e } from "../../error-handling/error-codes.constants.mjs";
2
- import { ActivityStatus as t } from "../../types/activities.types.mjs";
3
- import { StorageKeys as n } from "../../types/cache.types.mjs";
2
+ import { Logger as t } from "../../error-handling/logger.mjs";
3
+ import { ActivityStatus as n } from "../../types/activities.types.mjs";
4
+ import { StorageKeys as r } from "../../types/cache.types.mjs";
4
5
  import "../../types/index.mjs";
5
- import { Logger as r } from "../../error-handling/logger.mjs";
6
6
  import "../../error-handling/index.mjs";
7
7
  import { RELAYER_TX_CONFIRMATION_TIMEOUT as i } from "../../constants/tx-confirmation.constants.mjs";
8
8
  import { waitForTransactionConfirmation as a } from "../../functions/utils/tx-confirmation.utils.mjs";
@@ -15,19 +15,19 @@ var l = class {
15
15
  return `tx_${(/* @__PURE__ */ new Date()).getTime()}_${Math.random().toString(36).substring(2, 15)}`;
16
16
  }
17
17
  async getTransactionRecord() {
18
- return await s(n.TX_ACTIVITY) || {};
18
+ return await s(r.TX_ACTIVITY) || {};
19
19
  }
20
20
  async saveTxRequest(e) {
21
- let { from: r, to: i, gasInDollar: a, extraNativeTokenFee: s, chainId: l, status: u, txHash: d, activityType: f, tokensReceive: p, tokensSpend: m, tokensApprove: h, activityIcon: g, dappUrl: _, dappName: v, integrationProvider: y, knownPartialSignature: b } = e, x = this.generateTxId(), S = m?.length ? o(m) : [], C = p?.length ? o(p) : [], w = {
21
+ let { from: t, to: i, gasInDollar: a, extraNativeTokenFee: s, chainId: l, status: u, txHash: d, activityType: f, tokensReceive: p, tokensSpend: m, tokensApprove: h, activityIcon: g, dappUrl: _, dappName: v, integrationProvider: y, knownPartialSignature: b } = e, x = this.generateTxId(), S = m?.length ? o(m) : [], C = p?.length ? o(p) : [], w = {
22
22
  id: x,
23
- from: r,
23
+ from: t,
24
24
  to: i,
25
25
  gasInDollar: a?.toString(),
26
26
  extraNativeTokenFee: s?.toString(),
27
27
  chainId: l,
28
28
  txHash: d,
29
29
  activityType: f,
30
- status: u ?? t.PENDING,
30
+ status: u ?? n.PENDING,
31
31
  timestamp: /* @__PURE__ */ new Date(),
32
32
  tokensReceive: C,
33
33
  tokensSpend: S,
@@ -38,7 +38,7 @@ var l = class {
38
38
  integrationProvider: y,
39
39
  knownPartialSignature: b
40
40
  };
41
- return await c(n.TX_ACTIVITY, (e = {}) => (e[x] = w, e)), x;
41
+ return await c(r.TX_ACTIVITY, (e = {}) => (e[x] = w, e)), x;
42
42
  }
43
43
  async getTxRequest(e) {
44
44
  return (await this.getTransactionRecord())[e] || null;
@@ -48,61 +48,61 @@ var l = class {
48
48
  return Object.values(t).filter((t) => t.chainId === e).sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime());
49
49
  }
50
50
  async updateTxHash(e, t) {
51
- let r = await this.getTxRequest(e);
52
- if (!r) throw Error("Activity not found");
51
+ let n = await this.getTxRequest(e);
52
+ if (!n) throw Error("Activity not found");
53
53
  let i = {
54
- ...r,
54
+ ...n,
55
55
  txHash: t
56
56
  };
57
- await c(n.TX_ACTIVITY, (t = {}) => (t[e] = i, t));
57
+ await c(r.TX_ACTIVITY, (t = {}) => (t[e] = i, t));
58
58
  }
59
- async updateTxStatusAndHash(e, t, r) {
59
+ async updateTxStatusAndHash(e, t, n) {
60
60
  let i = await this.getTxRequest(e);
61
61
  if (!i) throw Error("Transaction not found");
62
62
  let a = {
63
63
  ...i,
64
64
  status: t,
65
- txHash: r,
65
+ txHash: n,
66
66
  timestamp: /* @__PURE__ */ new Date()
67
67
  };
68
- return await c(n.TX_ACTIVITY, (t = {}) => (t[e] = a, t)), a;
68
+ return await c(r.TX_ACTIVITY, (t = {}) => (t[e] = a, t)), a;
69
69
  }
70
- async updateActivity(e, t, n) {
70
+ async updateActivity(e, n, r) {
71
71
  try {
72
- await this.updateTxStatusAndHash(e, t, n);
72
+ await this.updateTxStatusAndHash(e, n, r);
73
73
  } catch (e) {
74
- r.error("error in updating tx request", e);
74
+ t.error("error in updating tx request", e);
75
75
  }
76
76
  }
77
77
  async removePendingTransactions(e) {
78
78
  try {
79
- await c(n.TX_ACTIVITY, (t = {}) => (delete t[e], t));
79
+ await c(r.TX_ACTIVITY, (t = {}) => (delete t[e], t));
80
80
  } catch (e) {
81
- r.error("error in deleting tx requests", e);
81
+ t.error("error in deleting tx requests", e);
82
82
  }
83
83
  }
84
- async updatePendingTransactions(n, o, s, c) {
84
+ async updatePendingTransactions(r, o, s, c) {
85
85
  try {
86
- let r = await this.getTxRequest(o);
87
- if (!r) throw Error("Transaction not found");
88
- let { chainId: l } = r;
89
- if (!n.success) {
90
- c?.(n.error), await this.updateActivity(o, t.FAILED, "erroredTx" in n ? n.erroredTx : void 0);
86
+ let t = await this.getTxRequest(o);
87
+ if (!t) throw Error("Transaction not found");
88
+ let { chainId: l } = t;
89
+ if (!r.success) {
90
+ c?.(r.error), await this.updateActivity(o, n.FAILED, "erroredTx" in r ? r.erroredTx : void 0);
91
91
  return;
92
92
  }
93
- if ("txHash" in n) {
94
- let { txHash: r } = n;
93
+ if ("txHash" in r) {
94
+ let { txHash: t } = r;
95
95
  try {
96
- await a(l, r, { evmTimeoutMs: i });
97
- } catch (n) {
98
- let i = n instanceof Error ? n : Error(e.UNKNOWN);
99
- c?.(i), await this.updateActivity(o, t.FAILED, r);
96
+ await a(l, t, { evmTimeoutMs: i });
97
+ } catch (r) {
98
+ let i = r instanceof Error ? r : Error(e.UNKNOWN);
99
+ c?.(i), await this.updateActivity(o, n.FAILED, t);
100
100
  return;
101
101
  }
102
- s?.(), await this.updateActivity(o, t.SUCCESSFUL, r);
102
+ s?.(), await this.updateActivity(o, n.SUCCESSFUL, t);
103
103
  }
104
104
  } catch (e) {
105
- r.error("error in updating pending transactions", e);
105
+ t.error("error in updating pending transactions", e);
106
106
  }
107
107
  }
108
108
  }, u = new l();
@@ -1 +1 @@
1
- require(`./key-val-store.cjs`),require(`./activity-db.cjs`),require(`./balances-db.cjs`),require(`./private-balances-db.cjs`),require(`./prices-db.cjs`),require(`./contact-db.cjs`),require(`./signatures-db.cjs`),require(`./pay-activity-db.cjs`);
1
+ require(`./key-val-store.cjs`),require(`./activity-db.cjs`),require(`./balances-db.cjs`),require(`./private-balances-db.cjs`),require(`./prices-db.cjs`),require(`./contact-db.cjs`),require(`./signatures-db.cjs`),require(`./pay-activity-db.cjs`),require(`./scheduled-transactions-db.cjs`);
@@ -6,3 +6,4 @@ export * from './prices-db';
6
6
  export * from './contact-db';
7
7
  export * from './signatures-db';
8
8
  export * from './pay-activity-db';
9
+ export * from './scheduled-transactions-db';
@@ -6,3 +6,4 @@ import "./prices-db.mjs";
6
6
  import "./contact-db.mjs";
7
7
  import "./signatures-db.mjs";
8
8
  import "./pay-activity-db.mjs";
9
+ import "./scheduled-transactions-db.mjs";
@@ -0,0 +1 @@
1
+ require(`../../functions/utils/tron.utils.cjs`);const e=require(`../../types/cache.types.cjs`),t=require(`./key-val-store.cjs`);new class{scheduledTransactionsRecordLabel=e.StorageKeys.SCHEDULED_TRANSACTIONS;async getAll(){return t.keyValStore.get(this.scheduledTransactionsRecordLabel)}async getByAddress(e){let t=await this.getAll();return t?t[e]??[]:[]}async saveScheduledTransaction(e,n){await t.keyValStore.update(this.scheduledTransactionsRecordLabel,(t={})=>({...t,[e]:[...t[e]??[],n]}))}async updateLegs(e,n,r){await t.keyValStore.update(this.scheduledTransactionsRecordLabel,(t={})=>({...t,[e]:(t[e]??[]).map(e=>e.scheduleId===n?{...e,legs:e.legs.map((e,t)=>r[t]?{...e,status:r[t].status,scheduledTime:r[t].scheduledTime,txHash:r[t].txHash}:e)}:e)}))}};
@@ -0,0 +1,11 @@
1
+ import { ScheduledTransactionCacheEntry, ScheduledTransactionItemStatus } from '../../types/scheduled-transactions.types';
2
+ export declare const getScheduledTransactionCacheAddressKey: (address: string, isSignedIn: boolean, isSolana: boolean) => string;
3
+ declare class ScheduledTransactionsStorage {
4
+ private readonly scheduledTransactionsRecordLabel;
5
+ private getAll;
6
+ getByAddress(addressKey: string): Promise<ScheduledTransactionCacheEntry[]>;
7
+ saveScheduledTransaction(addressKey: string, entry: ScheduledTransactionCacheEntry): Promise<void>;
8
+ updateLegs(addressKey: string, scheduleId: string, polledLegs: ScheduledTransactionItemStatus[]): Promise<void>;
9
+ }
10
+ export declare const scheduledTransactionsStorage: ScheduledTransactionsStorage;
11
+ export {};
@@ -0,0 +1,34 @@
1
+ import "../../functions/utils/tron.utils.mjs";
2
+ import { StorageKeys as e } from "../../types/cache.types.mjs";
3
+ import { keyValStore as t } from "./key-val-store.mjs";
4
+ new class {
5
+ scheduledTransactionsRecordLabel = e.SCHEDULED_TRANSACTIONS;
6
+ async getAll() {
7
+ return t.get(this.scheduledTransactionsRecordLabel);
8
+ }
9
+ async getByAddress(e) {
10
+ let t = await this.getAll();
11
+ return t ? t[e] ?? [] : [];
12
+ }
13
+ async saveScheduledTransaction(e, n) {
14
+ await t.update(this.scheduledTransactionsRecordLabel, (t = {}) => ({
15
+ ...t,
16
+ [e]: [...t[e] ?? [], n]
17
+ }));
18
+ }
19
+ async updateLegs(e, n, r) {
20
+ await t.update(this.scheduledTransactionsRecordLabel, (t = {}) => ({
21
+ ...t,
22
+ [e]: (t[e] ?? []).map((e) => e.scheduleId === n ? {
23
+ ...e,
24
+ legs: e.legs.map((e, t) => r[t] ? {
25
+ ...e,
26
+ status: r[t].status,
27
+ scheduledTime: r[t].scheduledTime,
28
+ txHash: r[t].txHash
29
+ } : e)
30
+ } : e)
31
+ }));
32
+ }
33
+ }();
34
+ //#endregion
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const t=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);let n=require(`idb-keyval`);new class{generateMessageId(){return`msg_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async saveSignedMessage(r,i,a,o,s,c){try{let t=this.generateMessageId(),l=await(0,n.get)(e.StorageKeys.SIGNED_MESSAGES)||{},u={chainId:r,messageText:i,messageType:a,subAccountAddress:o,signature:s,appMetaData:c};l[t]={timestamp:new Date().toISOString(),...u},await(0,n.set)(e.StorageKeys.SIGNED_MESSAGES,l)}catch(e){t.Logger.error(`Failed to save signed message:`,e,{chainId:r,messageType:a})}}async getAllSignedMessages(){try{let t=await(0,n.get)(e.StorageKeys.SIGNED_MESSAGES)||{};return Object.values(t).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}catch(e){return t.Logger.error(`Failed to retrieve signed messages:`,e),[]}}};
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/logger.cjs`),t=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);let n=require(`idb-keyval`);new class{generateMessageId(){return`msg_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async saveSignedMessage(r,i,a,o,s,c){try{let e=this.generateMessageId(),l=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{},u={chainId:r,messageText:i,messageType:a,subAccountAddress:o,signature:s,appMetaData:c};l[e]={timestamp:new Date().toISOString(),...u},await(0,n.set)(t.StorageKeys.SIGNED_MESSAGES,l)}catch(t){e.Logger.error(`Failed to save signed message:`,t,{chainId:r,messageType:a})}}async getAllSignedMessages(){try{let e=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{};return Object.values(e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}catch(t){return e.Logger.error(`Failed to retrieve signed messages:`,t),[]}}};