@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
@@ -37,9 +37,8 @@ export interface IHinkal<ConnectorType = unknown> {
37
37
  generateProofRemotely: boolean;
38
38
  balanceFetchingMutexByChain: Map<number, Mutex>;
39
39
  readonly allowParallelBalanceLocalDecryption: boolean;
40
- getBalances(chainId: number, passedShieldedPrivateKey: string, passedShieldedPublicKey: string, ethAddress: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<Map<string, TokenBalance>>;
41
- getTotalBalance(chainId: number, userKeys?: UserKeys, ethAddress?: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean, useBlockedUtxos?: boolean): Promise<TokenBalance[]>;
42
- getStuckShieldedBalances(chainId: number, userKeys?: UserKeys, ethAddress?: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
40
+ getTotalBalances(chainIds: number[], userKeys?: UserKeys, ethAddress?: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean, useBlockedUtxos?: boolean): Promise<Map<number, TokenBalance[]>>;
41
+ getStuckShieldedBalances(chainIds: number[], userKeys?: UserKeys, ethAddress?: string, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<Map<number, TokenBalance[]>>;
43
42
  privateBalancesWithUSD: PrivateBalancesState;
44
43
  onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
45
44
  getSupportedChains(): number[];
@@ -75,15 +74,12 @@ export interface IHinkal<ConnectorType = unknown> {
75
74
  getTronWeb(): TronWeb;
76
75
  getSigningMessage(mode?: LoginMessageMode): string;
77
76
  signHinkalMessage(mode?: LoginMessageMode): Promise<string>;
78
- signSolanaLedgerMessage(): Promise<{
79
- signature: string;
80
- txMessageForSolanaLedger: string;
81
- }>;
77
+ signSolanaLedgerMessage(): Promise<string>;
82
78
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
83
79
  initUserKeysWithSignature(signature: string): void;
84
80
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
85
- initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
86
- storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
81
+ initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<void>;
82
+ storeAndGetInitialSignature(authSignature: string): Promise<string>;
87
83
  initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
88
84
  disconnectFromConnector(): Promise<void>;
89
85
  resetProviderAdapters(): Promise<void>;
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),ee=require(`../../functions/utils/time.utils.cjs`),i=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../types/transactions.types.cjs`),s=require(`../../types/admin.types.cjs`),c=require(`../../types/activities.types.cjs`),l=require(`../../types/transaction.types.cjs`),u=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const d=require(`../../API/API.cjs`),f=require(`../../error-handling/logger.cjs`),p=require(`../../functions/utils/erc20tokenFunctions.cjs`),m=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const h=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),g=require(`../../functions/utils/create-provider.cjs`),_=require(`../../functions/pre-transaction/getFeeStructure.cjs`),v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),w=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),T=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let i=g.createJsonRpcProvider(A);await ee.waitLittle(A===e.chainIds.ethMainnet?O:D);let l=await S.getTokensToDepositBack(F,N,j,i);if(!l.length){b.postToOffscreen(u.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let f=(await p.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(A),A)).filter(e=>e!==void 0),{prices:m}=await d.API.getTokenPrices(A,f.map(e=>e.erc20TokenAddress)),R=new Map(m.map((e,t)=>[f[t].erc20TokenAddress.toLowerCase(),e])),z=l.map(({token:e})=>e),B=l.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=v.createTransaferEmporiumOpsBatch(k,A,V,await h.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await _.getFeeStructure(A,N,V,a.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=await p.getErc20TokenFromAPI(A,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await w.selectGasToken(N,q,A,z,H,await C.getGasTokenRecords(f,A,k,j,i,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(u.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[A].contractData,$={activityType:c.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};if(L=await E.activityStorage.saveTxRequest($),b.postToOffscreen(u.MessagesFromOffscreen.AutoShieldTxStatus,{status:o.TransactionStatus.Loading}),I)T.updateHinkal(A,k,I.inputNullifiers?.flat(),I.outCommitments?.flat(),I.encryptedOutputs?.flat());else if(!k.generateProofRemotely)throw Error(`Circomdata should be passed if tx is done locally`);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,s.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(u.MessagesFromOffscreen.AutoShieldTxStatus,{status:o.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof i.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(u.MessagesFromOffscreen.AutoShieldTxStatus,{status:o.TransactionStatus.Failed,error:m.getErrorMessageFromTransactionRequest(e,l.TransactionRequestType.ReceiveFromShieldedAccount)}),f.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transactions.types.cjs`),l=require(`../../types/admin.types.cjs`),u=require(`../../types/activities.types.cjs`),d=require(`../../types/transaction.types.cjs`),f=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const ee=require(`../../API/API.cjs`),p=require(`../../functions/utils/erc20tokenFunctions.cjs`),m=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const h=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),g=require(`../../functions/utils/create-provider.cjs`),_=require(`../../functions/pre-transaction/getFeeStructure.cjs`),v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),w=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),T=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let a=g.createJsonRpcProvider(A);await i.waitLittle(A===e.chainIds.ethMainnet?O:D);let o=await S.getTokensToDepositBack(F,N,j,a);if(!o.length){b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let d=(await p.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(A),A)).filter(e=>e!==void 0),{prices:m}=await ee.API.getTokenPrices(A,d.map(e=>e.erc20TokenAddress)),R=new Map(m.map((e,t)=>[d[t].erc20TokenAddress.toLowerCase(),e])),z=o.map(({token:e})=>e),B=o.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=v.createTransaferEmporiumOpsBatch(k,A,V,await h.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await _.getFeeStructure(A,N,V,s.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=await p.getErc20TokenFromAPI(A,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await w.selectGasToken(N,q,A,z,H,await C.getGasTokenRecords(d,A,k,j,a,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[A].contractData,$={activityType:u.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};if(L=await E.activityStorage.saveTxRequest($),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Loading}),I)T.updateHinkal(A,k,I.inputNullifiers?.flat(),I.outCommitments?.flat(),I.encryptedOutputs?.flat());else if(!k.generateProofRemotely)throw Error(`Circomdata should be passed if tx is done locally`);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,l.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Failed,error:m.getErrorMessageFromTransactionRequest(e,d.TransactionRequestType.ReceiveFromShieldedAccount)}),o.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
@@ -4,15 +4,15 @@ import { gasErrorCodes as r, transactionErrorCodes as i } from "../../error-hand
4
4
  import { getAmountInToken as a } from "../../functions/web3/etherFunctions.mjs";
5
5
  import { waitLittle as ee } from "../../functions/utils/time.utils.mjs";
6
6
  import { ErrorWithRelayerTransaction as o } from "../../error-handling/customErrors/ErrorWithTx.mjs";
7
- import { ExternalActionId as s } from "../../types/external-action.types.mjs";
8
- import { TransactionStatus as c } from "../../types/transactions.types.mjs";
9
- import { AdminTransactionType as l } from "../../types/admin.types.mjs";
10
- import { ActivityTypes as u } from "../../types/activities.types.mjs";
11
- import { TransactionRequestType as d } from "../../types/transaction.types.mjs";
12
- import { MessagesFromOffscreen as f } from "../../types/offscreen.types.mjs";
7
+ import { Logger as s } from "../../error-handling/logger.mjs";
8
+ import { ExternalActionId as c } from "../../types/external-action.types.mjs";
9
+ import { TransactionStatus as l } from "../../types/transactions.types.mjs";
10
+ import { AdminTransactionType as u } from "../../types/admin.types.mjs";
11
+ import { ActivityTypes as d } from "../../types/activities.types.mjs";
12
+ import { TransactionRequestType as f } from "../../types/transaction.types.mjs";
13
+ import { MessagesFromOffscreen as p } from "../../types/offscreen.types.mjs";
13
14
  import "../../types/index.mjs";
14
- import { API as p } from "../../API/API.mjs";
15
- import { Logger as m } from "../../error-handling/logger.mjs";
15
+ import { API as m } from "../../API/API.mjs";
16
16
  import { getErc20TokenFromAPI as h, getErc20TokensBySymbolsFromAPI as g } from "../../functions/utils/erc20tokenFunctions.mjs";
17
17
  import { getErrorMessageFromTransactionRequest as _ } from "../../error-handling/get-error.message.mjs";
18
18
  import "../../error-handling/index.mjs";
@@ -37,24 +37,24 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
37
37
  try {
38
38
  let o = v(j);
39
39
  await ee(j === e.ethMainnet ? ne : k);
40
- let d = await w(I, P, M, o);
41
- if (!d.length) {
42
- S(f.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
40
+ let s = await w(I, P, M, o);
41
+ if (!s.length) {
42
+ S(p.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
43
43
  return;
44
44
  }
45
- let m = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await p.getTokenPrices(j, m.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [m[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = b(A, j, H, await te(j, B, V, M)), W = await y(j, P, H, s.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
45
+ let f = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, f.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [f[t].erc20TokenAddress.toLowerCase(), e])), B = s.map(({ token: e }) => e), V = s.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = b(A, j, H, await te(j, B, V, M)), W = await y(j, P, H, c.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
46
46
  if (!K) return;
47
- let q = a(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await E(P, J, j, B, U, await T(m, j, A, M, o, z), W, H, M);
47
+ let q = a(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await E(P, J, j, B, U, await T(f, j, A, M, o, z), W, H, M);
48
48
  if (!Y) return;
49
49
  let { feeToken: X, feeStructure: Z } = Y ?? {};
50
50
  if (F && Number(F) < J) {
51
- S(f.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
51
+ S(p.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
52
52
  return;
53
53
  }
54
54
  let Q = B.findIndex((e) => n(e.erc20TokenAddress, X));
55
55
  Q !== -1 && (V[Q] -= Z?.flatFee ?? 0n);
56
56
  let { hinkalAddress: re } = t[j].contractData, $ = {
57
- activityType: u.AUTO_SHIELD,
57
+ activityType: d.AUTO_SHIELD,
58
58
  chainId: j,
59
59
  from: M,
60
60
  to: re,
@@ -64,15 +64,15 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
64
64
  token: e
65
65
  }))
66
66
  };
67
- if (R = await O.saveTxRequest($), S(f.AutoShieldTxStatus, { status: c.Loading }), L) D(j, A, L.inputNullifiers?.flat(), L.outCommitments?.flat(), L.encryptedOutputs?.flat());
67
+ if (R = await O.saveTxRequest($), S(p.AutoShieldTxStatus, { status: l.Loading }), L) D(j, A, L.inputNullifiers?.flat(), L.outCommitments?.flat(), L.encryptedOutputs?.flat());
68
68
  else if (!A.generateProofRemotely) throw Error("Circomdata should be passed if tx is done locally");
69
69
  let ie = {
70
70
  id: 0,
71
71
  success: !0,
72
- txHash: await A.actionReceive(B, V, X, Z, N, l.AutoShield)
72
+ txHash: await A.actionReceive(B, V, X, Z, N, u.AutoShield)
73
73
  };
74
- await O.updatePendingTransactions(ie, R), S(f.AutoShieldTxStatus, {
75
- status: c.Confirmed,
74
+ await O.updatePendingTransactions(ie, R), S(p.AutoShieldTxStatus, {
75
+ status: l.Confirmed,
76
76
  activityRequest: $
77
77
  });
78
78
  } catch (e) {
@@ -84,10 +84,10 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
84
84
  success: !1,
85
85
  ...t ? { erroredTx: t } : {}
86
86
  };
87
- R && await O.updatePendingTransactions(n, R), S(f.AutoShieldTxStatus, {
88
- status: c.Failed,
89
- error: _(e, d.ReceiveFromShieldedAccount)
90
- }), m.error("Error in auto deposit back:", e);
87
+ R && await O.updatePendingTransactions(n, R), S(p.AutoShieldTxStatus, {
88
+ status: l.Failed,
89
+ error: _(e, f.ReceiveFromShieldedAccount)
90
+ }), s.error("Error in auto deposit back:", e);
91
91
  }
92
92
  };
93
93
  //#endregion
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/private-wallet/emporium.helpers.cjs`),p=require(`../../constants/addresses.constants.cjs`),m=require(`../../constants/bridging.constants.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/utils/fees.utils.cjs`),_=require(`../../functions/utils/enclave-utxo-storage.cjs`),v=require(`../../functions/utils/bridge-arrival.utils.cjs`),y=require(`../../functions/utils/temp-wallet.utils.cjs`),b=require(`../../API/callNearIntentsAPI.cjs`),x=require(`../../functions/utils/nearIntents.utils.cjs`),S=require(`../../functions/web3/lifiAPI.cjs`),C=require(`../../functions/utils/bridge-claimable-utxo.utils.cjs`);var w=async(e,r,d,m,h,g,_,v)=>{let{chainId:b}=r,x=d.chainId,C=r.erc20TokenAddress,w=p.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][b];if(!w)throw Error(`LIFI not configured for chain ${b}`);let T=i.randomBigInt(6),{sourceSubAccount:E,destinationSubAccount:D}=y.deriveBridgeTempWallets(e,b,x,T),O=u.AccountActions.getAddressFromSubAccount(b,E),k=u.AccountActions.getAddressFromSubAccount(x,D);if(!O||!k)throw Error(`Missing temp wallet address for LIFI bridge`);let{lifiDataValue:A,outSwapAmountValue:j,extraNativeTokenFee:M}=await S.getLifiPrice(r,d,m,h,O,k),N={calldata:A,expectedAmount:j,nativeFee:M},P=i.getAmountInWei(r,m),F=Array.from(new Set([b,x])),I=a.hashEthereumAddress(await e.getEthereumAddress());await Promise.all(F.map(e=>c.API.addTemporaryWalletNonce(e,I,Number(T),s.TemporaryWalletRecoveryDestination.Confidential)));let L=n.caseInsensitiveEqual(C,t.zeroAddress),R=N.nativeFee>0n&&!L,z=L?P+N.nativeFee:P,B=[r],V=[-z];if(R){let e=await l.getErc20TokenFromAPI(b,t.zeroAddress);if(!e)throw Error(`Native token not found for bridge fee`);B.push(e),V.push(-N.nativeFee)}let H=f.createLifiBridgeOps(e,b,O,w,C,z,P,N),U=B.map((e,t)=>({token:e,amount:V[t]}));return{tempSubAccount:D,sourceTxHash:await e.actionPrivateWallet(b,B,V,V.map(()=>!1),H,U,E,g??C,_,void 0,!1,void 0,v,void 0),expectedAmount:N.expectedAmount}},T=async(e,t,n,r,o,l,d,f)=>{let p=n.chainId,h=i.randomBigInt(6),g=y.buildTempSubAccountForChain(e,p,h),_=u.AccountActions.getAddressFromSubAccount(p,g);if(!_)throw Error(`Missing temp wallet address for NEAR bridge`);let v=a.hashEthereumAddress(await e.getEthereumAddress());await c.API.addTemporaryWalletNonce(p,v,Number(h),s.TemporaryWalletRecoveryDestination.Confidential);let[S,C]=await Promise.all([x.resolveNearAssetId(t.chainId,t.erc20TokenAddress),x.resolveNearAssetId(p,n.erc20TokenAddress)]),w=i.getAmountInWei(t,r),T=new Date(Date.now()+m.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),{quote:E}=await b.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:Math.round(o*1e4)||100,originAsset:S,depositType:`ORIGIN_CHAIN`,destinationAsset:C,amount:w.toString(),recipient:_,recipientType:`DESTINATION_CHAIN`,refundTo:e.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:T});if(!E.depositAddress)throw Error(`NEAR Intents quote returned no deposit address`);let D=await e.withdraw([t],[-w],E.depositAddress,!1,l??t.erc20TokenAddress,d,void 0,f);return{tempSubAccount:g,sourceTxHash:typeof D==`string`?D:D.hash,expectedAmount:BigInt(E.amountOut)}},E=async(n,i,a,s,c)=>{let l=i.chainId,p=i.erc20TokenAddress,m=u.AccountActions.getAddressFromSubAccount(l,a);if(!m)throw Error(`Missing temp wallet address for bridge shield`);let{recipientInfo:v,claimable:y}=C.resolveBridgeRecipient(n,c);if(y&&await _.storeClaimableKeyInEnclave(await n.getEthereumAddressByChain(l),y.ethAddress,y.keys.getShieldedPrivateKey(),l,y.signature),e.isSolanaLike(l))return C.hinkalSolanaShieldBridged(n,i,a,s,v);let b=f.createTransaferEmporiumOpsBatch(n,l,[p],[s]),x=await g.calculateModifiedFeeStructure(l,i,s,await d.getFeeStructure(l,p,[p],o.ExternalActionId.Emporium,b.map(e=>h.convertEmporiumOpToCallInfo(e,m,l)),t.PAY_SEND_VARIABLE_RATE)),S=s-g.calculateTotalFee(s,x);if(S<=0n)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{destTxHash:await n.proxyToPrivate([i],[S],a,v,x.feeToken,x),shieldedAmount:S}},D=async(t,n,r,i,a,o=m.DEFAULT_BRIDGING_SLIPPAGE_DECIMAL,s,c,l)=>{let{tempSubAccount:d,sourceTxHash:f,expectedAmount:p}=e.isNearIntentsBridgeSource(n.chainId)?await T(t,n,r,i,o,s,c,l):await w(t,n,r,i,o,s,c,l),h=u.AccountActions.getAddressFromSubAccount(r.chainId,d);if(!h)throw Error(`Missing temp wallet address for bridge`);let{destTxHash:g,shieldedAmount:_}=await E(t,r,d,await v.waitForBridgeArrival(r.chainId,h,r.erc20TokenAddress,p,o),a);return{sourceTxHash:f,destTxHash:g,destinationTokenAmount:_.toString()}};exports.hinkalBridgePrivateToPrivate=D;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/private-wallet/emporium.helpers.cjs`),p=require(`../../constants/addresses.constants.cjs`),m=require(`../../constants/bridging.constants.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/utils/fees.utils.cjs`),_=require(`../../functions/utils/enclave-utxo-storage.cjs`),v=require(`../../functions/utils/bridge-arrival.utils.cjs`),y=require(`../../functions/utils/temp-wallet.utils.cjs`),b=require(`../../API/callNearIntentsAPI.cjs`),x=require(`../../functions/utils/nearIntents.utils.cjs`),S=require(`../../functions/web3/lifiAPI.cjs`),C=require(`../../functions/utils/bridge-claimable-utxo.utils.cjs`);var w=async(e,r,d,m,h,g,_,v)=>{let{chainId:b}=r,x=d.chainId,C=r.erc20TokenAddress,w=p.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][b];if(!w)throw Error(`LIFI not configured for chain ${b}`);let T=i.randomBigInt(6),{sourceSubAccount:E,destinationSubAccount:D}=y.deriveBridgeTempWallets(e,b,x,T),O=u.AccountActions.getAddressFromSubAccount(b,E),k=u.AccountActions.getAddressFromSubAccount(x,D);if(!O||!k)throw Error(`Missing temp wallet address for LIFI bridge`);let{lifiDataValue:A,outSwapAmountValue:j,extraNativeTokenFee:M}=await S.getLifiPrice(r,d,m,h,O,k),N={calldata:A,expectedAmount:j,nativeFee:M},P=i.getAmountInWei(r,m),F=Array.from(new Set([b,x])),I=a.hashEthereumAddress(await e.getEthereumAddress());await Promise.all(F.map(e=>c.API.addTemporaryWalletNonce(e,I,Number(T),s.TemporaryWalletRecoveryDestination.Confidential)));let L=n.caseInsensitiveEqual(C,t.zeroAddress),R=N.nativeFee>0n&&!L,z=L?P+N.nativeFee:P,B=[r],V=[-z];if(R){let e=await l.getErc20TokenFromAPI(b,t.zeroAddress);if(!e)throw Error(`Native token not found for bridge fee`);B.push(e),V.push(-N.nativeFee)}let H=f.createLifiBridgeOps(e,b,O,w,C,z,P,N),U=B.map((e,t)=>({token:e,amount:V[t]}));return{tempSubAccount:D,sourceTxHash:await e.actionPrivateWallet(b,B,V,V.map(()=>!1),H,U,E,g??C,_,void 0,!1,void 0,v,void 0),expectedAmount:N.expectedAmount}},T=async(e,t,n,r,o,l,d,f)=>{let p=n.chainId,h=i.randomBigInt(6),g=y.buildTempSubAccountForChain(e,p,h),_=u.AccountActions.getAddressFromSubAccount(p,g);if(!_)throw Error(`Missing temp wallet address for NEAR bridge`);let v=a.hashEthereumAddress(await e.getEthereumAddress());await c.API.addTemporaryWalletNonce(p,v,Number(h),s.TemporaryWalletRecoveryDestination.Confidential);let[S,C]=await Promise.all([x.resolveNearAssetId(t.chainId,t.erc20TokenAddress),x.resolveNearAssetId(p,n.erc20TokenAddress)]),w=i.getAmountInWei(t,r),T=new Date(Date.now()+m.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),{quote:E}=await b.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:Math.round(o*1e4)||100,originAsset:S,depositType:`ORIGIN_CHAIN`,destinationAsset:C,amount:w.toString(),recipient:_,recipientType:`DESTINATION_CHAIN`,refundTo:e.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:T});if(!E.depositAddress)throw Error(`NEAR Intents quote returned no deposit address`);let D=await e.withdraw([t],[-w],E.depositAddress,!1,l??t.erc20TokenAddress,d,void 0,f);return{tempSubAccount:g,sourceTxHash:typeof D==`string`?D:D.hash,expectedAmount:BigInt(E.amountOut)}},E=async(n,i,a,s,c)=>{let l=i.chainId,p=i.erc20TokenAddress,m=u.AccountActions.getAddressFromSubAccount(l,a);if(!m)throw Error(`Missing temp wallet address for bridge shield`);let{recipientInfo:v,claimable:y}=C.resolveBridgeRecipient(n,c);if(y&&await _.storeClaimableKeyInEnclave(await n.getEthereumAddressByChain(l),y.ethAddress,y.keys.getShieldedPrivateKey(),l,y.signature,n.userKeys.getSignature()),e.isSolanaLike(l))return C.hinkalSolanaShieldBridged(n,i,a,s,v);let b=f.createTransaferEmporiumOpsBatch(n,l,[p],[s]),x=await g.calculateModifiedFeeStructure(l,i,s,await d.getFeeStructure(l,p,[p],o.ExternalActionId.Emporium,b.map(e=>h.convertEmporiumOpToCallInfo(e,m,l)),t.PAY_SEND_VARIABLE_RATE)),S=s-g.calculateTotalFee(s,x);if(S<=0n)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{destTxHash:await n.proxyToPrivate([i],[S],a,v,x.feeToken,x),shieldedAmount:S}},D=async(t,n,r,i,a,o=m.DEFAULT_BRIDGING_SLIPPAGE_DECIMAL,s,c,l)=>{let{tempSubAccount:d,sourceTxHash:f,expectedAmount:p}=e.isNearIntentsBridgeSource(n.chainId)?await T(t,n,r,i,o,s,c,l):await w(t,n,r,i,o,s,c,l),h=u.AccountActions.getAddressFromSubAccount(r.chainId,d);if(!h)throw Error(`Missing temp wallet address for bridge`);let{destTxHash:g,shieldedAmount:_}=await E(t,r,d,await v.waitForBridgeArrival(r.chainId,h,r.erc20TokenAddress,p,o),a);return{sourceTxHash:f,destTxHash:g,destinationTokenAmount:_.toString()}};exports.hinkalBridgePrivateToPrivate=D;
@@ -79,7 +79,7 @@ var M = async (e, t, n, a, m, g, v, y) => {
79
79
  let c = r.chainId, u = r.erc20TokenAddress, d = p.getAddressFromSubAccount(c, i);
80
80
  if (!d) throw Error("Missing temp wallet address for bridge shield");
81
81
  let { recipientInfo: f, claimable: h } = j(e, s);
82
- if (h && await C(await e.getEthereumAddressByChain(c), h.ethAddress, h.keys.getShieldedPrivateKey(), c, h.signature), t(c)) return A(e, r, i, o, f);
82
+ if (h && await C(await e.getEthereumAddressByChain(c), h.ethAddress, h.keys.getShieldedPrivateKey(), c, h.signature, e.userKeys.getSignature()), t(c)) return A(e, r, i, o, f);
83
83
  let _ = g(e, c, [u], [o]), v = await x(c, r, o, await m(c, u, [u], l.Emporium, _.map((e) => b(e, d, c)), n)), y = o - S(o, v);
84
84
  if (y <= 0n) throw Error(a.INSUFFICIENT_FUNDS_TO_TRANSACT);
85
85
  return {
@@ -1 +1 @@
1
- const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/addresses.cjs`),n=require(`../../functions/utils/tron.utils.cjs`),r=require(`../../types/transact.types.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`./hinkalTransact.cjs`),s=require(`../../API/admin-calls.cjs`);var c=async(e,t,a,s=!0,c=!1)=>{let l=i.validateAndGetChainId(t);return o.hinkalTransact(e,{chainId:l,erc20Addresses:t.map(e=>e.erc20TokenAddress),amountChanges:a,externalAddress:n.addressToHexFormat(await e.getEthereumAddressByChain(l)),submit:{mode:r.SubmitMode.Self,erc20Tokens:t,approvalAmounts:a,preEstimateGas:s,returnTxData:c}})},l=async(c,l,u,d,f=!0,p=!1,m)=>{if(d.length===0)throw Error(`recipientInfos must not be empty`);if(u.length!==d.length)throw Error(`amountsByRecipient must have one entry per recipientInfo`);let h=i.validateAndGetChainId(l),g=l.map(e=>e.erc20TokenAddress);d.forEach((n,r)=>{if(!t.isValidPrivateAddress(n))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(u[r].length!==g.length)throw Error(`Each amountsByRecipient entry must have one amount per erc20Token`)});let _=g.map((e,t)=>u.reduce((e,n)=>e+n[t],0n)),v=n.addressToHexFormat(await c.getEthereumAddressByChain(h)),y=await o.hinkalTransact(c,{chainId:h,erc20Addresses:g,amountChanges:_.map(()=>0n),externalAddress:v,recipientAddress:d,recipientAmounts:u,forceEmptyUtxos:!0,submit:{mode:r.SubmitMode.Self,erc20Tokens:l,approvalAmounts:_,preEstimateGas:f,returnTxData:p}});return s.emitTxPublicData(a.constructAdminData(m,h,g,_,await c.getEthereumAddress())),y},u=async(e,t,n,r,i=!0,a=!1,o)=>l(e,t,[n],[r],i,a,o);exports.hinkalDeposit=c,exports.hinkalDepositForOther=u;
1
+ const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/tron.utils.cjs`),n=require(`../../functions/utils/addresses.cjs`),r=require(`../../types/transact.types.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`./hinkalTransact.cjs`),s=require(`../../API/admin-calls.cjs`);var c=async(e,n,a,s=!0,c=!1)=>{let l=i.validateAndGetChainId(n);return o.hinkalTransact(e,{chainId:l,erc20Addresses:n.map(e=>e.erc20TokenAddress),amountChanges:a,externalAddress:t.addressToHexFormat(await e.getEthereumAddressByChain(l)),submit:{mode:r.SubmitMode.Self,erc20Tokens:n,approvalAmounts:a,preEstimateGas:s,returnTxData:c}})},l=async(c,l,u,d,f=!0,p=!1,m)=>{if(d.length===0)throw Error(`recipientInfos must not be empty`);if(u.length!==d.length)throw Error(`amountsByRecipient must have one entry per recipientInfo`);let h=i.validateAndGetChainId(l),g=l.map(e=>e.erc20TokenAddress);d.forEach((t,r)=>{if(!n.isValidPrivateAddress(t))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(u[r].length!==g.length)throw Error(`Each amountsByRecipient entry must have one amount per erc20Token`)});let _=g.map((e,t)=>u.reduce((e,n)=>e+n[t],0n)),v=t.addressToHexFormat(await c.getEthereumAddressByChain(h)),y=await o.hinkalTransact(c,{chainId:h,erc20Addresses:g,amountChanges:_.map(()=>0n),externalAddress:v,recipientAddress:d,recipientAmounts:u,forceEmptyUtxos:!0,submit:{mode:r.SubmitMode.Self,erc20Tokens:l,approvalAmounts:_,preEstimateGas:f,returnTxData:p}});return s.emitTxPublicData(a.constructAdminData(m,h,g,_,await c.getEthereumAddress())),y},u=async(e,t,n,r,i=!0,a=!1,o)=>l(e,t,[n],[r],i,a,o);exports.hinkalDeposit=c,exports.hinkalDepositForOther=u;
@@ -1,22 +1,22 @@
1
1
  import { transactionErrorCodes as e } from "../../error-handling/error-codes.constants.mjs";
2
- import { isValidPrivateAddress as t } from "../../functions/utils/addresses.mjs";
3
- import { addressToHexFormat as n } from "../../functions/utils/tron.utils.mjs";
2
+ import { addressToHexFormat as t } from "../../functions/utils/tron.utils.mjs";
3
+ import { isValidPrivateAddress as n } from "../../functions/utils/addresses.mjs";
4
4
  import { SubmitMode as r } from "../../types/transact.types.mjs";
5
5
  import { validateAndGetChainId as i } from "../../functions/utils/token-check.utils.mjs";
6
6
  import { constructAdminData as a } from "../../functions/pre-transaction/constructAdminData.mjs";
7
7
  import { hinkalTransact as o } from "./hinkalTransact.mjs";
8
8
  import { emitTxPublicData as s } from "../../API/admin-calls.mjs";
9
9
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDeposit.ts
10
- var c = async (e, t, a, s = !0, c = !1) => {
11
- let l = i(t);
10
+ var c = async (e, n, a, s = !0, c = !1) => {
11
+ let l = i(n);
12
12
  return o(e, {
13
13
  chainId: l,
14
- erc20Addresses: t.map((e) => e.erc20TokenAddress),
14
+ erc20Addresses: n.map((e) => e.erc20TokenAddress),
15
15
  amountChanges: a,
16
- externalAddress: n(await e.getEthereumAddressByChain(l)),
16
+ externalAddress: t(await e.getEthereumAddressByChain(l)),
17
17
  submit: {
18
18
  mode: r.Self,
19
- erc20Tokens: t,
19
+ erc20Tokens: n,
20
20
  approvalAmounts: a,
21
21
  preEstimateGas: s,
22
22
  returnTxData: c
@@ -26,11 +26,11 @@ var c = async (e, t, a, s = !0, c = !1) => {
26
26
  if (d.length === 0) throw Error("recipientInfos must not be empty");
27
27
  if (u.length !== d.length) throw Error("amountsByRecipient must have one entry per recipientInfo");
28
28
  let h = i(l), g = l.map((e) => e.erc20TokenAddress);
29
- d.forEach((n, r) => {
30
- if (!t(n)) throw Error(e.RECIPIENT_FORMAT_INCORRECT);
29
+ d.forEach((t, r) => {
30
+ if (!n(t)) throw Error(e.RECIPIENT_FORMAT_INCORRECT);
31
31
  if (u[r].length !== g.length) throw Error("Each amountsByRecipient entry must have one amount per erc20Token");
32
32
  });
33
- let _ = g.map((e, t) => u.reduce((e, n) => e + n[t], 0n)), v = n(await c.getEthereumAddressByChain(h)), y = await o(c, {
33
+ let _ = g.map((e, t) => u.reduce((e, n) => e + n[t], 0n)), v = t(await c.getEthereumAddressByChain(h)), y = await o(c, {
34
34
  chainId: h,
35
35
  erc20Addresses: g,
36
36
  amountChanges: _.map(() => 0n),
@@ -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/addresses.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../crypto-keys/encryptDecryptUtxo.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),m=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`./hinkalTransact.cjs`);require(`../../functions/index.cjs`);const _=require(`./hinkalDepositOnChainUtxos.cjs`);let v=require(`ethers`);var y=async(e,a,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(a),e.getEthereumAddressByChain(a)]);if(!v)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let b=e.generateProofRemotely?5:1,x=[],S=o.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=o.addressToHexFormat(s),C=n.caseInsensitiveEqual(l.erc20TokenAddress,_)?l:i.Utxo.createFrom(l,{erc20TokenAddress:_}),w=d.constructAdminData(f,a,[_],[-l.amount],S),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O,tronProofSignature:k}=await g.hinkalTransact(e,{chainId:a,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:a,ethereumAddress:s,hashedEthereumAddress:l,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:_,ref:b,hashedDashboardAccountId:x,preEstimateGas:S}=i,C=n.map(e=>e+d.flatFee),w=C.reduce((e,t)=>e+t,0n),T=await g.hinkalTransact(e,{chainId:a,erc20Addresses:[t.erc20TokenAddress],amountChanges:[w],externalAddress:s,selfOutputAmounts:C,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),E=T.circomData.encryptedOutputs?.[0];if(!E||E.length!==C.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let D=E.map((t,n)=>({recipientAddress:r[n],utxo:u.decryptUtxo(v.ethers.getBytes(t),e.userKeys)})),O=T.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[k,A]=await Promise.all([(async()=>{o.swapTronBCoordinate(T.zkCallData);let n=await m.transactCallDirectTron(e,a,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,a,t,D,d,f,p,O)]);return{depositTxHash:k,scheduleId:await h.transactCallRelayerBatch(a,A,l,_,b,x,k)}},S=async(t,n,r,i,c,u,d,p,m,h=!0,g)=>{let _=l.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=o.addressToHexFormat(await t.getEthereumAddressByChain(_)),S={chainId:_,ethereumAddress:y,hashedEthereumAddress:a.hashEthereumAddress(y),feeStructure:u??await f.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],10n),txCompletionTime:c,ref:d,action:p,hashedDashboardAccountId:m?a.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(`../../functions/utils/token-check.utils.cjs`),u=require(`../crypto-keys/encryptDecryptUtxo.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),m=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`./hinkalTransact.cjs`);require(`../../functions/index.cjs`);const _=require(`./hinkalDepositOnChainUtxos.cjs`);let v=require(`ethers`);var y=async(e,o,s,l,u,f,m,h)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[v,y]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!v)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let b=e.generateProofRemotely?5:1,x=[],S=a.addressToHexFormat(y);for(let r=0;r<l.length;r+=b){let s=l.slice(r,r+b),y=await Promise.all(s.map(async({recipientAddress:s,utxo:l},y)=>{let b=r+y,x=a.addressToHexFormat(s),C=n.caseInsensitiveEqual(l.erc20TokenAddress,_)?l:i.Utxo.createFrom(l,{erc20TokenAddress:_}),w=d.constructAdminData(f,o,[_],[-l.amount],S),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O,tronProofSignature:k}=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-l.amount],externalAddress:x,feeStructure:u,relay:v??t.zeroAddress,inputUtxos:[[C]],useBlockedUtxos:!0,speculative:h&&{pendingLeaves:h,inputUtxos:[[p.toSpeculativeUtxo(C)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:T,dimData:D,circomData:E,commitmentValidationData:O,adminData:w,recipientAddress:s,tronProofSignature:k,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[b]}}));x.push(...y)}return x},b=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,m=n.map(e=>e+s.flatFee),g=await _.prepareDepositOnChainUtxos(e,a,[t],[m]),{depositedUtxos:v,pendingLeaves:b}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[S,C]=await Promise.all([_.submitDepositOnChainUtxos(e,g,p),y(e,a,t,x,s,c,l,b)]);return{depositTxHash:S,scheduleId:await h.transactCallRelayerBatch(a,C,o,u,d,f,S)}},x=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:l,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:_,ref:b,hashedDashboardAccountId:x,preEstimateGas:S}=i,C=n.map(e=>e+d.flatFee),w=C.reduce((e,t)=>e+t,0n),T=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[w],externalAddress:s,selfOutputAmounts:C,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),E=T.circomData.encryptedOutputs?.[0];if(!E||E.length!==C.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let D=E.map((t,n)=>({recipientAddress:r[n],utxo:u.decryptUtxo(v.ethers.getBytes(t),e.userKeys)})),O=T.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[k,A]=await Promise.all([(async()=>{a.swapTronBCoordinate(T.zkCallData);let n=await m.transactCallDirectTron(e,o,w,t,T.zkCallData,T.circomData,T.dimData,void 0,void 0,S,T.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),y(e,o,t,D,d,f,p,O)]);return{depositTxHash:k,scheduleId:await h.transactCallRelayerBatch(o,A,l,_,b,x,k)}},S=async(t,n,r,i,c,u,d,p,m,h=!0,g)=>{let _=l.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),S={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:u??await f.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],10n),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;
@@ -3,8 +3,8 @@ import { zeroAddress as t } from "../../constants/protocol.constants.mjs";
3
3
  import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
4
4
  import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
5
  import { Utxo as i } from "../utxo/Utxo.mjs";
6
- import { hashEthereumAddress as a, hashString as o } from "../../functions/utils/addresses.mjs";
7
- import { addressToHexFormat as s, swapTronBCoordinate as c } from "../../functions/utils/tron.utils.mjs";
6
+ import { addressToHexFormat as a, swapTronBCoordinate as o } from "../../functions/utils/tron.utils.mjs";
7
+ import { hashEthereumAddress as s, hashString as c } from "../../functions/utils/addresses.mjs";
8
8
  import { ExternalActionId as l } from "../../types/external-action.types.mjs";
9
9
  import { SubmitMode as u } from "../../types/transact.types.mjs";
10
10
  import { validateAndGetChainId as d } from "../../functions/utils/token-check.utils.mjs";
@@ -19,15 +19,15 @@ import "../../functions/index.mjs";
19
19
  import { prepareDepositOnChainUtxos as y, submitDepositOnChainUtxos as b } from "./hinkalDepositOnChainUtxos.mjs";
20
20
  import { ethers as x } from "ethers";
21
21
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.ts
22
- var S = async (e, a, o, c, l, d, f, m) => {
22
+ var S = async (e, o, s, c, l, d, f, m) => {
23
23
  if (c.length === 0) throw Error("userDepositedUtxos must not be empty");
24
- let g = o.erc20TokenAddress, [_, y] = await Promise.all([e.getRandomRelay(a), e.getEthereumAddressByChain(a)]);
24
+ let g = s.erc20TokenAddress, [_, y] = await Promise.all([e.getRandomRelay(o), e.getEthereumAddressByChain(o)]);
25
25
  if (!_) throw Error(r.RELAYER_NOT_AVAILABLE);
26
- let b = e.generateProofRemotely ? 5 : 1, x = [], S = s(y);
26
+ let b = e.generateProofRemotely ? 5 : 1, x = [], S = a(y);
27
27
  for (let r = 0; r < c.length; r += b) {
28
- let o = c.slice(r, r + b), y = await Promise.all(o.map(async ({ recipientAddress: o, utxo: c }, y) => {
29
- let b = r + y, x = s(o), C = n(c.erc20TokenAddress, g) ? c : i.createFrom(c, { erc20TokenAddress: g }), w = p(d, a, [g], [-c.amount], S), { zkCallData: T, circomData: E, dimData: D, commitmentValidationData: O, tronProofSignature: k } = await v(e, {
30
- chainId: a,
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, {
30
+ chainId: o,
31
31
  erc20Addresses: [g],
32
32
  amountChanges: [-c.amount],
33
33
  externalAddress: x,
@@ -48,7 +48,7 @@ var S = async (e, a, o, c, l, d, f, m) => {
48
48
  circomData: E,
49
49
  commitmentValidationData: O,
50
50
  adminData: w,
51
- recipientAddress: o,
51
+ recipientAddress: s,
52
52
  tronProofSignature: k,
53
53
  destinationChainId: f?.chainId,
54
54
  destinationTokenAddress: f?.tokenAddress,
@@ -68,11 +68,11 @@ var S = async (e, a, o, c, l, d, f, m) => {
68
68
  scheduleId: await _(a, w, o, u, d, f, C)
69
69
  };
70
70
  }, w = async (e, t, n, r, i) => {
71
- let { chainId: a, ethereumAddress: o, hashedEthereumAddress: s, feeStructure: l, action: d, 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, {
71
+ let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: d, 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, {
72
72
  chainId: a,
73
73
  erc20Addresses: [t.erc20TokenAddress],
74
74
  amountChanges: [w],
75
- externalAddress: o,
75
+ externalAddress: s,
76
76
  selfOutputAmounts: C,
77
77
  createBlockedUtxos: !0,
78
78
  forceEmptyUtxos: !0,
@@ -83,25 +83,25 @@ var S = async (e, a, o, c, l, d, f, m) => {
83
83
  recipientAddress: r[n],
84
84
  utxo: f(x.getBytes(t), e.userKeys)
85
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
- c(T.zkCallData);
86
+ o(T.zkCallData);
87
87
  let n = await g(e, a, w, t, T.zkCallData, T.circomData, T.dimData, void 0, void 0, b, T.tronProofSignature);
88
88
  if (!n) throw Error("Deposit transaction hash not found");
89
89
  return n;
90
90
  })(), S(e, a, t, D, l, d, p, O)]);
91
91
  return {
92
92
  depositTxHash: k,
93
- scheduleId: await _(a, A, s, m, h, y, k)
93
+ scheduleId: await _(a, A, c, m, h, y, k)
94
94
  };
95
- }, T = async (t, n, r, i, c, u, f, p, h, g = !0, _) => {
96
- let v = d([n]), y = n.erc20TokenAddress, b = s(await t.getEthereumAddressByChain(v)), x = {
95
+ }, T = async (t, n, r, i, o, u, f, p, h, g = !0, _) => {
96
+ let v = d([n]), y = n.erc20TokenAddress, b = a(await t.getEthereumAddressByChain(v)), x = {
97
97
  chainId: v,
98
98
  ethereumAddress: b,
99
- hashedEthereumAddress: a(b),
99
+ hashedEthereumAddress: s(b),
100
100
  feeStructure: u ?? await m(v, y, [y], l.Transact, [], 10n),
101
- txCompletionTime: c,
101
+ txCompletionTime: o,
102
102
  ref: f,
103
103
  action: p,
104
- hashedDashboardAccountId: h ? o(h) : void 0,
104
+ hashedDashboardAccountId: h ? c(h) : void 0,
105
105
  preEstimateGas: g,
106
106
  destination: _
107
107
  };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../constants/bridging.constants.cjs`),i=require(`../../API/callNearIntentsAPI.cjs`),a=require(`../../functions/utils/nearIntents.utils.cjs`),o=require(`./hinkalDepositAndWithdraw.cjs`),s=require(`./hinkalSolanaDepositAndWithdraw.cjs`);var c=async(c,l,u,d,f,p,m,h,g,_)=>{if(u.length!==d.length)throw Error(`recipientAmounts and recipientAddresses length mismatch`);if(u.length===0)throw Error(`No recipients to bridge`);let v=n.validateAndGetChainId([l]),y=t.secondsToMs(p),b=new Date(y+r.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),x=await Promise.all(d.map(async(e,t)=>{let n=u[t],{quote:r}=await i.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:f.slippageBps??100,originAsset:f.originAsset,depositType:`ORIGIN_CHAIN`,destinationAsset:f.destinationAsset,amount:n.toString(),recipient:e,recipientType:`DESTINATION_CHAIN`,refundTo:c.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:b});if(!r.depositAddress)throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);if(r.deadline&&new Date(r.deadline).getTime()<y)throw Error(`Bridge quote expires before the scheduled execution time. Choose a sooner time.`);return{destinationRecipient:e,amount:n,depositAddress:r.depositAddress,quote:r}})),S=m??await a.buildNearBridgeFeeStructure(v,l,x[0].depositAddress),C=x.map(e=>e.amount),w=x.map(e=>e.depositAddress),T={chainId:f.destinationChainId===v?void 0:f.destinationChainId,tokenAddress:f.destinationTokenAddress,tokenAmounts:x.map(e=>e.quote.amountOut)},E;return e.isSolanaLike(v)?{depositTxHash:E}=await s.hinkalSolanaDepositAndWithdraw(c,l,C,w,p,S,h,g,_,x.map(e=>e.destinationRecipient),T):{depositTxHash:E}=await o.hinkalDepositAndWithdraw(c,l,C,w,p,S,h,g,_,void 0,T),{depositTxHash:E,legs:x}};exports.hinkalNearDepositAndBridge=c;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../constants/bridging.constants.cjs`),i=require(`../../API/callNearIntentsAPI.cjs`),a=require(`../../functions/utils/nearIntents.utils.cjs`),o=require(`./hinkalDepositAndWithdraw.cjs`),s=require(`./hinkalSolanaDepositAndWithdraw.cjs`);var c=async(c,l,u,d,f,p,m,h,g,_)=>{if(u.length!==d.length)throw Error(`recipientAmounts and recipientAddresses length mismatch`);if(u.length===0)throw Error(`No recipients to bridge`);let v=n.validateAndGetChainId([l]),y=t.secondsToMs(p),b=new Date(y+r.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),x=await Promise.all(d.map(async(e,t)=>{let n=u[t],{quote:r}=await i.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:f.slippageBps??100,originAsset:f.originAsset,depositType:`ORIGIN_CHAIN`,destinationAsset:f.destinationAsset,amount:n.toString(),recipient:e,recipientType:`DESTINATION_CHAIN`,refundTo:c.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:b});if(!r.depositAddress)throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);if(r.deadline&&new Date(r.deadline).getTime()<y)throw Error(`Bridge quote expires before the scheduled execution time. Choose a sooner time.`);return{destinationRecipient:e,amount:n,depositAddress:r.depositAddress,quote:r}})),S=m??await a.buildNearBridgeFeeStructure(v,l,x[0].depositAddress),C=x.map(e=>e.amount),w=x.map(e=>e.depositAddress),T={chainId:f.destinationChainId===v?void 0:f.destinationChainId,tokenAddress:f.destinationTokenAddress,tokenAmounts:x.map(e=>e.quote.amountOut)},E,D;return e.isSolanaLike(v)?{depositTxHash:E,scheduleId:D}=await s.hinkalSolanaDepositAndWithdraw(c,l,C,w,p,S,h,g,_,x.map(e=>e.destinationRecipient),T):{depositTxHash:E,scheduleId:D}=await o.hinkalDepositAndWithdraw(c,l,C,w,p,S,h,g,_,void 0,T),{depositTxHash:E,scheduleId:D,legs:x}};exports.hinkalNearDepositAndBridge=c;
@@ -37,9 +37,10 @@ var c = async (c, l, u, d, f, p, m, h, g, _) => {
37
37
  chainId: f.destinationChainId === v ? void 0 : f.destinationChainId,
38
38
  tokenAddress: f.destinationTokenAddress,
39
39
  tokenAmounts: x.map((e) => e.quote.amountOut)
40
- }, E;
41
- return e(v) ? {depositTxHash: E} = await s(c, l, C, w, p, S, h, g, _, x.map((e) => e.destinationRecipient), T) : {depositTxHash: E} = await o(c, l, C, w, p, S, h, g, _, void 0, T), {
40
+ }, E, D;
41
+ return e(v) ? {depositTxHash: E, scheduleId: D} = await s(c, l, C, w, p, S, h, g, _, x.map((e) => e.destinationRecipient), T) : {depositTxHash: E, scheduleId: D} = await o(c, l, C, w, p, S, h, g, _, void 0, T), {
42
42
  depositTxHash: E,
43
+ scheduleId: D,
43
44
  legs: x
44
45
  };
45
46
  };
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/private-wallet/emporium.helpers.cjs`),r=require(`./hinkalSolanaProxySend.cjs`);var i=async(i,a,o,s,c,l,u,d)=>{let f=t.validateAndGetChainId(a);if(e.isSolanaLike(f))return r.hinkalSolanaProxySend(i,a[0],o[0],s,c,d);let p=n.createTransaferEmporiumOpsBatch(i,f,a.map(e=>e.erc20TokenAddress),o,c),m=a.map((e,t)=>({token:e,amount:-1n*o[t]}));return await i.actionPrivateWallet(f,[],[],[],p,m,s,l,u,void 0,void 0,void 0,d,void 0)};exports.hinkalProxySend=i;
@@ -0,0 +1,6 @@
1
+ import { FeeStructure } from '../../types/hinkal.types';
2
+ import { ERC20Token } from '../../types/token.types';
3
+ import { SubAccount } from '../../types/proxy.types';
4
+ import { AdminTransactionType } from '../../types/admin.types';
5
+ import { IHinkal } from './IHinkal';
6
+ export declare const hinkalProxySend: (hinkal: IHinkal, erc20Tokens: ERC20Token[], amounts: bigint[], subAccount: SubAccount, recipientAddress: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType) => Promise<string>;
@@ -0,0 +1,16 @@
1
+ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
+ import { validateAndGetChainId as t } from "../../functions/utils/token-check.utils.mjs";
3
+ import { createTransaferEmporiumOpsBatch as n } from "../../functions/private-wallet/emporium.helpers.mjs";
4
+ import { hinkalSolanaProxySend as r } from "./hinkalSolanaProxySend.mjs";
5
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalProxySend.ts
6
+ var i = async (i, a, o, s, c, l, u, d) => {
7
+ let f = t(a);
8
+ if (e(f)) return r(i, a[0], o[0], s, c, d);
9
+ let p = n(i, f, a.map((e) => e.erc20TokenAddress), o, c), m = a.map((e, t) => ({
10
+ token: e,
11
+ amount: -1n * o[t]
12
+ }));
13
+ return await i.actionPrivateWallet(f, [], [], [], p, m, s, l, u, void 0, void 0, void 0, d, void 0);
14
+ };
15
+ //#endregion
16
+ export { i as hinkalProxySend };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/cache.types.cjs`),o=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/pre-transaction/solana.cjs`),l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),d=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`./hinkalSolanaTransact.cjs`);let m=require(`@solana/web3.js`);var h=async(h,g,_,v,y,b,x,S,C)=>{let w=s.validateAndGetChainId(g),T=new m.PublicKey(t.solanaNativeAddress),{hinkalAddress:E,originalDeployer:D}=e.networkRegistry[w].contractData;if(!D)throw Error(`No IDL configured for Solana program on this network`);let O=new m.PublicKey(D),k=new m.PublicKey(E),A=g.map(e=>e.erc20TokenAddress),j=x??A[1];if(x&&x!==A[1])throw Error(`Solana swap fee token must match the output token`);let M={mintFrom:A[0],mintTo:A[1],nullifierCount:await u.calculateSolanaNullifierCount(h,w,A,_),rootInsertCount:2},N=S??await f.getFeeStructure(w,j,A,i.ExternalActionId.Okx,[],void 0,M),P=_[1],F=Number(h.cacheDevice.get(a.StorageKeys.SLIPPAGE_PERCENTAGE)??0),I=g[1],L=r.getAmountInToken(I,P),R=Number(L)*F/100;_[1]-=r.getAmountInWei(I,R.toFixed(I.decimals));let z=P*BigInt(N.variableRate??0)/10000n+N.flatFee;if(_[1]-=z,_[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let[B,V]=await Promise.all([h.getRandomRelay(w,!0),h.getEthereumAddressByChain(w)]);if(!B)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=c.getSwapperAccountPublicKeyFromSalt(k,O,v),{remainingAccounts:U,hinkalInstructions:W}=d.convertOKXToHinkalInstructions(y,H),G=c.getStorageAccountPublicKey(k,O),K=c.getStorageVaultPublicKey(k,O),q=g[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[0].erc20TokenAddress),J=g[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[1].erc20TokenAddress),Y={recipient:T.toString(),storageAccount:G.toString(),storageVault:K.toString(),swapperAccount:H.toString(),mintFrom:q?.toString()??null,mintTo:J?.toString()??null,remainingAccounts:U.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:b},X=l.constructAdminData(C,w,A,_,V,g),Z=W.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}));return p.hinkalSolanaTransact(h,{chainId:w,mintAddresses:A,amountChanges:_,relayAddress:B,recipient:T.toString(),signer:B,functionName:`swap`,accounts:Y,onChainCreation:[!1,!0],relayerFee:N.flatFee,variableRate:N.variableRate,hinkalInstructions:Z,remainingAccounts:Y.remainingAccounts,swapperAccountSalt:v,submit:{mode:o.SolanaSubmitMode.Relayer,adminData:X}})};exports.hinkalSolanaSwap=h;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/cache.types.cjs`),o=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/pre-transaction/solana.cjs`),l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),d=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`./hinkalSolanaTransact.cjs`);let m=require(`@solana/web3.js`);var h=async(h,g,_,v,y,b,x,S,C)=>{let w=s.validateAndGetChainId(g),T=new m.PublicKey(t.solanaNativeAddress),{hinkalAddress:E,originalDeployer:D}=e.networkRegistry[w].contractData;if(!D)throw Error(`No IDL configured for Solana program on this network`);let O=new m.PublicKey(D),k=new m.PublicKey(E),A=g.map(e=>e.erc20TokenAddress),j=x??A[1];if(x&&x!==A[1])throw Error(`Solana swap fee token must match the output token`);let M={mintFrom:A[0],mintTo:A[1],nullifierCount:await u.calculateSolanaNullifierCount(h,w,A,_),rootInsertCount:2},N=S??await f.getFeeStructure(w,j,A,i.ExternalActionId.Okx,[],void 0,M),P=_[1],F=Number(h.cacheDevice.get(a.StorageKeys.SLIPPAGE_PERCENTAGE)??0),I=g[1],L=r.getAmountInToken(I,P),R=Number(L)*F/100;_[1]-=r.getAmountInWei(I,R.toFixed(I.decimals));let z=P*BigInt(N.variableRate??0)/10000n+N.flatFee;if(_[1]-=z,_[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let[B,V]=await Promise.all([h.getRandomRelay(w,!0),h.getEthereumAddressByChain(w)]);if(!B)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{remainingAccounts:H,hinkalInstructions:U}=d.convertOKXToHinkalInstructions(y,c.getSwapperAccountPublicKeyFromSalt(k,O,v)),W=g[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[0].erc20TokenAddress),G=g[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new m.PublicKey(g[1].erc20TokenAddress),K={recipient:T.toString(),mintFrom:W?.toString()??null,mintTo:G?.toString()??null,remainingAccounts:H.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:b},q=l.constructAdminData(C,w,A,_,V,g),J=U.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}));return p.hinkalSolanaTransact(h,{chainId:w,mintAddresses:A,amountChanges:_,relayAddress:B,recipient:T.toString(),signer:B,functionName:`swap`,accounts:K,onChainCreation:[!1,!0],relayerFee:N.flatFee,variableRate:N.variableRate,hinkalInstructions:J,remainingAccounts:K.remainingAccounts,swapperAccountSalt:v,submit:{mode:o.SolanaSubmitMode.Relayer,adminData:q}})};exports.hinkalSolanaSwap=h;
@@ -7,68 +7,65 @@ import { StorageKeys as o } from "../../types/cache.types.mjs";
7
7
  import { SolanaSubmitMode as s } from "../../types/solana-transact.types.mjs";
8
8
  import "../../types/index.mjs";
9
9
  import { validateAndGetChainId as c } from "../../functions/utils/token-check.utils.mjs";
10
- import { getStorageAccountPublicKey as l, getStorageVaultPublicKey as u, getSwapperAccountPublicKeyFromSalt as ee } from "../../functions/pre-transaction/solana.mjs";
11
- import { constructAdminData as d } from "../../functions/pre-transaction/constructAdminData.mjs";
12
- import { calculateSolanaNullifierCount as f } from "../../functions/pre-transaction/calculateSolanaNullifierCount.mjs";
13
- import { convertOKXToHinkalInstructions as p } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
14
- import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
- import { hinkalSolanaTransact as h } from "./hinkalSolanaTransact.mjs";
16
- import { PublicKey as g } from "@solana/web3.js";
10
+ import { getSwapperAccountPublicKeyFromSalt as l } from "../../functions/pre-transaction/solana.mjs";
11
+ import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
12
+ import { calculateSolanaNullifierCount as d } from "../../functions/pre-transaction/calculateSolanaNullifierCount.mjs";
13
+ import { convertOKXToHinkalInstructions as f } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
14
+ import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
+ import { hinkalSolanaTransact as m } from "./hinkalSolanaTransact.mjs";
16
+ import { PublicKey as h } from "@solana/web3.js";
17
17
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaSwap.ts
18
- var _ = async (_, v, y, b, x, S, C, w, T) => {
19
- let E = c(v), D = new g(t), { hinkalAddress: O, originalDeployer: k } = e[E].contractData;
20
- if (!k) throw Error("No IDL configured for Solana program on this network");
21
- let A = new g(k), j = new g(O), M = v.map((e) => e.erc20TokenAddress), N = C ?? M[1];
22
- if (C && C !== M[1]) throw Error("Solana swap fee token must match the output token");
23
- let P = {
24
- mintFrom: M[0],
25
- mintTo: M[1],
26
- nullifierCount: await f(_, E, M, y),
18
+ var g = async (g, _, v, y, b, x, S, C, w) => {
19
+ let T = c(_), E = new h(t), { hinkalAddress: D, originalDeployer: O } = e[T].contractData;
20
+ if (!O) throw Error("No IDL configured for Solana program on this network");
21
+ let k = new h(O), A = new h(D), j = _.map((e) => e.erc20TokenAddress), M = S ?? j[1];
22
+ if (S && S !== j[1]) throw Error("Solana swap fee token must match the output token");
23
+ let N = {
24
+ mintFrom: j[0],
25
+ mintTo: j[1],
26
+ nullifierCount: await d(g, T, j, v),
27
27
  rootInsertCount: 2
28
- }, F = w ?? await m(E, N, M, a.Okx, [], void 0, P), I = y[1], L = Number(_.cacheDevice.get(o.SLIPPAGE_PERCENTAGE) ?? 0), R = v[1], z = r(R, I), B = Number(z) * L / 100;
29
- y[1] -= i(R, B.toFixed(R.decimals));
30
- let V = I * BigInt(F.variableRate ?? 0) / 10000n + F.flatFee;
31
- if (y[1] -= V, y[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
32
- let [H, U] = await Promise.all([_.getRandomRelay(E, !0), _.getEthereumAddressByChain(E)]);
33
- if (!H) throw Error(n.RELAYER_NOT_AVAILABLE);
34
- let W = ee(j, A, b), { remainingAccounts: G, hinkalInstructions: K } = p(x, W), q = l(j, A), J = u(j, A), Y = v[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new g(v[0].erc20TokenAddress), X = v[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new g(v[1].erc20TokenAddress), Z = {
35
- recipient: D.toString(),
36
- storageAccount: q.toString(),
37
- storageVault: J.toString(),
38
- swapperAccount: W.toString(),
39
- mintFrom: Y?.toString() ?? null,
40
- mintTo: X?.toString() ?? null,
41
- remainingAccounts: G.map((e) => ({
28
+ }, P = C ?? await p(T, M, j, a.Okx, [], void 0, N), F = v[1], I = Number(g.cacheDevice.get(o.SLIPPAGE_PERCENTAGE) ?? 0), L = _[1], R = r(L, F), z = Number(R) * I / 100;
29
+ v[1] -= i(L, z.toFixed(L.decimals));
30
+ let B = F * BigInt(P.variableRate ?? 0) / 10000n + P.flatFee;
31
+ if (v[1] -= B, v[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
32
+ let [V, H] = await Promise.all([g.getRandomRelay(T, !0), g.getEthereumAddressByChain(T)]);
33
+ if (!V) throw Error(n.RELAYER_NOT_AVAILABLE);
34
+ let { remainingAccounts: U, hinkalInstructions: W } = f(b, l(A, k, y)), G = _[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new h(_[0].erc20TokenAddress), K = _[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new h(_[1].erc20TokenAddress), q = {
35
+ recipient: E.toString(),
36
+ mintFrom: G?.toString() ?? null,
37
+ mintTo: K?.toString() ?? null,
38
+ remainingAccounts: U.map((e) => ({
42
39
  pubkey: e.pubkey.toString(),
43
40
  isSigner: e.isSigner,
44
41
  isWritable: e.isWritable
45
42
  })),
46
- addressLookupTableAccount: S
47
- }, Q = d(T, E, M, y, U, v), $ = K.map((e) => ({
43
+ addressLookupTableAccount: x
44
+ }, J = u(w, T, j, v, H, _), Y = W.map((e) => ({
48
45
  accountIndexes: [...e.accountIndexes],
49
46
  data: [...e.data],
50
47
  programIndex: e.programIndex
51
48
  }));
52
- return h(_, {
53
- chainId: E,
54
- mintAddresses: M,
55
- amountChanges: y,
56
- relayAddress: H,
57
- recipient: D.toString(),
58
- signer: H,
49
+ return m(g, {
50
+ chainId: T,
51
+ mintAddresses: j,
52
+ amountChanges: v,
53
+ relayAddress: V,
54
+ recipient: E.toString(),
55
+ signer: V,
59
56
  functionName: "swap",
60
- accounts: Z,
57
+ accounts: q,
61
58
  onChainCreation: [!1, !0],
62
- relayerFee: F.flatFee,
63
- variableRate: F.variableRate,
64
- hinkalInstructions: $,
65
- remainingAccounts: Z.remainingAccounts,
66
- swapperAccountSalt: b,
59
+ relayerFee: P.flatFee,
60
+ variableRate: P.variableRate,
61
+ hinkalInstructions: Y,
62
+ remainingAccounts: q.remainingAccounts,
63
+ swapperAccountSalt: y,
67
64
  submit: {
68
65
  mode: s.Relayer,
69
- adminData: Q
66
+ adminData: J
70
67
  }
71
68
  });
72
69
  };
73
70
  //#endregion
74
- export { _ as hinkalSolanaSwap };
71
+ export { g as hinkalSolanaSwap };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/solana-transact.types.cjs`),t=require(`../../functions/web3/events/getShieldedBalance.cjs`),n=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),r=require(`../../functions/snarkjs/common.snarkjs.cjs`),i=require(`../../functions/snarkjs/constructTxEnclave.cjs`),a=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),o=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),s=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=(e=[])=>e.map(({accountIndexes:e,data:t,programIndex:n})=>({accountIndexes:Buffer.from(e),data:Buffer.from(t),programIndex:n})),d=(e=[])=>e.map(({pubkey:e,isSigner:t,isWritable:n})=>({pubkey:new l.PublicKey(e),isSigner:t,isWritable:n})),f=async(e,n)=>{let{inputUtxos:r,chainId:i,mintAddresses:a,amountChanges:o,useBlockedUtxos:s}=n;return r||[...await t.addPaddingToUtxos(e,i,a,o,void 0,void 0,s)]},p=(e,t,r)=>{let{amountChanges:i,recipientAddress:a,recipientAmounts:o}=e;return n.buildOutputUtxos(t,r,i,a===void 0?void 0:[a],a===void 0?void 0:[o??[]])},m=async(e,t,n)=>{let{chainId:i,mintAddresses:o,relayAddress:l,recipient:m,relayerFee:h,variableRate:g,functionName:_,hinkalInstructions:v,remainingAccounts:y,swapperAccountSalt:b,onChainCreation:x,speculative:S}=t,C=await f(e,t),w=p(t,n,C),T=e.merkleTreeHinkalByChain[i],E=S?a.speculativeMerkleTree(T,C,S.pendingLeaves):T,D={tokenNumber:o.length,nullifierAmount:C[0].length,outputAmount:w[0].length},{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,commitmentValidationData:M,rootHashHinkalIndex:N,encryptedOutputs:P,onChainEncryptedOutput:F}=await s.constructSolanaZkProof(E,n,o,C,w,h??0n,g??0n,m,l,D,x,i,u(v),d(y),b,E!==T);return{args:{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,encryptedOutputs:P,relayerFee:(h??0n).toString(),..._===`swap`?{variableRate:(g??0n).toString(),onChainEncryptedOutput:F,onChainCreation:x??[],hinkalInstructions:v??[]}:{},dimensions:D,rootHashIndex:N.toString()},commitmentValidationData:M,notes:{inputNullifiers:C.flat().filter(e=>e.amount>0n).map(e=>e.getNullifier()),outCommitments:r.buildOutCommitments(w).flat(),encryptedOutputs:P.map(e=>c.ethers.hexlify(new Uint8Array(e)))}}},h=async(e,t,n)=>{let{inputUtxos:r}=t,{jobId:a,signedMessageHash:o}=await i.prepareSolanaTxEnclaveCall(e,{chainId:t.chainId,mintAddresses:t.mintAddresses,amountChanges:t.amountChanges,relayAddress:t.relayAddress,recipient:t.recipient,signer:t.signer,functionName:t.functionName,accounts:t.accounts,onChainCreation:t.onChainCreation,relayerFee:t.relayerFee,variableRate:t.variableRate,swapperAccountSalt:t.swapperAccountSalt,hinkalInstructions:t.hinkalInstructions,remainingAccounts:t.remainingAccounts,recipientAddress:t.recipientAddress,recipientAmounts:t.recipientAmounts,recipientAmount:t.recipientAmount,displayRecipient:t.displayRecipient,useBlockedUtxos:t.useBlockedUtxos,messageSeed:t.messageSeed,inputCommitments:t.speculative?void 0:i.collectInputCommitments(r),speculative:t.speculative},n),{R8:s,S:c}=n.signEddsa(BigInt(o));return{jobId:a,eddsaSignature:{R8:s,S:c}}},g=(t,n)=>{let{chainId:r,relayAddress:i,functionName:a,accounts:s,submit:c}=t;if(c.mode!==e.SolanaSubmitMode.Relayer)throw Error(`hinkalSolanaTransact: relayer submit expected`);return o.solanaTransactCallRelayer({chainId:r,relayAddress:i,functionName:a,args:n.args,accounts:s,commitmentValidationData:n.commitmentValidationData,adminData:c.adminData})},_=async(t,n)=>{if(t.submit.mode!==e.SolanaSubmitMode.Relayer)return n;let r=await g(t,n);return n.notes&&t.onTxSubmitLocally?.(n.notes),r},v=async(t,n)=>{if(n.userKeys&&!n.inputUtxos)throw Error(`hinkalSolanaTransact: userKeys requires explicit inputUtxos`);let r=n.userKeys??t.userKeys,{chainId:a,submit:o}=n;if(t.generateProofRemotely){let{jobId:s,eddsaSignature:c}=await h(t,n,r);if(o.mode===e.SolanaSubmitMode.Relayer)return i.finalizeSolanaTxEnclaveCallRelay(s,c,a,{adminData:o.adminData});let{solanaArgs:l,commitmentValidationData:u}=await i.finalizeSolanaTxEnclaveCall(s,c);return _(n,{args:l,commitmentValidationData:u})}return _(n,await m(t,n,r))};exports.hinkalSolanaTransact=v;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/solana-transact.types.cjs`),t=require(`../../functions/web3/events/getShieldedBalance.cjs`),n=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),r=require(`../../functions/snarkjs/common.snarkjs.cjs`),i=require(`../../functions/snarkjs/constructTxEnclave.cjs`),a=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),o=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),s=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`);let c=require(`ethers`),l=require(`@solana/web3.js`);var u=(e=[])=>e.map(({accountIndexes:e,data:t,programIndex:n})=>({accountIndexes:Buffer.from(e),data:Buffer.from(t),programIndex:n})),d=(e=[])=>e.map(({pubkey:e,isSigner:t,isWritable:n})=>({pubkey:new l.PublicKey(e),isSigner:t,isWritable:n})),f=async(e,n)=>{let{inputUtxos:r,chainId:i,mintAddresses:a,amountChanges:o,useBlockedUtxos:s,onChainCreation:c}=n;return r||[...await t.addPaddingToUtxos(e,i,a,o,void 0,void 0,s,c)]},p=(e,t,r)=>{let{amountChanges:i,recipientAddress:a,recipientAmounts:o}=e;return n.buildOutputUtxos(t,r,i,a===void 0?void 0:[a],a===void 0?void 0:[o??[]])},m=async(e,t,n)=>{let{chainId:i,mintAddresses:o,relayAddress:l,recipient:m,relayerFee:h,variableRate:g,functionName:_,hinkalInstructions:v,remainingAccounts:y,swapperAccountSalt:b,onChainCreation:x,speculative:S}=t,C=await f(e,t),w=p(t,n,C),T=e.merkleTreeHinkalByChain[i],E=S?a.speculativeMerkleTree(T,C,S.pendingLeaves):T,D={tokenNumber:o.length,nullifierAmount:C[0].length,outputAmount:w[0].length},{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,commitmentValidationData:M,rootHashHinkalIndex:N,encryptedOutputs:P,onChainEncryptedOutput:F}=await s.constructSolanaZkProof(E,n,o,C,w,h??0n,g??0n,m,l,D,x,i,u(v),d(y),b,E!==T);return{args:{proofAArr:O,proofBArr:k,proofCArr:A,publicInputsArr:j,encryptedOutputs:P,relayerFee:(h??0n).toString(),..._===`swap`?{variableRate:(g??0n).toString(),onChainEncryptedOutput:F,onChainCreation:x??[],hinkalInstructions:v??[]}:{},dimensions:D,rootHashIndex:N.toString()},commitmentValidationData:M,notes:{inputNullifiers:C.flat().filter(e=>e.amount>0n).map(e=>e.getNullifier()),outCommitments:r.buildOutCommitments(w).flat(),encryptedOutputs:P.map(e=>c.ethers.hexlify(new Uint8Array(e)))}}},h=async(e,t,n)=>{let{inputUtxos:r}=t,{jobId:a,signedMessageHash:o}=await i.prepareSolanaTxEnclaveCall(e,{chainId:t.chainId,mintAddresses:t.mintAddresses,amountChanges:t.amountChanges,relayAddress:t.relayAddress,recipient:t.recipient,signer:t.signer,functionName:t.functionName,accounts:t.accounts,onChainCreation:t.onChainCreation,relayerFee:t.relayerFee,variableRate:t.variableRate,swapperAccountSalt:t.swapperAccountSalt,hinkalInstructions:t.hinkalInstructions,remainingAccounts:t.remainingAccounts,recipientAddress:t.recipientAddress,recipientAmounts:t.recipientAmounts,recipientAmount:t.recipientAmount,displayRecipient:t.displayRecipient,useBlockedUtxos:t.useBlockedUtxos,messageSeed:t.messageSeed,inputCommitments:t.speculative?void 0:i.collectInputCommitments(r),speculative:t.speculative},n),{R8:s,S:c}=n.signEddsa(BigInt(o));return{jobId:a,eddsaSignature:{R8:s,S:c}}},g=(t,n)=>{let{chainId:r,relayAddress:i,functionName:a,accounts:s,submit:c}=t;if(c.mode!==e.SolanaSubmitMode.Relayer)throw Error(`hinkalSolanaTransact: relayer submit expected`);return o.solanaTransactCallRelayer({chainId:r,relayAddress:i,functionName:a,args:n.args,accounts:s,commitmentValidationData:n.commitmentValidationData,adminData:c.adminData})},_=async(t,n)=>{if(t.submit.mode!==e.SolanaSubmitMode.Relayer)return n;let r=await g(t,n);return n.notes&&t.onTxSubmitLocally?.(n.notes),r},v=async(t,n)=>{if(n.userKeys&&!n.inputUtxos)throw Error(`hinkalSolanaTransact: userKeys requires explicit inputUtxos`);let r=n.userKeys??t.userKeys,{chainId:a,submit:o}=n;if(t.generateProofRemotely){let{jobId:s,eddsaSignature:c}=await h(t,n,r);if(o.mode===e.SolanaSubmitMode.Relayer)return i.finalizeSolanaTxEnclaveCallRelay(s,c,a,{adminData:o.adminData});let{solanaArgs:l,commitmentValidationData:u}=await i.finalizeSolanaTxEnclaveCall(s,c);return _(n,{args:l,commitmentValidationData:u})}return _(n,await m(t,n,r))};exports.hinkalSolanaTransact=v;
@@ -18,8 +18,8 @@ var p = (e = []) => e.map(({ accountIndexes: e, data: t, programIndex: n }) => (
18
18
  isSigner: t,
19
19
  isWritable: n
20
20
  })), h = async (e, n) => {
21
- let { inputUtxos: r, chainId: i, mintAddresses: a, amountChanges: o, useBlockedUtxos: s } = n;
22
- return r || [...await t(e, i, a, o, void 0, void 0, s)];
21
+ let { inputUtxos: r, chainId: i, mintAddresses: a, amountChanges: o, useBlockedUtxos: s, onChainCreation: c } = n;
22
+ return r || [...await t(e, i, a, o, void 0, void 0, s, c)];
23
23
  }, g = (e, t, r) => {
24
24
  let { amountChanges: i, recipientAddress: a, recipientAmounts: o } = e;
25
25
  return n(t, r, i, a === void 0 ? void 0 : [a], a === void 0 ? void 0 : [o ?? []]);