@gurge/sdk 0.3.27 → 0.3.29

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 +29 -34
  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 +46 -87
  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 +23 -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 +57 -61
  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/hinkalTiming.utils.cjs +1 -1
  85. package/common/src/functions/utils/hinkalTiming.utils.d.ts +3 -9
  86. package/common/src/functions/utils/hinkalTiming.utils.mjs +13 -18
  87. package/common/src/functions/utils/index.cjs +1 -1
  88. package/common/src/functions/utils/index.mjs +3 -3
  89. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  90. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +71 -122
  91. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  92. package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
  93. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  94. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +42 -42
  95. package/common/src/types/index.cjs +1 -1
  96. package/common/src/types/index.mjs +1 -1
  97. package/common/src/webworker/logError-D8yBaP96.js +2 -0
  98. package/common/src/webworker/package.json +1 -1
  99. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  100. package/common/src/webworker/performTaskWithWorker.mjs +17 -18
  101. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  102. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  103. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  104. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -4
  105. package/common/src/webworker/viteWorkerURL.constant.d.ts +0 -1
  106. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -4
  107. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  108. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  109. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  110. package/package.json +1 -1
  111. package/react-native/HinkalWebViewWorker.cjs +4 -76
  112. package/react-native/HinkalWebViewWorker.mjs +49 -152
  113. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  114. package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
  115. package/react-native/bridge/HinkalRNWorker.mjs +11 -16
  116. package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
  117. package/react-native/shims/circomlibjs.js +2 -2
  118. package/react-native/workerCDNUrls.cjs +1 -1
  119. package/react-native/workerCDNUrls.d.ts +0 -1
  120. package/react-native/workerCDNUrls.mjs +2 -2
  121. package/sdk/package.json.cjs +1 -1
  122. package/sdk/package.json.mjs +1 -1
  123. package/common/src/crypto/rnCryptoBridge.cjs +0 -1
  124. package/common/src/crypto/rnCryptoBridge.d.ts +0 -8
  125. package/common/src/crypto/rnCryptoBridge.mjs +0 -10
  126. package/common/src/crypto/rnUtxoCrypto.cjs +0 -1
  127. package/common/src/crypto/rnUtxoCrypto.d.ts +0 -25
  128. package/common/src/crypto/rnUtxoCrypto.mjs +0 -74
  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,55 @@
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 { createRnDeltaTiming 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";
13
9
  //#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,
10
+ var u = async (u, d, f, p) => {
11
+ if (o(p)) return;
12
+ let m = e(u), h = p.map((e) => e.map((e) => e.amount.toString())), g = p.map((e) => e.map((e) => e.timeStamp)), _ = p.map((e) => e.map((e) => a(e))), v = p.map((e) => e.map((e) => e.getConstructableParams())), y = p.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), b = await c({
13
+ type: s.ZKProof,
23
14
  payload: {
24
- type: p.BUILD_IN_NULLIFIERS,
25
- data: { inputUtxosSerialized: C }
15
+ type: l.BUILD_IN_NULLIFIERS,
16
+ data: { inputUtxosSerialized: v }
26
17
  }
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);
18
+ }), x = d.getShieldedPrivateKey(), S = d.getSpendingKeyPair().pubSpendingBJJPoint, C = m ? f.map((e) => {
19
+ let { compressedAddress: t } = n(e);
31
20
  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
- });
21
+ }) : f.map((e) => BigInt(e).toString()), w = r("withdraw.stealthValidation"), T = 0;
22
+ p.forEach((e, n) => {
23
+ e.forEach((e, r) => {
24
+ T += 1;
25
+ let i = e.getStealthAddress(), a = e.spendingPublicKey ?? S, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, x, a) : t.getStealthAddress(BigInt(e.randomization), x);
26
+ if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
49
27
  });
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) => 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
28
+ }), w.log("done", { stealthChecks: T });
29
+ let E = {
30
+ nullifyingPrivateKey: x,
31
+ spendingPublicKey: S,
32
+ erc20TokenAddresses: C,
33
+ inAmounts: h,
34
+ inRandomizations: _,
35
+ inH0Ax: p.map((e) => e.map((e) => i(e)[0].toString())),
36
+ inH0Ay: p.map((e) => e.map((e) => i(e)[1].toString())),
37
+ isNewStyle: p.map((e) => e.map((e) => !!e.isNewStyle)),
38
+ inTimeStamps: g,
39
+ inCommitments: y,
40
+ inNullifiers: b
80
41
  };
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
42
+ if (!(!f.length || !p[0]?.length)) return {
43
+ tokenAddresses: C,
44
+ inAmounts: h,
45
+ inTimeStamps: g,
46
+ inRandomizations: _,
47
+ inCommitments: y,
48
+ inNullifiers: b,
49
+ verifierName: `commitmentCalculator${f.length}x${p[0].length}`,
50
+ commitmentInput: E
92
51
  };
93
- }, h = (e, t) => {
52
+ }, d = (e, t) => {
94
53
  if (!(!e || !t)) return {
95
54
  tokenAddresses: e.tokenAddresses,
96
55
  inAmounts: e.inAmounts,
@@ -106,4 +65,4 @@ var m = async (m, h, g, _) => {
106
65
  };
107
66
  };
108
67
  //#endregion
109
- export { m as buildCommitmentValidationData, h as buildCommitmentValidationDataFromProof };
68
+ export { u as buildCommitmentValidationData, d 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`),r=require(`../utils/hinkalTiming.utils.cjs`);var i=(i,a,o,s,c=!0,l,u)=>{let d=e.countTotalAmountInUtxos(a),{erc20TokenAddress:f,mintAddress:p}=a[0];if(c&&o<0n&&d+o<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let m=r.createRnDeltaTiming(`withdraw.outputUtxo`),h=[new n.Utxo({amount:e.bigintMax(d+o,0n),erc20TokenAddress:f,mintAddress:p,nullifyingKey:i.getShieldedPrivateKey(),timeStamp:s,spendingPublicKey:i.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})];if(m.log(`newUtxo-change`),l!==void 0&&u!==void 0){let[e,t,r,,i]=l.split(`,`);h.push(new n.Utxo({amount:u,erc20TokenAddress:f,mintAddress:p,H0:[BigInt(t),BigInt(r)],stealthAddress:e,encryptionKey:i,timeStamp:s,isNewStyle:!0}))}return{outputUtxos:h}};exports.outputUtxoProcessing=i;
@@ -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,34 @@
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";
4
+ import { createRnDeltaTiming as i } from "../utils/hinkalTiming.utils.mjs";
6
5
  //#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: _,
6
+ var a = (a, o, s, c, l = !0, u, d) => {
7
+ let f = t(o), { erc20TokenAddress: p, mintAddress: m } = o[0];
8
+ if (l && s < 0n && f + s < 0n) throw Error(n.INSUFFICIENT_FUNDS_TO_TRANSACT);
9
+ let h = i("withdraw.outputUtxo"), g = [new r({
10
+ amount: e(f + s, 0n),
11
+ erc20TokenAddress: p,
12
+ mintAddress: m,
13
+ nullifyingKey: a.getShieldedPrivateKey(),
14
+ timeStamp: c,
15
+ spendingPublicKey: a.getSpendingKeyPair().pubSpendingBJJPoint,
18
16
  isNewStyle: !0
19
17
  })];
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,
18
+ if (h.log("newUtxo-change"), u !== void 0 && d !== void 0) {
19
+ let [e, t, n, , i] = u.split(",");
20
+ g.push(new r({
21
+ amount: d,
22
+ erc20TokenAddress: p,
23
+ mintAddress: m,
29
24
  H0: [BigInt(t), BigInt(n)],
30
25
  stealthAddress: e,
31
- encryptionKey: r,
32
- timeStamp: l,
26
+ encryptionKey: i,
27
+ timeStamp: c,
33
28
  isNewStyle: !0
34
- })), p.log("newUtxo-recipient");
29
+ }));
35
30
  }
36
- return p.log("done", { outputCount: v.length }), { outputUtxos: v };
31
+ return { outputUtxos: g };
37
32
  };
38
33
  //#endregion
39
- export { o as outputUtxoProcessing };
34
+ export { a 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`),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(`../../error-handling/logger.cjs`),s=require(`../utils/hinkalTiming.utils.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),u=require(`./signedMessageHash.cjs`),te=require(`./generateCircomData.cjs`),d=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,S,C,w=t.zeroAddress,T=e.chainIds.localhost,E=g.map(()=>!1),D=void 0,O,k)=>{let A=s.createRnDeltaTiming(`withdraw.zkProof`),j=l.getZkProofVerifierName(g,_),M=l.calcAmountChanges(g,_),N=g.map(e=>e[0].erc20TokenAddress),P=l.calcEncryptedOutputs(_),F=t.defaultSignatureData,I=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:ne}=v.getSpendingKeyPair(),L=l.calcStealthAddressStructure(r.UserKeys.findCorrectRandomization(n.randomBigInt(31),I),I,v.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(T,h,g.map(e=>e.map(e=>e.getConstructableParams())));A.log(`getDataFromWorkers`,{verifierName:j});let B=l.buildOutCommitments(_),V=n.randomBigInt(31),H=ee.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:i.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:ne,nullifyingPrivateKey:I,erc20TokenAddresses:N,amountChanges:M,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>l.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:re,inCommitmentSiblingSides:ie,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:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(j,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(g,_,!0),q=l.getSlippageValues(K);o.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],Y=e.getOnchainChainId(T),ae=k?d.AccountActions.getSignerAddressFromPrivateKey(Y,k):void 0,X=y===a.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(T,b??t.zeroAddress,k,J,H,ae):await m.encodeEmporiumMetadata(T,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=l.createCallDataHash(G,w,b,y,X,P,D,q,E,C,F,O);let Z=u.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:N,amountChanges:M,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Q,S:oe}=v.signEddsa(Z);A.log(`signEddsa`),W.eddsaSignature=[Q[0],Q[1],oe],W.signedMessageHash=Z;let $=j.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:ce,commitmentValidationData:le}=await f.generateMainAndCommitmentZkProof(T,v,N,g,j,$?se:W,S);return A.log(`generateZkProof`),{zkCallData:ce,circomData:te.generateCircomData(B,z,R,K,N,_,P,G,y,b,X,w,W.calldataHash,L,E,D,$?Number(U):void 0,q,C,F,O),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:P,commitmentValidationData:le}};exports.constructZkProof=h;
@@ -1,89 +1,85 @@
1
1
  import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
2
2
  import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
3
- import { poseidonFunction as te } from "../../crypto/poseidon.mjs";
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";
3
+ import { poseidonFunction as r } from "../../crypto/poseidon.mjs";
4
+ import { randomBigInt as i } from "../web3/etherFunctions.mjs";
5
+ import { UserKeys as te } from "../../data-structures/crypto-keys/keys.mjs";
6
+ import { getCurrentTimeInSeconds as ne } from "../utils/time.utils.mjs";
7
+ import { ExternalActionId as re } from "../../types/external-action.types.mjs";
8
+ import { Logger as ie } from "../../error-handling/logger.mjs";
9
+ import { createRnDeltaTiming as ae } from "../utils/hinkalTiming.utils.mjs";
10
+ import { takeOffHighestBit as oe } from "../utils/bit.operations.mjs";
11
+ import { buildOutCommitments as se, calcAmountChanges as a, calcEncryptedOutputs as o, calcPublicSignalCount as s, calcStealthAddressStructure as c, createCallDataHash as l, getSlippageValues as ce, getUtxoCircuitH0Coords as u, getUtxoCircuitInRandomization as le, getZkProofVerifierName as ue } from "./common.snarkjs.mjs";
12
+ import { computeSignedMessageHashEvm as de } from "./signedMessageHash.mjs";
13
+ import { generateCircomData as fe } from "./generateCircomData.mjs";
14
+ import { AccountActions as pe } from "../../data-structures/AccountActions/AccountActions.mjs";
16
15
  import { generateMainAndCommitmentZkProof as me } from "./generateMainAndCommitmentZkProof.mjs";
17
- import { getDataFromWorkers as he } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
18
- import { encodeEmporiumMetadata as p } from "../private-wallet/emporium.helpers.mjs";
16
+ import { getDataFromWorkers as d } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
17
+ import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.mjs";
19
18
  //#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 = {
19
+ var p = async (p, m, h, g, _, v, y, b, x, S = n, C = e.localhost, w = m.map(() => !1), T = void 0, E, D) => {
20
+ let O = ae("withdraw.zkProof"), k = ue(m, h), A = a(m, h), j = m.map((e) => e[0].erc20TokenAddress), M = o(h), N = ee, P = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: F } = g.getSpendingKeyPair(), I = c(te.findCorrectRandomization(i(31), P), P, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: L, inCommitmentSiblingSides: R, rootHashHinkal: z, inNullifiers: B } = await d(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
21
+ O.log("getDataFromWorkers", { verifierName: k });
22
+ let V = se(h), H = i(31), U = r(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
27
23
  rootHashHinkal: z,
28
- spendingPublicKey: I,
29
- nullifyingPrivateKey: F,
30
- erc20TokenAddresses: M,
31
- amountChanges: j,
32
- 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())),
36
- isNewStyle: h.map((e) => e.map((e) => !!e.isNewStyle)),
37
- inTimeStamps: h.map((e) => e.map((e) => e.timeStamp)),
24
+ spendingPublicKey: F,
25
+ nullifyingPrivateKey: P,
26
+ erc20TokenAddresses: j,
27
+ amountChanges: A,
28
+ inAmounts: m.map((e) => e.map((e) => e.amount.toString())),
29
+ inRandomizations: m.map((e) => e.map((e) => le(e))),
30
+ inH0Ax: m.map((e) => e.map((e) => u(e)[0].toString())),
31
+ inH0Ay: m.map((e) => e.map((e) => u(e)[1].toString())),
32
+ isNewStyle: m.map((e) => e.map((e) => !!e.isNewStyle)),
33
+ inTimeStamps: m.map((e) => e.map((e) => e.timeStamp)),
38
34
  inNullifiers: B,
39
- inCommitmentSiblings: R,
40
- inCommitmentSiblingSides: ge,
41
- outAmounts: g.map((e) => e.map((e) => e.amount.toString())),
35
+ inCommitmentSiblings: L,
36
+ inCommitmentSiblingSides: R,
37
+ outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
42
38
  outTimeStamp: W,
43
- outPublicKeys: g.map((e) => e.map((e) => e.getStealthAddress())),
39
+ outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
44
40
  outCommitments: V,
45
41
  calldataHash: 0n,
46
42
  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({
43
+ H0Ax: oe(I.extraRandomization),
44
+ H0Ay: I.H0
45
+ }, K = s(k, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = ce(q);
46
+ ie.log({ publicSignalCount: K });
47
+ let Y = Array.isArray(y) ? y : [y], he = t(C), ge = D ? pe.getSignerAddressFromPrivateKey(he, D) : void 0, X = _ === re.Emporium ? await f(C, v ?? n, D, Y, U, ge) : await f(C, n, void 0, _ === 0n ? [] : Y, U, n);
48
+ G.calldataHash = l(K, S, v, _, X, M, T, J, w, x, N, E);
49
+ let Z = de({
54
50
  rootHashHinkal: z,
55
- erc20TokenAddresses: M,
56
- amountChanges: j,
51
+ erc20TokenAddresses: j,
52
+ amountChanges: A,
57
53
  outTimeStamp: W,
58
54
  inNullifiers: B,
59
55
  outCommitments: V,
60
56
  calldataHash: G.calldataHash,
61
57
  message: U,
62
- outH1Ay: L.H1,
58
+ outH1Ay: I.H1,
63
59
  H0Ax: G.H0Ax,
64
- H0Ay: L.H0
65
- }), { R8: Q, S: ye } = await ce(_, Z);
66
- G.eddsaSignature = [
60
+ H0Ay: I.H0
61
+ }), { R8: Q, S: _e } = g.signEddsa(Z);
62
+ O.log("signEddsa"), G.eddsaSignature = [
67
63
  Q[0],
68
64
  Q[1],
69
- ye
65
+ _e
70
66
  ], G.signedMessageHash = Z;
71
- let $ = A.startsWith("mainEVMCircuitMin0"), be = {
67
+ let $ = k.startsWith("mainEVMCircuitMin0"), ve = {
72
68
  outTimeStamp: W,
73
69
  calldataHash: G.calldataHash,
74
70
  messageSeed: H
75
- }, { zkCallData: xe, commitmentValidationData: Se } = await me(w, _, M, h, A, $ ? be : G, x);
76
- 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),
71
+ }, { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, k, $ ? ve : G, b);
72
+ return O.log("generateZkProof"), {
73
+ zkCallData: ye,
74
+ circomData: fe(V, B, z, q, j, h, M, K, _, v, X, S, G.calldataHash, I, w, T, $ ? Number(W) : void 0, J, x, N, E),
79
75
  dimData: {
80
- tokenNumber: h.length,
81
- nullifierAmount: h.length > 0 ? h[0].length : 0,
82
- outputAmount: g.length > 0 ? g[0].length : 0
76
+ tokenNumber: m.length,
77
+ nullifierAmount: m.length > 0 ? m[0].length : 0,
78
+ outputAmount: h.length > 0 ? h[0].length : 0
83
79
  },
84
- encryptedOutputs: N,
85
- commitmentValidationData: Se
80
+ encryptedOutputs: M,
81
+ commitmentValidationData: be
86
82
  };
87
83
  };
88
84
  //#endregion
89
- export { m as constructZkProof };
85
+ export { p as constructZkProof };
@@ -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;