@hinkal/common 0.2.32 → 0.2.34

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 (127) hide show
  1. package/constants/bridging.constants.cjs +1 -1
  2. package/constants/bridging.constants.d.ts +1 -1
  3. package/constants/bridging.constants.mjs +6 -5
  4. package/constants/chains.constants.cjs +1 -1
  5. package/constants/chains.constants.d.ts +11 -1
  6. package/constants/chains.constants.mjs +86 -18
  7. package/constants/protocol.constants.cjs +1 -1
  8. package/constants/protocol.constants.d.ts +1 -0
  9. package/constants/protocol.constants.mjs +2 -2
  10. package/constants/token-data/ERC20Registry.cjs +1 -1
  11. package/constants/token-data/ERC20Registry.mjs +49 -14
  12. package/constants/token-data/avalancheRegistry.json.cjs +1 -0
  13. package/constants/token-data/avalancheRegistry.json.mjs +44 -0
  14. package/constants/token-data/bnbMainnetRegistry.json.cjs +1 -0
  15. package/constants/token-data/bnbMainnetRegistry.json.mjs +44 -0
  16. package/constants/token-data/cronosRegistry.json.cjs +1 -0
  17. package/constants/token-data/cronosRegistry.json.mjs +44 -0
  18. package/constants/token-data/hyperEvmRegistry.json.cjs +1 -0
  19. package/constants/token-data/hyperEvmRegistry.json.mjs +36 -0
  20. package/constants/token-data/index.cjs +1 -1
  21. package/constants/token-data/index.d.ts +57 -1
  22. package/constants/token-data/index.mjs +9 -2
  23. package/constants/token-data/inkRegistry.json.cjs +1 -0
  24. package/constants/token-data/inkRegistry.json.mjs +28 -0
  25. package/constants/token-data/monadRegistry.json.cjs +1 -0
  26. package/constants/token-data/monadRegistry.json.mjs +36 -0
  27. package/constants/token-data/plasmaRegistry.json.cjs +1 -0
  28. package/constants/token-data/plasmaRegistry.json.mjs +28 -0
  29. package/constants/tokens.constants.cjs +1 -1
  30. package/constants/tokens.constants.mjs +8 -1
  31. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  32. package/data-structures/Hinkal/Hinkal.d.ts +1 -1
  33. package/data-structures/Hinkal/Hinkal.mjs +1 -1
  34. package/data-structures/Hinkal/IHinkal.d.ts +1 -1
  35. package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  36. package/data-structures/Hinkal/handleAutoDepositBack.mjs +15 -15
  37. package/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  38. package/data-structures/Hinkal/hinkalClaimUtxo.mjs +33 -35
  39. package/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  40. package/data-structures/Hinkal/hinkalDepositAndBridge.mjs +43 -49
  41. package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  42. package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +38 -40
  43. package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  44. package/data-structures/Hinkal/hinkalPrivateWallet.mjs +21 -26
  45. package/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  46. package/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +62 -64
  47. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  48. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +49 -50
  49. package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  50. package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +7 -7
  51. package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  52. package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +9 -9
  53. package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  54. package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +8 -8
  55. package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  56. package/data-structures/Hinkal/hinkalSolanaSwap.mjs +50 -51
  57. package/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  58. package/data-structures/Hinkal/hinkalSolanaTransfer.mjs +45 -46
  59. package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  60. package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +38 -39
  61. package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  62. package/data-structures/Hinkal/hinkalSwap.mjs +18 -19
  63. package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  64. package/data-structures/Hinkal/hinkalTransfer.mjs +21 -22
  65. package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  66. package/data-structures/Hinkal/hinkalWithdraw.mjs +24 -25
  67. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  68. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +39 -41
  69. package/error-handling/error-codes.constants.cjs +1 -1
  70. package/error-handling/error-codes.constants.d.ts +2 -0
  71. package/error-handling/error-codes.constants.mjs +2 -0
  72. package/error-handling/get-error.message.cjs +1 -1
  73. package/error-handling/get-error.message.mjs +2 -1
  74. package/functions/index.cjs +1 -1
  75. package/functions/index.mjs +7 -6
  76. package/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  77. package/functions/pre-transaction/buildCommitmentValidationData.d.ts +12 -2
  78. package/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -36
  79. package/functions/pre-transaction/sendV0Transaction.cjs +1 -1
  80. package/functions/pre-transaction/sendV0Transaction.d.ts +2 -2
  81. package/functions/pre-transaction/sendV0Transaction.mjs +63 -58
  82. package/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  83. package/functions/snarkjs/constructGeneralZkProof.d.ts +1 -0
  84. package/functions/snarkjs/constructGeneralZkProof.mjs +6 -5
  85. package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  86. package/functions/snarkjs/constructSolanaZkProof.d.ts +1 -0
  87. package/functions/snarkjs/constructSolanaZkProof.mjs +35 -34
  88. package/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -0
  89. package/functions/snarkjs/generateMainAndCommitmentZkProof.d.ts +11 -0
  90. package/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +16 -0
  91. package/functions/snarkjs/generateZkProof.cjs +1 -1
  92. package/functions/snarkjs/generateZkProof.d.ts +3 -3
  93. package/functions/snarkjs/generateZkProof.mjs +5 -9
  94. package/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
  95. package/functions/snarkjs/generateZkProofEnclave.d.ts +2 -2
  96. package/functions/snarkjs/generateZkProofEnclave.mjs +8 -8
  97. package/functions/snarkjs/generateZkProofSelf.cjs +1 -1
  98. package/functions/snarkjs/generateZkProofSelf.mjs +5 -5
  99. package/functions/snarkjs/index.cjs +1 -1
  100. package/functions/snarkjs/index.d.ts +1 -0
  101. package/functions/snarkjs/index.mjs +1 -0
  102. package/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
  103. package/functions/snarkjs/verifyCommitmentValidationData.mjs +5 -5
  104. package/functions/utils/customEnclaveFunctionsRegister.d.ts +3 -3
  105. package/functions/utils/index.cjs +1 -1
  106. package/functions/utils/index.mjs +5 -5
  107. package/functions/web3/oneInchAPI.cjs +1 -1
  108. package/functions/web3/oneInchAPI.mjs +1 -1
  109. package/index.cjs +1 -1
  110. package/index.mjs +316 -315
  111. package/package.json +2 -2
  112. package/webworker/{logError-fCJ4HXQz.js → logError-DZiJbbaT.js} +1 -1
  113. package/webworker/package.json +2 -2
  114. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  115. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  116. package/webworker/snarkjsWorkerNode.cjs +1 -1
  117. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  118. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  119. package/webworker/utxoWorkerNode.cjs +1 -1
  120. package/webworker/viteWorkerURL.constant.cjs +3 -3
  121. package/webworker/viteWorkerURL.constant.mjs +3 -3
  122. package/webworker/workerFactory.cjs +1 -1
  123. package/webworker/workerFactory.mjs +2 -2
  124. package/webworker/{workerProxy-BNBqYien.js → workerProxy-DQJE57Ye.js} +1 -1
  125. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  126. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  127. package/webworker/zkProofWorkerNode.cjs +1 -1
@@ -15,109 +15,103 @@ import { validateAndGetChainId as m } from "../../functions/utils/token-check.ut
15
15
  import { constructAdminData as h } from "../../functions/pre-transaction/constructAdminData.mjs";
16
16
  import { getFeeStructure as g } from "../../functions/pre-transaction/getFeeStructure.mjs";
17
17
  import { waitForDepositedUtxosInMerkleTree as _ } from "../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.mjs";
18
- import { buildCommitmentValidationData as v } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
19
- import "../../functions/pre-transaction/index.mjs";
20
- import { convertEmporiumOpToCallInfo as y } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
21
- import { calculateModifiedFeeStructure as b } from "../../functions/utils/fees.utils.mjs";
18
+ import { convertEmporiumOpToCallInfo as v } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
19
+ import { calculateModifiedFeeStructure as y } from "../../functions/utils/fees.utils.mjs";
22
20
  import "../../functions/utils/index.mjs";
23
- import { createLifiBridgeOps as x, getAuthorizationDataIfNeeded as S } from "../../functions/private-wallet/emporium.helpers.mjs";
24
- import { constructZkProof as C } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
25
- import { transactCallRelayerBatch as w } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
26
- import { safeUpdateDepositAndWithdrawStatus as T } from "../../API/deposit-and-withdraw-status-calls.mjs";
27
- import { hinkalDepositOnChainUtxos as E } from "./hinkalDepositOnChainUtxos.mjs";
21
+ import { createLifiBridgeOps as b, getAuthorizationDataIfNeeded as x } from "../../functions/private-wallet/emporium.helpers.mjs";
22
+ import { constructZkProof as S } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
23
+ import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
24
+ import { safeUpdateDepositAndWithdrawStatus as w } from "../../API/deposit-and-withdraw-status-calls.mjs";
25
+ import { hinkalDepositOnChainUtxos as T } from "./hinkalDepositOnChainUtxos.mjs";
28
26
  import "../../functions/index.mjs";
29
27
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
30
- var D = async (n, o, s, d, m, g, _, y, E, D, O) => {
28
+ var E = async (n, o, s, d, m, g, _, v, T, E, D) => {
31
29
  if (d.length === 0) throw Error("No recipients to bridge");
32
- let k = s.erc20TokenAddress, { contractData: A } = t[o], { emporiumAddress: j } = A;
33
- if (!j) throw Error("No Emporium Address");
34
- let M = l[e.Lifi][o];
35
- if (!M) throw Error(`LIFI not configured for chain ${o}`);
36
- let N = await n.getRandomRelay(o);
37
- if (!N) throw Error(u.RELAYER_NOT_AVAILABLE);
38
- let P = await n.getEthereumAddressByChain(o), F = f().toString(), I = n.generateProofRemotely ? 5 : 1, L = [];
39
- for (let t = 0; t < d.length; t += I) {
40
- let i = d.slice(t, t + I), l = await Promise.all(i.map(async ({ utxo: t, nativeUtxo: i, bridgeAmount: l, quote: u, temporarySubAccount: d, recipientAddress: f }) => {
30
+ let O = s.erc20TokenAddress, { contractData: k } = t[o], { emporiumAddress: A } = k;
31
+ if (!A) throw Error("No Emporium Address");
32
+ let j = l[e.Lifi][o];
33
+ if (!j) throw Error(`LIFI not configured for chain ${o}`);
34
+ let M = await n.getRandomRelay(o);
35
+ if (!M) throw Error(u.RELAYER_NOT_AVAILABLE);
36
+ let N = await n.getEthereumAddressByChain(o), P = f().toString(), F = n.generateProofRemotely ? 5 : 1, I = [];
37
+ for (let t = 0; t < d.length; t += F) {
38
+ let i = d.slice(t, t + F), l = await Promise.all(i.map(async ({ utxo: t, nativeUtxo: i, bridgeAmount: l, quote: u, temporarySubAccount: d, recipientAddress: f }) => {
41
39
  await c.addTemporaryWalletNonce(o, g, d.index);
42
- let _ = u.nativeFee > 0n && !a(k, r), y = [k], w = [-t.amount], T = [!1], E = new p({
40
+ let _ = u.nativeFee > 0n && !a(O, r), v = [O], C = [-t.amount], w = [!1], T = new p({
43
41
  amount: 0n,
44
- erc20TokenAddress: k,
42
+ erc20TokenAddress: O,
45
43
  nullifyingKey: n.userKeys.getShieldedPrivateKey(),
46
- timeStamp: F,
44
+ timeStamp: P,
47
45
  ...t.isNewStyle ? {
48
46
  spendingPublicKey: n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
49
47
  isNewStyle: !0
50
48
  } : { isNewStyle: !1 }
51
- }), O = [[t, E]], A = [[E]];
49
+ }), D = [[t, T]], k = [[T]];
52
50
  if (_ && i) {
53
51
  let e = new p({
54
52
  amount: 0n,
55
53
  erc20TokenAddress: r,
56
54
  nullifyingKey: n.userKeys.getShieldedPrivateKey(),
57
- timeStamp: F,
55
+ timeStamp: P,
58
56
  ...i.isNewStyle ? {
59
57
  spendingPublicKey: n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
60
58
  isNewStyle: !0
61
59
  } : { isNewStyle: !1 }
62
60
  });
63
- y.push(r), w.push(-i.amount), T.push(!1), O.push([i, e]), A.push([e]);
61
+ v.push(r), C.push(-i.amount), w.push(!1), D.push([i, e]), k.push([e]);
64
62
  }
65
- let I = x(n, o, d.ethAddress, M, k, t.amount, l, u), L = await b(o, s, l, m), R = h(D, o, y, [-t.amount], P), [{ zkCallData: z, circomData: B, dimData: V }, H, U] = await Promise.all([
66
- C(n.merkleTreeHinkalByChain[o], O, A, n.userKeys, e.Emporium, j, I, n.generateProofRemotely, L, N ?? r, o, T, void 0, void 0, d.privateKey),
67
- S(o, d.privateKey),
68
- v(o, n.userKeys, y, O)
69
- ]);
63
+ let F = b(n, o, d.ethAddress, j, O, t.amount, l, u), I = await y(o, s, l, m), L = h(E, o, v, [-t.amount], N), [{ zkCallData: R, circomData: z, dimData: B, commitmentValidationData: V }, H] = await Promise.all([S(n.merkleTreeHinkalByChain[o], D, k, n.userKeys, e.Emporium, A, F, n.generateProofRemotely, I, M ?? r, o, w, void 0, void 0, d.privateKey), x(o, d.privateKey)]);
70
64
  return {
71
- zkCallData: z,
72
- dimData: V,
73
- circomData: B,
74
- commitmentValidationData: U,
65
+ zkCallData: R,
66
+ dimData: B,
67
+ circomData: z,
68
+ commitmentValidationData: V,
75
69
  authorizationData: H,
76
70
  recipientAddress: f,
77
- adminData: R
71
+ adminData: L
78
72
  };
79
73
  }));
80
- L.push(...l);
74
+ I.push(...l);
81
75
  }
82
- await T({
76
+ await w({
83
77
  id: _,
84
78
  chainId: o,
85
79
  hashedEthereumAddress: g,
86
80
  phase: i.BEFORE_SCHEDULE_WITHDRAW
87
81
  });
88
- let R = await w(o, L, g, y, E, O);
89
- return await T({
82
+ let L = await C(o, I, g, v, T, D);
83
+ return await w({
90
84
  id: _,
91
85
  chainId: o,
92
86
  hashedEthereumAddress: g,
93
87
  phase: i.AFTER_SCHEDULE_WITHDRAW,
94
- scheduleId: R
95
- }), R;
96
- }, O = async (t, i, c, u, f, p, h, v, b = !0) => {
97
- let S = i.erc20TokenAddress, C = m([i]), w = v ? s(v) : void 0, T = o(await t.getEthereumAddressByChain(C)), O = l[e.Lifi][C];
88
+ scheduleId: L
89
+ }), L;
90
+ }, D = async (t, i, c, u, f, p, h, y, x = !0) => {
91
+ let S = i.erc20TokenAddress, C = m([i]), w = y ? s(y) : void 0, D = o(await t.getEthereumAddressByChain(C)), O = l[e.Lifi][C];
98
92
  if (!O) throw Error("LIFI router not configured");
99
93
  let k;
100
94
  if (f) k = f;
101
95
  else {
102
- let r = c[0], i = x(t, C, r.temporarySubAccount.ethAddress, O, S, r.bridgeAmount, r.bridgeAmount, r.quote).map((e) => y(e, r.temporarySubAccount.ethAddress, C));
96
+ let r = c[0], i = b(t, C, r.temporarySubAccount.ethAddress, O, S, r.bridgeAmount, r.bridgeAmount, r.quote).map((e) => v(e, r.temporarySubAccount.ethAddress, C));
103
97
  k = await g(C, S, [S], e.Emporium, i, n);
104
98
  }
105
99
  let A = {
106
100
  feeToken: k.feeToken,
107
101
  flatFee: 0n,
108
102
  variableRate: 0n
109
- }, j = c.reduce((e, t) => e + t.quote.nativeFee, 0n) > 0n && !a(S, r), M = c.map((e) => e.bridgeAmount), N = c.map((e) => e.recipientAddress), { userDepositedUtxos: P, statusId: F, depositTxHash: I } = await E(t, C, i, M, N, k, T, b), L = [];
103
+ }, j = c.reduce((e, t) => e + t.quote.nativeFee, 0n) > 0n && !a(S, r), M = c.map((e) => e.bridgeAmount), N = c.map((e) => e.recipientAddress), { userDepositedUtxos: P, statusId: F, depositTxHash: I } = await T(t, C, i, M, N, k, D, x), L = [];
110
104
  if (j) {
111
105
  let e = d(r, C);
112
106
  if (!e) throw Error("No native token");
113
- let { userDepositedUtxos: n } = await E(t, C, e, c.map((e) => e.quote.nativeFee), N, A, T, b);
107
+ let { userDepositedUtxos: n } = await T(t, C, e, c.map((e) => e.quote.nativeFee), N, A, D, x);
114
108
  L = n;
115
109
  }
116
- return await _(t, C, [...P, ...L]), await D(t, C, i, c.map((e, t) => ({
110
+ return await _(t, C, [...P, ...L]), await E(t, C, i, c.map((e, t) => ({
117
111
  ...e,
118
112
  utxo: P[t].utxo,
119
113
  nativeUtxo: j ? L[t]?.utxo : void 0
120
- })), k, T, F, u, p, h, w), I;
114
+ })), k, D, F, u, p, h, w), I;
121
115
  };
122
116
  //#endregion
123
- export { O as hinkalDepositAndBridge };
117
+ export { D as hinkalDepositAndBridge };
@@ -1 +1 @@
1
- const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/caseInsensitive.utils.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../../functions/utils/time.utils.cjs`),c=require(`../utxo/Utxo.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../API/deposit-and-withdraw-status-calls.cjs`),y=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var b=async(e,a,u,f,p,y,b,x,S,C,w,T)=>{let E=t.isTronLike(a);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let D=u.erc20TokenAddress,[O,k]=await Promise.all([e.getRandomRelay(a),e.getEthereumAddressByChain(a)]);if(!O)throw Error(o.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=s.getCurrentTimeInSeconds().toString(),j=e.generateProofRemotely&&!E?5:1,M=[],N=l.addressToHexFormat(k);for(let t=0;t<f.length;t+=j){let r=f.slice(t,t+j),o=await Promise.all(r.map(async({recipientAddress:r,utxo:o},s)=>{let f=t+s,_=l.addressToHexFormat(r),v=new c.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:A,...o.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),b=[[i.caseInsensitiveEqual(o.erc20TokenAddress,D)?o:c.Utxo.createFrom(o,{erc20TokenAddress:D}),v]],x=[[v]],S={externalActionId:0n,externalAddress:_,externalActionMetadata:`0x00`},C=d.constructAdminData(w,a,[D],[-o.amount],N),T=await h.calculateModifiedFeeStructure(a,u,p[f],y),[{zkCallData:k,circomData:j,dimData:M},P]=await Promise.all([g.constructZkProof(e.merkleTreeHinkalByChain[a],b,x,e.userKeys,S.externalActionId,S.externalAddress,S.externalActionMetadata,e.generateProofRemotely,T,O??n.zeroAddress,a),m.buildCommitmentValidationData(a,e.userKeys,[D],b)]);return{zkCallData:k,dimData:M,circomData:j,commitmentValidationData:P,adminData:C,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(E,k,M,j)}}));M.push(...o)}await v.safeUpdateDepositAndWithdrawStatus({id:x,chainId:a,hashedEthereumAddress:b,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let P=await _.transactCallRelayerBatch(a,M,b,S,C,T);return await v.safeUpdateDepositAndWithdrawStatus({id:x,chainId:a,hashedEthereumAddress:b,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:P}),P},x=async(t,n,r,i,o,s,c,d,m,h=!0)=>{let g=u.validateAndGetChainId([n]),_=m?a.hashString(m):void 0,v=n.erc20TokenAddress,x=a.hashEthereumAddress(l.addressToHexFormat(await t.getEthereumAddressByChain(g))),S=s??await f.getFeeStructure(g,v,[v],e.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await y.hinkalDepositOnChainUtxos(t,g,n,r,i,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(t,g,C),await b(t,g,n,C,r,S,x,w,o,c,d,_),T};exports.hinkalDepositAndWithdraw=x,exports.hinkalWithdrawBatch=b;
1
+ const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/caseInsensitive.utils.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../../functions/utils/time.utils.cjs`),c=require(`../utxo/Utxo.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(e,a,u,f,p,v,y,b,x,S,C,w)=>{let T=t.isTronLike(a);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([e.getRandomRelay(a),e.getEthereumAddressByChain(a)]);if(!D)throw Error(o.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=s.getCurrentTimeInSeconds().toString(),A=e.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let t=0;t<f.length;t+=A){let r=f.slice(t,t+A),o=await Promise.all(r.map(async({recipientAddress:r,utxo:o},s)=>{let f=t+s,g=l.addressToHexFormat(r),_=new c.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:k,...o.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[i.caseInsensitiveEqual(o.erc20TokenAddress,E)?o:c.Utxo.createFrom(o,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,a,[E],[-o.amount],M),w=await m.calculateModifiedFeeStructure(a,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(e.merkleTreeHinkalByChain[a],y,b,e.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,e.generateProofRemotely,w,D??n.zeroAddress,a);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...o)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:a,hashedEthereumAddress:y,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(a,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:a,hashedEthereumAddress:y,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(t,n,r,i,o,s,c,d,m,h=!0)=>{let g=u.validateAndGetChainId([n]),_=m?a.hashString(m):void 0,b=n.erc20TokenAddress,x=a.hashEthereumAddress(l.addressToHexFormat(await t.getEthereumAddressByChain(g))),S=s??await f.getFeeStructure(g,b,[b],e.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(t,g,n,r,i,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(t,g,C),await y(t,g,n,C,r,S,x,w,o,c,d,_),T};exports.hinkalDepositAndWithdraw=b,exports.hinkalWithdrawBatch=y;
@@ -13,66 +13,64 @@ import { validateAndGetChainId as f } from "../../functions/utils/token-check.ut
13
13
  import { constructAdminData as p } from "../../functions/pre-transaction/constructAdminData.mjs";
14
14
  import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
15
  import { waitForDepositedUtxosInMerkleTree as h } from "../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.mjs";
16
- import { buildCommitmentValidationData as g } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
17
- import "../../functions/pre-transaction/index.mjs";
18
- import { calculateModifiedFeeStructure as _ } from "../../functions/utils/fees.utils.mjs";
19
- import { constructZkProof as v } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
20
- import { transactCallRelayerBatch as y } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
- import { safeUpdateDepositAndWithdrawStatus as b } from "../../API/deposit-and-withdraw-status-calls.mjs";
22
- import { hinkalDepositOnChainUtxos as x } from "./hinkalDepositOnChainUtxos.mjs";
16
+ import { calculateModifiedFeeStructure as g } from "../../functions/utils/fees.utils.mjs";
17
+ import { constructZkProof as _ } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
18
+ import { transactCallRelayerBatch as v } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
19
+ import { safeUpdateDepositAndWithdrawStatus as y } from "../../API/deposit-and-withdraw-status-calls.mjs";
20
+ import { hinkalDepositOnChainUtxos as b } from "./hinkalDepositOnChainUtxos.mjs";
23
21
  import "../../functions/index.mjs";
24
22
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.ts
25
- var S = async (e, a, o, f, m, h, x, S, C, w, T, E) => {
26
- let D = t(a);
23
+ var x = async (e, a, o, f, m, h, b, x, S, C, w, T) => {
24
+ let E = t(a);
27
25
  if (f.length === 0) throw Error("userDepositedUtxos must not be empty");
28
- let O = o.erc20TokenAddress, [k, A] = await Promise.all([e.getRandomRelay(a), e.getEthereumAddressByChain(a)]);
29
- if (!k) throw Error(s.RELAYER_NOT_AVAILABLE);
30
- let j = c().toString(), M = e.generateProofRemotely && !D ? 5 : 1, N = [], P = u(A);
31
- for (let t = 0; t < f.length; t += M) {
32
- let r = f.slice(t, t + M), s = await Promise.all(r.map(async ({ recipientAddress: r, utxo: s }, c) => {
33
- let f = t + c, y = u(r), b = new l({
26
+ let D = o.erc20TokenAddress, [O, k] = await Promise.all([e.getRandomRelay(a), e.getEthereumAddressByChain(a)]);
27
+ if (!O) throw Error(s.RELAYER_NOT_AVAILABLE);
28
+ let A = c().toString(), j = e.generateProofRemotely && !E ? 5 : 1, M = [], N = u(k);
29
+ for (let t = 0; t < f.length; t += j) {
30
+ let r = f.slice(t, t + j), s = await Promise.all(r.map(async ({ recipientAddress: r, utxo: s }, c) => {
31
+ let f = t + c, v = u(r), y = new l({
34
32
  amount: 0n,
35
- erc20TokenAddress: O,
33
+ erc20TokenAddress: D,
36
34
  nullifyingKey: e.userKeys.getShieldedPrivateKey(),
37
- timeStamp: j,
35
+ timeStamp: A,
38
36
  ...s.isNewStyle ? {
39
37
  spendingPublicKey: e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
40
38
  isNewStyle: !0
41
39
  } : { isNewStyle: !1 }
42
- }), x = [[i(s.erc20TokenAddress, O) ? s : l.createFrom(s, { erc20TokenAddress: O }), b]], S = [[b]], C = {
40
+ }), b = [[i(s.erc20TokenAddress, D) ? s : l.createFrom(s, { erc20TokenAddress: D }), y]], x = [[y]], S = {
43
41
  externalActionId: 0n,
44
- externalAddress: y,
42
+ externalAddress: v,
45
43
  externalActionMetadata: "0x00"
46
- }, w = p(T, a, [O], [-s.amount], P), E = await _(a, o, m[f], h), [{ zkCallData: A, circomData: M, dimData: N }, F] = await Promise.all([v(e.merkleTreeHinkalByChain[a], x, S, e.userKeys, C.externalActionId, C.externalAddress, C.externalActionMetadata, e.generateProofRemotely, E, k ?? n, a), g(a, e.userKeys, [O], x)]);
44
+ }, C = p(w, a, [D], [-s.amount], N), T = await g(a, o, m[f], h), { zkCallData: k, circomData: j, dimData: M, commitmentValidationData: P } = await _(e.merkleTreeHinkalByChain[a], b, x, e.userKeys, S.externalActionId, S.externalAddress, S.externalActionMetadata, e.generateProofRemotely, T, O ?? n, a);
47
45
  return {
48
- zkCallData: A,
49
- dimData: N,
50
- circomData: M,
51
- commitmentValidationData: F,
52
- adminData: w,
46
+ zkCallData: k,
47
+ dimData: M,
48
+ circomData: j,
49
+ commitmentValidationData: P,
50
+ adminData: C,
53
51
  recipientAddress: r,
54
- tronProofSignature: await d(D, A, N, M)
52
+ tronProofSignature: await d(E, k, M, j)
55
53
  };
56
54
  }));
57
- N.push(...s);
55
+ M.push(...s);
58
56
  }
59
- await b({
60
- id: S,
57
+ await y({
58
+ id: x,
61
59
  chainId: a,
62
- hashedEthereumAddress: x,
60
+ hashedEthereumAddress: b,
63
61
  phase: r.BEFORE_SCHEDULE_WITHDRAW
64
62
  });
65
- let F = await y(a, N, x, C, w, E);
66
- return await b({
67
- id: S,
63
+ let P = await v(a, M, b, S, C, T);
64
+ return await y({
65
+ id: x,
68
66
  chainId: a,
69
- hashedEthereumAddress: x,
67
+ hashedEthereumAddress: b,
70
68
  phase: r.AFTER_SCHEDULE_WITHDRAW,
71
- scheduleId: F
72
- }), F;
73
- }, C = async (t, n, r, i, s, c, l, d, p, g = !0) => {
74
- let _ = f([n]), v = p ? o(p) : void 0, y = n.erc20TokenAddress, b = a(u(await t.getEthereumAddressByChain(_))), C = c ?? await m(_, y, [y], e.Transact, [], 10n), { userDepositedUtxos: w, statusId: T, depositTxHash: E } = await x(t, _, n, r, i, C, b, g);
75
- return await h(t, _, w), await S(t, _, n, w, r, C, b, T, s, l, d, v), E;
69
+ scheduleId: P
70
+ }), P;
71
+ }, S = async (t, n, r, i, s, c, l, d, p, g = !0) => {
72
+ let _ = f([n]), v = p ? o(p) : void 0, y = n.erc20TokenAddress, S = a(u(await t.getEthereumAddressByChain(_))), C = c ?? await m(_, y, [y], e.Transact, [], 10n), { userDepositedUtxos: w, statusId: T, depositTxHash: E } = await b(t, _, n, r, i, C, S, g);
73
+ return await h(t, _, w), await x(t, _, n, w, r, C, S, T, s, l, d, v), E;
76
74
  };
77
75
  //#endregion
78
- export { C as hinkalDepositAndWithdraw, S as hinkalWithdrawBatch };
76
+ export { S as hinkalDepositAndWithdraw, x as hinkalWithdrawBatch };
@@ -1 +1 @@
1
- const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/admin.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`);require(`../../error-handling/index.cjs`);const l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/recipientUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const m=require(`../../functions/utils/involves-permit2-op.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/private-wallet/emporium.helpers.cjs`),_=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),b=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),x=require(`./handleAutoDepositBack.cjs`);var S=async(e,t,n,r,i)=>{let a=[...await s.addPaddingToUtxos(e,t,n,r)],l=[],u=o.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=c.outputUtxoProcessing(e.userKeys,a[t],r[t],u);l.push(n)}return i&&d.recipientUtxoProcessing(i,l,r,u),{inputUtxosArray:a,outputUtxosArray:l}},C=async(o,s,c,d,C,w,T,E,D,O,k,A=!1,j,M,N)=>{if(N&&!i.isValidPrivateAddress(N.recipientInfo))throw Error(a.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(T.length>0&&!E)throw Error(`Subaccount is required for private wallet transactions`);let P=c.map(e=>e.erc20TokenAddress),F=await o.getEthereumAddressByChain(s),I=E?u.AccountActions.getAddressFromSubAccount(s,E):void 0,{contractData:L}=t.networkRegistry[s],{emporiumAddress:R}=L;if(!R)throw Error(`No Emporium Address Provided`);let z=O??await f.getFeeStructure(s,D,P,e.ExternalActionId.Emporium,w.map(e=>h.convertEmporiumOpToCallInfo(e,I??``,s)));for(I?await b.mergeWithFeeStructureEmporium(o,s,I,w,P,d,z,T.find(e=>r.caseInsensitiveEqual(e.token.erc20TokenAddress,z.feeToken))?.amount??0n):y.mergeWithFeeStructure(s,P,d,z);C.length<P.length;)C.push(!1);let[{inputUtxosArray:B,outputUtxosArray:V},H]=await Promise.all([S(o,s,P,d,N),k??await o.getRandomRelay(s,!0)]);if(!H)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let U=E?u.AccountActions.getPrivateKeyFromSubAccount(s,E):void 0,[{zkCallData:W,circomData:G,dimData:K},q,J]=await Promise.all([_.constructZkProof(o.merkleTreeHinkalByChain[s],B,V,o.userKeys,e.ExternalActionId.Emporium,R,w,o.generateProofRemotely,z,H,s,C,void 0,void 0,U),g.getAuthorizationDataIfNeeded(s,U),p.buildCommitmentValidationData(s,o.userKeys,P,B)]),Y=await v.transactCallRelayer(s,W,K,G,J,m.uniswapWorkaround(w),q,l.constructAdminData(M,s,T.map(e=>e.token.erc20TokenAddress),T.map(e=>e.amount),F,M===n.AdminTransactionType.PublicSwap?T.map(({token:e})=>e):void 0));return A&&E&&x.handleAutoDepositBack(o,s,I,E,z.feeToken,j,T,G),Y};exports.hinkalPrivateWallet=C;
1
+ const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/admin.types.cjs`),r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`);require(`../../error-handling/index.cjs`);const l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/recipientUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/involves-permit2-op.cjs`),m=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),h=require(`../../functions/private-wallet/emporium.helpers.cjs`),g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),b=require(`./handleAutoDepositBack.cjs`);var x=async(e,t,n,r,i)=>{let a=[...await s.addPaddingToUtxos(e,t,n,r)],l=[],u=o.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=c.outputUtxoProcessing(e.userKeys,a[t],r[t],u);l.push(n)}return i&&d.recipientUtxoProcessing(i,l,r,u),{inputUtxosArray:a,outputUtxosArray:l}},S=async(o,s,c,d,S,C,w,T,E,D,O,k=!1,A,j,M)=>{if(M&&!i.isValidPrivateAddress(M.recipientInfo))throw Error(a.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(w.length>0&&!T)throw Error(`Subaccount is required for private wallet transactions`);let N=c.map(e=>e.erc20TokenAddress),P=await o.getEthereumAddressByChain(s),F=T?u.AccountActions.getAddressFromSubAccount(s,T):void 0,{contractData:I}=t.networkRegistry[s],{emporiumAddress:L}=I;if(!L)throw Error(`No Emporium Address Provided`);let R=D??await f.getFeeStructure(s,E,N,e.ExternalActionId.Emporium,C.map(e=>m.convertEmporiumOpToCallInfo(e,F??``,s)));for(F?await y.mergeWithFeeStructureEmporium(o,s,F,C,N,d,R,w.find(e=>r.caseInsensitiveEqual(e.token.erc20TokenAddress,R.feeToken))?.amount??0n):v.mergeWithFeeStructure(s,N,d,R);S.length<N.length;)S.push(!1);let[{inputUtxosArray:z,outputUtxosArray:B},V]=await Promise.all([x(o,s,N,d,M),O??await o.getRandomRelay(s,!0)]);if(!V)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=T?u.AccountActions.getPrivateKeyFromSubAccount(s,T):void 0,[{zkCallData:U,circomData:W,dimData:G,commitmentValidationData:K},q]=await Promise.all([g.constructZkProof(o.merkleTreeHinkalByChain[s],z,B,o.userKeys,e.ExternalActionId.Emporium,L,C,o.generateProofRemotely,R,V,s,S,void 0,void 0,H),h.getAuthorizationDataIfNeeded(s,H)]),J=await _.transactCallRelayer(s,U,G,W,K,p.uniswapWorkaround(C),q,l.constructAdminData(j,s,w.map(e=>e.token.erc20TokenAddress),w.map(e=>e.amount),P,j===n.AdminTransactionType.PublicSwap?w.map(({token:e})=>e):void 0));return k&&T&&b.handleAutoDepositBack(o,s,F,T,R.feeToken,A,w,W),J};exports.hinkalPrivateWallet=S;
@@ -12,18 +12,17 @@ import { constructAdminData as l } from "../../functions/pre-transaction/constru
12
12
  import { AccountActions as u } from "../AccountActions/AccountActions.mjs";
13
13
  import { recipientUtxoProcessing as d } from "../../functions/pre-transaction/recipientUtxoProcessing.mjs";
14
14
  import { getFeeStructure as f } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
- import { buildCommitmentValidationData as p } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
16
15
  import "../../functions/pre-transaction/index.mjs";
17
- import { uniswapWorkaround as m } from "../../functions/utils/involves-permit2-op.mjs";
18
- import { convertEmporiumOpToCallInfo as h } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
19
- import { getAuthorizationDataIfNeeded as g } from "../../functions/private-wallet/emporium.helpers.mjs";
20
- import { constructZkProof as _ } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
21
- import { transactCallRelayer as v } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
22
- import { mergeWithFeeStructure as y } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
23
- import { mergeWithFeeStructureEmporium as b } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
24
- import { handleAutoDepositBack as x } from "./handleAutoDepositBack.mjs";
16
+ import { uniswapWorkaround as p } from "../../functions/utils/involves-permit2-op.mjs";
17
+ import { convertEmporiumOpToCallInfo as m } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
18
+ import { getAuthorizationDataIfNeeded as h } from "../../functions/private-wallet/emporium.helpers.mjs";
19
+ import { constructZkProof as g } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
20
+ import { transactCallRelayer as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
+ import { mergeWithFeeStructure as v } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
22
+ import { mergeWithFeeStructureEmporium as y } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
23
+ import { handleAutoDepositBack as b } from "./handleAutoDepositBack.mjs";
25
24
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalPrivateWallet.ts
26
- var S = async (e, t, n, r, i) => {
25
+ var x = async (e, t, n, r, i) => {
27
26
  let a = [...await s(e, t, n, r)], l = [], u = o().toString();
28
27
  for (let t = 0; t < n.length; t += 1) {
29
28
  let { outputUtxos: n } = c(e.userKeys, a[t], r[t], u);
@@ -33,21 +32,17 @@ var S = async (e, t, n, r, i) => {
33
32
  inputUtxosArray: a,
34
33
  outputUtxosArray: l
35
34
  };
36
- }, C = async (o, s, c, d, C, w, T, E, D, O, k, A = !1, j, M, N) => {
37
- if (N && !i(N.recipientInfo)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
38
- if (T.length > 0 && !E) throw Error("Subaccount is required for private wallet transactions");
39
- let P = c.map((e) => e.erc20TokenAddress), F = await o.getEthereumAddressByChain(s), I = E ? u.getAddressFromSubAccount(s, E) : void 0, { contractData: L } = t[s], { emporiumAddress: R } = L;
40
- if (!R) throw Error("No Emporium Address Provided");
41
- let z = O ?? await f(s, D, P, e.Emporium, w.map((e) => h(e, I ?? "", s)));
42
- for (I ? await b(o, s, I, w, P, d, z, T.find((e) => r(e.token.erc20TokenAddress, z.feeToken))?.amount ?? 0n) : y(s, P, d, z); C.length < P.length;) C.push(!1);
43
- let [{ inputUtxosArray: B, outputUtxosArray: V }, H] = await Promise.all([S(o, s, P, d, N), k ?? await o.getRandomRelay(s, !0)]);
44
- if (!H) throw Error(a.RELAYER_NOT_AVAILABLE);
45
- let U = E ? u.getPrivateKeyFromSubAccount(s, E) : void 0, [{ zkCallData: W, circomData: G, dimData: K }, q, J] = await Promise.all([
46
- _(o.merkleTreeHinkalByChain[s], B, V, o.userKeys, e.Emporium, R, w, o.generateProofRemotely, z, H, s, C, void 0, void 0, U),
47
- g(s, U),
48
- p(s, o.userKeys, P, B)
49
- ]), Y = await v(s, W, K, G, J, m(w), q, l(M, s, T.map((e) => e.token.erc20TokenAddress), T.map((e) => e.amount), F, M === n.PublicSwap ? T.map(({ token: e }) => e) : void 0));
50
- return A && E && x(o, s, I, E, z.feeToken, j, T, G), Y;
35
+ }, S = async (o, s, c, d, S, C, w, T, E, D, O, k = !1, A, j, M) => {
36
+ if (M && !i(M.recipientInfo)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
37
+ if (w.length > 0 && !T) throw Error("Subaccount is required for private wallet transactions");
38
+ let N = c.map((e) => e.erc20TokenAddress), P = await o.getEthereumAddressByChain(s), F = T ? u.getAddressFromSubAccount(s, T) : void 0, { contractData: I } = t[s], { emporiumAddress: L } = I;
39
+ if (!L) throw Error("No Emporium Address Provided");
40
+ let R = D ?? await f(s, E, N, e.Emporium, C.map((e) => m(e, F ?? "", s)));
41
+ for (F ? await y(o, s, F, C, N, d, R, w.find((e) => r(e.token.erc20TokenAddress, R.feeToken))?.amount ?? 0n) : v(s, N, d, R); S.length < N.length;) S.push(!1);
42
+ let [{ inputUtxosArray: z, outputUtxosArray: B }, V] = await Promise.all([x(o, s, N, d, M), O ?? await o.getRandomRelay(s, !0)]);
43
+ if (!V) throw Error(a.RELAYER_NOT_AVAILABLE);
44
+ let H = T ? u.getPrivateKeyFromSubAccount(s, T) : void 0, [{ zkCallData: U, circomData: W, dimData: G, commitmentValidationData: K }, q] = await Promise.all([g(o.merkleTreeHinkalByChain[s], z, B, o.userKeys, e.Emporium, L, C, o.generateProofRemotely, R, V, s, S, void 0, void 0, H), h(s, H)]), J = await _(s, U, G, W, K, p(C), q, l(j, s, w.map((e) => e.token.erc20TokenAddress), w.map((e) => e.amount), P, j === n.PublicSwap ? w.map(({ token: e }) => e) : void 0));
45
+ return k && T && b(o, s, F, T, R.feeToken, A, w, W), J;
51
46
  };
52
47
  //#endregion
53
- export { C as hinkalPrivateWallet };
48
+ export { S as hinkalPrivateWallet };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../crypto-keys/keys.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../utxo/Utxo.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`),d=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const f=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let m=require(`ethers`);var h=async(h,g,_,v,y)=>{let b=c.validateAndGetChainId([g]),x=g.erc20TokenAddress;if(_.getTokenAddress(b)!==x)throw Error(`Off-chain UTXO token mismatch`);let S=y?new a.UserKeys(y):new a.UserKeys(_.nullifyingKey,_.nullifyingKey);if(!_.nullifyingKey&&!y)throw Error(`Claimable UTXO nullifyingKey is missing`);let C=S.getShieldedPrivateKey();if(_.nullifyingKey&&_.nullifyingKey!==C)throw Error(`Claimable UTXO key mismatch`);let{originalDeployer:w}=t.networkRegistry[b].contractData;if(!w)throw Error(`missing data`);let T=s.Utxo.createFrom(_,{nullifyingKey:C}),E=v??await u.getFeeStructure(b,x,[x],e.ExternalActionId.Transact,void 0,void 0,{mintTo:x,nullifierCount:1});if(E.feeToken!==x)throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let D=E.variableRate>0n?E.variableRate:n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(T.amount<=E.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let O=T.amount-E.flatFee,k=O*D/10000n,A=O-k;if(A<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let j=E.flatFee+k,[M,N,P,,F]=h.getRecipientInfo().split(`,`);if(!N||!P||!M||!F)throw Error(`Invalid recipient info`);let I=o.getCurrentTimeInSeconds().toString(),L=new s.Utxo({amount:0n,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,nullifyingKey:S.getShieldedPrivateKey(),...T.isNewStyle?{spendingPublicKey:S.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),R=new s.Utxo({amount:0n,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,nullifyingKey:S.getShieldedPrivateKey(),timeStamp:I,spendingPublicKey:S.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),z=new s.Utxo({amount:A,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,timeStamp:I,H0:[BigInt(N),BigInt(P)],stealthAddress:M,encryptionKey:F,isNewStyle:!0}),B=[T,L],V=[R,z],H=await h.getRandomRelay(b,!0);if(!H)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let U=a.UserKeys.findCorrectRandomization(i.randomBigInt(31),S.getShieldedPrivateKey()),W={tokenNumber:1,nullifierAmount:B.length,outputAmount:V.length},G=l.calcEncryptedOutputs([V])[0].map(e=>Array.from(m.ethers.getBytes(e))),[{proofAArr:K,proofBArr:q,proofCArr:J,publicInputsArr:Y},X]=await Promise.all([f.constructSolanaZkProof(h.generateProofRemotely,h.merkleTreeHinkalByChain[b],S,[x],[B],[V],U,j,0n,n.solanaNativeAddress,H,W,G,b),d.buildCommitmentValidationData(b,S,[x],[B])]),Z={recipient:H,mint:x===`11111111111111111111111111111111`?void 0:x};return p.solanaTransactCallRelayer({chainId:b,relayAddress:H,functionName:`transfer`,args:{proofAArr:K,proofBArr:q,proofCArr:J,publicInputsArr:Y,encryptedOutputs:G,relayerFee:j.toString(),dimensions:W},accounts:Z,commitmentValidationData:X})};exports.hinkalSolanaClaimUtxo=h;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../crypto-keys/keys.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../utxo/Utxo.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`),d=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),f=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let p=require(`ethers`);var m=async(m,h,g,_,v)=>{let y=c.validateAndGetChainId([h]),b=h.erc20TokenAddress;if(g.getTokenAddress(y)!==b)throw Error(`Off-chain UTXO token mismatch`);let x=v?new a.UserKeys(v):new a.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let S=x.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==S)throw Error(`Claimable UTXO key mismatch`);let{originalDeployer:C}=t.networkRegistry[y].contractData;if(!C)throw Error(`missing data`);let w=s.Utxo.createFrom(g,{nullifyingKey:S}),T=_??await u.getFeeStructure(y,b,[b],e.ExternalActionId.Transact,void 0,void 0,{mintTo:b,nullifierCount:1});if(T.feeToken!==b)throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let E=T.variableRate>0n?T.variableRate:n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(w.amount<=T.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let D=w.amount-T.flatFee,O=D*E/10000n,k=D-O;if(k<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let A=T.flatFee+O,[j,M,N,,P]=m.getRecipientInfo().split(`,`);if(!M||!N||!j||!P)throw Error(`Invalid recipient info`);let F=o.getCurrentTimeInSeconds().toString(),I=new s.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),...w.isNewStyle?{spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),L=new s.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),timeStamp:F,spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),R=new s.Utxo({amount:k,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,timeStamp:F,H0:[BigInt(M),BigInt(N)],stealthAddress:j,encryptionKey:P,isNewStyle:!0}),z=[w,I],B=[L,R],V=await m.getRandomRelay(y,!0);if(!V)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=a.UserKeys.findCorrectRandomization(i.randomBigInt(31),x.getShieldedPrivateKey()),U={tokenNumber:1,nullifierAmount:z.length,outputAmount:B.length},W=l.calcEncryptedOutputs([B])[0].map(e=>Array.from(p.ethers.getBytes(e))),{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,commitmentValidationData:Y}=await d.constructSolanaZkProof(m.generateProofRemotely,m.merkleTreeHinkalByChain[y],x,[b],[z],[B],H,A,0n,n.solanaNativeAddress,V,U,W,y),X={recipient:V,mint:b===`11111111111111111111111111111111`?void 0:b};return f.solanaTransactCallRelayer({chainId:y,relayAddress:V,functionName:`transfer`,args:{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,encryptedOutputs:W,relayerFee:A.toString(),dimensions:U},accounts:X,commitmentValidationData:Y})};exports.hinkalSolanaClaimUtxo=m;
@@ -10,84 +10,82 @@ import { Utxo as c } from "../utxo/Utxo.mjs";
10
10
  import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
11
11
  import { calcEncryptedOutputs as u } from "../../functions/snarkjs/common.snarkjs.mjs";
12
12
  import { getFeeStructure as d } from "../../functions/pre-transaction/getFeeStructure.mjs";
13
- import { buildCommitmentValidationData as f } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
14
- import "../../functions/pre-transaction/index.mjs";
15
- import { constructSolanaZkProof as p } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
16
- import { solanaTransactCallRelayer as m } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
17
- import { ethers as h } from "ethers";
13
+ import { constructSolanaZkProof as f } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
14
+ import { solanaTransactCallRelayer as p } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
15
+ import { ethers as m } from "ethers";
18
16
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.ts
19
- var g = async (g, _, v, y, b) => {
20
- let x = l([_]), S = _.erc20TokenAddress;
21
- if (v.getTokenAddress(x) !== S) throw Error("Off-chain UTXO token mismatch");
22
- let C = b ? new o(b) : new o(v.nullifyingKey, v.nullifyingKey);
23
- if (!v.nullifyingKey && !b) throw Error("Claimable UTXO nullifyingKey is missing");
24
- let w = C.getShieldedPrivateKey();
25
- if (v.nullifyingKey && v.nullifyingKey !== w) throw Error("Claimable UTXO key mismatch");
26
- let { originalDeployer: T } = t[x].contractData;
27
- if (!T) throw Error("missing data");
28
- let E = c.createFrom(v, { nullifyingKey: w }), D = y ?? await d(x, S, [S], e.Transact, void 0, void 0, {
29
- mintTo: S,
17
+ var h = async (h, g, _, v, y) => {
18
+ let b = l([g]), x = g.erc20TokenAddress;
19
+ if (_.getTokenAddress(b) !== x) throw Error("Off-chain UTXO token mismatch");
20
+ let S = y ? new o(y) : new o(_.nullifyingKey, _.nullifyingKey);
21
+ if (!_.nullifyingKey && !y) throw Error("Claimable UTXO nullifyingKey is missing");
22
+ let C = S.getShieldedPrivateKey();
23
+ if (_.nullifyingKey && _.nullifyingKey !== C) throw Error("Claimable UTXO key mismatch");
24
+ let { originalDeployer: w } = t[b].contractData;
25
+ if (!w) throw Error("missing data");
26
+ let T = c.createFrom(_, { nullifyingKey: C }), E = v ?? await d(b, x, [x], e.Transact, void 0, void 0, {
27
+ mintTo: x,
30
28
  nullifierCount: 1
31
29
  });
32
- if (D.feeToken !== S) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
33
- let O = D.variableRate > 0n ? D.variableRate : n;
34
- if (E.amount <= D.flatFee) throw Error(i.INSUFFICIENT_FUNDS_TO_TRANSACT);
35
- let k = E.amount - D.flatFee, A = k * O / 10000n, j = k - A;
36
- if (j <= 0n) throw Error(i.RECIPIENT_AMOUNT_INVALID);
37
- let M = D.flatFee + A, [N, P, F, , I] = g.getRecipientInfo().split(",");
38
- if (!P || !F || !N || !I) throw Error("Invalid recipient info");
39
- let L = s().toString(), R = new c({
30
+ if (E.feeToken !== x) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
31
+ let D = E.variableRate > 0n ? E.variableRate : n;
32
+ if (T.amount <= E.flatFee) throw Error(i.INSUFFICIENT_FUNDS_TO_TRANSACT);
33
+ let O = T.amount - E.flatFee, k = O * D / 10000n, A = O - k;
34
+ if (A <= 0n) throw Error(i.RECIPIENT_AMOUNT_INVALID);
35
+ let j = E.flatFee + k, [M, N, P, , F] = h.getRecipientInfo().split(",");
36
+ if (!N || !P || !M || !F) throw Error("Invalid recipient info");
37
+ let I = s().toString(), L = new c({
40
38
  amount: 0n,
41
- erc20TokenAddress: E.erc20TokenAddress,
42
- mintAddress: E.mintAddress,
43
- nullifyingKey: C.getShieldedPrivateKey(),
44
- ...E.isNewStyle ? {
45
- spendingPublicKey: C.getSpendingKeyPair().pubSpendingBJJPoint,
39
+ erc20TokenAddress: T.erc20TokenAddress,
40
+ mintAddress: T.mintAddress,
41
+ nullifyingKey: S.getShieldedPrivateKey(),
42
+ ...T.isNewStyle ? {
43
+ spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
46
44
  isNewStyle: !0
47
45
  } : { isNewStyle: !1 }
48
- }), z = new c({
46
+ }), R = new c({
49
47
  amount: 0n,
50
- erc20TokenAddress: E.erc20TokenAddress,
51
- mintAddress: E.mintAddress,
52
- nullifyingKey: C.getShieldedPrivateKey(),
53
- timeStamp: L,
54
- spendingPublicKey: C.getSpendingKeyPair().pubSpendingBJJPoint,
48
+ erc20TokenAddress: T.erc20TokenAddress,
49
+ mintAddress: T.mintAddress,
50
+ nullifyingKey: S.getShieldedPrivateKey(),
51
+ timeStamp: I,
52
+ spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
55
53
  isNewStyle: !0
56
- }), B = new c({
57
- amount: j,
58
- erc20TokenAddress: E.erc20TokenAddress,
59
- mintAddress: E.mintAddress,
60
- timeStamp: L,
61
- H0: [BigInt(P), BigInt(F)],
62
- stealthAddress: N,
63
- encryptionKey: I,
54
+ }), z = new c({
55
+ amount: A,
56
+ erc20TokenAddress: T.erc20TokenAddress,
57
+ mintAddress: T.mintAddress,
58
+ timeStamp: I,
59
+ H0: [BigInt(N), BigInt(P)],
60
+ stealthAddress: M,
61
+ encryptionKey: F,
64
62
  isNewStyle: !0
65
- }), V = [E, R], H = [z, B], U = await g.getRandomRelay(x, !0);
66
- if (!U) throw Error(i.RELAYER_NOT_AVAILABLE);
67
- let W = o.findCorrectRandomization(a(31), C.getShieldedPrivateKey()), G = {
63
+ }), B = [T, L], V = [R, z], H = await h.getRandomRelay(b, !0);
64
+ if (!H) throw Error(i.RELAYER_NOT_AVAILABLE);
65
+ let U = o.findCorrectRandomization(a(31), S.getShieldedPrivateKey()), W = {
68
66
  tokenNumber: 1,
69
- nullifierAmount: V.length,
70
- outputAmount: H.length
71
- }, K = u([H])[0].map((e) => Array.from(h.getBytes(e))), [{ proofAArr: q, proofBArr: J, proofCArr: Y, publicInputsArr: X }, Z] = await Promise.all([p(g.generateProofRemotely, g.merkleTreeHinkalByChain[x], C, [S], [V], [H], W, M, 0n, r, U, G, K, x), f(x, C, [S], [V])]), Q = {
72
- recipient: U,
73
- mint: S === "11111111111111111111111111111111" ? void 0 : S
67
+ nullifierAmount: B.length,
68
+ outputAmount: V.length
69
+ }, G = u([V])[0].map((e) => Array.from(m.getBytes(e))), { proofAArr: K, proofBArr: q, proofCArr: J, publicInputsArr: Y, commitmentValidationData: X } = await f(h.generateProofRemotely, h.merkleTreeHinkalByChain[b], S, [x], [B], [V], U, j, 0n, r, H, W, G, b), Z = {
70
+ recipient: H,
71
+ mint: x === "11111111111111111111111111111111" ? void 0 : x
74
72
  };
75
- return m({
76
- chainId: x,
77
- relayAddress: U,
73
+ return p({
74
+ chainId: b,
75
+ relayAddress: H,
78
76
  functionName: "transfer",
79
77
  args: {
80
- proofAArr: q,
81
- proofBArr: J,
82
- proofCArr: Y,
83
- publicInputsArr: X,
84
- encryptedOutputs: K,
85
- relayerFee: M.toString(),
86
- dimensions: G
78
+ proofAArr: K,
79
+ proofBArr: q,
80
+ proofCArr: J,
81
+ publicInputsArr: Y,
82
+ encryptedOutputs: G,
83
+ relayerFee: j.toString(),
84
+ dimensions: W
87
85
  },
88
- accounts: Q,
89
- commitmentValidationData: Z
86
+ accounts: Z,
87
+ commitmentValidationData: X
90
88
  });
91
89
  };
92
90
  //#endregion
93
- export { g as hinkalSolanaClaimUtxo };
91
+ export { h as hinkalSolanaClaimUtxo };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/web3/etherFunctions.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../functions/utils/time.utils.cjs`),l=require(`../utxo/Utxo.cjs`),u=require(`../../functions/utils/solanaMint.utils.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),v=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const y=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),b=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const x=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),S=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),C=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let w=require(`ethers`),T=require(`@solana/web3.js`),E=require(`@coral-xyz/anchor`);var D=(e,r,i,a)=>{let{hinkalIdl:c,hinkalAddress:l,originalDeployer:d}=t.networkRegistry[r].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=e.userKeys.getShieldedPrivateKey(),h=e.getSolanaProgram(c),g=e.getSolanaPublicKey(),_=new T.PublicKey(d),v=new T.PublicKey(l),{mintPublicKey:y}=u.formatMintAddress(i.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),w=a.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(s.UserKeys.findCorrectRandomization(o.randomBigInt(31),m),m,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===n.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:a,anchorStealthStructures:w}},O=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new E.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),k=async(e,t,n,i,a,o,s)=>{let c=i.map(e=>e+b.calculateTotalFee(e,o)),l=D(e,t,n,c),d=(await C.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await O(l).rpc(),p=await l.program.provider.connection.getLatestBlockhash();await l.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(l.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await C.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=u.formatMintAddress(n.erc20TokenAddress),_=y.getOnChainUtxosFromReceiptSolana(m,l.program,e.userKeys,g),v=[],x=[..._];return a.forEach((e,t)=>{let n=c[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);v.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:v,depositTxHash:f,statusId:d}},A=async(e,i,d,p,h,g,_,y,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=t.networkRegistry[i].contractData;if(!A)throw Error(`missing data`);let j=await e.getRandomRelay(i,!0);if(!j)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=c.getCurrentTimeInSeconds().toString(),N=e.generateProofRemotely?5:1,P=[];for(let t=0;t<p.length;t+=N){let r=p.slice(t,t+N),a=await Promise.all(r.map(async({recipientAddress:t,utxo:r},a)=>{let{compressedAddress:c}=u.formatMintAddress(n.solanaNativeAddress),p=new l.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:M,...r.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[r,p],y=[p],S=s.UserKeys.findCorrectRandomization(o.randomBigInt(31),e.userKeys.getShieldedPrivateKey()),C={tokenNumber:1,nullifierAmount:g.length,outputAmount:y.length},T=f.calcEncryptedOutputs([y])[0][0],E=Array.from(w.ethers.getBytes(T)),O=await b.calculateModifiedFeeStructure(i,d,_[a],h),A=m.constructAdminData(D,i,[k],[_[a]],await e.getEthereumAddress()),[{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I},L]=await Promise.all([x.constructSolanaZkProof(e.generateProofRemotely,e.merkleTreeHinkalByChain[i],e.userKeys,[k],[g],[y],S,O.flatFee,O.variableRate,t,j,C,[E],i),v.buildCommitmentValidationData(i,e.userKeys,[k],[g])]),R={recipient:t,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:i,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[E],relayerFee:O.flatFee.toString(),dimensions:C},accounts:R,adminData:A,commitmentValidationData:L}}));P.push(...a)}await C.safeUpdateDepositAndWithdrawStatus({id:y,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await S.solanaTransactCallRelayerBatch(i,P,g,T,E,O);return await C.safeUpdateDepositAndWithdrawStatus({id:y,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},j=async(t,n,r,a,o,s,c,l,u)=>{let f=d.validateAndGetChainId([n]),p=n.erc20TokenAddress,m=i.hashEthereumAddress(await t.getEthereumAddressByChain(f)),h=u?i.hashString(u):void 0,v=s??await g.getFeeStructure(f,p,[p],e.ExternalActionId.Transact,[],5n),{userDepositedUtxos:y,depositTxHash:b,statusId:x}=await k(t,f,n,r,a,v,m);return await _.waitForDepositedUtxosInMerkleTree(t,f,y),await A(t,f,n,y,v,m,r,x,o,c,l,h),b};exports.buildMultiPaymentDepositBuilder=O,exports.buildMultiPaymentDepositSetup=D,exports.hinkalSolanaDepositAndWithdraw=j,exports.hinkalSolanaWithdrawBatch=A;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/web3/etherFunctions.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../functions/utils/time.utils.cjs`),l=require(`../utxo/Utxo.cjs`),u=require(`../../functions/utils/solanaMint.utils.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),y=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const b=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),x=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),S=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let C=require(`ethers`),w=require(`@solana/web3.js`),T=require(`@coral-xyz/anchor`);var E=(e,r,i,a)=>{let{hinkalIdl:c,hinkalAddress:l,originalDeployer:d}=t.networkRegistry[r].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=e.userKeys.getShieldedPrivateKey(),h=e.getSolanaProgram(c),g=e.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(l),{mintPublicKey:y}=u.formatMintAddress(i.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=a.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(s.UserKeys.findCorrectRandomization(o.randomBigInt(31),m),m,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===n.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:a,anchorStealthStructures:T}},D=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new T.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),O=async(e,t,n,i,a,o,s)=>{let c=i.map(e=>e+y.calculateTotalFee(e,o)),l=E(e,t,n,c),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(l).rpc(),p=await l.program.provider.connection.getLatestBlockhash();await l.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(l.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=u.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,l.program,e.userKeys,g),b=[],x=[..._];return a.forEach((e,t)=>{let n=c[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);b.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:b,depositTxHash:f,statusId:d}},k=async(e,i,d,p,h,g,_,v,w,T,E,D)=>{let O=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:k}=t.networkRegistry[i].contractData;if(!k)throw Error(`missing data`);let A=await e.getRandomRelay(i,!0);if(!A)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j=c.getCurrentTimeInSeconds().toString(),M=e.generateProofRemotely?5:1,N=[];for(let t=0;t<p.length;t+=M){let r=p.slice(t,t+M),a=await Promise.all(r.map(async({recipientAddress:t,utxo:r},a)=>{let{compressedAddress:c}=u.formatMintAddress(n.solanaNativeAddress),p=new l.Utxo({amount:0n,mintAddress:O,erc20TokenAddress:c,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:j,...r.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[r,p],v=[p],x=s.UserKeys.findCorrectRandomization(o.randomBigInt(31),e.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=f.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(i,d,_[a],h),k=m.constructAdminData(E,i,[O],[_[a]],await e.getEthereumAddress()),{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,commitmentValidationData:I}=await b.constructSolanaZkProof(e.generateProofRemotely,e.merkleTreeHinkalByChain[i],e.userKeys,[O],[g],[v],x,D.flatFee,D.variableRate,t,A,S,[T],i),L={recipient:t,mint:O===`11111111111111111111111111111111`?void 0:O};return{relayAddress:A,functionName:`transact`,chainId:i,recipientAmount:_[a].toString(),args:{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,encryptedOutputs:[T],relayerFee:D.flatFee.toString(),dimensions:S},accounts:L,adminData:k,commitmentValidationData:I}}));N.push(...a)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let P=await x.solanaTransactCallRelayerBatch(i,N,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:P}),P},A=async(t,n,r,a,o,s,c,l,u)=>{let f=d.validateAndGetChainId([n]),p=n.erc20TokenAddress,m=i.hashEthereumAddress(await t.getEthereumAddressByChain(f)),h=u?i.hashString(u):void 0,v=s??await g.getFeeStructure(f,p,[p],e.ExternalActionId.Transact,[],5n),{userDepositedUtxos:y,depositTxHash:b,statusId:x}=await O(t,f,n,r,a,v,m);return await _.waitForDepositedUtxosInMerkleTree(t,f,y),await k(t,f,n,y,v,m,r,x,o,c,l,h),b};exports.buildMultiPaymentDepositBuilder=D,exports.buildMultiPaymentDepositSetup=E,exports.hinkalSolanaDepositAndWithdraw=A,exports.hinkalSolanaWithdrawBatch=k;