@gurge/sdk 0.3.24 → 0.3.26

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 (114) hide show
  1. package/common/src/crypto/babyJub.cjs +1 -1
  2. package/common/src/crypto/babyJub.mjs +12 -6
  3. package/common/src/crypto/eddsa.cjs +1 -1
  4. package/common/src/crypto/eddsa.mjs +12 -6
  5. package/common/src/crypto/poseidon.cjs +1 -1
  6. package/common/src/crypto/poseidon.mjs +12 -6
  7. package/common/src/crypto/preProcessing.cjs +1 -1
  8. package/common/src/crypto/preProcessing.mjs +23 -13
  9. package/common/src/crypto/rnCryptoBridge.cjs +1 -0
  10. package/common/src/crypto/rnCryptoBridge.d.ts +8 -0
  11. package/common/src/crypto/rnCryptoBridge.mjs +10 -0
  12. package/common/src/crypto/rnUtxoCrypto.cjs +1 -0
  13. package/common/src/crypto/rnUtxoCrypto.d.ts +14 -0
  14. package/common/src/crypto/rnUtxoCrypto.mjs +40 -0
  15. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  16. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  18. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  20. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +1 -1
  21. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  22. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +1 -1
  23. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  24. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  25. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  26. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  27. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  28. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +1 -1
  29. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  30. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +1 -1
  31. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  32. package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +1 -3
  33. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +21 -34
  34. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  35. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +2 -2
  36. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
  37. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
  38. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
  39. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +4 -4
  40. package/common/src/data-structures/utxo/Utxo.cjs +1 -1
  41. package/common/src/data-structures/utxo/Utxo.d.ts +1 -0
  42. package/common/src/data-structures/utxo/Utxo.mjs +19 -6
  43. package/common/src/functions/index.cjs +1 -1
  44. package/common/src/functions/index.mjs +0 -1
  45. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  46. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +86 -47
  47. package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
  48. package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +2 -2
  49. package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +28 -22
  50. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  51. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +60 -65
  52. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -1
  53. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +10 -21
  54. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  55. package/common/src/functions/snarkjs/generateZkProof.mjs +13 -24
  56. package/common/src/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
  57. package/common/src/functions/snarkjs/generateZkProofEnclave.mjs +11 -14
  58. package/common/src/functions/snarkjs/generateZkProofSelf.cjs +1 -1
  59. package/common/src/functions/snarkjs/generateZkProofSelf.mjs +16 -22
  60. package/common/src/functions/utils/bigint-math.utils.cjs +1 -1
  61. package/common/src/functions/utils/bigint-math.utils.mjs +1 -12
  62. package/common/src/functions/utils/hinkalTiming.utils.cjs +1 -1
  63. package/common/src/functions/utils/hinkalTiming.utils.d.ts +4 -2
  64. package/common/src/functions/utils/hinkalTiming.utils.mjs +13 -10
  65. package/common/src/functions/utils/index.cjs +1 -1
  66. package/common/src/functions/utils/index.mjs +1 -1
  67. package/common/src/functions/utils/utxoPadding.utils.cjs +1 -0
  68. package/common/src/functions/utils/utxoPadding.utils.d.ts +2 -0
  69. package/common/src/functions/utils/utxoPadding.utils.mjs +14 -0
  70. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  71. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +72 -53
  72. package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
  73. package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +20 -21
  74. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  75. package/common/src/functions/web3/events/getShieldedBalance.mjs +34 -37
  76. package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +1 -0
  77. package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +49 -0
  78. package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +6 -0
  79. package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +1 -0
  80. package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +2 -0
  81. package/common/src/webworker/logError-DFS-H2t0.js +2 -0
  82. package/common/src/webworker/package.json +1 -1
  83. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  84. package/common/src/webworker/performTaskWithWorker.mjs +6 -6
  85. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  86. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  87. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  88. package/common/src/webworker/viteWorkerURL.constant.cjs +4 -3
  89. package/common/src/webworker/viteWorkerURL.constant.d.ts +1 -0
  90. package/common/src/webworker/viteWorkerURL.constant.mjs +4 -3
  91. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  92. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  93. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  94. package/package.json +1 -1
  95. package/react-native/HinkalWebViewWorker.cjs +76 -4
  96. package/react-native/HinkalWebViewWorker.mjs +152 -49
  97. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  98. package/react-native/bridge/HinkalRNWorker.d.ts +1 -0
  99. package/react-native/bridge/HinkalRNWorker.mjs +16 -11
  100. package/react-native/bridge/RnWebViewCryptoBridge.cjs +1 -0
  101. package/react-native/bridge/RnWebViewCryptoBridge.d.ts +7 -0
  102. package/react-native/bridge/RnWebViewCryptoBridge.mjs +49 -0
  103. package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
  104. package/react-native/shims/circomlibjs.js +2 -2
  105. package/react-native/workerCDNUrls.cjs +1 -1
  106. package/react-native/workerCDNUrls.d.ts +1 -0
  107. package/react-native/workerCDNUrls.mjs +2 -2
  108. package/sdk/package.json.cjs +1 -1
  109. package/sdk/package.json.mjs +1 -1
  110. package/common/src/crypto/BabyJubRN.cjs +0 -1
  111. package/common/src/crypto/BabyJubRN.mjs +0 -33
  112. package/common/src/crypto/EddsaRN.cjs +0 -1
  113. package/common/src/crypto/EddsaRN.mjs +0 -41
  114. package/common/src/webworker/logError-DCl9T86l.js +0 -2
@@ -4,8 +4,8 @@ import { zeroFeeStructure as n } from "../../types/hinkal.types.mjs";
4
4
  import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
5
  import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
6
6
  import { ExternalActionId as a } from "../../types/external-action.types.mjs";
7
- import { createHinkalTiming as o } from "../../functions/utils/hinkalTiming.utils.mjs";
8
- import { addressToHexFormat as s, reorderZkCallData as c } from "../../functions/utils/tron.utils.mjs";
7
+ import { addressToHexFormat as o, reorderZkCallData as s } from "../../functions/utils/tron.utils.mjs";
8
+ import { createRnDeltaTiming as c } from "../../functions/utils/hinkalTiming.utils.mjs";
9
9
  import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
10
10
  import { addPaddingToUtxos as u } from "../../functions/web3/events/getShieldedBalance.mjs";
11
11
  import { outputUtxoProcessing as d } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
@@ -21,58 +21,45 @@ import { transactCallDirectTron as y } from "../../functions/web3/functionCalls/
21
21
  import { mergeWithFeeStructure as b } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
22
22
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdraw.ts
23
23
  var x = async (e, t, n, r) => {
24
- let a = o("withdraw.utxos"), s = [...await u(e, t, n, r)];
25
- a.log("addPaddingToUtxos", { inputCount: s[0]?.length });
26
- let c = [], l = i().toString();
24
+ let a = [...await u(e, t, n, r)], o = [], s = i().toString();
27
25
  for (let t = 0; t < n.length; t += 1) {
28
- let { outputUtxos: n } = d(e.userKeys, s[t], r[t], l);
29
- c.push(n);
26
+ let { outputUtxos: n } = await d(e.userKeys, a[t], r[t], s);
27
+ o.push(n);
30
28
  }
31
- return a.log("outputUtxoProcessing"), {
32
- inputUtxosArray: s,
33
- outputUtxosArray: c
29
+ return {
30
+ inputUtxosArray: a,
31
+ outputUtxosArray: o
34
32
  };
35
33
  }, S = async (i, u, d, S, C, w, T, E) => {
36
- let D = o("withdraw"), O = l(u), k = e(O);
37
- D.log("start", {
38
- chainId: O,
39
- isRelayerOff: C,
40
- tokenCount: u.length
41
- });
42
- let A = s(await i.getEthereumAddressByChain(O));
43
- D.log("getEthereumAddress");
44
- let j = u.map((e) => e.erc20TokenAddress), M = await f(O, u, d);
45
- D.log("modifyVolatileTokenAmountChanges");
46
- let N = u[0];
34
+ let D = c("withdraw"), O = l(u), k = e(O), A = o(await i.getEthereumAddressByChain(O));
35
+ D.log("wallet.getEthereumAddressByChain");
36
+ let j = u.map((e) => e.erc20TokenAddress), M = await f(O, u, d), N = u[0];
47
37
  if (!N) throw Error("Deposit Action: No Token Found");
48
38
  let P;
49
39
  if (!C) {
50
40
  let e = T ?? await m(O, w, j, a.Transact);
51
- P = await h(O, N, -M[0], e), await b(O, j, M, P), D.log("feeStructure", { feeToken: w });
41
+ P = await h(O, N, -M[0], e), await b(O, j, M, P);
52
42
  }
53
43
  let F = {
54
44
  externalActionId: 0n,
55
- externalAddress: s(S),
45
+ externalAddress: o(S),
56
46
  externalActionMetadata: "0x00"
57
- }, [I, { inputUtxosArray: L, outputUtxosArray: R }] = await Promise.all([(async () => {
58
- let e = o("withdraw.relay"), t = await i.getRandomRelay(O, !0);
59
- return e.log("getRandomRelay", { hasRelay: !!t }), t;
60
- })(), x(i, O, j, M)]);
61
- if (D.log("relay+utxos", { hasRelay: !!I }), !C && !I) throw Error(r.RELAYER_NOT_AVAILABLE);
47
+ }, [I, { inputUtxosArray: L, outputUtxosArray: R }] = await Promise.all([i.getRandomRelay(O, !0), x(i, O, j, M)]);
48
+ if (D.log("utxoPrep+relay", { hasRelay: !!I }), !C && !I) throw Error(r.RELAYER_NOT_AVAILABLE);
62
49
  let { zkCallData: z, circomData: B, dimData: V, commitmentValidationData: H } = await g(i.merkleTreeHinkalByChain[O], L, R, i.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, i.generateProofRemotely, P ?? n, C ? t : I, O, void 0, void 0, C ? A : void 0);
63
- D.log("constructZkProof", { generateProofRemotely: i.generateProofRemotely });
64
- let U = k && C ? void 0 : await c(k, z, V, B);
65
- if (D.log("reorderZkCallData"), C) {
50
+ D.log("constructZkProof");
51
+ let U = k && C ? void 0 : await s(k, z, V, B);
52
+ if (C) {
66
53
  if (!N) throw Error("Withdraw Action: No Token Found");
67
54
  if (k) {
68
55
  let e = await y(i, O, M[0], N, z, B, V);
69
- return D.log("transactCallDirectTron", { txid: e }), D.log("done"), e;
56
+ return D.log("done", { txid: e }), e;
70
57
  }
71
58
  let e = await _(i, O, M[0], N, z, B, V);
72
- return D.log("transactCallDirect", { txHash: e.hash }), D.log("done"), e;
59
+ return D.log("done", { txHash: e.hash }), e;
73
60
  }
74
61
  let W = await v(O, z, V, B, H, void 0, void 0, p(E, O, j, M, A), U);
75
- return D.log("transactCallRelayer", { txHash: W }), D.log("done"), W;
62
+ return D.log("done", { txHash: W }), W;
76
63
  };
77
64
  //#endregion
78
65
  export { S as hinkalWithdraw };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/encodeTokenWithId.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/web3/events/getShieldedBalance.cjs`),f=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),p=require(`../../functions/snarkjs/common.snarkjs.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../constants/tx-confirmation.constants.cjs`),g=require(`../../functions/utils/tx-confirmation.utils.cjs`),_=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),y=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),b=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);let x=require(`ethers`);var S=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,void 0,void 0,!1,!0)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=f.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},C=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,6,void 0,!1,!0)][0],o=a.getCurrentTimeInSeconds().toString(),{outputUtxos:s}=f.outputUtxoProcessing(e.userKeys,i,r[0],o);return{inputUtxos:i,outputUtxos:s}},w=async(t,r,i,a,o)=>{let l=e.isTronLike(r),u=[i.erc20TokenAddress],d=i.erc20TokenAddress,[f,p]=await Promise.all([m.getFeeStructure(r,d,u,s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!p)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let h=c.addressToHexFormat(o),g=a-f.flatFee;if(g<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${f.flatFee}`);let v=[-g];await b.mergeWithFeeStructure(r,u,v,f);let x={externalActionId:0n,externalAddress:h,externalActionMetadata:`0x00`},{inputUtxosArray:C,outputUtxosArray:w}=await S(t,r,u,v),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O}=await _.constructZkProof(t.merkleTreeHinkalByChain[r],C,w,t.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,t.generateProofRemotely,f,p,r);return{tx:await y.transactCallRelayer(r,T,D,E,O,void 0,void 0,void 0,await c.reorderZkCallData(l,T,D,E)),amountToRecipient:g}},T=async(t,a,o,c,l,u)=>{let d=[o.erc20TokenAddress],{originalDeployer:f}=e.networkRegistry[a].contractData;if(!f)throw Error(`missing data`);let{userKeys:h,merkleTreeHinkalByChain:g}=t,_=o.erc20TokenAddress,[b,S]=await Promise.all([m.getFeeStructure(a,_,d,s.ExternalActionId.Transact,void 0,void 0,{mintTo:d[0],recipient:l,nullifierCount:u}),t.getRandomRelay(a,!0)]);if(!S)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=c-b.flatFee;if(w<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${c}, Fee: ${b.flatFee}`);let T=[-w];T[0]-=b.flatFee;let{inputUtxos:E,outputUtxos:D}=await C(t,a,d,T),O=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),t.userKeys.getShieldedPrivateKey()),k={tokenNumber:d.length,nullifierAmount:E.length,outputAmount:D.length},A=p.calcEncryptedOutputs([D])[0][0],j=Array.from(x.ethers.getBytes(A)),{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,commitmentValidationData:I}=await v.constructSolanaZkProof(t.generateProofRemotely,g[a],h,[d[0]],[E],[D],O,b.flatFee,b.variableRate,l,S,k,[j],a),L={recipient:l,mint:d[0]===`11111111111111111111111111111111`?void 0:d[0]};return{tx:await y.solanaTransactCallRelayer({chainId:a,relayAddress:S,functionName:`transact`,args:{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,encryptedOutputs:[j],relayerFee:b.flatFee.toString(),dimensions:k},accounts:L,commitmentValidationData:I}),amountToRecipient:w}},E=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?T(t,n,r,i,a,o):w(t,n,r,i,a),D=async(e,n,r)=>{let i=[],a=u.validateAndGetChainId([n]),s=o.encodeTokenWithId(a,{erc20TokenAddress:n.erc20TokenAddress,tokenId:0});for(;;){await e.resetMerkleTreesIfNecessary([a]);let o=((await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:a,allowRemoteDecryption:e.generateProofRemotely}))?.get(s)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount)).slice(0,6),c=t.countTotalAmountInUtxos(o);if(!c)break;let{tx:u}=await E(e,a,n,c,r,o.length);await g.waitForTransactionConfirmation(a,u,{solanaCommitment:`finalized`,evmTimeoutMs:h.RELAYER_TX_CONFIRMATION_TIMEOUT}),i.push(u)}return i};exports.hinkalWithdrawStuckUtxos=D;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/encodeTokenWithId.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/web3/events/getShieldedBalance.cjs`),f=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),p=require(`../../functions/snarkjs/common.snarkjs.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../constants/tx-confirmation.constants.cjs`),g=require(`../../functions/utils/tx-confirmation.utils.cjs`),_=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),y=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),b=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);let x=require(`ethers`);var S=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,void 0,void 0,!1,!0)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=await f.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},C=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,6,void 0,!1,!0)][0],o=a.getCurrentTimeInSeconds().toString(),{outputUtxos:s}=await f.outputUtxoProcessing(e.userKeys,i,r[0],o);return{inputUtxos:i,outputUtxos:s}},w=async(t,r,i,a,o)=>{let l=e.isTronLike(r),u=[i.erc20TokenAddress],d=i.erc20TokenAddress,[f,p]=await Promise.all([m.getFeeStructure(r,d,u,s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!p)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let h=c.addressToHexFormat(o),g=a-f.flatFee;if(g<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${f.flatFee}`);let v=[-g];await b.mergeWithFeeStructure(r,u,v,f);let x={externalActionId:0n,externalAddress:h,externalActionMetadata:`0x00`},{inputUtxosArray:C,outputUtxosArray:w}=await S(t,r,u,v),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O}=await _.constructZkProof(t.merkleTreeHinkalByChain[r],C,w,t.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,t.generateProofRemotely,f,p,r);return{tx:await y.transactCallRelayer(r,T,D,E,O,void 0,void 0,void 0,await c.reorderZkCallData(l,T,D,E)),amountToRecipient:g}},T=async(t,a,o,c,l,u)=>{let d=[o.erc20TokenAddress],{originalDeployer:f}=e.networkRegistry[a].contractData;if(!f)throw Error(`missing data`);let{userKeys:h,merkleTreeHinkalByChain:g}=t,_=o.erc20TokenAddress,[b,S]=await Promise.all([m.getFeeStructure(a,_,d,s.ExternalActionId.Transact,void 0,void 0,{mintTo:d[0],recipient:l,nullifierCount:u}),t.getRandomRelay(a,!0)]);if(!S)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=c-b.flatFee;if(w<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${c}, Fee: ${b.flatFee}`);let T=[-w];T[0]-=b.flatFee;let{inputUtxos:E,outputUtxos:D}=await C(t,a,d,T),O=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),t.userKeys.getShieldedPrivateKey()),k={tokenNumber:d.length,nullifierAmount:E.length,outputAmount:D.length},A=p.calcEncryptedOutputs([D])[0][0],j=Array.from(x.ethers.getBytes(A)),{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,commitmentValidationData:I}=await v.constructSolanaZkProof(t.generateProofRemotely,g[a],h,[d[0]],[E],[D],O,b.flatFee,b.variableRate,l,S,k,[j],a),L={recipient:l,mint:d[0]===`11111111111111111111111111111111`?void 0:d[0]};return{tx:await y.solanaTransactCallRelayer({chainId:a,relayAddress:S,functionName:`transact`,args:{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,encryptedOutputs:[j],relayerFee:b.flatFee.toString(),dimensions:k},accounts:L,commitmentValidationData:I}),amountToRecipient:w}},E=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?T(t,n,r,i,a,o):w(t,n,r,i,a),D=async(e,n,r)=>{let i=[],a=u.validateAndGetChainId([n]),s=o.encodeTokenWithId(a,{erc20TokenAddress:n.erc20TokenAddress,tokenId:0});for(;;){await e.resetMerkleTreesIfNecessary([a]);let o=((await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:a,allowRemoteDecryption:e.generateProofRemotely}))?.get(s)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount)).slice(0,6),c=t.countTotalAmountInUtxos(o);if(!c)break;let{tx:u}=await E(e,a,n,c,r,o.length);await g.waitForTransactionConfirmation(a,u,{solanaCommitment:`finalized`,evmTimeoutMs:h.RELAYER_TX_CONFIRMATION_TIMEOUT}),i.push(u)}return i};exports.hinkalWithdrawStuckUtxos=D;
@@ -25,7 +25,7 @@ import { ethers as T } from "ethers";
25
25
  var E = async (e, t, n, r) => {
26
26
  let i = [...await m(e, t, n, r, void 0, void 0, !1, !0)], a = [], o = s().toString();
27
27
  for (let t = 0; t < n.length; t += 1) {
28
- let { outputUtxos: n } = h(e.userKeys, i[t], r[t], o);
28
+ let { outputUtxos: n } = await h(e.userKeys, i[t], r[t], o);
29
29
  a.push(n);
30
30
  }
31
31
  return {
@@ -33,7 +33,7 @@ var E = async (e, t, n, r) => {
33
33
  outputUtxosArray: a
34
34
  };
35
35
  }, D = async (e, t, n, r) => {
36
- let i = [...await m(e, t, n, r, 6, void 0, !1, !0)][0], a = s().toString(), { outputUtxos: o } = h(e.userKeys, i, r[0], a);
36
+ let i = [...await m(e, t, n, r, 6, void 0, !1, !0)][0], a = s().toString(), { outputUtxos: o } = await h(e.userKeys, i, r[0], a);
37
37
  return {
38
38
  inputUtxos: i,
39
39
  outputUtxos: o
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=await a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
@@ -13,7 +13,7 @@ var l = async (l, u, d, f, p, m = {}) => {
13
13
  if (!S || !C || !w || !T) throw Error("contract data not set in networkRegistry");
14
14
  let E = [...await i(l, u, v, y, 2, void 0, !0)], D = [];
15
15
  for (let e = 0; e < E.length; e += 1) {
16
- let { outputUtxos: t } = a(l.userKeys, E[e], y[e]);
16
+ let { outputUtxos: t } = await a(l.userKeys, E[e], y[e]);
17
17
  D.push(t);
18
18
  }
19
19
  let { zkCallData: O, circomData: k, dimData: A } = await s(l.merkleTreeHinkalByChain[u], E, D, l.userKeys, r.DepositOnChainUtxos, w, x, l.generateProofRemotely, n, t, u, b, m.hookData, S);
@@ -1 +1 @@
1
- const e=require(`../../constants/vite.constants.cjs`),t=require(`../crypto-keys/keys.cjs`),n=require(`../utxo/Utxo.cjs`),r=require(`../../functions/utils/hinkalTiming.utils.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/utxoWorker/utxoWorker.types.cjs`);var s=16,c=class{NUM_WORKERS;NUM_WORKERS_BATCH_PROCESS;constructor(){e.isNode?(this.NUM_WORKERS=1,this.NUM_WORKERS_BATCH_PROCESS=1):(this.NUM_WORKERS=3,this.NUM_WORKERS_BATCH_PROCESS=Math.min(s,Math.ceil(navigator.deviceMemory??4)))}async createUtxoPromise(e){return await a.performTaskWithWorker({type:i.WorkerVariant.UTXO,payload:e})}async batchFilterUtxosWithNullifier(e,i){let a=r.createHinkalTiming(`utxoUtils.batchFilter`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS);a.log(`start`,{utxoCount:e.length,workers:s.length});let c=s.map(e=>this.createUtxoPromise({type:o.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER,data:{utxos:e.map(e=>e.getConstructableParams()),nullifiers:i}})),l=await Promise.all(c);return l.forEach(e=>{t.stealthPairCacheDevice.mergeWithSerialized(e.stealthPairCache),t.stealthAddressCacheDevice.mergeWithSerialized(e.stealthAddressCache)}),a.log(`done`),l.flatMap(e=>e.utxoConstructors).map(e=>new n.Utxo(e))}async buildBatchProcess(e,t,i){let a=r.createHinkalTiming(`utxoUtils.buildBatchProcess`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS);a.log(`start`,{encryptedOutputs:e.length,workers:s.length});let c=s.map(e=>this.createUtxoPromise({type:o.UtxoWorkerActionType.BUILD_UTXOS,data:{signature:t.getSignature(),encryptedOutputs:e,chainId:i}})),l=(await Promise.all(c)).flat().map(e=>new n.Utxo(e));return a.log(`done`,{utxoCount:l.length}),l}sliceArrayIntoParts(e,t){let n=Math.ceil(e.length/t);return Array.from({length:t},(t,r)=>e.slice(n*r,n*(r+1))).filter(e=>e.length>0)}findLastOutput(e,t){let n=t;return e.forEach(e=>{e!==t&&(n=e)}),n}async batchProcess(e,t,n,i){let a=r.createHinkalTiming(`utxoUtils.batchProcess`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS_BATCH_PROCESS);a.log(`start`,{encryptedOutputs:e.length,workers:s.length});let c=n.getSignature(),l=s.map(e=>{let n={type:o.UtxoWorkerActionType.DECIPHER_OUTPUTS,data:{encryptedOutputs:e,lastOutput:t,signature:c,chainId:i}};return this.createUtxoPromise(n)}),u=await Promise.all(l),d=u.map(({additionalEncryptedOutputs:e})=>e).flat(),f=new Set,p=d.reduce((e,t)=>f.has(t.value)?e:(f.add(t.value),[...e,t]),[]),m={additionalEncryptedOutputs:p,lastOutput:this.findLastOutput(u.map(e=>e.lastOutput),t)??t};return a.log(`done`,{additionalEncryptedOutputs:p.length}),m}};exports.MultiThreadedUtxoUtils=c;
1
+ const e=require(`../../constants/vite.constants.cjs`),t=require(`../crypto-keys/keys.cjs`),n=require(`../utxo/Utxo.cjs`),r=require(`../../functions/utils/hinkalTiming.utils.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/utxoWorker/utxoWorker.types.cjs`);var s=16,c=class{NUM_WORKERS;NUM_WORKERS_BATCH_PROCESS;constructor(){e.isNode?(this.NUM_WORKERS=1,this.NUM_WORKERS_BATCH_PROCESS=1):(this.NUM_WORKERS=3,this.NUM_WORKERS_BATCH_PROCESS=Math.min(s,Math.ceil(navigator.deviceMemory??4)))}async createUtxoPromise(e){return await a.performTaskWithWorker({type:i.WorkerVariant.UTXO,payload:e})}async batchFilterUtxosWithNullifier(e,i){let a=r.createRnDeltaTiming(`webView.utxoBatchFilter`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS);a.log(`start`,{utxoCount:e.length,workers:s.length});let c=s.map(e=>this.createUtxoPromise({type:o.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER,data:{utxos:e.map(e=>e.getConstructableParams()),nullifiers:i}})),l=await Promise.all(c);return l.forEach(e=>{t.stealthPairCacheDevice.mergeWithSerialized(e.stealthPairCache),t.stealthAddressCacheDevice.mergeWithSerialized(e.stealthAddressCache)}),a.log(`done`),l.flatMap(e=>e.utxoConstructors).map(e=>new n.Utxo(e))}async buildBatchProcess(e,t,i){let a=r.createRnDeltaTiming(`webView.utxoBuildBatch`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS);a.log(`start`,{encryptedOutputs:e.length,workers:s.length});let c=s.map(e=>this.createUtxoPromise({type:o.UtxoWorkerActionType.BUILD_UTXOS,data:{signature:t.getSignature(),encryptedOutputs:e,chainId:i}})),l=(await Promise.all(c)).flat().map(e=>new n.Utxo(e));return a.log(`done`,{utxoCount:l.length}),l}sliceArrayIntoParts(e,t){let n=Math.ceil(e.length/t);return Array.from({length:t},(t,r)=>e.slice(n*r,n*(r+1))).filter(e=>e.length>0)}findLastOutput(e,t){let n=t;return e.forEach(e=>{e!==t&&(n=e)}),n}async batchProcess(e,t,n,i){let a=r.createRnDeltaTiming(`webView.utxoBatchProcess`),s=this.sliceArrayIntoParts(e,this.NUM_WORKERS_BATCH_PROCESS);a.log(`start`,{encryptedOutputs:e.length,workers:s.length});let c=n.getSignature(),l=s.map(e=>{let n={type:o.UtxoWorkerActionType.DECIPHER_OUTPUTS,data:{encryptedOutputs:e,lastOutput:t,signature:c,chainId:i}};return this.createUtxoPromise(n)}),u=await Promise.all(l),d=u.map(({additionalEncryptedOutputs:e})=>e).flat(),f=new Set,p=d.reduce((e,t)=>f.has(t.value)?e:(f.add(t.value),[...e,t]),[]),m={additionalEncryptedOutputs:p,lastOutput:this.findLastOutput(u.map(e=>e.lastOutput),t)??t};return a.log(`done`,{additionalEncryptedOutputs:p.length}),m}};exports.MultiThreadedUtxoUtils=c;
@@ -1,7 +1,7 @@
1
1
  import { isNode as e } from "../../constants/vite.constants.mjs";
2
2
  import { stealthAddressCacheDevice as t, stealthPairCacheDevice as n } from "../crypto-keys/keys.mjs";
3
3
  import { Utxo as r } from "../utxo/Utxo.mjs";
4
- import { createHinkalTiming as i } from "../../functions/utils/hinkalTiming.utils.mjs";
4
+ import { createRnDeltaTiming as i } from "../../functions/utils/hinkalTiming.utils.mjs";
5
5
  import { WorkerVariant as a } from "../../webworker/worker.registry.mjs";
6
6
  import { performTaskWithWorker as o } from "../../webworker/performTaskWithWorker.mjs";
7
7
  import { UtxoWorkerActionType as s } from "../../webworker/utxoWorker/utxoWorker.types.mjs";
@@ -19,7 +19,7 @@ var c = 16, l = class {
19
19
  });
20
20
  }
21
21
  async batchFilterUtxosWithNullifier(e, a) {
22
- let o = i("utxoUtils.batchFilter"), c = this.sliceArrayIntoParts(e, this.NUM_WORKERS);
22
+ let o = i("webView.utxoBatchFilter"), c = this.sliceArrayIntoParts(e, this.NUM_WORKERS);
23
23
  o.log("start", {
24
24
  utxoCount: e.length,
25
25
  workers: c.length
@@ -36,7 +36,7 @@ var c = 16, l = class {
36
36
  }), o.log("done"), u.flatMap((e) => e.utxoConstructors).map((e) => new r(e));
37
37
  }
38
38
  async buildBatchProcess(e, t, n) {
39
- let a = i("utxoUtils.buildBatchProcess"), o = this.sliceArrayIntoParts(e, this.NUM_WORKERS);
39
+ let a = i("webView.utxoBuildBatch"), o = this.sliceArrayIntoParts(e, this.NUM_WORKERS);
40
40
  a.log("start", {
41
41
  encryptedOutputs: e.length,
42
42
  workers: o.length
@@ -62,7 +62,7 @@ var c = 16, l = class {
62
62
  }), n;
63
63
  }
64
64
  async batchProcess(e, t, n, r) {
65
- let a = i("utxoUtils.batchProcess"), o = this.sliceArrayIntoParts(e, this.NUM_WORKERS_BATCH_PROCESS);
65
+ let a = i("webView.utxoBatchProcess"), o = this.sliceArrayIntoParts(e, this.NUM_WORKERS_BATCH_PROCESS);
66
66
  a.log("start", {
67
67
  encryptedOutputs: e.length,
68
68
  workers: o.length
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../functions/utils/time.utils.cjs`);var a=class a{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:a,timeStamp:o,nullifyingKey:s,spendingPublicKey:c,randomization:l,H0:u,stealthAddress:d,encryptionKey:f,commitment:p=void 0,nullifier:m=void 0,isBlocked:h=!1,isNewStyle:g=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=a,this.timeStamp=o??i.getCurrentTimeInSeconds().toString(),this.nullifyingKey=s,this.spendingPublicKey=c,this.randomization=l??(s?r.UserKeys.findCorrectRandomization(n.randomBigInt(31),s):void 0),this.H0=u??(g&&this.randomization?r.UserKeys.findH0(this.randomization,s):void 0),this.stealthAddress=d,this.encryptionKey=f,this.commitment=p,this.nullifier=m,this.isBlocked=h,this.isNewStyle=g}static createFrom(e,t){return new a({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...t})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=t.poseidonHash(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),n=t.poseidonHash(this.nullifyingKey,e);this.nullifier=t.poseidonHash(e,n)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=r.UserKeys.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=r.UserKeys.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.isSolanaLike(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return r.UserKeys.getEncryptionKeyPair(this.nullifyingKey).publicKey}};exports.Utxo=a;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../crypto/rnUtxoCrypto.cjs`),a=require(`../../functions/utils/time.utils.cjs`);var o=class o{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:i,timeStamp:o,nullifyingKey:s,spendingPublicKey:c,randomization:l,H0:u,stealthAddress:d,encryptionKey:f,commitment:p=void 0,nullifier:m=void 0,isBlocked:h=!1,isNewStyle:g=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=i,this.timeStamp=o??a.getCurrentTimeInSeconds().toString(),this.nullifyingKey=s,this.spendingPublicKey=c,this.randomization=l??(s?r.UserKeys.findCorrectRandomization(n.randomBigInt(31),s):void 0),this.H0=u??(g&&this.randomization?r.UserKeys.findH0(this.randomization,s):void 0),this.stealthAddress=d,this.encryptionKey=f,this.commitment=p,this.nullifier=m,this.isBlocked=h,this.isNewStyle=g}static async createAsync(e){if(i.needsRnNewStyleCrypto(e)){let t=await i.prepareNewStyleUtxoFields(e.nullifyingKey,e.spendingPublicKey);return new o({...e,randomization:t.randomization,H0:t.H0,stealthAddress:t.stealthAddress})}return new o(e)}static createFrom(e,t){return new o({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...t})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=t.poseidonHash(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),n=t.poseidonHash(this.nullifyingKey,e);this.nullifier=t.poseidonHash(e,n)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=r.UserKeys.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=r.UserKeys.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.isSolanaLike(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return r.UserKeys.getEncryptionKeyPair(this.nullifyingKey).publicKey}};exports.Utxo=o;
@@ -49,6 +49,7 @@ export declare class Utxo {
49
49
  * @param isBlocked [optional] whether the UTXO is blocked
50
50
  */
51
51
  constructor({ amount, erc20TokenAddress, mintAddress, timeStamp, nullifyingKey, spendingPublicKey, randomization, H0, stealthAddress, encryptionKey, commitment, nullifier, isBlocked, isNewStyle, }: IUtxoConstructor);
52
+ static createAsync(params: IUtxoConstructor): Promise<Utxo>;
52
53
  static createFrom(utxoToCreateFrom: Utxo, patch: Partial<IUtxoConstructor>): Utxo;
53
54
  getConstructableParams(): IUtxoConstructor;
54
55
  getBasicUtxoParams(): IUtxoConstructor;
@@ -2,9 +2,10 @@ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
2
  import { poseidonHash as t } from "../../crypto/poseidon.mjs";
3
3
  import { randomBigInt as n } from "../../functions/web3/etherFunctions.mjs";
4
4
  import { UserKeys as r } from "../crypto-keys/keys.mjs";
5
- import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
5
+ import { needsRnNewStyleCrypto as i, prepareNewStyleUtxoFields as a } from "../../crypto/rnUtxoCrypto.mjs";
6
+ import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
6
7
  //#region libs/shared/common/src/data-structures/utxo/Utxo.ts
7
- var a = class a {
8
+ var s = class s {
8
9
  amount;
9
10
  erc20TokenAddress;
10
11
  mintAddress;
@@ -19,11 +20,23 @@ var a = class a {
19
20
  nullifier;
20
21
  isBlocked;
21
22
  isNewStyle;
22
- constructor({ amount: e, erc20TokenAddress: t, mintAddress: a, timeStamp: o, nullifyingKey: s, spendingPublicKey: c, randomization: l, H0: u, stealthAddress: d, encryptionKey: f, commitment: p = void 0, nullifier: m = void 0, isBlocked: h = !1, isNewStyle: g = !1 }) {
23
- this.amount = e, this.erc20TokenAddress = t, this.mintAddress = a, this.timeStamp = o ?? i().toString(), this.nullifyingKey = s, this.spendingPublicKey = c, this.randomization = l ?? (s ? r.findCorrectRandomization(n(31), s) : void 0), this.H0 = u ?? (g && this.randomization ? r.findH0(this.randomization, s) : void 0), this.stealthAddress = d, this.encryptionKey = f, this.commitment = p, this.nullifier = m, this.isBlocked = h, this.isNewStyle = g;
23
+ constructor({ amount: e, erc20TokenAddress: t, mintAddress: i, timeStamp: a, nullifyingKey: s, spendingPublicKey: c, randomization: l, H0: u, stealthAddress: d, encryptionKey: f, commitment: p = void 0, nullifier: m = void 0, isBlocked: h = !1, isNewStyle: g = !1 }) {
24
+ this.amount = e, this.erc20TokenAddress = t, this.mintAddress = i, this.timeStamp = a ?? o().toString(), this.nullifyingKey = s, this.spendingPublicKey = c, this.randomization = l ?? (s ? r.findCorrectRandomization(n(31), s) : void 0), this.H0 = u ?? (g && this.randomization ? r.findH0(this.randomization, s) : void 0), this.stealthAddress = d, this.encryptionKey = f, this.commitment = p, this.nullifier = m, this.isBlocked = h, this.isNewStyle = g;
25
+ }
26
+ static async createAsync(e) {
27
+ if (i(e)) {
28
+ let t = await a(e.nullifyingKey, e.spendingPublicKey);
29
+ return new s({
30
+ ...e,
31
+ randomization: t.randomization,
32
+ H0: t.H0,
33
+ stealthAddress: t.stealthAddress
34
+ });
35
+ }
36
+ return new s(e);
24
37
  }
25
38
  static createFrom(e, t) {
26
- return new a({
39
+ return new s({
27
40
  ...e.getConstructableParams(),
28
41
  nullifier: void 0,
29
42
  commitment: void 0,
@@ -110,4 +123,4 @@ var a = class a {
110
123
  }
111
124
  };
112
125
  //#endregion
113
- export { a as Utxo };
126
+ export { s as Utxo };
@@ -1 +1 @@
1
- require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/bigint-math.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
1
+ require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
@@ -3,7 +3,6 @@ import "./utils/serialize.utils.mjs";
3
3
  import "./utils/caseInsensitive.utils.mjs";
4
4
  import "./utils/amounts.utils.mjs";
5
5
  import "./web3/etherFunctions.mjs";
6
- import "./utils/bigint-math.utils.mjs";
7
6
  import "./utils/time.utils.mjs";
8
7
  import "./utils/upToDateState.mjs";
9
8
  import "./utils/cacheFunctions.mjs";
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../utils/solanaMint.utils.cjs`),r=require(`../utils/hinkalTiming.utils.cjs`),i=require(`../snarkjs/common.snarkjs.cjs`),a=require(`../../webworker/worker.registry.cjs`),o=require(`../../webworker/performTaskWithWorker.cjs`),s=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var c=async(c,l,u,d)=>{let f=r.createHinkalTiming(`buildCommitmentValidationData`);if(i.hasOnlyZeroAmounts(d))return;let p=e.isSolanaLike(c),m=d.map(e=>e.map(e=>e.amount.toString())),h=d.map(e=>e.map(e=>e.timeStamp)),g=d.map(e=>e.map(e=>i.getUtxoCircuitInRandomization(e))),_=d.map(e=>e.map(e=>e.getConstructableParams())),v=d.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString())),y=await o.performTaskWithWorker({type:a.WorkerVariant.ZKProof,payload:{type:s.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:_}}});f.log(`buildInNullifiers`);let b=l.getShieldedPrivateKey(),x=l.getSpendingKeyPair().pubSpendingBJJPoint,S=p?u.map(e=>{let{compressedAddress:t}=n.formatMintAddress(e);return BigInt(t).toString()}):u.map(e=>BigInt(e).toString());d.forEach((e,n)=>{e.forEach((e,r)=>{let i=e.getStealthAddress(),a=e.spendingPublicKey??x,o=e.isNewStyle&&e.H0?t.UserKeys.getStealthAddressNewStyle(e.H0,b,a):t.UserKeys.getStealthAddress(BigInt(e.randomization),b);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`)})}),f.log(`stealthValidation`);let C={nullifyingPrivateKey:b,spendingPublicKey:x,erc20TokenAddresses:S,inAmounts:m,inRandomizations:g,inH0Ax:d.map(e=>e.map(e=>i.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:d.map(e=>e.map(e=>i.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:d.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:h,inCommitments:v,inNullifiers:y};if(!(!u.length||!d[0]?.length))return{tokenAddresses:S,inAmounts:m,inTimeStamps:h,inRandomizations:g,inCommitments:v,inNullifiers:y,verifierName:`commitmentCalculator${u.length}x${d[0].length}`,commitmentInput:C}},l=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=c,exports.buildCommitmentValidationDataFromProof=l;
1
+ const e=require(`../../constants/vite.constants.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../crypto/rnCryptoBridge.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../../webworker/cryptoWorker/cryptoWorker.types.cjs`),a=require(`../../crypto/rnUtxoCrypto.cjs`),o=require(`../utils/solanaMint.utils.cjs`),s=require(`../utils/hinkalTiming.utils.cjs`),c=require(`../snarkjs/common.snarkjs.cjs`),l=require(`../../webworker/worker.registry.cjs`),u=require(`../../webworker/performTaskWithWorker.cjs`),d=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var f=async(f,p,m,h)=>{let g=s.createRnDeltaTiming(`mainThread.commitmentValidation`);if(c.hasOnlyZeroAmounts(h))return;let _=t.isSolanaLike(f),v=h.map(e=>e.map(e=>e.amount.toString())),y=h.map(e=>e.map(e=>e.timeStamp)),b=h.map(e=>e.map(e=>c.getUtxoCircuitInRandomization(e))),x=h.map(e=>e.map(e=>e.getConstructableParams()));g.log(`serializeInputs`);let S=s.createRnDeltaTiming(`mainThread.getCommitment`),C=h.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString()));S.log(`all-utxos`,{count:h.reduce((e,t)=>e+t.length,0)});let w=await u.performTaskWithWorker({type:l.WorkerVariant.ZKProof,payload:{type:d.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:x}}});g.log(`buildInNullifiers-worker-done`);let T=p.getShieldedPrivateKey(),E=await a.getSpendingPublicKeyForRn(p),D=_?m.map(e=>{let{compressedAddress:t}=o.formatMintAddress(e);return BigInt(t).toString()}):m.map(e=>BigInt(e).toString()),O=s.createRnDeltaTiming(`mainThread.stealthValidation`),k=0;if(e.isReactNative){let e=[];h.forEach((t,n)=>{t.forEach((t,r)=>{k+=1;let i=t.spendingPublicKey??E;e.push({tokenIdx:n,utxoIdx:r,utxoStealthAddress:t.getStealthAddress(),isNewStyle:!!t.isNewStyle,randomization:t.randomization?.toString(),H0:t.H0?[t.H0[0].toString(),t.H0[1].toString()]:void 0,spendingPublicKey:[i[0].toString(),i[1].toString()]})})});let t=n.getRnCryptoBridge();await t.init(),(await t.call(i.CryptoWorkerOp.BATCH_STEALTH_VALIDATION,{nullifyingPrivateKey:T,defaultSpendingPublicKey:[E[0].toString(),E[1].toString()],checks:e})).forEach((t,n)=>{if(t.matches)return;let{tokenIdx:r,utxoIdx:i}=e[n];throw Error(`Commitment validation stealth mismatch at tokenIdx=${r}, utxoIdx=${i}`)})}else h.forEach((e,t)=>{e.forEach((e,n)=>{k+=1;let i=e.getStealthAddress(),a=e.spendingPublicKey??E,o=e.isNewStyle&&e.H0?r.UserKeys.getStealthAddressNewStyle(e.H0,T,a):r.UserKeys.getStealthAddress(BigInt(e.randomization),T);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${t}, utxoIdx=${n}`)})});O.log(`all-utxos`,{stealthChecks:k});let A={nullifyingPrivateKey:T,spendingPublicKey:E,erc20TokenAddresses:D,inAmounts:v,inRandomizations:b,inH0Ax:h.map(e=>e.map(e=>c.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>c.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:y,inCommitments:C,inNullifiers:w};if(!m.length||!h[0]?.length)return;let j=`commitmentCalculator${m.length}x${h[0].length}`;return g.log(`done`,{verifierName:j}),{tokenAddresses:D,inAmounts:v,inTimeStamps:y,inRandomizations:b,inCommitments:C,inNullifiers:w,verifierName:j,commitmentInput:A}},p=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=f,exports.buildCommitmentValidationDataFromProof=p;
@@ -1,57 +1,96 @@
1
- import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
- import { UserKeys as t } from "../../data-structures/crypto-keys/keys.mjs";
3
- import { formatMintAddress as n } from "../utils/solanaMint.utils.mjs";
4
- import { createHinkalTiming as r } from "../utils/hinkalTiming.utils.mjs";
5
- import { getUtxoCircuitH0Coords as i, getUtxoCircuitInRandomization as a, hasOnlyZeroAmounts as o } from "../snarkjs/common.snarkjs.mjs";
6
- import { WorkerVariant as s } from "../../webworker/worker.registry.mjs";
7
- import { performTaskWithWorker as c } from "../../webworker/performTaskWithWorker.mjs";
8
- import { ZKProofWorkerActionType as l } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
1
+ import { isReactNative as e } from "../../constants/vite.constants.mjs";
2
+ import { isSolanaLike as t } from "../../constants/chains.constants.mjs";
3
+ import { getRnCryptoBridge as n } from "../../crypto/rnCryptoBridge.mjs";
4
+ import { UserKeys as r } from "../../data-structures/crypto-keys/keys.mjs";
5
+ import { CryptoWorkerOp as i } from "../../webworker/cryptoWorker/cryptoWorker.types.mjs";
6
+ import { getSpendingPublicKeyForRn as a } from "../../crypto/rnUtxoCrypto.mjs";
7
+ import { formatMintAddress as o } from "../utils/solanaMint.utils.mjs";
8
+ import { createRnDeltaTiming as s } from "../utils/hinkalTiming.utils.mjs";
9
+ import { getUtxoCircuitH0Coords as c, getUtxoCircuitInRandomization as l, hasOnlyZeroAmounts as u } from "../snarkjs/common.snarkjs.mjs";
10
+ import { WorkerVariant as d } from "../../webworker/worker.registry.mjs";
11
+ import { performTaskWithWorker as f } from "../../webworker/performTaskWithWorker.mjs";
12
+ import { ZKProofWorkerActionType as p } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
9
13
  //#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
10
- var u = async (u, d, f, p) => {
11
- let m = r("buildCommitmentValidationData");
12
- if (o(p)) return;
13
- let h = e(u), g = p.map((e) => e.map((e) => e.amount.toString())), _ = p.map((e) => e.map((e) => e.timeStamp)), v = p.map((e) => e.map((e) => a(e))), y = p.map((e) => e.map((e) => e.getConstructableParams())), b = p.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), x = await c({
14
- type: s.ZKProof,
14
+ var m = async (m, h, g, _) => {
15
+ let v = s("mainThread.commitmentValidation");
16
+ if (u(_)) return;
17
+ let y = t(m), b = _.map((e) => e.map((e) => e.amount.toString())), x = _.map((e) => e.map((e) => e.timeStamp)), S = _.map((e) => e.map((e) => l(e))), C = _.map((e) => e.map((e) => e.getConstructableParams()));
18
+ v.log("serializeInputs");
19
+ let w = s("mainThread.getCommitment"), T = _.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString()));
20
+ w.log("all-utxos", { count: _.reduce((e, t) => e + t.length, 0) });
21
+ let E = await f({
22
+ type: d.ZKProof,
15
23
  payload: {
16
- type: l.BUILD_IN_NULLIFIERS,
17
- data: { inputUtxosSerialized: y }
24
+ type: p.BUILD_IN_NULLIFIERS,
25
+ data: { inputUtxosSerialized: C }
18
26
  }
19
27
  });
20
- m.log("buildInNullifiers");
21
- let S = d.getShieldedPrivateKey(), C = d.getSpendingKeyPair().pubSpendingBJJPoint, w = h ? f.map((e) => {
22
- let { compressedAddress: t } = n(e);
28
+ v.log("buildInNullifiers-worker-done");
29
+ let D = h.getShieldedPrivateKey(), O = await a(h), k = y ? g.map((e) => {
30
+ let { compressedAddress: t } = o(e);
23
31
  return BigInt(t).toString();
24
- }) : f.map((e) => BigInt(e).toString());
25
- p.forEach((e, n) => {
26
- e.forEach((e, r) => {
27
- let i = e.getStealthAddress(), a = e.spendingPublicKey ?? C, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, S, a) : t.getStealthAddress(BigInt(e.randomization), S);
28
- if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
32
+ }) : g.map((e) => BigInt(e).toString()), A = s("mainThread.stealthValidation"), j = 0;
33
+ if (e) {
34
+ let e = [];
35
+ _.forEach((t, n) => {
36
+ t.forEach((t, r) => {
37
+ j += 1;
38
+ let i = t.spendingPublicKey ?? O;
39
+ e.push({
40
+ tokenIdx: n,
41
+ utxoIdx: r,
42
+ utxoStealthAddress: t.getStealthAddress(),
43
+ isNewStyle: !!t.isNewStyle,
44
+ randomization: t.randomization?.toString(),
45
+ H0: t.H0 ? [t.H0[0].toString(), t.H0[1].toString()] : void 0,
46
+ spendingPublicKey: [i[0].toString(), i[1].toString()]
47
+ });
48
+ });
29
49
  });
30
- }), m.log("stealthValidation");
31
- let T = {
32
- nullifyingPrivateKey: S,
33
- spendingPublicKey: C,
34
- erc20TokenAddresses: w,
35
- inAmounts: g,
36
- inRandomizations: v,
37
- inH0Ax: p.map((e) => e.map((e) => i(e)[0].toString())),
38
- inH0Ay: p.map((e) => e.map((e) => i(e)[1].toString())),
39
- isNewStyle: p.map((e) => e.map((e) => !!e.isNewStyle)),
40
- inTimeStamps: _,
41
- inCommitments: b,
42
- inNullifiers: x
50
+ let t = n();
51
+ await t.init(), (await t.call(i.BATCH_STEALTH_VALIDATION, {
52
+ nullifyingPrivateKey: D,
53
+ defaultSpendingPublicKey: [O[0].toString(), O[1].toString()],
54
+ checks: e
55
+ })).forEach((t, n) => {
56
+ if (t.matches) return;
57
+ let { tokenIdx: r, utxoIdx: i } = e[n];
58
+ throw Error(`Commitment validation stealth mismatch at tokenIdx=${r}, utxoIdx=${i}`);
59
+ });
60
+ } else _.forEach((e, t) => {
61
+ e.forEach((e, n) => {
62
+ j += 1;
63
+ let i = e.getStealthAddress(), a = e.spendingPublicKey ?? O, o = e.isNewStyle && e.H0 ? r.getStealthAddressNewStyle(e.H0, D, a) : r.getStealthAddress(BigInt(e.randomization), D);
64
+ if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${t}, utxoIdx=${n}`);
65
+ });
66
+ });
67
+ A.log("all-utxos", { stealthChecks: j });
68
+ let M = {
69
+ nullifyingPrivateKey: D,
70
+ spendingPublicKey: O,
71
+ erc20TokenAddresses: k,
72
+ inAmounts: b,
73
+ inRandomizations: S,
74
+ inH0Ax: _.map((e) => e.map((e) => c(e)[0].toString())),
75
+ inH0Ay: _.map((e) => e.map((e) => c(e)[1].toString())),
76
+ isNewStyle: _.map((e) => e.map((e) => !!e.isNewStyle)),
77
+ inTimeStamps: x,
78
+ inCommitments: T,
79
+ inNullifiers: E
43
80
  };
44
- if (!(!f.length || !p[0]?.length)) return {
45
- tokenAddresses: w,
46
- inAmounts: g,
47
- inTimeStamps: _,
48
- inRandomizations: v,
49
- inCommitments: b,
50
- inNullifiers: x,
51
- verifierName: `commitmentCalculator${f.length}x${p[0].length}`,
52
- commitmentInput: T
81
+ if (!g.length || !_[0]?.length) return;
82
+ let N = `commitmentCalculator${g.length}x${_[0].length}`;
83
+ return v.log("done", { verifierName: N }), {
84
+ tokenAddresses: k,
85
+ inAmounts: b,
86
+ inTimeStamps: x,
87
+ inRandomizations: S,
88
+ inCommitments: T,
89
+ inNullifiers: E,
90
+ verifierName: N,
91
+ commitmentInput: M
53
92
  };
54
- }, d = (e, t) => {
93
+ }, h = (e, t) => {
55
94
  if (!(!e || !t)) return {
56
95
  tokenAddresses: e.tokenAddresses,
57
96
  inAmounts: e.inAmounts,
@@ -67,4 +106,4 @@ var u = async (u, d, f, p) => {
67
106
  };
68
107
  };
69
108
  //#endregion
70
- export { u as buildCommitmentValidationData, d as buildCommitmentValidationDataFromProof };
109
+ export { m as buildCommitmentValidationData, h as buildCommitmentValidationDataFromProof };
@@ -1 +1 @@
1
- const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`);var r=(r,i,a,o,s=!0,c,l)=>{let u=e.countTotalAmountInUtxos(i),{erc20TokenAddress:d,mintAddress:f}=i[0];if(s&&a<0n&&u+a<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let p=[new n.Utxo({amount:e.bigintMax(u+a,0n),erc20TokenAddress:d,mintAddress:f,nullifyingKey:r.getShieldedPrivateKey(),timeStamp:o,spendingPublicKey:r.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})];if(c!==void 0&&l!==void 0){let[e,t,r,,i]=c.split(`,`);p.push(new n.Utxo({amount:l,erc20TokenAddress:d,mintAddress:f,H0:[BigInt(t),BigInt(r)],stealthAddress:e,encryptionKey:i,timeStamp:o,isNewStyle:!0}))}return{outputUtxos:p}};exports.outputUtxoProcessing=r;
1
+ const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../crypto/rnUtxoCrypto.cjs`),r=require(`../../data-structures/utxo/Utxo.cjs`),i=require(`../utils/hinkalTiming.utils.cjs`);var a=async(a,o,s,c,l=!0,u,d)=>{let f=i.createRnDeltaTiming(`mainThread.outputUtxo`),p=e.countTotalAmountInUtxos(o),{erc20TokenAddress:m,mintAddress:h}=o[0];if(l&&s<0n&&p+s<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);f.log(`sumInputs`);let g=await n.getSpendingPublicKeyForRn(a),_=[await r.Utxo.createAsync({amount:e.bigintMax(p+s,0n),erc20TokenAddress:m,mintAddress:h,nullifyingKey:a.getShieldedPrivateKey(),timeStamp:c,spendingPublicKey:g,isNewStyle:!0})];if(f.log(`newUtxo-change`,{randomization:!!_[0].randomization,h0:!!_[0].H0}),u!==void 0&&d!==void 0){let[e,t,n,,i]=u.split(`,`);_.push(new r.Utxo({amount:d,erc20TokenAddress:m,mintAddress:h,H0:[BigInt(t),BigInt(n)],stealthAddress:e,encryptionKey:i,timeStamp:c,isNewStyle:!0})),f.log(`newUtxo-recipient`)}return f.log(`done`,{outputCount:_.length}),{outputUtxos:_}};exports.outputUtxoProcessing=a;
@@ -1,5 +1,5 @@
1
1
  import { UserKeys } from '../../data-structures/crypto-keys/keys';
2
2
  import { Utxo } from '../../data-structures/utxo/Utxo';
3
- export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => {
3
+ export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => Promise<{
4
4
  outputUtxos: Utxo[];
5
- };
5
+ }>;
@@ -1,33 +1,39 @@
1
1
  import { bigintMax as e, countTotalAmountInUtxos as t } from "../utils/amounts.utils.mjs";
2
2
  import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
3
- import { Utxo as r } from "../../data-structures/utxo/Utxo.mjs";
3
+ import { getSpendingPublicKeyForRn as r } from "../../crypto/rnUtxoCrypto.mjs";
4
+ import { Utxo as i } from "../../data-structures/utxo/Utxo.mjs";
5
+ import { createRnDeltaTiming as a } from "../utils/hinkalTiming.utils.mjs";
4
6
  //#region libs/shared/common/src/functions/pre-transaction/outputUtxoProcessing.ts
5
- var i = (i, a, o, s, c = !0, l, u) => {
6
- let d = t(a), { erc20TokenAddress: f, mintAddress: p } = a[0];
7
- if (c && o < 0n && d + o < 0n) throw Error(n.INSUFFICIENT_FUNDS_TO_TRANSACT);
8
- let m = [new r({
9
- amount: e(d + o, 0n),
10
- erc20TokenAddress: f,
11
- mintAddress: p,
12
- nullifyingKey: i.getShieldedPrivateKey(),
13
- timeStamp: s,
14
- spendingPublicKey: i.getSpendingKeyPair().pubSpendingBJJPoint,
7
+ var o = async (o, s, c, l, u = !0, d, f) => {
8
+ let p = a("mainThread.outputUtxo"), m = t(s), { erc20TokenAddress: h, mintAddress: g } = s[0];
9
+ if (u && c < 0n && m + c < 0n) throw Error(n.INSUFFICIENT_FUNDS_TO_TRANSACT);
10
+ p.log("sumInputs");
11
+ let _ = await r(o), v = [await i.createAsync({
12
+ amount: e(m + c, 0n),
13
+ erc20TokenAddress: h,
14
+ mintAddress: g,
15
+ nullifyingKey: o.getShieldedPrivateKey(),
16
+ timeStamp: l,
17
+ spendingPublicKey: _,
15
18
  isNewStyle: !0
16
19
  })];
17
- if (l !== void 0 && u !== void 0) {
18
- let [e, t, n, , i] = l.split(",");
19
- m.push(new r({
20
- amount: u,
21
- erc20TokenAddress: f,
22
- mintAddress: p,
20
+ if (p.log("newUtxo-change", {
21
+ randomization: !!v[0].randomization,
22
+ h0: !!v[0].H0
23
+ }), d !== void 0 && f !== void 0) {
24
+ let [e, t, n, , r] = d.split(",");
25
+ v.push(new i({
26
+ amount: f,
27
+ erc20TokenAddress: h,
28
+ mintAddress: g,
23
29
  H0: [BigInt(t), BigInt(n)],
24
30
  stealthAddress: e,
25
- encryptionKey: i,
26
- timeStamp: s,
31
+ encryptionKey: r,
32
+ timeStamp: l,
27
33
  isNewStyle: !0
28
- }));
34
+ })), p.log("newUtxo-recipient");
29
35
  }
30
- return { outputUtxos: m };
36
+ return p.log("done", { outputCount: v.length }), { outputUtxos: v };
31
37
  };
32
38
  //#endregion
33
- export { i as outputUtxoProcessing };
39
+ export { o as outputUtxoProcessing };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),ee=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../utils/hinkalTiming.utils.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),u=require(`./signedMessageHash.cjs`),te=require(`./generateCircomData.cjs`),ne=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(`./generateMainAndCommitmentZkProof.cjs`),f=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),p=require(`../private-wallet/emporium.helpers.cjs`);var m=async(m,h,g,_,v,y,b,x,S,C=t.zeroAddress,w=e.chainIds.localhost,T=h.map(()=>!1),E=void 0,D,O)=>{let k=o.createHinkalTiming(`constructZkProof`),A=l.getZkProofVerifierName(h,g),j=l.calcAmountChanges(h,g),M=h.map(e=>e[0].erc20TokenAddress),N=l.calcEncryptedOutputs(g),P=t.defaultSignatureData,F=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:I}=_.getSpendingKeyPair(),L=l.calcStealthAddressStructure(r.UserKeys.findCorrectRandomization(n.randomBigInt(31),F),F,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams())));k.log(`getDataFromWorkers`,{verifierName:A,chainId:w});let B=l.buildOutCommitments(g),V=n.randomBigInt(31),H=ee.poseidonFunction(V),U=BigInt(g.length>0?g[0][0].timeStamp:i.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:I,nullifyingPrivateKey:F,erc20TokenAddresses:M,amountChanges:j,inAmounts:h.map(e=>e.map(e=>e.amount.toString())),inRandomizations:h.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:h.map(e=>e.map(e=>e.timeStamp)),inNullifiers:z,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(h,g,!0),q=l.getSlippageValues(K);s.Logger.log({publicSignalCount:G});let J=Array.isArray(b)?b:[b],ae=e.getOnchainChainId(w),oe=O?ne.AccountActions.getSignerAddressFromPrivateKey(ae,O):void 0,Y=v===a.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,J,H,oe):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:J,H,t.zeroAddress);k.log(`encodeEmporiumMetadata`,{externalActionId:v.toString()}),W.calldataHash=l.createCallDataHash(G,C,y,v,Y,N,E,q,T,S,P,D);let X=u.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:M,amountChanges:j,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Z,S:se}=_.signEddsa(X);W.eddsaSignature=[Z[0],Z[1],se],W.signedMessageHash=X;let Q=A.startsWith(`mainEVMCircuitMin0`),$={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:ce,commitmentValidationData:le}=await d.generateMainAndCommitmentZkProof(w,_,M,h,A,Q?$:W,x);k.log(`generateMainAndCommitmentZkProof`,{verifierName:A,generateProofRemotely:x});let ue=te.generateCircomData(B,z,R,K,M,g,N,G,v,y,Y,C,W.calldataHash,L,T,E,Q?Number(U):void 0,q,S,P,D),de={tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0};return k.log(`done`),{zkCallData:ce,circomData:ue,dimData:de,encryptedOutputs:N,commitmentValidationData:le}};exports.constructZkProof=m;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/hinkalTiming.utils.cjs`),l=require(`../utils/bit.operations.cjs`),u=require(`./common.snarkjs.cjs`),d=require(`./signedMessageHash.cjs`),ee=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),f=require(`./generateMainAndCommitmentZkProof.cjs`),p=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),m=require(`../private-wallet/emporium.helpers.cjs`);var h=async(h,g,_,v,y,b,x,ne,S,C=t.zeroAddress,w=e.chainIds.localhost,T=g.map(()=>!1),E=void 0,D,O)=>{let k=c.createRnDeltaTiming(`webView.getDataFromWorkers`),A=u.getZkProofVerifierName(g,_),j=u.calcAmountChanges(g,_),M=g.map(e=>e[0].erc20TokenAddress),N=u.calcEncryptedOutputs(_),P=t.defaultSignatureData,F=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:I}=v.getSpendingKeyPair(),L=u.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),F),F,v.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:R,rootHashHinkal:z,inNullifiers:B}=await p.getDataFromWorkers(w,h,g.map(e=>e.map(e=>e.getConstructableParams())));k.log(`done`,{verifierName:A,chainId:w});let V=u.buildOutCommitments(_),H=r.randomBigInt(31),U=n.poseidonFunction(H),W=BigInt(_.length>0?_[0][0].timeStamp:a.getCurrentTimeInSeconds()),G={rootHashHinkal:z,spendingPublicKey:I,nullifyingPrivateKey:F,erc20TokenAddresses:M,amountChanges:j,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>u.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>u.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>u.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:B,inCommitmentSiblings:re,inCommitmentSiblingSides:R,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:W,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:V,calldataHash:0n,messageSeed:H,H0Ax:l.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},K=u.calcPublicSignalCount(A,G.erc20TokenAddresses,G.amountChanges,G.inNullifiers,G.outCommitments),q=u.calcAmountChanges(g,_,!0),J=u.getSlippageValues(q);s.Logger.log({publicSignalCount:K});let Y=Array.isArray(x)?x:[x],ie=e.getOnchainChainId(w),ae=O?te.AccountActions.getSignerAddressFromPrivateKey(ie,O):void 0,X=y===o.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(w,b??t.zeroAddress,O,Y,U,ae):await m.encodeEmporiumMetadata(w,t.zeroAddress,void 0,y===0n?[]:Y,U,t.zeroAddress);G.calldataHash=u.createCallDataHash(K,C,b,y,X,N,E,J,T,S,P,D);let Z=d.computeSignedMessageHashEvm({rootHashHinkal:z,erc20TokenAddresses:M,amountChanges:j,outTimeStamp:W,inNullifiers:B,outCommitments:V,calldataHash:G.calldataHash,message:U,outH1Ay:L.H1,H0Ax:G.H0Ax,H0Ay:L.H0}),{R8:Q,S:oe}=v.signEddsa(Z);G.eddsaSignature=[Q[0],Q[1],oe],G.signedMessageHash=Z;let $=A.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:W,calldataHash:G.calldataHash,messageSeed:H},{zkCallData:ce,commitmentValidationData:le}=await f.generateMainAndCommitmentZkProof(w,v,M,g,A,$?se:G,ne);return{zkCallData:ce,circomData:ee.generateCircomData(V,B,z,q,M,_,N,K,y,b,X,C,G.calldataHash,L,T,E,$?Number(W):void 0,J,S,P,D),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:N,commitmentValidationData:le}};exports.constructZkProof=h;