@gurge/sdk 0.3.27 → 0.3.28

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 (140) hide show
  1. package/common/src/crypto/BabyJubRN.cjs +1 -0
  2. package/common/src/crypto/BabyJubRN.d.ts +2 -0
  3. package/common/src/crypto/BabyJubRN.mjs +66 -0
  4. package/common/src/crypto/EddsaRN.cjs +1 -0
  5. package/common/src/crypto/EddsaRN.mjs +41 -0
  6. package/common/src/crypto/babyJub.cjs +1 -1
  7. package/common/src/crypto/babyJub.mjs +6 -12
  8. package/common/src/crypto/eddsa.cjs +1 -1
  9. package/common/src/crypto/eddsa.mjs +6 -12
  10. package/common/src/crypto/poseidon.cjs +1 -1
  11. package/common/src/crypto/poseidon.mjs +6 -12
  12. package/common/src/crypto/preProcessing.cjs +1 -1
  13. package/common/src/crypto/preProcessing.mjs +13 -23
  14. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  15. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +9 -9
  16. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +6 -6
  18. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +1 -1
  20. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  21. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +18 -18
  22. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  23. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +17 -17
  24. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  25. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +13 -13
  26. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  27. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +11 -11
  28. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  29. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +14 -14
  30. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  31. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +51 -51
  32. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  33. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +51 -51
  34. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  35. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +20 -20
  36. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  37. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +19 -19
  38. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  39. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +1 -1
  40. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  41. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +9 -9
  42. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  43. package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +3 -1
  44. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -46
  45. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  46. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +33 -33
  47. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
  48. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
  49. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
  50. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +26 -42
  51. package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
  52. package/common/src/data-structures/crypto-keys/decodeUTXO.mjs +7 -7
  53. package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.cjs +1 -1
  54. package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.mjs +1 -1
  55. package/common/src/data-structures/utxo/Utxo.cjs +1 -1
  56. package/common/src/data-structures/utxo/Utxo.d.ts +0 -1
  57. package/common/src/data-structures/utxo/Utxo.mjs +6 -19
  58. package/common/src/functions/index.cjs +1 -1
  59. package/common/src/functions/index.mjs +4 -3
  60. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  61. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -86
  62. package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
  63. package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +2 -2
  64. package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +22 -28
  65. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  66. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +14 -14
  67. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  68. package/common/src/functions/snarkjs/common.snarkjs.mjs +7 -7
  69. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  70. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +60 -67
  71. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  72. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +60 -60
  73. package/common/src/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
  74. package/common/src/functions/snarkjs/verifyCommitmentValidationData.mjs +1 -1
  75. package/common/src/functions/utils/bigint-math.utils.cjs +1 -1
  76. package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
  77. package/common/src/functions/utils/bigint-math.utils.mjs +18 -1
  78. package/common/src/functions/utils/buildClaimableDepositPlan.cjs +1 -1
  79. package/common/src/functions/utils/buildClaimableDepositPlan.mjs +1 -1
  80. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  81. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  82. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  83. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +4 -4
  84. package/common/src/functions/utils/index.cjs +1 -1
  85. package/common/src/functions/utils/index.mjs +3 -3
  86. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  87. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +71 -122
  88. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  89. package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
  90. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  91. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +42 -42
  92. package/common/src/types/index.cjs +1 -1
  93. package/common/src/types/index.mjs +1 -1
  94. package/common/src/webworker/logError-D8yBaP96.js +2 -0
  95. package/common/src/webworker/package.json +1 -1
  96. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  97. package/common/src/webworker/performTaskWithWorker.mjs +17 -18
  98. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  99. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  100. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  101. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -4
  102. package/common/src/webworker/viteWorkerURL.constant.d.ts +0 -1
  103. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -4
  104. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  105. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  106. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  107. package/package.json +1 -1
  108. package/react-native/HinkalWebViewWorker.cjs +4 -76
  109. package/react-native/HinkalWebViewWorker.mjs +49 -152
  110. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  111. package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
  112. package/react-native/bridge/HinkalRNWorker.mjs +11 -16
  113. package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
  114. package/react-native/shims/circomlibjs.js +2 -2
  115. package/react-native/workerCDNUrls.cjs +1 -1
  116. package/react-native/workerCDNUrls.d.ts +0 -1
  117. package/react-native/workerCDNUrls.mjs +2 -2
  118. package/sdk/package.json.cjs +1 -1
  119. package/sdk/package.json.mjs +1 -1
  120. package/common/src/crypto/rnCryptoBridge.cjs +0 -1
  121. package/common/src/crypto/rnCryptoBridge.d.ts +0 -8
  122. package/common/src/crypto/rnCryptoBridge.mjs +0 -10
  123. package/common/src/crypto/rnUtxoCrypto.cjs +0 -1
  124. package/common/src/crypto/rnUtxoCrypto.d.ts +0 -25
  125. package/common/src/crypto/rnUtxoCrypto.mjs +0 -74
  126. package/common/src/functions/utils/hinkalTiming.utils.cjs +0 -1
  127. package/common/src/functions/utils/hinkalTiming.utils.d.ts +0 -11
  128. package/common/src/functions/utils/hinkalTiming.utils.mjs +0 -21
  129. package/common/src/functions/utils/utxoPadding.utils.cjs +0 -1
  130. package/common/src/functions/utils/utxoPadding.utils.d.ts +0 -2
  131. package/common/src/functions/utils/utxoPadding.utils.mjs +0 -14
  132. package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +0 -1
  133. package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +0 -51
  134. package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +0 -6
  135. package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +0 -1
  136. package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +0 -2
  137. package/common/src/webworker/logError-Dy_GXEF5.js +0 -2
  138. package/react-native/bridge/RnWebViewCryptoBridge.cjs +0 -1
  139. package/react-native/bridge/RnWebViewCryptoBridge.d.ts +0 -7
  140. package/react-native/bridge/RnWebViewCryptoBridge.mjs +0 -49
@@ -1,96 +1,53 @@
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 { getUtxoCircuitH0Coords as a, getUtxoCircuitInRandomization as o, hasOnlyZeroAmounts as s } from "../snarkjs/common.snarkjs.mjs";
7
- import { getSpendingPublicKeyForRn as c } from "../../crypto/rnUtxoCrypto.mjs";
8
- import { formatMintAddress as l } from "../utils/solanaMint.utils.mjs";
9
- import { createRnDeltaTiming as u } from "../utils/hinkalTiming.utils.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";
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 { getUtxoCircuitH0Coords as r, getUtxoCircuitInRandomization as i, hasOnlyZeroAmounts as a } from "../snarkjs/common.snarkjs.mjs";
5
+ import { WorkerVariant as o } from "../../webworker/worker.registry.mjs";
6
+ import { performTaskWithWorker as s } from "../../webworker/performTaskWithWorker.mjs";
7
+ import { ZKProofWorkerActionType as c } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
13
8
  //#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
14
- var m = async (m, h, g, _) => {
15
- let v = u("mainThread.commitmentValidation");
16
- if (s(_)) 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) => o(e))), C = _.map((e) => e.map((e) => e.getConstructableParams()));
18
- v.log("serializeInputs");
19
- let w = u("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,
9
+ var l = async (l, u, d, f) => {
10
+ if (a(f)) return;
11
+ let p = e(l), m = f.map((e) => e.map((e) => e.amount.toString())), h = f.map((e) => e.map((e) => e.timeStamp)), g = f.map((e) => e.map((e) => i(e))), _ = f.map((e) => e.map((e) => e.getConstructableParams())), v = f.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), y = await s({
12
+ type: o.ZKProof,
23
13
  payload: {
24
- type: p.BUILD_IN_NULLIFIERS,
25
- data: { inputUtxosSerialized: C }
14
+ type: c.BUILD_IN_NULLIFIERS,
15
+ data: { inputUtxosSerialized: _ }
26
16
  }
27
- });
28
- v.log("buildInNullifiers-worker-done");
29
- let D = h.getShieldedPrivateKey(), O = await c(h), k = y ? g.map((e) => {
30
- let { compressedAddress: t } = l(e);
17
+ }), b = u.getShieldedPrivateKey(), x = u.getSpendingKeyPair().pubSpendingBJJPoint, S = p ? d.map((e) => {
18
+ let { compressedAddress: t } = n(e);
31
19
  return BigInt(t).toString();
32
- }) : g.map((e) => BigInt(e).toString()), A = u("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
- });
49
- });
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}`);
20
+ }) : d.map((e) => BigInt(e).toString());
21
+ f.forEach((e, n) => {
22
+ e.forEach((e, r) => {
23
+ let i = e.getStealthAddress(), a = e.spendingPublicKey ?? x, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, b, a) : t.getStealthAddress(BigInt(e.randomization), b);
24
+ if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
65
25
  });
66
26
  });
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) => a(e)[0].toString())),
75
- inH0Ay: _.map((e) => e.map((e) => a(e)[1].toString())),
76
- isNewStyle: _.map((e) => e.map((e) => !!e.isNewStyle)),
77
- inTimeStamps: x,
78
- inCommitments: T,
79
- inNullifiers: E
27
+ let C = {
28
+ nullifyingPrivateKey: b,
29
+ spendingPublicKey: x,
30
+ erc20TokenAddresses: S,
31
+ inAmounts: m,
32
+ inRandomizations: g,
33
+ inH0Ax: f.map((e) => e.map((e) => r(e)[0].toString())),
34
+ inH0Ay: f.map((e) => e.map((e) => r(e)[1].toString())),
35
+ isNewStyle: f.map((e) => e.map((e) => !!e.isNewStyle)),
36
+ inTimeStamps: h,
37
+ inCommitments: v,
38
+ inNullifiers: y
80
39
  };
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
40
+ if (!(!d.length || !f[0]?.length)) return {
41
+ tokenAddresses: S,
42
+ inAmounts: m,
43
+ inTimeStamps: h,
44
+ inRandomizations: g,
45
+ inCommitments: v,
46
+ inNullifiers: y,
47
+ verifierName: `commitmentCalculator${d.length}x${f[0].length}`,
48
+ commitmentInput: C
92
49
  };
93
- }, h = (e, t) => {
50
+ }, u = (e, t) => {
94
51
  if (!(!e || !t)) return {
95
52
  tokenAddresses: e.tokenAddresses,
96
53
  inAmounts: e.inAmounts,
@@ -106,4 +63,4 @@ var m = async (m, h, g, _) => {
106
63
  };
107
64
  };
108
65
  //#endregion
109
- export { m as buildCommitmentValidationData, h as buildCommitmentValidationDataFromProof };
66
+ export { l as buildCommitmentValidationData, u as buildCommitmentValidationDataFromProof };
@@ -1 +1 @@
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
+ 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,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) => Promise<{
3
+ export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => {
4
4
  outputUtxos: Utxo[];
5
- }>;
5
+ };
@@ -1,39 +1,33 @@
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 { 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";
3
+ import { Utxo as r } from "../../data-structures/utxo/Utxo.mjs";
6
4
  //#region libs/shared/common/src/functions/pre-transaction/outputUtxoProcessing.ts
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: _,
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,
18
15
  isNewStyle: !0
19
16
  })];
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,
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,
29
23
  H0: [BigInt(t), BigInt(n)],
30
24
  stealthAddress: e,
31
- encryptionKey: r,
32
- timeStamp: l,
25
+ encryptionKey: i,
26
+ timeStamp: s,
33
27
  isNewStyle: !0
34
- })), p.log("newUtxo-recipient");
28
+ }));
35
29
  }
36
- return p.log("done", { outputCount: v.length }), { outputUtxos: v };
30
+ return { outputUtxos: m };
37
31
  };
38
32
  //#endregion
39
- export { o as outputUtxoProcessing };
33
+ export { i as outputUtxoProcessing };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../../error-handling/logger.cjs`),a=require(`../utils/string.utils.cjs`),o=require(`../utils/erc20tokenFunctions.cjs`),s=require(`../../constants/addresses.constants.cjs`),c=require(`../utils/getContractAddress.cjs`),l=require(`./emporium.helpers.cjs`),u=require(`../pre-transaction/getExternalSwapAddress.cjs`);let d=require(`ethers`);var f=(e,t,n,r,i,a,o=!1)=>{let s={tokenIn:t,tokenOut:r,fee:BigInt(a),recipient:i,amountIn:n,amountOutMinimum:0,sqrtPriceLimitX96:0};return l.emporiumOp({contract:new d.ethers.Contract(e,[`function exactInputSingle(tuple(address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96)) external payable returns (uint256 amountOut)`]),func:`exactInputSingle`,args:[s],invokeWallet:o})},p=(e,t,n,r,i,o,s=!1)=>l.emporiumOp({contract:n,callDataString:a.replaceAllInstances(r,u.getExternalSwapAddress(e,t).slice(2),i.slice(2)),value:o,invokeWallet:s}),m=async(e,n)=>{let r=(await o.getErc20TokensForChainAPI(n)).find(e=>e.symbol===`USDT`);return r?t.caseInsensitiveEqual(e,r.erc20TokenAddress):!1},h=async(e,t,n,r,a,o)=>{if(await m(c.getContractAddress(n),e))try{await n.allowance(r,a)>0n&&t.push(l.createApproveEmporiumOp(n,a,0n,o))}catch(e){i.Logger.error(`Error in nullifyUsdtApprovalIfNeeded`,e)}},g=async(t,n,i,a,o,c,u,f)=>{if(i!==e.zeroAddress){let f=s.SWAP_FEE_TAKER_ADDRESSES[n],p=t.getContractWithFetcher(n,r.ContractType.ERC20Contract,i),m=await p.balanceOf(a);await h(n,c,p,a,f,u),c.push(l.createApproveEmporiumOp(p,f,2n**256n-1n,u));let g=new d.ethers.Contract(f,[`function takeSwapFee(address token, uint256 beforeBalance, uint256 variableRate, address relay) external payable`]),_=o;c.push(l.emporiumOp({contract:g,func:`takeSwapFee`,args:[i,m,e.HINKAL_SWAP_VARIABLE_RATE,_],invokeWallet:u}))}else{let t=o;c.push(l.emporiumOp({contract:t,value:f*e.HINKAL_SWAP_VARIABLE_RATE/10000n,invokeWallet:u}))}},_=async(t,i,a,o,c,u,m,_,v,y,b,x,S=!1)=>{let C=m<0n?-1n*m:m,w=[],T=s.NATIVE_TOKEN_WRAPPER_ADDRESSES[i],E=!1,D;if(a===n.ExternalActionId.OneInch||a===n.ExternalActionId.Lifi){if(u!==e.zeroAddress){let e=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,u);w.push(l.createApproveEmporiumOp(e,o,C,S))}let s=0n;return u===e.zeroAddress&&(s+=C),_&&v===e.zeroAddress&&_<0n&&(s+=-1n*_),D=p(i,a,o,c,b,s>0n?s:void 0,S),w.push(D),(a===n.ExternalActionId.OneInch||y&&a===n.ExternalActionId.Lifi)&&v&&_!==void 0&&await g(t,i,v,b,x,w,S,_),w}if(!v||!_)throw Error(`There should be output token for UniSwap and Odos`);if(u===e.zeroAddress){let e=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,T);w.push(l.emporiumOp({contract:e,func:`deposit`,value:C,invokeWallet:S})),u=T}let O=0n;if(v===e.zeroAddress&&(v=T,E=!0,O=await t.getContractWithFetcher(i,r.ContractType.ERC20Contract,T).balanceOf(b)),u!==e.zeroAddress){let e=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,u);await h(i,w,e,b,o,S),w.push(l.createApproveEmporiumOp(e,o,C,S))}if(D=a===n.ExternalActionId.Uniswap?f(o,u,C,v,b,c,S):p(i,a,o,c,b,void 0,S),w.push(D),await g(t,i,v,b,x,w,S,_),E){let e=s.WRAPPER_TOKEN_EXCHANGE_ADDRESSES[i],n=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,T);w.push(l.createApproveEmporiumOp(n,e,2n**256n-1n,S));let a=new d.ethers.Contract(e,[`function withdrawBalanceDifference(uint256 beforeBalance) external`]);w.push(l.emporiumOp({contract:a,func:`withdrawBalanceDifference`,args:[O],invokeWallet:S}))}return w};exports.createSwapToEmporiumOpForUniswap=f,exports.createSwapToEmporiumOps=_;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../error-handling/logger.cjs`),a=require(`../utils/string.utils.cjs`),o=require(`../utils/erc20tokenFunctions.cjs`),s=require(`../../constants/addresses.constants.cjs`),c=require(`../utils/getContractAddress.cjs`),l=require(`./emporium.helpers.cjs`),u=require(`../pre-transaction/getExternalSwapAddress.cjs`);let d=require(`ethers`);var f=(e,t,n,r,i,a,o=!1)=>{let s={tokenIn:t,tokenOut:r,fee:BigInt(a),recipient:i,amountIn:n,amountOutMinimum:0,sqrtPriceLimitX96:0};return l.emporiumOp({contract:new d.ethers.Contract(e,[`function exactInputSingle(tuple(address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96)) external payable returns (uint256 amountOut)`]),func:`exactInputSingle`,args:[s],invokeWallet:o})},p=(e,t,n,r,i,o,s=!1)=>l.emporiumOp({contract:n,callDataString:a.replaceAllInstances(r,u.getExternalSwapAddress(e,t).slice(2),i.slice(2)),value:o,invokeWallet:s}),m=async(e,n)=>{let r=(await o.getErc20TokensForChainAPI(n)).find(e=>e.symbol===`USDT`);return r?t.caseInsensitiveEqual(e,r.erc20TokenAddress):!1},h=async(e,t,n,r,a,o)=>{if(await m(c.getContractAddress(n),e))try{await n.allowance(r,a)>0n&&t.push(l.createApproveEmporiumOp(n,a,0n,o))}catch(e){i.Logger.error(`Error in nullifyUsdtApprovalIfNeeded`,e)}},g=async(t,r,i,a,o,c,u,f)=>{if(i!==e.zeroAddress){let f=s.SWAP_FEE_TAKER_ADDRESSES[r],p=t.getContractWithFetcher(r,n.ContractType.ERC20Contract,i),m=await p.balanceOf(a);await h(r,c,p,a,f,u),c.push(l.createApproveEmporiumOp(p,f,2n**256n-1n,u));let g=new d.ethers.Contract(f,[`function takeSwapFee(address token, uint256 beforeBalance, uint256 variableRate, address relay) external payable`]),_=o;c.push(l.emporiumOp({contract:g,func:`takeSwapFee`,args:[i,m,e.HINKAL_SWAP_VARIABLE_RATE,_],invokeWallet:u}))}else{let t=o;c.push(l.emporiumOp({contract:t,value:f*e.HINKAL_SWAP_VARIABLE_RATE/10000n,invokeWallet:u}))}},_=async(t,i,a,o,c,u,m,_,v,y,b,x,S=!1)=>{let C=m<0n?-1n*m:m,w=[],T=s.NATIVE_TOKEN_WRAPPER_ADDRESSES[i],E=!1,D;if(a===r.ExternalActionId.OneInch||a===r.ExternalActionId.Lifi){if(u!==e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,u);w.push(l.createApproveEmporiumOp(e,o,C,S))}let s=0n;return u===e.zeroAddress&&(s+=C),_&&v===e.zeroAddress&&_<0n&&(s+=-1n*_),D=p(i,a,o,c,b,s>0n?s:void 0,S),w.push(D),(a===r.ExternalActionId.OneInch||y&&a===r.ExternalActionId.Lifi)&&v&&_!==void 0&&await g(t,i,v,b,x,w,S,_),w}if(!v||!_)throw Error(`There should be output token for UniSwap and Odos`);if(u===e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T);w.push(l.emporiumOp({contract:e,func:`deposit`,value:C,invokeWallet:S})),u=T}let O=0n;if(v===e.zeroAddress&&(v=T,E=!0,O=await t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T).balanceOf(b)),u!==e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,u);await h(i,w,e,b,o,S),w.push(l.createApproveEmporiumOp(e,o,C,S))}if(D=a===r.ExternalActionId.Uniswap?f(o,u,C,v,b,c,S):p(i,a,o,c,b,void 0,S),w.push(D),await g(t,i,v,b,x,w,S,_),E){let e=s.WRAPPER_TOKEN_EXCHANGE_ADDRESSES[i],r=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T);w.push(l.createApproveEmporiumOp(r,e,2n**256n-1n,S));let a=new d.ethers.Contract(e,[`function withdrawBalanceDifference(uint256 beforeBalance) external`]);w.push(l.emporiumOp({contract:a,func:`withdrawBalanceDifference`,args:[O],invokeWallet:S}))}return w};exports.createSwapToEmporiumOpForUniswap=f,exports.createSwapToEmporiumOps=_;
@@ -1,7 +1,7 @@
1
1
  import { HINKAL_SWAP_VARIABLE_RATE as e, zeroAddress as t } from "../../constants/protocol.constants.mjs";
2
2
  import { caseInsensitiveEqual as n } from "../utils/caseInsensitive.utils.mjs";
3
- import { ExternalActionId as r } from "../../types/external-action.types.mjs";
4
- import { ContractType as i } from "../../types/ethereum-network.types.mjs";
3
+ import { ContractType as r } from "../../types/ethereum-network.types.mjs";
4
+ import { ExternalActionId as i } from "../../types/external-action.types.mjs";
5
5
  import { Logger as a } from "../../error-handling/logger.mjs";
6
6
  import { replaceAllInstances as o } from "../utils/string.utils.mjs";
7
7
  import { getErc20TokensForChainAPI as s } from "../utils/erc20tokenFunctions.mjs";
@@ -41,10 +41,10 @@ var g = (e, t, n, r, i, a, o = !1) => {
41
41
  } catch (e) {
42
42
  a.error("Error in nullifyUsdtApprovalIfNeeded", e);
43
43
  }
44
- }, b = async (n, r, a, o, s, c, u, d) => {
44
+ }, b = async (n, i, a, o, s, c, u, d) => {
45
45
  if (a !== t) {
46
- let t = l[r], d = n.getContractWithFetcher(r, i.ERC20Contract, a), m = await d.balanceOf(o);
47
- await y(r, c, d, o, t, u), c.push(f(d, t, 2n ** 256n - 1n, u));
46
+ let t = l[i], d = n.getContractWithFetcher(i, r.ERC20Contract, a), m = await d.balanceOf(o);
47
+ await y(i, c, d, o, t, u), c.push(f(d, t, 2n ** 256n - 1n, u));
48
48
  let g = new h.Contract(t, ["function takeSwapFee(address token, uint256 beforeBalance, uint256 variableRate, address relay) external payable"]), _ = s;
49
49
  c.push(p({
50
50
  contract: g,
@@ -67,17 +67,17 @@ var g = (e, t, n, r, i, a, o = !1) => {
67
67
  }
68
68
  }, x = async (e, n, a, o, s, l, d, m, v, x, S, C, w = !1) => {
69
69
  let T = d < 0n ? -1n * d : d, E = [], D = c[n], O = !1, k;
70
- if (a === r.OneInch || a === r.Lifi) {
70
+ if (a === i.OneInch || a === i.Lifi) {
71
71
  if (l !== t) {
72
- let t = e.getContractWithFetcher(n, i.ERC20Contract, l);
72
+ let t = e.getContractWithFetcher(n, r.ERC20Contract, l);
73
73
  E.push(f(t, o, T, w));
74
74
  }
75
75
  let c = 0n;
76
- return l === t && (c += T), m && v === t && m < 0n && (c += -1n * m), k = _(n, a, o, s, S, c > 0n ? c : void 0, w), E.push(k), (a === r.OneInch || x && a === r.Lifi) && v && m !== void 0 && await b(e, n, v, S, C, E, w, m), E;
76
+ return l === t && (c += T), m && v === t && m < 0n && (c += -1n * m), k = _(n, a, o, s, S, c > 0n ? c : void 0, w), E.push(k), (a === i.OneInch || x && a === i.Lifi) && v && m !== void 0 && await b(e, n, v, S, C, E, w, m), E;
77
77
  }
78
78
  if (!v || !m) throw Error("There should be output token for UniSwap and Odos");
79
79
  if (l === t) {
80
- let t = e.getContractWithFetcher(n, i.ERC20Contract, D);
80
+ let t = e.getContractWithFetcher(n, r.ERC20Contract, D);
81
81
  E.push(p({
82
82
  contract: t,
83
83
  func: "deposit",
@@ -86,13 +86,13 @@ var g = (e, t, n, r, i, a, o = !1) => {
86
86
  })), l = D;
87
87
  }
88
88
  let A = 0n;
89
- if (v === t && (v = D, O = !0, A = await e.getContractWithFetcher(n, i.ERC20Contract, D).balanceOf(S)), l !== t) {
90
- let t = e.getContractWithFetcher(n, i.ERC20Contract, l);
89
+ if (v === t && (v = D, O = !0, A = await e.getContractWithFetcher(n, r.ERC20Contract, D).balanceOf(S)), l !== t) {
90
+ let t = e.getContractWithFetcher(n, r.ERC20Contract, l);
91
91
  await y(n, E, t, S, o, w), E.push(f(t, o, T, w));
92
92
  }
93
- if (k = a === r.Uniswap ? g(o, l, T, v, S, s, w) : _(n, a, o, s, S, void 0, w), E.push(k), await b(e, n, v, S, C, E, w, m), O) {
94
- let t = u[n], r = e.getContractWithFetcher(n, i.ERC20Contract, D);
95
- E.push(f(r, t, 2n ** 256n - 1n, w));
93
+ if (k = a === i.Uniswap ? g(o, l, T, v, S, s, w) : _(n, a, o, s, S, void 0, w), E.push(k), await b(e, n, v, S, C, E, w, m), O) {
94
+ let t = u[n], i = e.getContractWithFetcher(n, r.ERC20Contract, D);
95
+ E.push(f(i, t, 2n ** 256n - 1n, w));
96
96
  let a = new h.Contract(t, ["function withdrawBalanceDifference(uint256 beforeBalance) external"]);
97
97
  E.push(p({
98
98
  contract: a,
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),r=require(`../../types/circom-data.types.cjs`),i=require(`../utils/external-action.utils.cjs`),a=require(`./getOriginalSender.cjs`),o=require(`../utils/bit.operations.cjs`);let s=require(`ethers`);var c=e=>{if(e.H0?.[0]!==void 0&&e.H0[1]!==void 0)return[e.H0[0],e.H0[1]];if(e.randomization!==void 0)return t.UserKeys.getH0FromRandomization(e.randomization);throw Error(`UTXO missing H0 coordinates for proof input`)},l=e=>{if(e.isNewStyle)return`0`;if(e.randomization!==void 0)return e.randomization.toString();throw Error(`UTXO missing randomization for old-style proof input`)},u=Array.from({length:25},()=>`0`),d=e=>e.length>0&&e.every(e=>e.every(e=>BigInt(e.amount)===0n)),f=e=>({inCommitmentSiblings:e.map(e=>e.map(()=>[...u])),inCommitmentSiblingSides:e.map(e=>e.map(()=>[...u])),inNullifiers:e.map(e=>e.map(()=>`0`))}),p=e=>e.map(e=>e.map(e=>e.amount===0n?`0`:e.getCommitment())),m=(t,n,r=!1)=>{let i=[];for(let a=0;a<t.length;a+=1){let o=0n,s=0n;for(let e=0;e<t[a].length;e+=1)o+=t[a][e].amount;for(let e=0;e<n[a].length;e+=1)s+=n[a][e].amount;s-o<0?r?i.push(s-o):i.push(e.CIRCOM_P+(s-o)):i.push(s-o)}return i},h=e=>e.map(e=>e>=0n?0n:e),g=e=>{if(e.length===0)return[];let t=[[``]];for(let r=0;r<e.length;r+=1)r>0&&t.push([``]),e[r].forEach((e,i)=>{t[r][i]=`0x${Buffer.from(n.encryptUtxo(e)).toString(`hex`)}`});return t},_=e=>{let t={...e};return t.amountChanges=e.amountChanges.map(e=>e.toString()),t.calldataHash=e.calldataHash.toString(),t.rootHashAccessToken=e.rootHashAccessToken?.toString(),t.stealthAddressStructure.extraRandomization=e.stealthAddressStructure.extraRandomization.toString(),t.stealthAddressStructure.stealthAddress=e.stealthAddressStructure.stealthAddress.toString(),t.stealthAddressStructure.H0=e.stealthAddressStructure.H0.toString(),t.stealthAddressStructure.H1=e.stealthAddressStructure.H1.toString(),t.rootHashHinkal=e.rootHashHinkal?.toString(),t.externalActionId=e.externalActionId?.toString(),t.slippageValues=e.slippageValues.map(e=>e.toString()),t.hinkalLogicArgs.inHinkalAddress=e.hinkalLogicArgs.inHinkalAddress.toString(),t.hinkalLogicArgs.executeApprovalChanges=e.hinkalLogicArgs.executeApprovalChanges.map(e=>e.toString()),t.hinkalLogicArgs.useApprovalUtxoData=e.hinkalLogicArgs.useApprovalUtxoData.map(e=>({approvalChanges:e.approvalChanges.map(e=>e.toString()),externalApprovalAddresses:e.externalApprovalAddresses,conversionInHinkalAddress:e.conversionInHinkalAddress.map(e=>e.toString())})),t.feeStructure.flatFee=e.feeStructure.flatFee.toString(),t.feeStructure.variableRate=e.feeStructure.variableRate.toString(),t},v=(t,n,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||r.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,n),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,n,o,typeof c==`bigint`?c:i.getExternalActionIdHash(c),l]),b=s.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(address, address, bytes, bytes)`,`bytes[][]`,`tuple(address, uint256, uint256)`,`int256[]`,`bool[]`,`tuple(uint8 v, bytes32 r, bytes32 s, uint256 accessKey, uint256 nonce, address ethereumAddress)`,`address`],[_,u,[m.feeToken,m.flatFee,m.variableRate],f,p,h,v]),x=BigInt(s.ethers.keccak256(y)),S=BigInt(s.ethers.keccak256(b)),C=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint256`,`uint256`],[x,S]);return BigInt(s.ethers.keccak256(C))%e.CIRCOM_P},y=(e,t,n,r,i)=>e.startsWith(`mainEVMCircuitMin0`)?3:2+t.length+n.length+1+r.flat().length+i.flat().length+1+1+1+1+1+1,b=(e,n,r)=>{let{H0:i}=t.UserKeys.getRandomizedStealthPair(e,n),a=t.UserKeys.getH1FromH0(i,n),s=BigInt(t.UserKeys.getStealthAddressNewStyle(i,n,r));return{extraRandomization:o.addHighestBitToNumber(i[0]),H0:i[1],H1:a[1],stealthAddress:s}},x=(e,t)=>t.length===0?`mainEVMCircuitMin0`:`mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;exports.buildOutCommitments=p,exports.buildZeroInputMerkleDataFromSerialized=f,exports.calcAmountChanges=m,exports.calcEncryptedOutputs=g,exports.calcPublicSignalCount=y,exports.calcStealthAddressStructure=b,exports.createCallDataHash=v,exports.getSlippageValues=h,exports.getUtxoCircuitH0Coords=c,exports.getUtxoCircuitInRandomization=l,exports.getZkProofVerifierName=x,exports.hasOnlyZeroAmounts=d,exports.serializeCircomData=_;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../types/circom-data.types.cjs`),r=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),i=require(`../utils/external-action.utils.cjs`),a=require(`./getOriginalSender.cjs`),o=require(`../utils/bit.operations.cjs`);let s=require(`ethers`);var c=e=>{if(e.H0?.[0]!==void 0&&e.H0[1]!==void 0)return[e.H0[0],e.H0[1]];if(e.randomization!==void 0)return t.UserKeys.getH0FromRandomization(e.randomization);throw Error(`UTXO missing H0 coordinates for proof input`)},l=e=>{if(e.isNewStyle)return`0`;if(e.randomization!==void 0)return e.randomization.toString();throw Error(`UTXO missing randomization for old-style proof input`)},u=Array.from({length:25},()=>`0`),d=e=>e.length>0&&e.every(e=>e.every(e=>BigInt(e.amount)===0n)),f=e=>({inCommitmentSiblings:e.map(e=>e.map(()=>[...u])),inCommitmentSiblingSides:e.map(e=>e.map(()=>[...u])),inNullifiers:e.map(e=>e.map(()=>`0`))}),p=e=>e.map(e=>e.map(e=>e.amount===0n?`0`:e.getCommitment())),m=(t,n,r=!1)=>{let i=[];for(let a=0;a<t.length;a+=1){let o=0n,s=0n;for(let e=0;e<t[a].length;e+=1)o+=t[a][e].amount;for(let e=0;e<n[a].length;e+=1)s+=n[a][e].amount;s-o<0?r?i.push(s-o):i.push(e.CIRCOM_P+(s-o)):i.push(s-o)}return i},h=e=>e.map(e=>e>=0n?0n:e),g=e=>{if(e.length===0)return[];let t=[[``]];for(let n=0;n<e.length;n+=1)n>0&&t.push([``]),e[n].forEach((e,i)=>{t[n][i]=`0x${Buffer.from(r.encryptUtxo(e)).toString(`hex`)}`});return t},_=e=>{let t={...e};return t.amountChanges=e.amountChanges.map(e=>e.toString()),t.calldataHash=e.calldataHash.toString(),t.rootHashAccessToken=e.rootHashAccessToken?.toString(),t.stealthAddressStructure.extraRandomization=e.stealthAddressStructure.extraRandomization.toString(),t.stealthAddressStructure.stealthAddress=e.stealthAddressStructure.stealthAddress.toString(),t.stealthAddressStructure.H0=e.stealthAddressStructure.H0.toString(),t.stealthAddressStructure.H1=e.stealthAddressStructure.H1.toString(),t.rootHashHinkal=e.rootHashHinkal?.toString(),t.externalActionId=e.externalActionId?.toString(),t.slippageValues=e.slippageValues.map(e=>e.toString()),t.hinkalLogicArgs.inHinkalAddress=e.hinkalLogicArgs.inHinkalAddress.toString(),t.hinkalLogicArgs.executeApprovalChanges=e.hinkalLogicArgs.executeApprovalChanges.map(e=>e.toString()),t.hinkalLogicArgs.useApprovalUtxoData=e.hinkalLogicArgs.useApprovalUtxoData.map(e=>({approvalChanges:e.approvalChanges.map(e=>e.toString()),externalApprovalAddresses:e.externalApprovalAddresses,conversionInHinkalAddress:e.conversionInHinkalAddress.map(e=>e.toString())})),t.feeStructure.flatFee=e.feeStructure.flatFee.toString(),t.feeStructure.variableRate=e.feeStructure.variableRate.toString(),t},v=(t,r,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||n.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,r),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,r,o,typeof c==`bigint`?c:i.getExternalActionIdHash(c),l]),b=s.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(address, address, bytes, bytes)`,`bytes[][]`,`tuple(address, uint256, uint256)`,`int256[]`,`bool[]`,`tuple(uint8 v, bytes32 r, bytes32 s, uint256 accessKey, uint256 nonce, address ethereumAddress)`,`address`],[_,u,[m.feeToken,m.flatFee,m.variableRate],f,p,h,v]),x=BigInt(s.ethers.keccak256(y)),S=BigInt(s.ethers.keccak256(b)),C=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint256`,`uint256`],[x,S]);return BigInt(s.ethers.keccak256(C))%e.CIRCOM_P},y=(e,t,n,r,i)=>e.startsWith(`mainEVMCircuitMin0`)?3:2+t.length+n.length+1+r.flat().length+i.flat().length+1+1+1+1+1+1,b=(e,n,r)=>{let{H0:i}=t.UserKeys.getRandomizedStealthPair(e,n),a=t.UserKeys.getH1FromH0(i,n),s=BigInt(t.UserKeys.getStealthAddressNewStyle(i,n,r));return{extraRandomization:o.addHighestBitToNumber(i[0]),H0:i[1],H1:a[1],stealthAddress:s}},x=(e,t)=>t.length===0?`mainEVMCircuitMin0`:`mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;exports.buildOutCommitments=p,exports.buildZeroInputMerkleDataFromSerialized=f,exports.calcAmountChanges=m,exports.calcEncryptedOutputs=g,exports.calcPublicSignalCount=y,exports.calcStealthAddressStructure=b,exports.createCallDataHash=v,exports.getSlippageValues=h,exports.getUtxoCircuitH0Coords=c,exports.getUtxoCircuitInRandomization=l,exports.getZkProofVerifierName=x,exports.hasOnlyZeroAmounts=d,exports.serializeCircomData=_;
@@ -1,7 +1,7 @@
1
1
  import { CIRCOM_P as e, zeroAddress as t } from "../../constants/protocol.constants.mjs";
2
2
  import { UserKeys as n } from "../../data-structures/crypto-keys/keys.mjs";
3
- import { encryptUtxo as r } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
4
- import { defaultHookData as i } from "../../types/circom-data.types.mjs";
3
+ import { defaultHookData as r } from "../../types/circom-data.types.mjs";
4
+ import { encryptUtxo as i } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
5
5
  import { getExternalActionIdHash as a } from "../utils/external-action.utils.mjs";
6
6
  import { getOriginalSender as o } from "./getOriginalSender.mjs";
7
7
  import { addHighestBitToNumber as s } from "../utils/bit.operations.mjs";
@@ -31,8 +31,8 @@ var l = (e) => {
31
31
  }, g = (e) => e.map((e) => e >= 0n ? 0n : e), _ = (e) => {
32
32
  if (e.length === 0) return [];
33
33
  let t = [[""]];
34
- for (let n = 0; n < e.length; n += 1) n > 0 && t.push([""]), e[n].forEach((e, i) => {
35
- t[n][i] = `0x${Buffer.from(r(e)).toString("hex")}`;
34
+ for (let n = 0; n < e.length; n += 1) n > 0 && t.push([""]), e[n].forEach((e, r) => {
35
+ t[n][r] = `0x${Buffer.from(i(e)).toString("hex")}`;
36
36
  });
37
37
  return t;
38
38
  }, v = (e) => {
@@ -42,8 +42,8 @@ var l = (e) => {
42
42
  externalApprovalAddresses: e.externalApprovalAddresses,
43
43
  conversionInHinkalAddress: e.conversionInHinkalAddress.map((e) => e.toString())
44
44
  })), t.feeStructure.flatFee = e.feeStructure.flatFee.toString(), t.feeStructure.variableRate = e.feeStructure.variableRate.toString(), t;
45
- }, y = (n, r, s, l, u, d, f, p, m, h, g, _) => {
46
- let v = Object.values(f || i), y = _ ?? o(s ?? t, r), b = c.AbiCoder.defaultAbiCoder().encode([
45
+ }, y = (n, i, s, l, u, d, f, p, m, h, g, _) => {
46
+ let v = Object.values(f || r), y = _ ?? o(s ?? t, i), b = c.AbiCoder.defaultAbiCoder().encode([
47
47
  "uint16",
48
48
  "address",
49
49
  "address",
@@ -51,7 +51,7 @@ var l = (e) => {
51
51
  "bytes"
52
52
  ], [
53
53
  n,
54
- r,
54
+ i,
55
55
  s,
56
56
  typeof l == "bigint" ? l : a(l),
57
57
  u
@@ -1 +1 @@
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`),ee=require(`../../types/external-action.types.cjs`),a=require(`../utils/bit.operations.cjs`),o=require(`./common.snarkjs.cjs`),s=require(`../../crypto/rnUtxoCrypto.cjs`),c=require(`../utils/time.utils.cjs`),l=require(`../../error-handling/logger.cjs`),te=require(`../utils/hinkalTiming.utils.cjs`),u=require(`./signedMessageHash.cjs`),d=require(`./generateCircomData.cjs`),ne=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,re,S,C=t.zeroAddress,w=e.chainIds.localhost,T=g.map(()=>!1),E=void 0,D,O)=>{let k=te.createRnDeltaTiming(`webView.getDataFromWorkers`),A=o.getZkProofVerifierName(g,_),j=o.calcAmountChanges(g,_),M=g.map(e=>e[0].erc20TokenAddress),N=o.calcEncryptedOutputs(_),P=t.defaultSignatureData,F=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:I}=await s.getSpendingKeyPairForRn(v),L=await s.calcStealthAddressStructureForRn(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),F),F,I),{inCommitmentSiblings:ie,inCommitmentSiblingSides:ae,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(w,h,g.map(e=>e.map(e=>e.getConstructableParams())));k.log(`done`,{verifierName:A,chainId:w});let B=o.buildOutCommitments(_),V=r.randomBigInt(31),H=n.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:c.getCurrentTimeInSeconds()),W={rootHashHinkal:R,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=>o.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>o.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>o.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:z,inCommitmentSiblings:ie,inCommitmentSiblingSides:ae,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:a.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=o.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=o.calcAmountChanges(g,_,!0),q=o.getSlippageValues(K);l.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],oe=e.getOnchainChainId(w),Y=O?ne.AccountActions.getSignerAddressFromPrivateKey(oe,O):void 0,X=y===ee.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(w,b??t.zeroAddress,O,J,H,Y):await m.encodeEmporiumMetadata(w,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=o.createCallDataHash(G,C,b,y,X,N,E,q,T,S,P,D);let Z=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:Q,S:se}=await s.signEddsaForRn(v,Z);W.eddsaSignature=[Q[0],Q[1],se],W.signedMessageHash=Z;let $=A.startsWith(`mainEVMCircuitMin0`),ce={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:le,commitmentValidationData:ue}=await f.generateMainAndCommitmentZkProof(w,v,M,g,A,$?ce:W,re);return{zkCallData:le,circomData:d.generateCircomData(B,z,R,K,M,_,N,G,y,b,X,C,W.calldataHash,L,T,E,$?Number(U):void 0,q,S,P,D),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:N,commitmentValidationData:ue}};exports.constructZkProof=h;
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/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=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=l.getZkProofVerifierName(h,g),A=l.calcAmountChanges(h,g),j=h.map(e=>e[0].erc20TokenAddress),M=l.calcEncryptedOutputs(g),N=t.defaultSignatureData,P=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:F}=_.getSpendingKeyPair(),I=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),P),P,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:ne,inCommitmentSiblingSides:re,rootHashHinkal:L,inNullifiers:R}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams()))),z=l.buildOutCommitments(g),B=r.randomBigInt(31),V=n.poseidonFunction(B),H=BigInt(g.length>0?g[0][0].timeStamp:a.getCurrentTimeInSeconds()),U={rootHashHinkal:L,spendingPublicKey:F,nullifyingPrivateKey:P,erc20TokenAddresses:j,amountChanges:A,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:R,inCommitmentSiblings:ne,inCommitmentSiblingSides:re,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:H,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:z,calldataHash:0n,messageSeed:B,H0Ax:c.takeOffHighestBit(I.extraRandomization),H0Ay:I.H0},W=l.calcPublicSignalCount(k,U.erc20TokenAddresses,U.amountChanges,U.inNullifiers,U.outCommitments),G=l.calcAmountChanges(h,g,!0),K=l.getSlippageValues(G);s.Logger.log({publicSignalCount:W});let q=Array.isArray(b)?b:[b],J=e.getOnchainChainId(w),Y=O?te.AccountActions.getSignerAddressFromPrivateKey(J,O):void 0,X=v===o.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,q,V,Y):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:q,V,t.zeroAddress);U.calldataHash=l.createCallDataHash(W,C,y,v,X,M,E,K,T,S,N,D);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:L,erc20TokenAddresses:j,amountChanges:A,outTimeStamp:H,inNullifiers:R,outCommitments:z,calldataHash:U.calldataHash,message:V,outH1Ay:I.H1,H0Ax:U.H0Ax,H0Ay:I.H0}),{R8:Q,S:ie}=_.signEddsa(Z);U.eddsaSignature=[Q[0],Q[1],ie],U.signedMessageHash=Z;let $=k.startsWith(`mainEVMCircuitMin0`),ae={outTimeStamp:H,calldataHash:U.calldataHash,messageSeed:B},{zkCallData:oe,commitmentValidationData:se}=await d.generateMainAndCommitmentZkProof(w,_,j,h,k,$?ae:U,x);return{zkCallData:oe,circomData:u.generateCircomData(z,R,L,G,j,g,M,W,v,y,X,C,U.calldataHash,I,T,E,$?Number(H):void 0,K,S,N,D),dimData:{tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0},encryptedOutputs:M,commitmentValidationData:se}};exports.constructZkProof=m;
@@ -2,87 +2,80 @@ import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.co
2
2
  import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
3
3
  import { poseidonFunction as te } from "../../crypto/poseidon.mjs";
4
4
  import { randomBigInt as r } from "../web3/etherFunctions.mjs";
5
- import { UserKeys as ne } from "../../data-structures/crypto-keys/keys.mjs";
6
- import { ExternalActionId as i } from "../../types/external-action.types.mjs";
7
- import { takeOffHighestBit as a } from "../utils/bit.operations.mjs";
8
- import { buildOutCommitments as re, calcAmountChanges as o, calcEncryptedOutputs as s, calcPublicSignalCount as c, createCallDataHash as l, getSlippageValues as u, getUtxoCircuitH0Coords as d, getUtxoCircuitInRandomization as ie, getZkProofVerifierName as ae } from "./common.snarkjs.mjs";
9
- import { calcStealthAddressStructureForRn as oe, getSpendingKeyPairForRn as se, signEddsaForRn as ce } from "../../crypto/rnUtxoCrypto.mjs";
10
- import { getCurrentTimeInSeconds as le } from "../utils/time.utils.mjs";
11
- import { Logger as ue } from "../../error-handling/logger.mjs";
12
- import { createRnDeltaTiming as de } from "../utils/hinkalTiming.utils.mjs";
13
- import { computeSignedMessageHashEvm as fe } from "./signedMessageHash.mjs";
14
- import { generateCircomData as pe } from "./generateCircomData.mjs";
15
- import { AccountActions as f } from "../../data-structures/AccountActions/AccountActions.mjs";
16
- import { generateMainAndCommitmentZkProof as me } from "./generateMainAndCommitmentZkProof.mjs";
17
- import { getDataFromWorkers as he } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
5
+ import { UserKeys as i } from "../../data-structures/crypto-keys/keys.mjs";
6
+ import { getCurrentTimeInSeconds as a } from "../utils/time.utils.mjs";
7
+ import { ExternalActionId as o } from "../../types/external-action.types.mjs";
8
+ import { Logger as s } from "../../error-handling/logger.mjs";
9
+ import { takeOffHighestBit as ne } from "../utils/bit.operations.mjs";
10
+ import { buildOutCommitments as re, calcAmountChanges as c, calcEncryptedOutputs as ie, calcPublicSignalCount as ae, calcStealthAddressStructure as oe, createCallDataHash as se, getSlippageValues as ce, getUtxoCircuitH0Coords as l, getUtxoCircuitInRandomization as le, getZkProofVerifierName as ue } from "./common.snarkjs.mjs";
11
+ import { computeSignedMessageHashEvm as de } from "./signedMessageHash.mjs";
12
+ import { generateCircomData as fe } from "./generateCircomData.mjs";
13
+ import { AccountActions as u } from "../../data-structures/AccountActions/AccountActions.mjs";
14
+ import { generateMainAndCommitmentZkProof as d } from "./generateMainAndCommitmentZkProof.mjs";
15
+ import { getDataFromWorkers as f } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
18
16
  import { encodeEmporiumMetadata as p } from "../private-wallet/emporium.helpers.mjs";
19
17
  //#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
20
- var m = async (m, h, g, _, v, y, b, x, S, C = n, w = e.localhost, T = h.map(() => !1), E = void 0, D, O) => {
21
- let k = de("webView.getDataFromWorkers"), A = ae(h, g), j = o(h, g), M = h.map((e) => e[0].erc20TokenAddress), N = s(g), P = ee, F = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: I } = await se(_), L = await oe(ne.findCorrectRandomization(r(31), F), F, I), { inCommitmentSiblings: R, inCommitmentSiblingSides: ge, rootHashHinkal: z, inNullifiers: B } = await he(w, m, h.map((e) => e.map((e) => e.getConstructableParams())));
22
- k.log("done", {
23
- verifierName: A,
24
- chainId: w
25
- });
26
- let V = re(g), H = r(31), U = te(H), W = BigInt(g.length > 0 ? g[0][0].timeStamp : le()), G = {
27
- rootHashHinkal: z,
28
- spendingPublicKey: I,
29
- nullifyingPrivateKey: F,
30
- erc20TokenAddresses: M,
31
- amountChanges: j,
18
+ var m = async (m, h, g, _, v, y, b, pe, x, S = n, C = e.localhost, w = h.map(() => !1), T = void 0, E, D) => {
19
+ let O = ue(h, g), k = c(h, g), A = h.map((e) => e[0].erc20TokenAddress), j = ie(g), M = ee, N = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: P } = _.getSpendingKeyPair(), F = oe(i.findCorrectRandomization(r(31), N), N, _.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: I, inCommitmentSiblingSides: L, rootHashHinkal: R, inNullifiers: z } = await f(C, m, h.map((e) => e.map((e) => e.getConstructableParams()))), B = re(g), V = r(31), H = te(V), U = BigInt(g.length > 0 ? g[0][0].timeStamp : a()), W = {
20
+ rootHashHinkal: R,
21
+ spendingPublicKey: P,
22
+ nullifyingPrivateKey: N,
23
+ erc20TokenAddresses: A,
24
+ amountChanges: k,
32
25
  inAmounts: h.map((e) => e.map((e) => e.amount.toString())),
33
- inRandomizations: h.map((e) => e.map((e) => ie(e))),
34
- inH0Ax: h.map((e) => e.map((e) => d(e)[0].toString())),
35
- inH0Ay: h.map((e) => e.map((e) => d(e)[1].toString())),
26
+ inRandomizations: h.map((e) => e.map((e) => le(e))),
27
+ inH0Ax: h.map((e) => e.map((e) => l(e)[0].toString())),
28
+ inH0Ay: h.map((e) => e.map((e) => l(e)[1].toString())),
36
29
  isNewStyle: h.map((e) => e.map((e) => !!e.isNewStyle)),
37
30
  inTimeStamps: h.map((e) => e.map((e) => e.timeStamp)),
38
- inNullifiers: B,
39
- inCommitmentSiblings: R,
40
- inCommitmentSiblingSides: ge,
31
+ inNullifiers: z,
32
+ inCommitmentSiblings: I,
33
+ inCommitmentSiblingSides: L,
41
34
  outAmounts: g.map((e) => e.map((e) => e.amount.toString())),
42
- outTimeStamp: W,
35
+ outTimeStamp: U,
43
36
  outPublicKeys: g.map((e) => e.map((e) => e.getStealthAddress())),
44
- outCommitments: V,
37
+ outCommitments: B,
45
38
  calldataHash: 0n,
46
- messageSeed: H,
47
- H0Ax: a(L.extraRandomization),
48
- H0Ay: L.H0
49
- }, K = c(A, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = o(h, g, !0), J = u(q);
50
- ue.log({ publicSignalCount: K });
51
- let Y = Array.isArray(b) ? b : [b], _e = t(w), ve = O ? f.getSignerAddressFromPrivateKey(_e, O) : void 0, X = v === i.Emporium ? await p(w, y ?? n, O, Y, U, ve) : await p(w, n, void 0, v === 0n ? [] : Y, U, n);
52
- G.calldataHash = l(K, C, y, v, X, N, E, J, T, S, P, D);
53
- let Z = fe({
54
- rootHashHinkal: z,
55
- erc20TokenAddresses: M,
56
- amountChanges: j,
57
- outTimeStamp: W,
58
- inNullifiers: B,
59
- outCommitments: V,
60
- calldataHash: G.calldataHash,
61
- message: U,
62
- outH1Ay: L.H1,
63
- H0Ax: G.H0Ax,
64
- H0Ay: L.H0
65
- }), { R8: Q, S: ye } = await ce(_, Z);
66
- G.eddsaSignature = [
67
- Q[0],
68
- Q[1],
69
- ye
70
- ], G.signedMessageHash = Z;
71
- let $ = A.startsWith("mainEVMCircuitMin0"), be = {
72
- outTimeStamp: W,
73
- calldataHash: G.calldataHash,
74
- messageSeed: H
75
- }, { zkCallData: xe, commitmentValidationData: Se } = await me(w, _, M, h, A, $ ? be : G, x);
39
+ messageSeed: V,
40
+ H0Ax: ne(F.extraRandomization),
41
+ H0Ay: F.H0
42
+ }, G = ae(O, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments), K = c(h, g, !0), q = ce(K);
43
+ s.log({ publicSignalCount: G });
44
+ let J = Array.isArray(b) ? b : [b], me = t(C), he = D ? u.getSignerAddressFromPrivateKey(me, D) : void 0, Y = v === o.Emporium ? await p(C, y ?? n, D, J, H, he) : await p(C, n, void 0, v === 0n ? [] : J, H, n);
45
+ W.calldataHash = se(G, S, y, v, Y, j, T, q, w, x, M, E);
46
+ let X = de({
47
+ rootHashHinkal: R,
48
+ erc20TokenAddresses: A,
49
+ amountChanges: k,
50
+ outTimeStamp: U,
51
+ inNullifiers: z,
52
+ outCommitments: B,
53
+ calldataHash: W.calldataHash,
54
+ message: H,
55
+ outH1Ay: F.H1,
56
+ H0Ax: W.H0Ax,
57
+ H0Ay: F.H0
58
+ }), { R8: Z, S: ge } = _.signEddsa(X);
59
+ W.eddsaSignature = [
60
+ Z[0],
61
+ Z[1],
62
+ ge
63
+ ], W.signedMessageHash = X;
64
+ let Q = O.startsWith("mainEVMCircuitMin0"), $ = {
65
+ outTimeStamp: U,
66
+ calldataHash: W.calldataHash,
67
+ messageSeed: V
68
+ }, { zkCallData: _e, commitmentValidationData: ve } = await d(C, _, A, h, O, Q ? $ : W, pe);
76
69
  return {
77
- zkCallData: xe,
78
- circomData: pe(V, B, z, q, M, g, N, K, v, y, X, C, G.calldataHash, L, T, E, $ ? Number(W) : void 0, J, S, P, D),
70
+ zkCallData: _e,
71
+ circomData: fe(B, z, R, K, A, g, j, G, v, y, Y, S, W.calldataHash, F, w, T, Q ? Number(U) : void 0, q, x, M, E),
79
72
  dimData: {
80
73
  tokenNumber: h.length,
81
74
  nullifierAmount: h.length > 0 ? h[0].length : 0,
82
75
  outputAmount: g.length > 0 ? g[0].length : 0
83
76
  },
84
- encryptedOutputs: N,
85
- commitmentValidationData: Se
77
+ encryptedOutputs: j,
78
+ commitmentValidationData: ve
86
79
  };
87
80
  };
88
81
  //#endregion
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../utils/bit.operations.cjs`),i=require(`./common.snarkjs.cjs`),a=require(`../utils/solanaMint.utils.cjs`),o=require(`../pre-transaction/solana.cjs`),s=require(`./signedMessageHash.cjs`);require(`../pre-transaction/index.cjs`);const c=require(`./generateMainAndCommitmentZkProof.cjs`);require(`../utils/index.cjs`);const l=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),u=require(`../pre-transaction/getSolanaCalldataHash.cjs`);require(`../web3/index.cjs`);let d=require(`@solana/web3.js`);var f=async(f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.chainIds.solanaLocalnet,E=[],D=[],O=0n)=>{let k=new d.PublicKey(x),A=new d.PublicKey(S),j=m.getShieldedPrivateKey(),{pubSpendingBJJPoint:M}=m.getSpendingKeyPair(),N=i.calcStealthAddressStructure(v,j,m.getSpendingKeyPair().pubSpendingBJJPoint),P=n.randomBigInt(31),F=t.poseidonFunction(P),I=t.poseidonFunction(O),L=h.map(e=>a.formatMintAddress(e)),R=L.map(e=>e.mintAccountPart1),z=L.map(e=>e.mintAccountPart2),B=u.getSolanaCalldataHash(C,k,A,w,y,b,E,D),V=`${C.tokenNumber}x${C.nullifierAmount}x${C.outputAmount}`,H=i.calcAmountChanges(g,_),{inCommitmentSiblings:U,inCommitmentSiblingSides:W,rootHashHinkal:G,inNullifiers:K}=await l.getDataFromWorkers(T,p,g.map(e=>e.map(e=>e.getConstructableParams()))),q=i.buildOutCommitments(_),J=r.takeOffHighestBit(N.extraRandomization),Y=N.H0,X=s.computeSignedMessageHashSolana({rootHashHinkal:G,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,outTimeStamp:BigInt(_[0][0].timeStamp),inNullifiers:K,outCommitments:q,calldataHash:B,message:F,swapperAccountAdditionalSeed:I,outH1Ay:N.H1,H0Ax:J,H0Ay:Y}),{R8:Z,S:Q}=m.signEddsa(X),$={rootHashHinkal:G,spendingPublicKey:M,eddsaSignature:[Z[0],Z[1],Q],signedMessageHash:X,nullifyingPrivateKey:j,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>i.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>i.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>i.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:K,inCommitmentSiblings:U,inCommitmentSiblingSides:W,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(_[0][0].timeStamp),outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:q,calldataHash:B,messageSeed:P,swapperAccountSalt:O,H0Ax:J,H0Ay:Y},{zkCallData:ee,publicSignals:te,commitmentValidationData:ne}=await c.generateMainAndCommitmentZkProof(T,m,h,g,`mainSolanaCircuit${V}`,$,f),[re,ie,ae]=ee;return{proofAArr:re.map(BigInt).map(o.encodeToByte32Array).flat(),proofBArr:ie.flat().map(BigInt).map(o.encodeToByte32Array).flat(),proofCArr:ae.map(BigInt).map(o.encodeToByte32Array).flat(),publicInputsArr:te.map(BigInt).map(o.encodeToByte32Array),commitmentValidationData:ne}};exports.constructSolanaZkProof=f;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../utils/solanaMint.utils.cjs`),i=require(`../utils/bit.operations.cjs`),a=require(`./common.snarkjs.cjs`),o=require(`../pre-transaction/solana.cjs`),s=require(`./signedMessageHash.cjs`);require(`../pre-transaction/index.cjs`);const c=require(`./generateMainAndCommitmentZkProof.cjs`);require(`../utils/index.cjs`);const l=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),u=require(`../pre-transaction/getSolanaCalldataHash.cjs`);require(`../web3/index.cjs`);let d=require(`@solana/web3.js`);var f=async(f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.chainIds.solanaLocalnet,E=[],D=[],O=0n)=>{let k=new d.PublicKey(x),A=new d.PublicKey(S),j=m.getShieldedPrivateKey(),{pubSpendingBJJPoint:M}=m.getSpendingKeyPair(),N=a.calcStealthAddressStructure(v,j,m.getSpendingKeyPair().pubSpendingBJJPoint),P=n.randomBigInt(31),F=t.poseidonFunction(P),I=t.poseidonFunction(O),L=h.map(e=>r.formatMintAddress(e)),R=L.map(e=>e.mintAccountPart1),z=L.map(e=>e.mintAccountPart2),B=u.getSolanaCalldataHash(C,k,A,w,y,b,E,D),V=`${C.tokenNumber}x${C.nullifierAmount}x${C.outputAmount}`,H=a.calcAmountChanges(g,_),{inCommitmentSiblings:U,inCommitmentSiblingSides:W,rootHashHinkal:G,inNullifiers:K}=await l.getDataFromWorkers(T,p,g.map(e=>e.map(e=>e.getConstructableParams()))),q=a.buildOutCommitments(_),J=i.takeOffHighestBit(N.extraRandomization),Y=N.H0,X=s.computeSignedMessageHashSolana({rootHashHinkal:G,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,outTimeStamp:BigInt(_[0][0].timeStamp),inNullifiers:K,outCommitments:q,calldataHash:B,message:F,swapperAccountAdditionalSeed:I,outH1Ay:N.H1,H0Ax:J,H0Ay:Y}),{R8:Z,S:Q}=m.signEddsa(X),$={rootHashHinkal:G,spendingPublicKey:M,eddsaSignature:[Z[0],Z[1],Q],signedMessageHash:X,nullifyingPrivateKey:j,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>a.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:K,inCommitmentSiblings:U,inCommitmentSiblingSides:W,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(_[0][0].timeStamp),outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:q,calldataHash:B,messageSeed:P,swapperAccountSalt:O,H0Ax:J,H0Ay:Y},{zkCallData:ee,publicSignals:te,commitmentValidationData:ne}=await c.generateMainAndCommitmentZkProof(T,m,h,g,`mainSolanaCircuit${V}`,$,f),[re,ie,ae]=ee;return{proofAArr:re.map(BigInt).map(o.encodeToByte32Array).flat(),proofBArr:ie.flat().map(BigInt).map(o.encodeToByte32Array).flat(),proofCArr:ae.map(BigInt).map(o.encodeToByte32Array).flat(),publicInputsArr:te.map(BigInt).map(o.encodeToByte32Array),commitmentValidationData:ne}};exports.constructSolanaZkProof=f;