@hinkal/common 0.3.12 → 0.3.13

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 (198) hide show
  1. package/common/src/API/API.cjs +1 -1
  2. package/common/src/API/API.d.ts +3 -0
  3. package/common/src/API/API.mjs +5 -2
  4. package/common/src/API/evm-token-assets.cjs +1 -0
  5. package/common/src/API/evm-token-assets.mjs +14 -0
  6. package/common/src/API/index.cjs +1 -1
  7. package/common/src/API/index.d.ts +1 -0
  8. package/common/src/API/index.mjs +1 -0
  9. package/common/src/API/receiveVaultCalls.cjs +1 -0
  10. package/common/src/API/receiveVaultCalls.d.ts +10 -0
  11. package/common/src/API/receiveVaultCalls.mjs +32 -0
  12. package/common/src/constants/contracts.constants.cjs +1 -1
  13. package/common/src/constants/contracts.constants.mjs +5 -1
  14. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  15. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  16. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  17. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +2 -1
  18. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  19. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  20. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  21. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  22. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  23. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  24. package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
  25. package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +2 -1
  26. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  27. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  28. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
  29. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +2 -1
  30. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  31. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  32. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
  33. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +2 -1
  34. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  35. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +2 -1
  36. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  37. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -1
  38. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  39. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -1
  40. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  41. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +2 -1
  42. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  43. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +3 -2
  44. package/common/src/constants/events.constants.d.ts +1 -0
  45. package/common/src/constants/protocol.constants.cjs +1 -1
  46. package/common/src/constants/protocol.constants.d.ts +6 -0
  47. package/common/src/constants/protocol.constants.mjs +2 -2
  48. package/common/src/constants/server.constants.cjs +1 -1
  49. package/common/src/constants/server.constants.d.ts +5 -0
  50. package/common/src/constants/server.constants.mjs +5 -0
  51. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  52. package/common/src/data-structures/Hinkal/Hinkal.d.ts +6 -2
  53. package/common/src/data-structures/Hinkal/Hinkal.mjs +62 -50
  54. package/common/src/data-structures/Hinkal/IHinkal.d.ts +6 -2
  55. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  56. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +10 -10
  57. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  58. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +4 -4
  59. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  60. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +24 -24
  61. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  62. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +33 -33
  63. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  64. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +8 -8
  65. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  66. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -1
  67. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +22 -22
  68. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  69. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +8 -8
  70. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  71. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +5 -5
  72. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  73. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +4 -4
  74. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -0
  75. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.d.ts +3 -0
  76. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +20 -0
  77. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -0
  78. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +3 -0
  79. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +33 -0
  80. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -0
  81. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.d.ts +5 -0
  82. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +59 -0
  83. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.cjs +1 -0
  84. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +6 -0
  85. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.mjs +8 -0
  86. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  87. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
  88. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +61 -49
  89. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  90. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +7 -7
  91. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +8 -8
  93. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  94. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +4 -4
  95. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  97. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  98. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  99. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +7 -6
  101. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  103. package/common/src/data-structures/Hinkal/index.d.ts +4 -0
  104. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -3
  105. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
  106. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +0 -2
  107. package/common/src/data-structures/crypto-keys/index.cjs +1 -1
  108. package/common/src/data-structures/crypto-keys/index.mjs +1 -1
  109. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  110. package/common/src/error-handling/error-codes.constants.d.ts +4 -0
  111. package/common/src/error-handling/error-codes.constants.mjs +5 -2
  112. package/common/src/error-handling/get-error.message.cjs +1 -1
  113. package/common/src/error-handling/get-error.message.mjs +50 -49
  114. package/common/src/functions/index.cjs +1 -1
  115. package/common/src/functions/index.mjs +2 -1
  116. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.cjs +1 -0
  117. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.d.ts +4 -0
  118. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.mjs +3 -0
  119. package/common/src/functions/pre-transaction/index.cjs +1 -1
  120. package/common/src/functions/pre-transaction/index.d.ts +1 -0
  121. package/common/src/functions/pre-transaction/index.mjs +1 -0
  122. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -1
  123. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +2 -1
  124. package/common/src/functions/utils/abi.utils.cjs +1 -1
  125. package/common/src/functions/utils/abi.utils.mjs +4 -1
  126. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  127. package/common/src/functions/utils/encryptInputForEnclave.d.ts +2 -1
  128. package/common/src/functions/utils/encryptInputForEnclave.mjs +1 -1
  129. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  130. package/common/src/functions/utils/erc20tokenFunctions.mjs +11 -11
  131. package/common/src/functions/utils/fees.utils.cjs +1 -1
  132. package/common/src/functions/utils/fees.utils.mjs +1 -1
  133. package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
  134. package/common/src/functions/utils/getSignerFromContract.d.ts +1 -1
  135. package/common/src/functions/utils/getSignerFromContract.mjs +2 -2
  136. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  137. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  138. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  139. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +1 -1
  140. package/common/src/functions/utils/index.cjs +1 -1
  141. package/common/src/functions/utils/index.d.ts +1 -0
  142. package/common/src/functions/utils/index.mjs +2 -1
  143. package/common/src/functions/utils/isSigner.cjs +1 -0
  144. package/common/src/functions/utils/isSigner.d.ts +2 -0
  145. package/common/src/functions/utils/isSigner.mjs +7 -0
  146. package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -0
  147. package/common/src/functions/utils/receive-vault-account.utils.d.ts +8 -0
  148. package/common/src/functions/utils/receive-vault-account.utils.mjs +23 -0
  149. package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -0
  150. package/common/src/functions/utils/receive-vault-scan.utils.d.ts +2 -0
  151. package/common/src/functions/utils/receive-vault-scan.utils.mjs +60 -0
  152. package/common/src/functions/utils/receive-vault.utils.cjs +2 -0
  153. package/common/src/functions/utils/receive-vault.utils.d.ts +29 -0
  154. package/common/src/functions/utils/receive-vault.utils.mjs +151 -0
  155. package/common/src/functions/utils/string.utils.cjs +1 -1
  156. package/common/src/functions/utils/string.utils.mjs +12 -4
  157. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -1
  158. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +1 -1
  159. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  160. package/common/src/functions/utils/transfer-claimable.utils.mjs +1 -1
  161. package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -0
  162. package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +4 -0
  163. package/common/src/functions/utils/wallet-token-discovery.utils.mjs +36 -0
  164. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  165. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +11 -11
  166. package/common/src/types/ethereum-network.types.cjs +1 -1
  167. package/common/src/types/ethereum-network.types.d.ts +4 -1
  168. package/common/src/types/ethereum-network.types.mjs +1 -1
  169. package/common/src/types/external-action.types.cjs +1 -1
  170. package/common/src/types/external-action.types.d.ts +2 -1
  171. package/common/src/types/external-action.types.mjs +1 -1
  172. package/common/src/types/index.cjs +1 -1
  173. package/common/src/types/index.d.ts +1 -0
  174. package/common/src/types/index.mjs +1 -0
  175. package/common/src/types/receive-vault.types.cjs +1 -0
  176. package/common/src/types/receive-vault.types.d.ts +68 -0
  177. package/common/src/types/receive-vault.types.mjs +6 -0
  178. package/common/src/types/remote-tx-build.types.d.ts +5 -0
  179. package/common/src/webworker/{logError-cvFNxc-0.js → logError-BeXPKuv9.js} +1 -1
  180. package/common/src/webworker/package.json +10 -1
  181. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  182. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  183. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  184. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  185. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  186. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  187. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  188. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  189. package/common/src/webworker/workerProxy-DF35H7vU.js +1 -0
  190. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  191. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  192. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  193. package/package.json +10 -1
  194. package/services/Hinkal.cjs +1 -1
  195. package/services/Hinkal.d.ts +1 -1
  196. package/services/Hinkal.mjs +2 -2
  197. package/types/IHinkal.d.ts +1 -1
  198. package/common/src/webworker/workerProxy-BHzCZ9HT.js +0 -1
@@ -10,11 +10,11 @@ import { API as f } from "../../API/API.mjs";
10
10
  import { getErc20TokenFromAPI as p } from "../../functions/utils/erc20tokenFunctions.mjs";
11
11
  import { AccountActions as m } from "../AccountActions/AccountActions.mjs";
12
12
  import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
13
- import { createLifiBridgeOps as g, createTransaferEmporiumOpsBatch as _ } from "../../functions/private-wallet/emporium.helpers.mjs";
14
- import { SWAP_ROUTER_ADDRESSES as v } from "../../constants/addresses.constants.mjs";
15
- import { DEFAULT_BRIDGING_SLIPPAGE_DECIMAL as y, NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as b } from "../../constants/bridging.constants.mjs";
16
- import { convertEmporiumOpToCallInfo as x } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
17
- import { calculateModifiedFeeStructure as S, calculateTotalFee as C } from "../../functions/utils/fees.utils.mjs";
13
+ import { calculateModifiedFeeStructure as g, calculateTotalFee as _ } from "../../functions/utils/fees.utils.mjs";
14
+ import { createLifiBridgeOps as v, createTransaferEmporiumOpsBatch as y } from "../../functions/private-wallet/emporium.helpers.mjs";
15
+ import { SWAP_ROUTER_ADDRESSES as b } from "../../constants/addresses.constants.mjs";
16
+ import { DEFAULT_BRIDGING_SLIPPAGE_DECIMAL as x, NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as S } from "../../constants/bridging.constants.mjs";
17
+ import { convertEmporiumOpToCallInfo as C } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
18
18
  import { storeClaimableKeyInEnclave as w } from "../../functions/utils/enclave-utxo-storage.mjs";
19
19
  import { waitForBridgeArrival as T } from "../../functions/utils/bridge-arrival.utils.mjs";
20
20
  import { buildTempSubAccountForChain as E, deriveBridgeTempWallets as D } from "../../functions/utils/temp-wallet.utils.mjs";
@@ -23,30 +23,30 @@ import { resolveNearAssetId as k } from "../../functions/utils/nearIntents.utils
23
23
  import { getLifiPrice as A } from "../../functions/web3/lifiAPI.mjs";
24
24
  import { hinkalSolanaShieldBridged as j, resolveBridgeRecipient as M } from "../../functions/utils/bridge-claimable-utxo.utils.mjs";
25
25
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.ts
26
- var N = async (e, t, n, r, o, h, _, y) => {
27
- let { chainId: b } = t, x = n.chainId, S = t.erc20TokenAddress, C = v[u.Lifi][b];
28
- if (!C) throw Error(`LIFI not configured for chain ${b}`);
29
- let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e, b, x, w), O = m.getAddressFromSubAccount(b, T), k = m.getAddressFromSubAccount(x, E);
26
+ var N = async (e, t, n, r, o, h, g, _) => {
27
+ let { chainId: y } = t, x = n.chainId, S = t.erc20TokenAddress, C = b[u.Lifi][y];
28
+ if (!C) throw Error(`LIFI not configured for chain ${y}`);
29
+ let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e, y, x, w), O = m.getAddressFromSubAccount(y, T), k = m.getAddressFromSubAccount(x, E);
30
30
  if (!O || !k) throw Error("Missing temp wallet address for LIFI bridge");
31
31
  let { lifiDataValue: j, outSwapAmountValue: M, extraNativeTokenFee: N } = await A(t, n, r, o, O, k), P = {
32
32
  calldata: j,
33
33
  expectedAmount: M,
34
34
  nativeFee: N
35
- }, F = s(t, r), I = Array.from(new Set([b, x])), L = l(await e.getEthereumAddress());
35
+ }, F = s(t, r), I = Array.from(new Set([y, x])), L = l(await e.getEthereumAddress());
36
36
  await Promise.all(I.map((e) => f.addTemporaryWalletNonce(e, L, Number(w), d.Confidential)));
37
37
  let R = a(S, i), z = P.nativeFee > 0n && !R, B = R ? F + P.nativeFee : F, V = [t], H = [-B];
38
38
  if (z) {
39
- let e = await p(b, i);
39
+ let e = await p(y, i);
40
40
  if (!e) throw Error("Native token not found for bridge fee");
41
41
  V.push(e), H.push(-P.nativeFee);
42
42
  }
43
- let U = g(e, b, O, C, S, B, F, P), W = V.map((e, t) => ({
43
+ let U = v(e, y, O, C, S, B, F, P), W = V.map((e, t) => ({
44
44
  token: e,
45
45
  amount: H[t]
46
46
  }));
47
47
  return {
48
48
  tempSubAccount: E,
49
- sourceTxHash: await e.actionPrivateWallet(b, V, H, H.map(() => !1), U, W, T, h ?? S, _, void 0, !1, void 0, y, void 0),
49
+ sourceTxHash: await e.actionPrivateWallet(y, V, H, H.map(() => !1), U, W, T, h ?? S, g, void 0, !1, void 0, _, void 0),
50
50
  expectedAmount: P.expectedAmount
51
51
  };
52
52
  }, P = async (e, t, n, r, i, a, o, u) => {
@@ -54,14 +54,14 @@ var N = async (e, t, n, r, o, h, _, y) => {
54
54
  if (!_) throw Error("Missing temp wallet address for NEAR bridge");
55
55
  let v = l(await e.getEthereumAddress());
56
56
  await f.addTemporaryWalletNonce(p, v, Number(h), d.Confidential);
57
- let [y, x] = await Promise.all([k(t.chainId, t.erc20TokenAddress), k(p, n.erc20TokenAddress)]), S = s(t, r), C = new Date(Date.now() + b).toISOString(), { quote: w } = await O({
57
+ let [y, b] = await Promise.all([k(t.chainId, t.erc20TokenAddress), k(p, n.erc20TokenAddress)]), x = s(t, r), C = new Date(Date.now() + S).toISOString(), { quote: w } = await O({
58
58
  dry: !1,
59
59
  swapType: "EXACT_INPUT",
60
60
  slippageTolerance: Math.round(i * 1e4) || 100,
61
61
  originAsset: y,
62
62
  depositType: "ORIGIN_CHAIN",
63
- destinationAsset: x,
64
- amount: S.toString(),
63
+ destinationAsset: b,
64
+ amount: x.toString(),
65
65
  recipient: _,
66
66
  recipientType: "DESTINATION_CHAIN",
67
67
  refundTo: e.userKeys.getNearIntentsAccountId(),
@@ -69,7 +69,7 @@ var N = async (e, t, n, r, o, h, _, y) => {
69
69
  deadline: C
70
70
  });
71
71
  if (!w.depositAddress) throw Error("NEAR Intents quote returned no deposit address");
72
- let T = await e.withdraw([t], [-S], w.depositAddress, !1, a ?? t.erc20TokenAddress, o, void 0, u);
72
+ let T = await e.withdraw([t], [-x], w.depositAddress, !1, a ?? t.erc20TokenAddress, o, void 0, u);
73
73
  return {
74
74
  tempSubAccount: g,
75
75
  sourceTxHash: typeof T == "string" ? T : T.hash,
@@ -78,15 +78,15 @@ var N = async (e, t, n, r, o, h, _, y) => {
78
78
  }, F = async (e, i, a, s, c) => {
79
79
  let l = i.chainId, d = i.erc20TokenAddress, f = m.getAddressFromSubAccount(l, a);
80
80
  if (!f) throw Error("Missing temp wallet address for bridge shield");
81
- let { recipientInfo: p, claimable: g } = M(e, c);
82
- if (g && await w(await e.getEthereumAddressByChain(l), g.ethAddress, g.keys.getShieldedPrivateKey(), l, g.signature, e.userKeys.getSignature()), t(l)) return j(e, i, a, s, p, r);
83
- let v = _(e, l, [d], [s]), y = await S(l, i, s, await h(l, d, [d], u.Emporium, v.map((e) => x(e, f, l)), n)), b = s - C(s, y);
84
- if (b <= 0n) throw Error(o.INSUFFICIENT_FUNDS_TO_TRANSACT);
81
+ let { recipientInfo: p, claimable: v } = M(e, c);
82
+ if (v && await w(await e.getEthereumAddressByChain(l), v.ethAddress, v.keys.getShieldedPrivateKey(), l, v.signature, e.userKeys.getSignature()), t(l)) return j(e, i, a, s, p, r);
83
+ let b = y(e, l, [d], [s]), x = await g(l, i, s, await h(l, d, [d], u.Emporium, b.map((e) => C(e, f, l)), n)), S = s - _(s, x);
84
+ if (S <= 0n) throw Error(o.INSUFFICIENT_FUNDS_TO_TRANSACT);
85
85
  return {
86
- destTxHash: await e.proxyToPrivate([i], [b], a, p, y.feeToken, y),
87
- shieldedAmount: b
86
+ destTxHash: await e.proxyToPrivate([i], [S], a, p, x.feeToken, x),
87
+ shieldedAmount: S
88
88
  };
89
- }, I = async (t, n, r, i, a, o = y, s, c, l) => {
89
+ }, I = async (t, n, r, i, a, o = x, s, c, l) => {
90
90
  let { tempSubAccount: u, sourceTxHash: d, expectedAmount: f } = e(n.chainId) ? await P(t, n, r, i, o, s, c, l) : await N(t, n, r, i, o, s, c, l), p = m.getAddressFromSubAccount(r.chainId, u);
91
91
  if (!p) throw Error("Missing temp wallet address for bridge");
92
92
  let { destTxHash: h, shieldedAmount: g } = await F(t, r, u, await T(r.chainId, p, r.erc20TokenAddress, f, o), a);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/private-wallet/emporium.helpers.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../constants/addresses.constants.cjs`),b=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),x=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const S=require(`./hinkalDepositOnChainUtxos.cjs`);var C=async(o,u,d,m,_,b,x,S)=>{if(m.length===0)throw Error(`No recipients to bridge`);let C=d.erc20TokenAddress,{contractData:w}=e.networkRegistry[u],{emporiumAddress:T}=w;if(!T)throw Error(`No Emporium Address`);let E=y.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!E)throw Error(`LIFI not configured for chain ${u}`);let D=await o.getRandomRelay(u);if(!D)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let O=await o.getEthereumAddressByChain(u),k=o.generateProofRemotely,A=k?5:1,j=[];for(let i=0;i<m.length;i+=A){let d=m.slice(i,i+A),y=await Promise.all(d.map(async({utxo:d,nativeUtxo:m,bridgeAmount:y,quote:w,temporarySubAccount:A,recipientAddress:j,destinationChainId:M,destinationTokenAddress:N},P)=>{let F=_[i+P];await l.API.addTemporaryWalletNonce(u,b,A.index);let I=n.caseInsensitiveEqual(C,t.zeroAddress),L=w.nativeFee>0n&&!I,R=[C],z=[-d.amount],B=[!1],V=[[d]];L&&m&&(R.push(t.zeroAddress),z.push(-m.amount),B.push(!1),V.push([m]));let H=g.createLifiBridgeOps(o,u,A.ethAddress,E,C,d.amount,y,w),U=f.constructAdminData(x,u,R,[-d.amount],O),[W,G]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=k?await g.encodeEmporiumMetadata(u,T,A.privateKey,H,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),A.privateKey),F.flatFee):void 0;return v.hinkalTransact(o,{chainId:u,erc20Addresses:R,amountChanges:z,externalAddress:T,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:B,feeStructure:F,relay:D??t.zeroAddress,messageSeed:n,inputUtxos:V,useBlockedUtxos:!0,speculative:S&&{pendingLeaves:S,inputUtxos:V.map(e=>e.map(h.toSpeculativeUtxo))},subAccountPrivateKey:A.privateKey,emporiumOps:H,submit:{mode:c.SubmitMode.ProofOnly}})})(),g.getAuthorizationDataIfNeeded(u,A.privateKey)]),{zkCallData:K,circomData:q,dimData:J,commitmentValidationData:Y,tronProofSignature:X}=W;return{zkCallData:K,dimData:J,circomData:q,commitmentValidationData:Y,authorizationData:G,recipientAddress:j,adminData:U,tronProofSignature:X,destinationChainId:M,destinationTokenAddress:N,destinationTokenAmount:w.expectedAmount.toString()}}));j.push(...y)}return j},w=e=>e.map(e=>e.quote.nativeFee),T=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],v=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),v.push(w(r))}let y=await S.prepareDepositOnChainUtxos(e,a,g,v),{depositedUtxos:b,pendingLeaves:x}=y,[T,E=[]]=b,D=r.map((e,t)=>({...e,utxo:T[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([S.submitDepositOnChainUtxos(e,y,h),C(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await _.transactCallRelayerBatch(a,k,o,u,f,m,O)}},E=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let h=r.erc20TokenAddress,_=u.validateAndGetChainId([r]),v=await e.getEthereumAddressByChain(_),S=y.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][_];if(!S)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(h,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=g.createLifiBridgeOps(e,_,n.temporarySubAccount.ethAddress,S,h,r,n.bridgeAmount,n.quote).map(e=>b.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,_));w=await m.getFeeStructure(_,h,[h],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let E=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>x.calculateModifiedFeeStructure(_,r,e,w)));return T(e,r,i,{chainId:_,ethereumAddress:v,hashedEthereumAddress:o.hashEthereumAddress(v),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:E>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=E;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const S=require(`./hinkalDepositOnChainUtxos.cjs`);var C=async(o,u,d,m,h,v,x,S)=>{if(m.length===0)throw Error(`No recipients to bridge`);let C=d.erc20TokenAddress,{contractData:w}=e.networkRegistry[u],{emporiumAddress:T}=w;if(!T)throw Error(`No Emporium Address`);let E=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!E)throw Error(`LIFI not configured for chain ${u}`);let D=await o.getRandomRelay(u);if(!D)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let O=await o.getEthereumAddressByChain(u),k=o.generateProofRemotely,A=k?5:1,j=[];for(let i=0;i<m.length;i+=A){let d=m.slice(i,i+A),b=await Promise.all(d.map(async({utxo:d,nativeUtxo:m,bridgeAmount:b,quote:w,temporarySubAccount:A,recipientAddress:j,destinationChainId:M,destinationTokenAddress:N},P)=>{let F=h[i+P];await l.API.addTemporaryWalletNonce(u,v,A.index);let I=n.caseInsensitiveEqual(C,t.zeroAddress),L=w.nativeFee>0n&&!I,R=[C],z=[-d.amount],B=[!1],V=[[d]];L&&m&&(R.push(t.zeroAddress),z.push(-m.amount),B.push(!1),V.push([m]));let H=_.createLifiBridgeOps(o,u,A.ethAddress,E,C,d.amount,b,w),U=f.constructAdminData(x,u,R,[-d.amount],O),[W,G]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=k?await _.encodeEmporiumMetadata(u,T,A.privateKey,H,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),A.privateKey),F.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:R,amountChanges:z,externalAddress:T,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:B,feeStructure:F,relay:D??t.zeroAddress,messageSeed:n,inputUtxos:V,useBlockedUtxos:!0,speculative:S&&{pendingLeaves:S,inputUtxos:V.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:A.privateKey,emporiumOps:H,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,A.privateKey)]),{zkCallData:K,circomData:q,dimData:J,commitmentValidationData:Y,tronProofSignature:X}=W;return{zkCallData:K,dimData:J,circomData:q,commitmentValidationData:Y,authorizationData:G,recipientAddress:j,adminData:U,tronProofSignature:X,destinationChainId:M,destinationTokenAddress:N,destinationTokenAmount:w.expectedAmount.toString()}}));j.push(...b)}return j},w=e=>e.map(e=>e.quote.nativeFee),T=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(w(r))}let y=await S.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[T,E=[]]=b,D=r.map((e,t)=>({...e,utxo:T[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([S.submitDepositOnChainUtxos(e,y,h),C(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},E=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),S=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!S)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,S,g,r,n.bridgeAmount,n.quote).map(e=>x.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let E=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return T(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:E>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=E;
@@ -13,34 +13,34 @@ import { getErc20TokenFromAPI as m } from "../../functions/utils/erc20tokenFunct
13
13
  import { constructAdminData as h } from "../../functions/pre-transaction/constructAdminData.mjs";
14
14
  import { AccountActions as g } from "../AccountActions/AccountActions.mjs";
15
15
  import { getFeeStructure as _ } from "../../functions/pre-transaction/getFeeStructure.mjs";
16
- import { toSpeculativeUtxo as v } from "../../functions/pre-transaction/speculativeUtxo.mjs";
17
- import { createLifiBridgeOps as y, encodeEmporiumMetadata as b, getAuthorizationDataIfNeeded as x } from "../../functions/private-wallet/emporium.helpers.mjs";
18
- import { transactCallRelayerBatch as S } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
19
- import { hinkalTransact as C } from "./hinkalTransact.mjs";
20
- import { SWAP_ROUTER_ADDRESSES as w } from "../../constants/addresses.constants.mjs";
21
- import { convertEmporiumOpToCallInfo as T } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
22
- import { calculateModifiedFeeStructure as E } from "../../functions/utils/fees.utils.mjs";
16
+ import { calculateModifiedFeeStructure as v } from "../../functions/utils/fees.utils.mjs";
17
+ import { toSpeculativeUtxo as y } from "../../functions/pre-transaction/speculativeUtxo.mjs";
18
+ import { createLifiBridgeOps as b, encodeEmporiumMetadata as x, getAuthorizationDataIfNeeded as S } from "../../functions/private-wallet/emporium.helpers.mjs";
19
+ import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
+ import { hinkalTransact as w } from "./hinkalTransact.mjs";
21
+ import { SWAP_ROUTER_ADDRESSES as T } from "../../constants/addresses.constants.mjs";
22
+ import { convertEmporiumOpToCallInfo as E } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
23
23
  import "../../functions/utils/index.mjs";
24
24
  import { prepareDepositOnChainUtxos as D, submitDepositOnChainUtxos as O } from "./hinkalDepositOnChainUtxos.mjs";
25
25
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
26
- var k = async (n, c, l, p, m, _, S, T) => {
26
+ var k = async (n, c, l, p, m, _, v, C) => {
27
27
  if (p.length === 0) throw Error("No recipients to bridge");
28
28
  let E = l.erc20TokenAddress, { contractData: D } = t[c], { emporiumAddress: O } = D;
29
29
  if (!O) throw Error("No Emporium Address");
30
- let k = w[u.Lifi][c];
30
+ let k = T[u.Lifi][c];
31
31
  if (!k) throw Error(`LIFI not configured for chain ${c}`);
32
32
  let A = await n.getRandomRelay(c);
33
33
  if (!A) throw Error(o.RELAYER_NOT_AVAILABLE);
34
34
  let j = await n.getEthereumAddressByChain(c), M = n.generateProofRemotely, N = M ? 5 : 1, P = [];
35
35
  for (let t = 0; t < p.length; t += N) {
36
- let o = p.slice(t, t + N), l = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: l, bridgeAmount: p, quote: w, temporarySubAccount: D, recipientAddress: N, destinationChainId: P, destinationTokenAddress: F }, I) => {
36
+ let o = p.slice(t, t + N), l = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: l, bridgeAmount: p, quote: T, temporarySubAccount: D, recipientAddress: N, destinationChainId: P, destinationTokenAddress: F }, I) => {
37
37
  let L = m[t + I];
38
38
  await f.addTemporaryWalletNonce(c, _, D.index);
39
- let R = i(E, r), z = w.nativeFee > 0n && !R, B = [E], V = [-o.amount], H = [!1], U = [[o]];
39
+ let R = i(E, r), z = T.nativeFee > 0n && !R, B = [E], V = [-o.amount], H = [!1], U = [[o]];
40
40
  z && l && (B.push(r), V.push(-l.amount), H.push(!1), U.push([l]));
41
- let W = y(n, c, D.ethAddress, k, E, o.amount, p, w), G = h(S, c, B, [-o.amount], j), [K, q] = await Promise.all([(async () => {
42
- let t = s(31), i = M ? await b(c, O, D.privateKey, W, a(t), g.getSignerAddressFromPrivateKey(e(c), D.privateKey), L.flatFee) : void 0;
43
- return C(n, {
41
+ let W = b(n, c, D.ethAddress, k, E, o.amount, p, T), G = h(v, c, B, [-o.amount], j), [K, q] = await Promise.all([(async () => {
42
+ let t = s(31), i = M ? await x(c, O, D.privateKey, W, a(t), g.getSignerAddressFromPrivateKey(e(c), D.privateKey), L.flatFee) : void 0;
43
+ return w(n, {
44
44
  chainId: c,
45
45
  erc20Addresses: B,
46
46
  amountChanges: V,
@@ -53,15 +53,15 @@ var k = async (n, c, l, p, m, _, S, T) => {
53
53
  messageSeed: t,
54
54
  inputUtxos: U,
55
55
  useBlockedUtxos: !0,
56
- speculative: T && {
57
- pendingLeaves: T,
58
- inputUtxos: U.map((e) => e.map(v))
56
+ speculative: C && {
57
+ pendingLeaves: C,
58
+ inputUtxos: U.map((e) => e.map(y))
59
59
  },
60
60
  subAccountPrivateKey: D.privateKey,
61
61
  emporiumOps: W,
62
62
  submit: { mode: d.ProofOnly }
63
63
  });
64
- })(), x(c, D.privateKey)]), { zkCallData: J, circomData: Y, dimData: X, commitmentValidationData: Z, tronProofSignature: Q } = K;
64
+ })(), S(c, D.privateKey)]), { zkCallData: J, circomData: Y, dimData: X, commitmentValidationData: Z, tronProofSignature: Q } = K;
65
65
  return {
66
66
  zkCallData: J,
67
67
  dimData: X,
@@ -73,7 +73,7 @@ var k = async (n, c, l, p, m, _, S, T) => {
73
73
  tronProofSignature: Q,
74
74
  destinationChainId: P,
75
75
  destinationTokenAddress: F,
76
- destinationTokenAmount: w.expectedAmount.toString()
76
+ destinationTokenAmount: T.expectedAmount.toString()
77
77
  };
78
78
  }));
79
79
  P.push(...l);
@@ -86,33 +86,33 @@ var k = async (n, c, l, p, m, _, S, T) => {
86
86
  if (!e) throw Error("No native token");
87
87
  g.push(e), _.push(A(n));
88
88
  }
89
- let v = await D(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, C = []] = y, w = n.map((e, t) => ({
89
+ let v = await D(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
90
90
  ...e,
91
91
  utxo: x[t],
92
- nativeUtxo: l ? C[t] : void 0
92
+ nativeUtxo: l ? S[t] : void 0
93
93
  })), [T, E] = await Promise.all([O(e, v, h), k(e, a, t, w, s, o, f, b)]);
94
94
  return {
95
95
  depositTxHash: T,
96
- scheduleId: await S(a, E, o, u, d, p, T)
96
+ scheduleId: await C(a, E, o, u, d, p, T)
97
97
  };
98
98
  }, M = async (e, t, a, o, s, d, f, m, h = !0) => {
99
99
  if (a.length === 0) throw Error("No recipients to bridge");
100
- let g = t.erc20TokenAddress, v = p([t]), b = await e.getEthereumAddressByChain(v), x = w[u.Lifi][v];
101
- if (!x) throw Error("LIFI router not configured");
102
- let S = i(g, r), C;
103
- if (s) C = s;
100
+ let g = t.erc20TokenAddress, y = p([t]), x = await e.getEthereumAddressByChain(y), S = T[u.Lifi][y];
101
+ if (!S) throw Error("LIFI router not configured");
102
+ let C = i(g, r), w;
103
+ if (s) w = s;
104
104
  else {
105
- let t = a[0], r = S ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = y(e, v, t.temporarySubAccount.ethAddress, x, g, r, t.bridgeAmount, t.quote).map((e) => T(e, t.temporarySubAccount.ethAddress, v));
106
- C = await _(v, g, [g], u.Emporium, i, n);
105
+ let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => E(e, t.temporarySubAccount.ethAddress, y));
106
+ w = await _(y, g, [g], u.Emporium, i, n);
107
107
  }
108
- let D = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => S ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => E(v, t, e, C)));
108
+ let D = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
109
109
  return j(e, t, a, {
110
- chainId: v,
111
- ethereumAddress: b,
112
- hashedEthereumAddress: c(b),
110
+ chainId: y,
111
+ ethereumAddress: x,
112
+ hashedEthereumAddress: c(x),
113
113
  feeStructures: k,
114
114
  mainTokenAmounts: O.map((e, t) => e + k[t].flatFee),
115
- needsNativeDeposit: D > 0n && !S,
115
+ needsNativeDeposit: D > 0n && !C,
116
116
  txCompletionTime: o,
117
117
  ref: d,
118
118
  action: f,
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../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,[],25n),txCompletionTime:c,ref:d,action:p,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return b(t,n,r,i,S);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return x(t,n,r,i,S)};exports.hinkalDepositAndWithdraw=S;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),m=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`./hinkalTransact.cjs`);require(`../../functions/index.cjs`);const _=require(`./hinkalDepositOnChainUtxos.cjs`);let v=require(`ethers`);var y=async(e,o,s,l,u,f,m,h)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[v,y]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!v)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let b=e.generateProofRemotely?5:1,x=[],S=a.addressToHexFormat(y);for(let r=0;r<l.length;r+=b){let s=l.slice(r,r+b),y=await Promise.all(s.map(async({recipientAddress:s,utxo:l},y)=>{let b=r+y,x=a.addressToHexFormat(s),C=n.caseInsensitiveEqual(l.erc20TokenAddress,_)?l:i.Utxo.createFrom(l,{erc20TokenAddress:_}),w=d.constructAdminData(f,o,[_],[-l.amount],S),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O,tronProofSignature:k}=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-l.amount],externalAddress:x,feeStructure:u,relay:v??t.zeroAddress,inputUtxos:[[C]],useBlockedUtxos:!0,speculative:h&&{pendingLeaves:h,inputUtxos:[[p.toSpeculativeUtxo(C)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:T,dimData:D,circomData:E,commitmentValidationData:O,adminData:w,recipientAddress:s,tronProofSignature:k,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[b]}}));x.push(...y)}return x},b=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,m=n.map(e=>e+s.flatFee),g=await _.prepareDepositOnChainUtxos(e,a,[t],[m]),{depositedUtxos:v,pendingLeaves:b}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[S,C]=await Promise.all([_.submitDepositOnChainUtxos(e,g,p),y(e,a,t,x,s,c,l,b)]);return{depositTxHash:S,scheduleId:await h.transactCallRelayerBatch(a,C,o,u,d,f,S)}},x=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:_,ref:b,hashedDashboardAccountId:x,preEstimateGas:S}=i,C=n.map(e=>e+d.flatFee),w=C.reduce((e,t)=>e+t,0n),T=await g.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[w],externalAddress:s,selfOutputAmounts:C,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),E=T.circomData.encryptedOutputs?.[0];if(!E||E.length!==C.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let D=E.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(v.ethers.getBytes(t),e.userKeys)})),O=T.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[k,A]=await Promise.all([(async()=>{a.swapTronBCoordinate(T.zkCallData);let n=await m.transactCallDirectTron(e,o,w,t,T.zkCallData,T.circomData,T.dimData,void 0,void 0,S,T.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),y(e,o,t,D,d,f,p,O)]);return{depositTxHash:k,scheduleId:await h.transactCallRelayerBatch(o,A,u,_,b,x,k)}},S=async(t,n,r,i,c,l,d,p,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),S={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await f.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:p,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return b(t,n,r,i,S);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return x(t,n,r,i,S)};exports.hinkalDepositAndWithdraw=S;
@@ -7,8 +7,8 @@ import { addressToHexFormat as a, swapTronBCoordinate as o } from "../../functio
7
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
- import { validateAndGetChainId as d } from "../../functions/utils/token-check.utils.mjs";
11
- import { decryptUtxo as f } from "../crypto-keys/encryptDecryptUtxo.mjs";
10
+ import { decryptUtxo as d } from "../crypto-keys/encryptDecryptUtxo.mjs";
11
+ import { validateAndGetChainId as f } from "../../functions/utils/token-check.utils.mjs";
12
12
  import { constructAdminData as p } from "../../functions/pre-transaction/constructAdminData.mjs";
13
13
  import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
14
14
  import { toSpeculativeUtxo as h } from "../../functions/pre-transaction/speculativeUtxo.mjs";
@@ -68,7 +68,7 @@ var S = async (e, o, s, 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: 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, {
71
+ let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: f, destination: p } = i, { txCompletionTime: m, ref: h, hashedDashboardAccountId: y, preEstimateGas: b } = i, C = n.map((e) => e + l.flatFee), w = C.reduce((e, t) => e + t, 0n), T = await v(e, {
72
72
  chainId: a,
73
73
  erc20Addresses: [t.erc20TokenAddress],
74
74
  amountChanges: [w],
@@ -81,25 +81,25 @@ var S = async (e, o, s, c, l, d, f, m) => {
81
81
  if (!E || E.length !== C.length) throw Error("Deposit proof is missing encryptedOutputs for the deposited UTXOs");
82
82
  let D = E.map((t, n) => ({
83
83
  recipientAddress: r[n],
84
- utxo: f(x.getBytes(t), e.userKeys)
84
+ utxo: d(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
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
- })(), S(e, a, t, D, l, d, p, O)]);
90
+ })(), S(e, a, t, D, l, f, p, O)]);
91
91
  return {
92
92
  depositTxHash: k,
93
93
  scheduleId: await _(a, A, c, m, h, y, k)
94
94
  };
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 = {
95
+ }, T = async (t, n, r, i, o, u, d, p, h, g = !0, _) => {
96
+ let v = f([n]), y = n.erc20TokenAddress, b = a(await t.getEthereumAddressByChain(v)), x = {
97
97
  chainId: v,
98
98
  ethereumAddress: b,
99
99
  hashedEthereumAddress: s(b),
100
100
  feeStructure: u ?? await m(v, y, [y], l.Transact, [], 25n),
101
101
  txCompletionTime: o,
102
- ref: f,
102
+ ref: d,
103
103
  action: p,
104
104
  hashedDashboardAccountId: h ? c(h) : void 0,
105
105
  preEstimateGas: g,
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../types/ethereum-network.types.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),l=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),u=require(`../../API/admin-calls.cjs`),d=require(`../../functions/utils/getRecipientInfoFromUserKeys.cjs`),f=require(`./hinkalProoflessDeposit.utils.cjs`);var p=async(p,m,h,g,_,v=!1,y=n.zeroProoflessFeeStructure,b=``,x,S=!1)=>{let C=a.validateAndGetChainId(m);if(e.isTronLike(C))throw Error(`Proofless deposit is not supported on Tron`);let w=await p.getEthereumAddressByChain(C),T=g??m.map(()=>d.getStealthAddressStructureFromUserKeys(p.userKeys));if(T.length!==m.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);if(f.assertNoDuplicateStealthAddressStructures(T),g&&!_)throw Error(`recipientEncryptionKeysOverride is required whenever stealthAddressStructuresOverride is provided`);if(_&&_.length!==m.length)throw Error(`recipientEncryptionKeysOverride length must be equal to erc20 tokens length`);let E=f.buildProoflessEncryptedOutputs(T,_??f.getOwnRecipientEncryptionKeys(p.userKeys,m.length)),D=y.feeAmount>0n,O=D?p.getContractWithSigner(C,i.ContractType.HinkalWrapperContract):p.getContractWithSigner(C,i.ContractType.HinkalContract),k=D?[m.map(({erc20TokenAddress:e})=>e),h,T,E,v,y,b]:[m.map(({erc20TokenAddress:e})=>e),h,T,E,v,b],A=r.caseInsensitiveEqual(y.feeToken,t.zeroAddress),j=m.reduce((e,n,i)=>r.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+h[i]:e,0n)+(A?y.feeAmount:0n);if(S)return O.prooflessDeposit.populateTransaction(...k,{value:j>0n?j:void 0});let M=p.getProviderAdapter(C),N=f.aggregateAmountsForApproval(!A&&y.feeAmount>0n?[...m,{erc20TokenAddress:y.feeToken,chainId:C}]:m,!A&&y.feeAmount>0n?[...h,y.feeAmount]:h),P=N.filter(({token:e,balance:n})=>!r.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),F;if(P.length>0&&await M.supportsBatchCall?.(C)&&M.sendBatchCallsTransaction){let e=c.buildApproveAndProoflessDepositCalls(P.map(({token:e})=>e.erc20TokenAddress),P.map(({balance:e})=>e),s.getContractAddress(O),O,m.map(({erc20TokenAddress:e})=>e),h,T,E,v,D?y:void 0,b,j);F=await M.sendBatchCallsTransaction(C,e)}else{await f.approveTokens(p,C,s.getContractAddress(O),N);let e=await p.getEthereumAddressByChain(C),t=N.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await l.waitForErc20Approvals(p,C,e,s.getContractAddress(O),t),F=await O.prooflessDeposit(...k,{value:j>0n?j:void 0})}let I=F.hash;return u.emitTxPublicData(o.constructAdminData(x,C,m.map(({erc20TokenAddress:e})=>e),h,w)),I};exports.hinkalProoflessDeposit=p;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../types/ethereum-network.types.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),l=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),u=require(`../../API/admin-calls.cjs`),d=require(`../../functions/utils/getRecipientInfoFromUserKeys.cjs`),f=require(`./hinkalProoflessDeposit.utils.cjs`);var p=async(p,m,h,g,_,v=!1,y=n.zeroProoflessFeeStructure,b=``,x,S=!1,C=!1)=>{let w=a.validateAndGetChainId(m);if(e.isTronLike(w))throw Error(`Proofless deposit is not supported on Tron`);let T=await p.getEthereumAddressByChain(w),E=g??m.map(()=>d.getStealthAddressStructureFromUserKeys(p.userKeys));if(E.length!==m.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);if(S||f.assertNoDuplicateStealthAddressStructures(E),g&&!_)throw Error(`recipientEncryptionKeysOverride is required whenever stealthAddressStructuresOverride is provided`);if(_&&_.length!==m.length)throw Error(`recipientEncryptionKeysOverride length must be equal to erc20 tokens length`);let D=f.buildProoflessEncryptedOutputs(E,_??f.getOwnRecipientEncryptionKeys(p.userKeys,m.length)),O=y.feeAmount>0n,k=O?p.getContractWithSigner(w,i.ContractType.HinkalWrapperContract):p.getContractWithSigner(w,i.ContractType.HinkalContract),A=O?[m.map(({erc20TokenAddress:e})=>e),h,E,D,v,y,b]:[m.map(({erc20TokenAddress:e})=>e),h,E,D,v,b],j=r.caseInsensitiveEqual(y.feeToken,t.zeroAddress),M=m.reduce((e,n,i)=>r.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+h[i]:e,0n)+(j?y.feeAmount:0n);if(C)return k.prooflessDeposit.populateTransaction(...A,{value:M>0n?M:void 0});let N=p.getProviderAdapter(w),P=f.aggregateAmountsForApproval(!j&&y.feeAmount>0n?[...m,{erc20TokenAddress:y.feeToken,chainId:w}]:m,!j&&y.feeAmount>0n?[...h,y.feeAmount]:h),F=P.filter(({token:e,balance:n})=>!r.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),I;if(F.length>0&&await N.supportsBatchCall?.(w)&&N.sendBatchCallsTransaction){let e=c.buildApproveAndProoflessDepositCalls(F.map(({token:e})=>e.erc20TokenAddress),F.map(({balance:e})=>e),s.getContractAddress(k),k,m.map(({erc20TokenAddress:e})=>e),h,E,D,v,O?y:void 0,b,M);I=await N.sendBatchCallsTransaction(w,e)}else{await f.approveTokens(p,w,s.getContractAddress(k),P);let e=await p.getEthereumAddressByChain(w),t=P.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await l.waitForErc20Approvals(p,w,e,s.getContractAddress(k),t),I=await k.prooflessDeposit(...A,{value:M>0n?M:void 0})}let L=I.hash;return u.emitTxPublicData(o.constructAdminData(x,w,m.map(({erc20TokenAddress:e})=>e),h,T)),L};exports.hinkalProoflessDeposit=p;
@@ -4,4 +4,4 @@ import { IHinkal } from './IHinkal';
4
4
  import { StealthAddressStructure } from '../../types/circom-data.types';
5
5
  import { ProoflessFeeStructure } from '../../types/hinkal.types';
6
6
  import { AdminTransactionType } from '../../types/admin.types';
7
- export declare const hinkalProoflessDeposit: (hinkal: IHinkal, erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructuresOverride?: StealthAddressStructure[], recipientEncryptionKeysOverride?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, returnTxData?: boolean) => Promise<string | ethers.TransactionRequest>;
7
+ export declare const hinkalProoflessDeposit: (hinkal: IHinkal, erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructuresOverride?: StealthAddressStructure[], recipientEncryptionKeysOverride?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, skipDuplicateCheck?: boolean, returnTxData?: boolean) => Promise<string | ethers.TransactionRequest>;
@@ -12,47 +12,47 @@ import { emitTxPublicData as u } from "../../API/admin-calls.mjs";
12
12
  import { getStealthAddressStructureFromUserKeys as d } from "../../functions/utils/getRecipientInfoFromUserKeys.mjs";
13
13
  import { aggregateAmountsForApproval as f, approveTokens as p, assertNoDuplicateStealthAddressStructures as m, buildProoflessEncryptedOutputs as h, getOwnRecipientEncryptionKeys as g } from "./hinkalProoflessDeposit.utils.mjs";
14
14
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.ts
15
- var _ = async (_, v, y, b, x, S = !1, C = n, w = "", T, E = !1) => {
16
- let D = a(v);
17
- if (e(D)) throw Error("Proofless deposit is not supported on Tron");
18
- let O = await _.getEthereumAddressByChain(D), k = b ?? v.map(() => d(_.userKeys));
19
- if (k.length !== v.length) throw Error("Stealth address structures length must be equal to erc20 tokens length");
20
- if (m(k), b && !x) throw Error("recipientEncryptionKeysOverride is required whenever stealthAddressStructuresOverride is provided");
15
+ var _ = async (_, v, y, b, x, S = !1, C = n, w = "", T, E = !1, D = !1) => {
16
+ let O = a(v);
17
+ if (e(O)) throw Error("Proofless deposit is not supported on Tron");
18
+ let k = await _.getEthereumAddressByChain(O), A = b ?? v.map(() => d(_.userKeys));
19
+ if (A.length !== v.length) throw Error("Stealth address structures length must be equal to erc20 tokens length");
20
+ if (E || m(A), b && !x) throw Error("recipientEncryptionKeysOverride is required whenever stealthAddressStructuresOverride is provided");
21
21
  if (x && x.length !== v.length) throw Error("recipientEncryptionKeysOverride length must be equal to erc20 tokens length");
22
- let A = h(k, x ?? g(_.userKeys, v.length)), j = C.feeAmount > 0n, M = j ? _.getContractWithSigner(D, i.HinkalWrapperContract) : _.getContractWithSigner(D, i.HinkalContract), N = j ? [
22
+ let j = h(A, x ?? g(_.userKeys, v.length)), M = C.feeAmount > 0n, N = M ? _.getContractWithSigner(O, i.HinkalWrapperContract) : _.getContractWithSigner(O, i.HinkalContract), P = M ? [
23
23
  v.map(({ erc20TokenAddress: e }) => e),
24
24
  y,
25
- k,
26
25
  A,
26
+ j,
27
27
  S,
28
28
  C,
29
29
  w
30
30
  ] : [
31
31
  v.map(({ erc20TokenAddress: e }) => e),
32
32
  y,
33
- k,
34
33
  A,
34
+ j,
35
35
  S,
36
36
  w
37
- ], P = r(C.feeToken, t), F = v.reduce((e, n, i) => r(n.erc20TokenAddress, t) ? e + y[i] : e, 0n) + (P ? C.feeAmount : 0n);
38
- if (E) return M.prooflessDeposit.populateTransaction(...N, { value: F > 0n ? F : void 0 });
39
- let I = _.getProviderAdapter(D), L = f(!P && C.feeAmount > 0n ? [...v, {
37
+ ], F = r(C.feeToken, t), I = v.reduce((e, n, i) => r(n.erc20TokenAddress, t) ? e + y[i] : e, 0n) + (F ? C.feeAmount : 0n);
38
+ if (D) return N.prooflessDeposit.populateTransaction(...P, { value: I > 0n ? I : void 0 });
39
+ let L = _.getProviderAdapter(O), R = f(!F && C.feeAmount > 0n ? [...v, {
40
40
  erc20TokenAddress: C.feeToken,
41
- chainId: D
42
- }] : v, !P && C.feeAmount > 0n ? [...y, C.feeAmount] : y), R = L.filter(({ token: e, balance: n }) => !r(e.erc20TokenAddress, t) && n > 0n), z;
43
- if (R.length > 0 && await I.supportsBatchCall?.(D) && I.sendBatchCallsTransaction) {
44
- let e = c(R.map(({ token: e }) => e.erc20TokenAddress), R.map(({ balance: e }) => e), s(M), M, v.map(({ erc20TokenAddress: e }) => e), y, k, A, S, j ? C : void 0, w, F);
45
- z = await I.sendBatchCallsTransaction(D, e);
41
+ chainId: O
42
+ }] : v, !F && C.feeAmount > 0n ? [...y, C.feeAmount] : y), z = R.filter(({ token: e, balance: n }) => !r(e.erc20TokenAddress, t) && n > 0n), B;
43
+ if (z.length > 0 && await L.supportsBatchCall?.(O) && L.sendBatchCallsTransaction) {
44
+ let e = c(z.map(({ token: e }) => e.erc20TokenAddress), z.map(({ balance: e }) => e), s(N), N, v.map(({ erc20TokenAddress: e }) => e), y, A, j, S, M ? C : void 0, w, I);
45
+ B = await L.sendBatchCallsTransaction(O, e);
46
46
  } else {
47
- await p(_, D, s(M), L);
48
- let e = await _.getEthereumAddressByChain(D), t = L.map(({ token: e, balance: t }) => ({
47
+ await p(_, O, s(N), R);
48
+ let e = await _.getEthereumAddressByChain(O), t = R.map(({ token: e, balance: t }) => ({
49
49
  tokenAddress: e.erc20TokenAddress,
50
50
  requiredAmount: t
51
51
  }));
52
- await l(_, D, e, s(M), t), z = await M.prooflessDeposit(...N, { value: F > 0n ? F : void 0 });
52
+ await l(_, O, e, s(N), t), B = await N.prooflessDeposit(...P, { value: I > 0n ? I : void 0 });
53
53
  }
54
- let B = z.hash;
55
- return u(o(T, D, v.map(({ erc20TokenAddress: e }) => e), y, O)), B;
54
+ let V = B.hash;
55
+ return u(o(T, O, v.map(({ erc20TokenAddress: e }) => e), y, k)), V;
56
56
  };
57
57
  //#endregion
58
58
  export { _ as hinkalProoflessDeposit };
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../crypto-keys/encryptDecryptUtxo.cjs`);require(`../../externalABIs/index.cjs`);const o=require(`../../functions/utils/tx-confirmation.utils.cjs`);var s=(e,t)=>{if(e.length!==t.length)throw Error(`stealthAddressStructures and recipientEncryptionKeys must have equal length`);return e.map((e,n)=>{let r=t[n];if(!r)throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);return`0x${Buffer.from(a.encryptEncryptionKeyAndStealthAddress(r,e.stealthAddress)).toString(`hex`)}`})},c=(e,t)=>{let r=n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;return Array.from({length:t},()=>r)},l=(e,t)=>{let n=[],r=0;for(let a=0;a<e.length;a+=1){let o=!1;for(let s=0;s<r;s+=1)if(i.isSameERC20Token(n[s].token,e[a])){n[s].balance+=t[a],o=!0;break}o||(n[r]={token:e[a],balance:t[a]},r+=1)}return n},u=async(n,i,a,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await o.waitForEthereumTransactionConfirmation(i,(await n.getContractWithSigner(i,r.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(a,s[c].balance)).hash)},d=e=>{let t=new Set;e.forEach(({H0x:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})};exports.aggregateAmountsForApproval=l,exports.approveTokens=u,exports.assertNoDuplicateStealthAddressStructures=d,exports.buildProoflessEncryptedOutputs=s,exports.getOwnRecipientEncryptionKeys=c;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../crypto-keys/encryptDecryptUtxo.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`);require(`../../externalABIs/index.cjs`);const o=require(`../../functions/utils/tx-confirmation.utils.cjs`);var s=(e,t)=>{if(e.length!==t.length)throw Error(`stealthAddressStructures and recipientEncryptionKeys must have equal length`);return e.map((e,n)=>{let r=t[n];if(!r)throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);return`0x${Buffer.from(i.encryptEncryptionKeyAndStealthAddress(r,e.stealthAddress)).toString(`hex`)}`})},c=(e,t)=>{let r=n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;return Array.from({length:t},()=>r)},l=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let o=!1;for(let s=0;s<r;s+=1)if(a.isSameERC20Token(n[s].token,e[i])){n[s].balance+=t[i],o=!0;break}o||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},u=async(n,i,a,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await o.waitForEthereumTransactionConfirmation(i,(await n.getContractWithSigner(i,r.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(a,s[c].balance)).hash)},d=e=>{let t=new Set;e.forEach(({H0x:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})};exports.aggregateAmountsForApproval=l,exports.approveTokens=u,exports.assertNoDuplicateStealthAddressStructures=d,exports.buildProoflessEncryptedOutputs=s,exports.getOwnRecipientEncryptionKeys=c;
@@ -2,8 +2,8 @@ import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
2
2
  import { caseInsensitiveEqual as t } from "../../functions/utils/caseInsensitive.utils.mjs";
3
3
  import { UserKeys as n } from "../crypto-keys/keys.mjs";
4
4
  import { ContractType as r } from "../../types/ethereum-network.types.mjs";
5
- import { isSameERC20Token as i } from "../../functions/utils/token-check.utils.mjs";
6
- import { encryptEncryptionKeyAndStealthAddress as a } from "../crypto-keys/encryptDecryptUtxo.mjs";
5
+ import { encryptEncryptionKeyAndStealthAddress as i } from "../crypto-keys/encryptDecryptUtxo.mjs";
6
+ import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
7
7
  import "../../externalABIs/index.mjs";
8
8
  import { waitForEthereumTransactionConfirmation as o } from "../../functions/utils/tx-confirmation.utils.mjs";
9
9
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.ts
@@ -12,22 +12,22 @@ var s = (e, t) => {
12
12
  return e.map((e, n) => {
13
13
  let r = t[n];
14
14
  if (!r) throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);
15
- return `0x${Buffer.from(a(r, e.stealthAddress)).toString("hex")}`;
15
+ return `0x${Buffer.from(i(r, e.stealthAddress)).toString("hex")}`;
16
16
  });
17
17
  }, c = (e, t) => {
18
18
  let r = n.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;
19
19
  return Array.from({ length: t }, () => r);
20
20
  }, l = (e, t) => {
21
21
  let n = [], r = 0;
22
- for (let a = 0; a < e.length; a += 1) {
22
+ for (let i = 0; i < e.length; i += 1) {
23
23
  let o = !1;
24
- for (let s = 0; s < r; s += 1) if (i(n[s].token, e[a])) {
25
- n[s].balance += t[a], o = !0;
24
+ for (let s = 0; s < r; s += 1) if (a(n[s].token, e[i])) {
25
+ n[s].balance += t[i], o = !0;
26
26
  break;
27
27
  }
28
28
  o || (n[r] = {
29
- token: e[a],
30
- balance: t[a]
29
+ token: e[i],
30
+ balance: t[i]
31
31
  }, r += 1);
32
32
  }
33
33
  return n;
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../constants/addresses.constants.cjs`),o=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),s=require(`../../functions/utils/fees.utils.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,a.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>o.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await s.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0)};exports.hinkalProxySwap=l;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../constants/addresses.constants.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,o.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>s.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await a.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0)};exports.hinkalProxySwap=l;
@@ -4,9 +4,9 @@ import { ExternalActionId as t } from "../../types/external-action.types.mjs";
4
4
  import { validateAndGetChainId as n } from "../../functions/utils/token-check.utils.mjs";
5
5
  import { AccountActions as r } from "../AccountActions/AccountActions.mjs";
6
6
  import { getFeeStructure as i } from "../../functions/pre-transaction/getFeeStructure.mjs";
7
- import { SWAP_ROUTER_ADDRESSES as a } from "../../constants/addresses.constants.mjs";
8
- import { convertEmporiumOpToCallInfo as o } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
9
- import { calculateModifiedFeeStructure as s } from "../../functions/utils/fees.utils.mjs";
7
+ import { calculateModifiedFeeStructure as a } from "../../functions/utils/fees.utils.mjs";
8
+ import { SWAP_ROUTER_ADDRESSES as o } from "../../constants/addresses.constants.mjs";
9
+ import { convertEmporiumOpToCallInfo as s } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
10
10
  import { createSwapToEmporiumOps as c } from "../../functions/private-wallet/emporium.swap.helpers.mjs";
11
11
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProxySwap.ts
12
12
  var l = async (l, u, d, f, p, m, h, g, _, v = !1, y, b, x, S) => {
@@ -15,10 +15,10 @@ var l = async (l, u, d, f, p, m, h, g, _, v = !1, y, b, x, S) => {
15
15
  if (!w) throw Error("Public account address is not available");
16
16
  let T = u.map((e) => e.erc20TokenAddress), E = await l.getRandomRelay(C, !0);
17
17
  if (!E) throw Error(e.RELAYER_NOT_AVAILABLE);
18
- let D = await c(l, C, f, a[f][C], p, T[0], d[0], d[1], T[1], m, w, E, !0), O = _ ?? await i(C, g, T, t.Emporium, D.map((e) => o(e, w, C)), 35n), k = u.map((e, t) => ({
18
+ let D = await c(l, C, f, o[f][C], p, T[0], d[0], d[1], T[1], m, w, E, !0), O = _ ?? await i(C, g, T, t.Emporium, D.map((e) => s(e, w, C)), 35n), k = u.map((e, t) => ({
19
19
  token: e,
20
20
  amount: d[t]
21
- })), A = x && S !== void 0 ? await s(C, x, S, O) : O;
21
+ })), A = x && S !== void 0 ? await a(C, x, S, O) : O;
22
22
  return l.actionPrivateWallet(C, [], [], [], D, k, h, g, A, E, v, y, b, void 0);
23
23
  };
24
24
  //#endregion
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/addresses.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`),s=require(`../../functions/private-wallet/emporium.helpers.cjs`),c=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),l=require(`../../functions/utils/fees.utils.cjs`);var u=async(u,d,f,p,m,h,g,_)=>{if(!g)throw Error(`hinkalProxyToPrivate: subAccount should be provided`);if(!m)throw Error(`Fee token is required in hinkalProxyToPrivate`);if(!t.isValidPrivateAddress(p))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let v=r.validateAndGetChainId(d),y=a.AccountActions.getAddressFromSubAccount(v,g);if(!y)throw Error(`Public account address is not available`);let b=d.map(e=>e.erc20TokenAddress),x=await i.modifyVolatileTokenAmountChanges(v,d,f,y),S=s.createTransaferEmporiumOpsBatch(u,v,b,x),C=await l.calculateModifiedFeeStructureForTokens(v,d,x,h??await o.getFeeStructure(v,m,b,n.ExternalActionId.Emporium,S.map(e=>c.convertEmporiumOpToCallInfo(e,y,v)),25n)),w=d.map((e,t)=>({token:e,amount:-1n*x[t]}));return u.actionPrivateWallet(v,[d[0]],[0n],[!1],S,w,g,m,C,void 0,void 0,void 0,_,{recipientInfo:p,amount:x[0],token:d[0]})};exports.hinkalProxyToPrivate=u;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/addresses.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`),s=require(`../../functions/utils/fees.utils.cjs`),c=require(`../../functions/private-wallet/emporium.helpers.cjs`),l=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);var u=async(u,d,f,p,m,h,g,_)=>{if(!g)throw Error(`hinkalProxyToPrivate: subAccount should be provided`);if(!m)throw Error(`Fee token is required in hinkalProxyToPrivate`);if(!t.isValidPrivateAddress(p))throw Error(e.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let v=r.validateAndGetChainId(d),y=a.AccountActions.getAddressFromSubAccount(v,g);if(!y)throw Error(`Public account address is not available`);let b=d.map(e=>e.erc20TokenAddress),x=await i.modifyVolatileTokenAmountChanges(v,d,f,y),S=c.createTransaferEmporiumOpsBatch(u,v,b,x),C=await s.calculateModifiedFeeStructureForTokens(v,d,x,h??await o.getFeeStructure(v,m,b,n.ExternalActionId.Emporium,S.map(e=>l.convertEmporiumOpToCallInfo(e,y,v)),25n)),w=d.map((e,t)=>({token:e,amount:-1n*x[t]}));return u.actionPrivateWallet(v,[d[0]],[0n],[!1],S,w,g,m,C,void 0,void 0,void 0,_,{recipientInfo:p,amount:x[0],token:d[0]})};exports.hinkalProxyToPrivate=u;
@@ -6,9 +6,9 @@ import { validateAndGetChainId as r } from "../../functions/utils/token-check.ut
6
6
  import { modifyVolatileTokenAmountChanges as i } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
7
7
  import { AccountActions as a } from "../AccountActions/AccountActions.mjs";
8
8
  import { getFeeStructure as o } from "../../functions/pre-transaction/getFeeStructure.mjs";
9
- import { createTransaferEmporiumOpsBatch as s } from "../../functions/private-wallet/emporium.helpers.mjs";
10
- import { convertEmporiumOpToCallInfo as c } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
11
- import { calculateModifiedFeeStructureForTokens as l } from "../../functions/utils/fees.utils.mjs";
9
+ import { calculateModifiedFeeStructureForTokens as s } from "../../functions/utils/fees.utils.mjs";
10
+ import { createTransaferEmporiumOpsBatch as c } from "../../functions/private-wallet/emporium.helpers.mjs";
11
+ import { convertEmporiumOpToCallInfo as l } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
12
12
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProxyToPrivate.ts
13
13
  var u = async (u, d, f, p, m, h, g, _) => {
14
14
  if (!g) throw Error("hinkalProxyToPrivate: subAccount should be provided");
@@ -16,7 +16,7 @@ var u = async (u, d, f, p, m, h, g, _) => {
16
16
  if (!t(p)) throw Error(e.RECIPIENT_FORMAT_INCORRECT);
17
17
  let v = r(d), y = a.getAddressFromSubAccount(v, g);
18
18
  if (!y) throw Error("Public account address is not available");
19
- let b = d.map((e) => e.erc20TokenAddress), x = await i(v, d, f, y), S = s(u, v, b, x), C = await l(v, d, x, h ?? await o(v, m, b, n.Emporium, S.map((e) => c(e, y, v)), 25n)), w = d.map((e, t) => ({
19
+ let b = d.map((e) => e.erc20TokenAddress), x = await i(v, d, f, y), S = c(u, v, b, x), C = await s(v, d, x, h ?? await o(v, m, b, n.Emporium, S.map((e) => l(e, y, v)), 25n)), w = d.map((e, t) => ({
20
20
  token: e,
21
21
  amount: -1n * x[t]
22
22
  }));
@@ -0,0 +1 @@
1
+ const e=require(`../../functions/utils/erc20tokenFunctions.cjs`),t=require(`../../functions/utils/receive-vault-account.utils.cjs`),n=require(`../../functions/utils/receive-vault-scan.utils.cjs`);var r=async r=>{let{records:i,blocks:a}=await t.getReceiveVaultAccountSnapshot(r.userKeys);return{entries:(await Promise.all(i.map(async t=>{let n=await e.getErc20TokenFromAPI(t.chainId,t.token);return n?{record:t,token:n,expiresAt:new Date(Number(t.expiry)*1e3)}:void 0}))).filter(e=>!!e).sort((e,t)=>t.expiresAt.getTime()-e.expiresAt.getTime()),blockedFunds:await n.getReceiveVaultBlockedFunds(i,a)}};exports.hinkalGetReceiveVaultAccount=r;
@@ -0,0 +1,3 @@
1
+ import { ReceiveVaultAccount } from '../../types/receive-vault.types';
2
+ import { IHinkal } from './IHinkal';
3
+ export declare const hinkalGetReceiveVaultAccount: (hinkal: IHinkal) => Promise<ReceiveVaultAccount>;