@gurge/sdk 0.3.26 → 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 (106) 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/hinkalClaimUtxo.cjs +1 -1
  15. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +1 -1
  16. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +1 -1
  18. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +1 -1
  20. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  21. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +1 -1
  22. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  23. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  24. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  25. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  26. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  27. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +1 -1
  28. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  29. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +1 -1
  30. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  31. package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +3 -1
  32. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +32 -43
  33. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  34. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +2 -2
  35. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
  36. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
  37. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
  38. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +26 -42
  39. package/common/src/data-structures/utxo/Utxo.cjs +1 -1
  40. package/common/src/data-structures/utxo/Utxo.d.ts +0 -1
  41. package/common/src/data-structures/utxo/Utxo.mjs +6 -19
  42. package/common/src/functions/index.cjs +1 -1
  43. package/common/src/functions/index.mjs +1 -0
  44. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  45. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -86
  46. package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
  47. package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +2 -2
  48. package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +22 -28
  49. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  50. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +43 -49
  51. package/common/src/functions/utils/bigint-math.utils.cjs +1 -1
  52. package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
  53. package/common/src/functions/utils/bigint-math.utils.mjs +18 -1
  54. package/common/src/functions/utils/index.cjs +1 -1
  55. package/common/src/functions/utils/index.mjs +1 -1
  56. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  57. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +44 -94
  58. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  59. package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
  60. package/common/src/webworker/logError-D8yBaP96.js +2 -0
  61. package/common/src/webworker/package.json +1 -1
  62. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  63. package/common/src/webworker/performTaskWithWorker.mjs +17 -18
  64. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  65. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  66. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  67. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -4
  68. package/common/src/webworker/viteWorkerURL.constant.d.ts +0 -1
  69. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -4
  70. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  71. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  72. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  73. package/package.json +1 -1
  74. package/react-native/HinkalWebViewWorker.cjs +4 -76
  75. package/react-native/HinkalWebViewWorker.mjs +49 -152
  76. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  77. package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
  78. package/react-native/bridge/HinkalRNWorker.mjs +11 -16
  79. package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
  80. package/react-native/shims/circomlibjs.js +2 -2
  81. package/react-native/workerCDNUrls.cjs +1 -1
  82. package/react-native/workerCDNUrls.d.ts +0 -1
  83. package/react-native/workerCDNUrls.mjs +2 -2
  84. package/sdk/package.json.cjs +1 -1
  85. package/sdk/package.json.mjs +1 -1
  86. package/common/src/crypto/rnCryptoBridge.cjs +0 -1
  87. package/common/src/crypto/rnCryptoBridge.d.ts +0 -8
  88. package/common/src/crypto/rnCryptoBridge.mjs +0 -10
  89. package/common/src/crypto/rnUtxoCrypto.cjs +0 -1
  90. package/common/src/crypto/rnUtxoCrypto.d.ts +0 -14
  91. package/common/src/crypto/rnUtxoCrypto.mjs +0 -40
  92. package/common/src/functions/utils/hinkalTiming.utils.cjs +0 -1
  93. package/common/src/functions/utils/hinkalTiming.utils.d.ts +0 -11
  94. package/common/src/functions/utils/hinkalTiming.utils.mjs +0 -21
  95. package/common/src/functions/utils/utxoPadding.utils.cjs +0 -1
  96. package/common/src/functions/utils/utxoPadding.utils.d.ts +0 -2
  97. package/common/src/functions/utils/utxoPadding.utils.mjs +0 -14
  98. package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +0 -1
  99. package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +0 -49
  100. package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +0 -6
  101. package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +0 -1
  102. package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +0 -2
  103. package/common/src/webworker/logError-DFS-H2t0.js +0 -2
  104. package/react-native/bridge/RnWebViewCryptoBridge.cjs +0 -1
  105. package/react-native/bridge/RnWebViewCryptoBridge.d.ts +0 -7
  106. package/react-native/bridge/RnWebViewCryptoBridge.mjs +0 -49
@@ -3,28 +3,27 @@ import { isSolanaLike as t } from "../../../constants/chains.constants.mjs";
3
3
  import { caseInsensitiveEqual as n } from "../../utils/caseInsensitive.utils.mjs";
4
4
  import { DIRECTLY_SHOW_MESSAGE_ERROR_CODES as r } from "../../../error-handling/error-codes.constants.mjs";
5
5
  import { getAmountWithPrecision as i } from "../etherFunctions.mjs";
6
- import { getSpendingPublicKeyForRn as a } from "../../../crypto/rnUtxoCrypto.mjs";
7
- import { createPaddingUtxos as o } from "../../utils/utxoPadding.utils.mjs";
8
- import { ErrorWithAmount as s } from "../../../error-handling/customErrors/ErrorWithAmount.mjs";
6
+ import { Utxo as a } from "../../../data-structures/utxo/Utxo.mjs";
7
+ import { ErrorWithAmount as o } from "../../../error-handling/customErrors/ErrorWithAmount.mjs";
9
8
  import "../../../error-handling/customErrors/index.mjs";
10
- import { encodeTokenWithId as c } from "../../utils/encodeTokenWithId.mjs";
11
- import { formatMintAddress as l } from "../../utils/solanaMint.utils.mjs";
12
- import { getInputUtxoAndBalance as u, getInputUtxoAndBalanceOfStuckUtxos as d, getInputUtxoAndBalancePerToken as f } from "./getInputUtxoAndBalance.mjs";
13
- import { privateTokensDB as p } from "../../../data-structures/TokenDBs/PrivateTokensDB.mjs";
14
- import { getOrCreateMapValue as m } from "../../utils/map.utils.mjs";
15
- import { getChainBalanceFetchingMutex as h } from "../../utils/mutexes.utils.mjs";
16
- import { getErc20TokenFromAPI as g, getErc20TokensForChainAPI as _ } from "../../utils/erc20tokenFunctions.mjs";
17
- import { Mutex as v } from "async-mutex";
9
+ import { encodeTokenWithId as s } from "../../utils/encodeTokenWithId.mjs";
10
+ import { formatMintAddress as c } from "../../utils/solanaMint.utils.mjs";
11
+ import { getInputUtxoAndBalance as l, getInputUtxoAndBalanceOfStuckUtxos as u, getInputUtxoAndBalancePerToken as d } from "./getInputUtxoAndBalance.mjs";
12
+ import { privateTokensDB as f } from "../../../data-structures/TokenDBs/PrivateTokensDB.mjs";
13
+ import { getOrCreateMapValue as p } from "../../utils/map.utils.mjs";
14
+ import { getChainBalanceFetchingMutex as m } from "../../utils/mutexes.utils.mjs";
15
+ import { getErc20TokenFromAPI as h, getErc20TokensForChainAPI as g } from "../../utils/erc20tokenFunctions.mjs";
16
+ import { Mutex as _ } from "async-mutex";
18
17
  //#region libs/shared/common/src/functions/web3/events/getShieldedBalance.ts
19
- var y = async (t, r, i, a, o, s = !1, c, l = !1, f = !1) => m(t.balanceFetchingMutexByChain, r, () => new v()).runExclusive(async () => h(r).runShared(async () => {
20
- let { inputUtxos: m } = f ? await d({
18
+ var v = async (t, r, i, a, o, s = !1, c, d = !1, h = !1) => p(t.balanceFetchingMutexByChain, r, () => new _()).runExclusive(async () => m(r).runShared(async () => {
19
+ let { inputUtxos: p } = h ? await u({
21
20
  hinkal: t,
22
21
  chainId: r,
23
22
  ethAddress: o,
24
23
  passedShieldedPrivateKey: i,
25
24
  resetCacheBefore: s,
26
25
  allowRemoteDecryption: c
27
- }) : await u({
26
+ }) : await l({
28
27
  hinkal: t,
29
28
  sliceIfMore6: !1,
30
29
  chainId: r,
@@ -34,81 +33,82 @@ var y = async (t, r, i, a, o, s = !1, c, l = !1, f = !1) => m(t.balanceFetchingM
34
33
  resetCacheBefore: s,
35
34
  allowRemoteDecryption: c
36
35
  });
37
- l && e && await p.fetchAndUpdatePrivateTokens(m.map((e) => e.getTokenAddress(r)).filter((e) => e !== void 0), r, o);
38
- let h = (e ? await p.getPrivateTokens(r, o) : await _(r)).map((e) => ({
36
+ d && e && await f.fetchAndUpdatePrivateTokens(p.map((e) => e.getTokenAddress(r)).filter((e) => e !== void 0), r, o);
37
+ let m = (e ? await f.getPrivateTokens(r, o) : await g(r)).map((e) => ({
39
38
  token: e,
40
- balance: m.reduce((t, i) => {
39
+ balance: p.reduce((t, i) => {
41
40
  let a = e.erc20TokenAddress;
42
41
  return n(a, i.getTokenAddress(r)) ? t + i.amount : t;
43
42
  }, 0n),
44
- timestamp: m.filter((t) => n(t.getTokenAddress(r), e.erc20TokenAddress))[0]?.timeStamp,
43
+ timestamp: p.filter((t) => n(t.getTokenAddress(r), e.erc20TokenAddress))[0]?.timeStamp,
45
44
  nfts: []
46
- })), g = /* @__PURE__ */ new Map();
47
- return h.forEach((e) => {
48
- g.set(e.token.erc20TokenAddress.toLowerCase(), e);
49
- }), g;
50
- })), b = async (e, n, u, d, p = 6, m = u.map(() => 0), h = !1, _ = !1) => {
51
- let { userKeys: v } = e, y = await a(v), b = [], x = [];
52
- if (u.length === 0) return [];
53
- if (h) {
54
- for (let e = 0; e < u.length; e += 1) {
55
- let r = t(n), i = r ? u[e] : void 0, a = r ? l(u[e]).compressedAddress : u[e];
56
- b.push(await o(p, {
45
+ })), _ = /* @__PURE__ */ new Map();
46
+ return m.forEach((e) => {
47
+ _.set(e.token.erc20TokenAddress.toLowerCase(), e);
48
+ }), _;
49
+ })), y = async (e, n, l, u, f = 6, p = l.map(() => 0), m = !1, g = !1) => {
50
+ let { userKeys: _ } = e, v = _.getSpendingKeyPair().pubSpendingBJJPoint, y = [], b = [];
51
+ if (l.length === 0) return [];
52
+ if (m) {
53
+ for (let e = 0; e < l.length; e += 1) {
54
+ let r = t(n), i = r ? l[e] : void 0, o = r ? c(l[e]).compressedAddress : l[e];
55
+ y.push(Array.from({ length: f }, () => new a({
57
56
  amount: 0n,
58
- erc20TokenAddress: a,
57
+ erc20TokenAddress: o,
59
58
  mintAddress: i,
60
- nullifyingKey: v.getShieldedPrivateKey(),
61
- spendingPublicKey: y,
59
+ nullifyingKey: _.getShieldedPrivateKey(),
60
+ spendingPublicKey: v,
62
61
  isNewStyle: !0
63
- }));
62
+ })));
64
63
  }
65
- return b;
64
+ return y;
66
65
  }
67
- let S = await f({
66
+ let x = await d({
68
67
  hinkal: e,
69
68
  sliceIfMore6: !1,
70
- ensuredTokensWithId: u.map((e, t) => ({
71
- erc20TokenAddress: u[t],
72
- tokenId: m[t]
69
+ ensuredTokensWithId: l.map((e, t) => ({
70
+ erc20TokenAddress: l[t],
71
+ tokenId: p[t]
73
72
  })),
74
73
  allowRemoteDecryption: e.generateProofRemotely,
75
- useBlockedUtxos: _,
74
+ useBlockedUtxos: g,
76
75
  chainId: n
77
- }), C = 0;
78
- for (let e = 0; e < u.length; e += 1) {
79
- let t = S.get(c(n, {
80
- erc20TokenAddress: u[e],
81
- tokenId: m[e]
76
+ }), S = 0;
77
+ for (let e = 0; e < l.length; e += 1) {
78
+ let t = x.get(s(n, {
79
+ erc20TokenAddress: l[e],
80
+ tokenId: p[e]
82
81
  })) ?? [];
83
82
  if (!t) throw Error("Missing utxos for token");
84
- C = Math.max(t.length, C), x.push(t);
83
+ S = Math.max(t.length, S), b.push(t);
85
84
  }
86
- if (C === 2) return x;
87
- for (let [e, a] of x.entries()) if (a.length > p) {
88
- let t = a.slice(0, p), o = t.reduce((e, t) => e + t.amount, 0n);
89
- if (d[e] < 0n && o < -d[e]) {
90
- let t = await g(n, u[e]);
85
+ if (S === 2) return b;
86
+ for (let [e, s] of b.entries()) if (s.length > f) {
87
+ let t = s.slice(0, f), a = t.reduce((e, t) => e + t.amount, 0n);
88
+ if (u[e] < 0n && a < -u[e]) {
89
+ let t = await h(n, l[e]);
91
90
  if (!t) throw Error("Token not found");
92
- let a = t.decimals === 18 ? 6 : 2, c = Number(i(o, t, a));
93
- throw new s(c, `${r.UTXO_LIMITATIONS}. Please try again with ${c} ${t.symbol}, including gas fees.`);
91
+ let s = t.decimals === 18 ? 6 : 2, c = Number(i(a, t, s));
92
+ throw new o(c, `${r.UTXO_LIMITATIONS}. Please try again with ${c} ${t.symbol}, including gas fees.`);
94
93
  }
95
- b.push(t);
96
- } else if (a.length <= p) {
97
- let r = [...a], i = p - a.length;
98
- if (i > 0) {
99
- let a = t(n), s = a ? u[e] : void 0, c = a ? l(u[e]).compressedAddress : u[e];
100
- r.push(...await o(i, {
94
+ y.push(t);
95
+ } else if (s.length <= f) {
96
+ let r = [...s], i = f - s.length;
97
+ for (; i > 0;) {
98
+ --i;
99
+ let o = t(n), s = o ? l[e] : void 0, u = o ? c(l[e]).compressedAddress : l[e];
100
+ r.push(new a({
101
101
  amount: 0n,
102
- erc20TokenAddress: c,
102
+ erc20TokenAddress: u,
103
103
  mintAddress: s,
104
- nullifyingKey: v.getShieldedPrivateKey(),
105
- spendingPublicKey: y,
104
+ nullifyingKey: _.getShieldedPrivateKey(),
105
+ spendingPublicKey: v,
106
106
  isNewStyle: !0
107
107
  }));
108
108
  }
109
- b.push(r);
109
+ y.push(r);
110
110
  }
111
- return b;
111
+ return y;
112
112
  };
113
113
  //#endregion
114
- export { b as addPaddingToUtxos, y as getShieldedBalance };
114
+ export { y as addPaddingToUtxos, v as getShieldedBalance };
@@ -0,0 +1,2 @@
1
+ const e=require(`./workerProxy-DPeuP2Mg.js`);let t=require(`buffer`),n=require(`process`);n=e.u(n);let r=require(`circomlibjs-hinkal-fork`),i=require(`@noble/hashes/blake1.js`),a=require(`ethers`),o=require(`poseidon-lite`);o=e.u(o);let s=require(`libsodium-wrappers`);s=e.u(s);let c=require(`@solana/web3.js`),l=require(`bs58`);l=e.u(l);let u=require(`tweetnacl`);u=e.u(u);let d=require(`tronweb`);`${`00`.repeat(20)}`;var f=21888242871839275222246405745257275088548364400416034343698204186575808495617n,p=f/2n,m=200n;`${`00`.repeat(32)}`;var h=(e,t=f)=>{let n=e%t;return n>=0n?n:n+t},g=(e,t=f)=>{let n=1n,r=0n,i=h(e,t),a=t;if(i===0n)throw Error(`Division by zero`);for(;i>1n;){let e=a%i,t=a/i;a=i,i=e;let o=r-n*t;r=n,n=o}return n<0n?n+t:n},_={p:f,zero:0n,one:1n,e:e=>h(BigInt(e)),add:(e,t)=>h(e+t),sub:(e,t)=>h(e-t),mul:(e,t)=>h(e*t),div:(e,t)=>{if(t===0n)throw Error(`Division by zero in BabyJub field`);return h(e*g(t))},toString:e=>h(e).toString()},v={X:_.zero,Y:_.one,Z:_.one,T:_.zero},y=e=>{let t=_.e(e[0]),n=_.e(e[1]);return{X:t,Y:n,Z:_.one,T:_.mul(t,n)}},b=e=>{let t=g(e.Z);return[_.mul(e.X,t),_.mul(e.Y,t)]},x=_.e(`168700`),S=_.e(`168696`),C=(e,t)=>{let n=_.mul(e.X,t.X),r=_.mul(e.Y,t.Y),i=_.mul(_.mul(e.T,t.T),S),a=_.mul(e.Z,t.Z),o=_.sub(_.mul(_.add(e.X,e.Y),_.add(t.X,t.Y)),_.add(n,r)),s=_.sub(a,i),c=_.add(a,i),l=_.sub(r,_.mul(x,n));return{X:_.mul(o,s),Y:_.mul(c,l),T:_.mul(o,l),Z:_.mul(s,c)}},ee=e=>{let t=_.mul(e.X,e.X),n=_.mul(e.Y,e.Y),r=_.mul(_.mul(e.Z,e.Z),2n),i=_.mul(x,t),a=_.sub(_.mul(_.add(e.X,e.Y),_.add(e.X,e.Y)),_.add(t,n)),o=_.add(i,n),s=_.sub(o,r),c=_.sub(i,n);return{X:_.mul(a,s),Y:_.mul(o,c),T:_.mul(a,c),Z:_.mul(s,o)}},w=class{static A=x;static D=S;F=_;A=x;D=S;Base8=[_.e(`5299619240641551281634865583518297030282874472190772894086521144482721001553`),_.e(`16950150798460657717958625567821834550301663161624707787222815936182638968203`)];addPoint(e,t){return b(C(y(e),y(t)))}mulPointEscalar(e,t){let n=v,r=y(e),i=BigInt(t);for(;i!==0n;)i%2n==1n&&(n=C(n,r)),r=ee(r),i/=2n;return b(n)}},T=new class{babyjub=void 0;async init(){this.babyjub||=e.o?new w:await(0,r.buildBabyjub)()}getJub(){return this.babyjub}},E=()=>T.getJub();function D(e){return typeof e==`object`&&`toBigInt`in e?e.toBigInt():BigInt(e)}var O=()=>{let e=e=>{let t=o[`poseidon${e.length}`];if(!t)throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);return t(e.map(e=>BigInt(e)))};return e.F={toString:e=>BigInt(e).toString()},e},k=new class{poseidon=void 0;async init(){this.poseidon||=e.o?O():await(0,r.buildPoseidon)()}getPoseidon(){return this.poseidon}};function A(...e){let t=k.getPoseidon();return D(t.F.toString(t(e)))}var j=(...e)=>{let t=k.getPoseidon();return a.ethers.toBeHex(t.F.toString(t([...e])))},M=21888242871839275222246405745257275088614511777268538073601725287587578984328n/8n,N=(e,t=0,n=e.length-t)=>{let r=0n;for(let i=n-1;i>=0;--i)r=(r<<8n)+BigInt(e[t+i]);return r},P=(e,t,n,r)=>{let i=h(n);for(let n=0;n<r;n+=1)e[t+n]=Number(i&255n),i>>=8n},F=e=>h(e,M),I=e=>{let t=new Uint8Array(e);return t[0]&=248,t[31]&=127,t[31]|=64,t},te=class{constructor(e,t){this.babyJub=e,this.poseidon=t}prv2pub(e){let t=N(I((0,i.blake512)(e).slice(0,32)),0,32);return this.babyJub.mulPointEscalar(this.babyJub.Base8,t/8n)}signPoseidon(e,t){let n=I((0,i.blake512)(e)),r=N(n,0,32),a=this.babyJub.mulPointEscalar(this.babyJub.Base8,r/8n),o=new Uint8Array(64);o.set(n.slice(32),0),P(o,32,t,32);let s=F(N((0,i.blake512)(o),0,64)),c=this.babyJub.mulPointEscalar(this.babyJub.Base8,s),l=this.poseidon([c[0],c[1],a[0],a[1],t]);return{R8:c,S:F(s+F(h(BigInt(this.poseidon.F.toString(l)))*r))}}},ne=async()=>(await k.init(),await T.init(),new te(T.getJub(),k.getPoseidon())),L=new class{eddsa=void 0;async init(){this.eddsa||=e.o?await ne():await(0,r.buildEddsa)()}getEddsa(){return this.eddsa}},R=()=>L.getEddsa(),z=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=t.Buffer,globalThis.process=n.default),await Promise.all([s.default.ready,k.init(),T.init(),...e?[]:[L.init()]])},B=class{inMemoryCache=new Map;constructor(e){e&&this.mergeWithSerialized(e)}getInMemory(e){return this.inMemoryCache.get(e)??void 0}setInMemory(e,t){this.inMemoryCache.set(e,t)}mergeWithSerialized(t){Object.entries(t).forEach(([t,n])=>{this.set(t,e.c(n))})}},V=class extends B{isAttached=!1;get(e){return this.getInMemory(e)}set(e,t){this.setInMemory(e,t)}serialize(){return Object.fromEntries([...this.inMemoryCache].map(([t,n])=>[t,e.l(n)]))}attach(t){if(this.isAttached)throw Error(`can't reattach cache device`);return this.isAttached=!0,(...n)=>{let r=e.l(n),i=this.get(r);if(i!==void 0)return i;let a=t(...n);return this.set(r,a),a}}},H=e=>{if(e<0n||e>=21888242871839275222246405745257275088548364400416034343698204186575808495617n)throw RangeError();return e>p},U=e=>H(e)?1n:0n,W=new V,G=new V,K=new V,q=class{signature;nullifyingKey;PREFIX_FOR_SPENDING_PAIR=`1`;PREFIX_FOR_NULLIFYING_PAIR=`2`;constructor(e,t){this.signature=e,this.nullifyingKey=t}getSignature(){return this.requireSignature(),this.signature}setSignature(e){this.signature=e}requireSignature(){if(!this.signature)throw Error(`No signature provided`)}requireKeyMaterial(){if(!this.signature&&!this.nullifyingKey)throw Error(`No signature or private key provided`)}verifyTronMessage(e,t){return this.requireSignature(),t===d.Trx.verifyMessageV2(e,this.signature)}getShieldedPrivateKey=()=>(this.requireKeyMaterial(),this.nullifyingKey||=a.ethers.keccak256(this.signature),this.nullifyingKey);getShieldedPublicKey=()=>(this.requireKeyMaterial(),j(this.getShieldedPrivateKey()));getSpendingKeyPair=()=>{this.requireSignature();let e=R(),t=E(),n=j(this.PREFIX_FOR_SPENDING_PAIR,this.getSignature()),r=Buffer.from(a.ethers.getBytes(n)),i=e.prv2pub(r);return{privSpendingKey:n,pubSpendingBJJPoint:[BigInt(t.F.toString(i[0])),BigInt(t.F.toString(i[1]))]}};signEddsa=e=>{this.requireSignature();let t=E(),n=R(),r=Buffer.from(a.ethers.getBytes(this.getSpendingKeyPair().privSpendingKey)),i=t.F.e(e),o=n.signPoseidon(r,i);return{R8:[BigInt(t.F.toString(o.R8[0])),BigInt(t.F.toString(o.R8[1]))],S:BigInt(o.S)}};getShieldedPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(`hinkal-offchain-shielded-key:${t}`))};getClaimableSignatureFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(`hinkal-claimable-utxo-signature:${t}`))};getDerivedEthereumAddress=()=>(this.requireKeyMaterial(),new a.ethers.Wallet(this.getShieldedPrivateKey()).address);getDerivedSolanaPublicKey=()=>(this.requireKeyMaterial(),c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey())).publicKey.toBase58());getNearIntentsAccountId=()=>{this.requireKeyMaterial();let e=c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey()));return a.ethers.hexlify(e.publicKey.toBytes()).slice(2)};getNearIntentsKeyPairString=()=>{this.requireKeyMaterial();let e=c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey()));return`ed25519:${l.default.encode(e.secretKey)}`};getSignerPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(t))};getSignerSolanaPrivateKeyFromNonce=e=>{let t=this.getSignerPrivateKeyFromNonce(e),n=a.ethers.getBytes(t),r=c.Keypair.fromSeed(n);return l.default.encode(r.secretKey)};verifyMessage(e){return this.requireSignature(),a.ethers.verifyMessage(e,this.signature)}verifySolanaMessage(e,t){this.requireSignature();let n=new TextEncoder().encode(e),r=a.ethers.getBytes(this.signature),i=new c.PublicKey(t).toBytes();return u.default.sign.detached.verify(n,r,i)}static getRandomizedStealthPairOld=G.attach((e,t)=>{let n=E(),r=e*(BigInt(t)%f)%f,i=n.mulPointEscalar(n.Base8,e),a=n.mulPointEscalar(n.Base8,r);return{H0:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))],H1:[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]}});static getRandomizedStealthPair=W.attach((e,t)=>{let n=E(),r=BigInt(t)%f,i=n.mulPointEscalar(n.Base8,e),a=n.mulPointEscalar(i,r);return{H0:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))],H1:[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]}});static getStealthAddressCompressedPoints=(e,t)=>{let{H0:n,H1:r}=this.getRandomizedStealthPairOld(e,t),[i,a]=[n,r].map(e=>BigInt(e[1])+2n**255n*U(e[0]));return{h0:i,h1:a}};static checkSignature=(e,t,n,r)=>{let{h0:i,h1:a}=this.getStealthAddressCompressedPoints(e,r);return t===i&&n===a};static getStealthAddress=K.attach((e,t)=>{let{H0:n,H1:r}=this.getRandomizedStealthPairOld(e,t);return j(2n*U(n[0])+U(r[0]),n[1],r[1])});static getH1FromH0=(e,t)=>{let n=E(),r=BigInt(t)%f,i=[n.F.e(e[0]),n.F.e(e[1])],a=n.mulPointEscalar(i,r);return[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]};static verifyStealthPair=(e,t,n,r=!0)=>{let i=this.getH1FromH0(e,n);return r?i[1]===t[1]:i===t};static getStealthAddressNewStyle=(e,t,n)=>{if(n?.length!==2)throw Error(`Spending public key must be an array of 2 elements`);let r=this.getH1FromH0(e,t);return j(2n*U(e[0])+U(r[0]),e[1],r[1],n[0],n[1],t)};static findCorrectRandomization(e,t){if(!t)throw Error(`No Private Shielded Key Provided`);let n=BigInt(t)%f,r,i,a=0n;do r=e*10n**a%f,i=r*n%f,a+=1n;while(i>=2n**253n||r>=2n**253n);return r}static getH0FromRandomization=e=>{let t=E(),n=t.mulPointEscalar(t.Base8,e);return[BigInt(t.F.toString(n[0])),BigInt(t.F.toString(n[1]))]};static findH0(e,t){if(!t)return;let{H0:n}=this.getRandomizedStealthPair(e,t);return n}static getEncryptionKeyPair=e=>{let t=s.default.crypto_box_seed_keypair(a.ethers.getBytes(e));return{privateKey:a.ethers.hexlify(t.privateKey),publicKey:a.ethers.hexlify(t.publicKey)}};getAccessKey=()=>(this.requireKeyMaterial(),j(this.getShieldedPrivateKey(),this.getShieldedPublicKey()));getBackendToken=()=>(this.requireKeyMaterial(),j(this.getAccessKey(),this.getShieldedPublicKey()))},J={CANNOT_CERTIFY_FOR_PAST_WEEK:`Certification for the past week is not available`,CYCLICAL_REFERRALS_FORBIDDEN:`Cyclical referrals are forbidden`,USER_IS_UNRANKED:`Please certify transactions to see rank`},Y={WC_NO_MATCHING_KEY:`creating the transaction failed
2
+ version`,CONNECTION_PROBLEM:`Failed to connect wallet. Please try again.`,REQUEST_PENDING:`request of type 'wallet_requestpermissions' already pending for origin`},X={INSUFFICIENT_FUNDS:`Insufficient funds`,INSUFFICIENT_FUNDS_WITHDRAW:`Not enough funds to withdraw`,INSUFFICIENT_FUNDS_TRANSFER:`Not enough funds to transfer`,INSUFFICIENT_FUNDS_TO_TRANSACT:`Not enough funds to transact`,INSUFFICIENT_FUNDS_GAS:`Insufficient funds for gas * price`,INSUFFICIENT_TRON_BALANCE_FOR_FEE:`Insufficient TRX balance to cover transfer amount and transaction fee reserve`,INSUFFICIENT_SOL_BALANCE:`Insufficient SOL balance`},re={GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT:`Skipped shielding due to gas fee exceeding your limit.`,AUTO_SHIELD_INSUFFICIENT_GAS:`Auto-Shield skipped due to insufficient gas.`};({...J,...Y,...X,...re});var ie=e=>BigInt(a.ethers.hexlify(a.ethers.randomBytes(e))),ae=()=>Math.floor(Date.now()/1e3),Z=class t{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:n,timeStamp:r,nullifyingKey:i,spendingPublicKey:a,randomization:o,H0:s,stealthAddress:c,encryptionKey:l,commitment:u=void 0,nullifier:d=void 0,isBlocked:f=!1,isNewStyle:p=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=n,this.timeStamp=r??ae().toString(),this.nullifyingKey=i,this.spendingPublicKey=a,this.randomization=o??(i?q.findCorrectRandomization(ie(31),i):void 0),this.H0=s??(p&&this.randomization?q.findH0(this.randomization,i):void 0),this.stealthAddress=c,this.encryptionKey=l,this.commitment=u,this.nullifier=d,this.isBlocked=f,this.isNewStyle=p}static createFrom(e,n){return new t({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...n})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=j(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),t=j(this.nullifyingKey,e);this.nullifier=j(e,t)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=q.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=q.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.r(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return q.getEncryptionKeyPair(this.nullifyingKey).publicKey}},oe=()=>s.default.crypto_box_SEALBYTES+s.default.crypto_secretbox_KEYBYTES,Q=e=>{let t=s.default.crypto_secretbox_NONCEBYTES,n=oe(),r=0,i=e[r];r+=1;let a=e.slice(r,r+t);r+=t;let o=[];for(let t=0;t<i;t+=1)o.push(e.slice(r,r+n)),r+=n;return{nonce:a,sealedKeys:o,ciphertext:e.slice(r)}},se=(e,t,n,r)=>{let{nonce:i,sealedKeys:o,ciphertext:c}=Q(e),l=s.default.crypto_box_seal_open(o[r],a.ethers.getBytes(n),a.ethers.getBytes(t)),u=s.default.crypto_secretbox_open_easy(c,i,l);return Buffer.from(u)},ce=(e,t,n)=>{let r=s.default.crypto_box_seal_open(e,a.ethers.getBytes(n),a.ethers.getBytes(t));return Buffer.from(r)},le=54912,ue=2,de=e=>e[0]*256+e[1],$=(e,t)=>{let{privateKey:n,publicKey:r}=q.getEncryptionKeyPair(t.getShieldedPrivateKey()),i=de(e)===le?se(e.slice(ue),n,r,0):ce(e,n,r),a=Buffer.from(i).toString(`utf-8`).split(`0x`).filter(e=>e.length!==0),o=e=>BigInt(`0x${e}`),s=e=>`0x${e}`,l=a.length>=8,u=l&&o(a[5])===1n,d=l?8:6,f=a[d]?s(a[d]):void 0,p=f?new c.PublicKey(Buffer.from(f.slice(2),`hex`)).toString():void 0;return{amount:o(a[0]),erc20TokenAddress:s(a[1]),randomization:o(a[2]),stealthAddress:s(a[3]),nullifyingKey:t.getShieldedPrivateKey(),timeStamp:o(a[4]).toString(),isNewStyle:u,...u?{H0:[o(a[6]),o(a[7])]}:{},mintAddress:p}},fe=(e,t)=>new Z($(e,t)),pe=e=>e&2n**255n-1n,me=e=>e>>255n&1n,he=(...t)=>{e.a&&console.log(...t)};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}});
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`../functions/utils/hinkalTiming.utils.cjs`),r=require(`./workerFactory.cjs`);var i=async i=>{let a=i.payload?.type??`unknown`,o=n.createRnDeltaTiming(`webView.task:${i.type}:${a}`),s=await r.WorkerFactory.getWebWorker(i.type);return o.log(`rn-worker-created`),new Promise((n,r)=>{let a={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:i,href:o}=window.location;a={origin:e,protocol:t,host:n,port:r,hostname:i,href:o}}s.onMessage(e=>{o.log(`rn-result-received`),n(e),s.terminate()}),s.onError(e=>{o.log(`rn-error`),r(e),s.terminate()});let c={payload:i.payload,metadata:{hostLocation:a,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};s.postMessage(c),o.log(`rn-postMessage-sent`)})};exports.performTaskWithWorker=i;
1
+ const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`./workerFactory.cjs`);var r=async r=>{let i=await n.WorkerFactory.getWebWorker(r.type);return new Promise((n,a)=>{let o={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:i,href:a}=window.location;o={origin:e,protocol:t,host:n,port:r,hostname:i,href:a}}i.onMessage(e=>{n(e),i.terminate()}),i.onError(e=>{a(e),i.terminate()});let s={payload:r.payload,metadata:{hostLocation:o,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};i.postMessage(s)})};exports.performTaskWithWorker=r;
@@ -1,40 +1,39 @@
1
1
  import { isDevelopment as e } from "../constants/vite.constants.mjs";
2
2
  import { chainIds as t } from "../constants/chains.constants.mjs";
3
- import { createRnDeltaTiming as n } from "../functions/utils/hinkalTiming.utils.mjs";
4
- import { WorkerFactory as r } from "./workerFactory.mjs";
3
+ import { WorkerFactory as n } from "./workerFactory.mjs";
5
4
  //#region libs/shared/common/src/webworker/performTaskWithWorker.ts
6
- var i = async (i) => {
7
- let a = i.payload?.type ?? "unknown", o = n(`webView.task:${i.type}:${a}`), s = await r.getWebWorker(i.type);
8
- return o.log("rn-worker-created"), new Promise((n, r) => {
9
- let a = {};
5
+ var r = async (r) => {
6
+ let i = await n.getWebWorker(r.type);
7
+ return new Promise((n, a) => {
8
+ let o = {};
10
9
  if (typeof window < "u" && window.location) {
11
- let { origin: e, protocol: t, host: n, port: r, hostname: i, href: o } = window.location;
12
- a = {
10
+ let { origin: e, protocol: t, host: n, port: r, hostname: i, href: a } = window.location;
11
+ o = {
13
12
  origin: e,
14
13
  protocol: t,
15
14
  host: n,
16
15
  port: r,
17
16
  hostname: i,
18
- href: o
17
+ href: a
19
18
  };
20
19
  }
21
- s.onMessage((e) => {
22
- o.log("rn-result-received"), n(e), s.terminate();
23
- }), s.onError((e) => {
24
- o.log("rn-error"), r(e), s.terminate();
20
+ i.onMessage((e) => {
21
+ n(e), i.terminate();
22
+ }), i.onError((e) => {
23
+ a(e), i.terminate();
25
24
  });
26
- let c = {
27
- payload: i.payload,
25
+ let s = {
26
+ payload: r.payload,
28
27
  metadata: {
29
- hostLocation: a,
28
+ hostLocation: o,
30
29
  constants: {
31
30
  chains: { chainIds: t },
32
31
  isDevelopment: e
33
32
  }
34
33
  }
35
34
  };
36
- s.postMessage(c), o.log("rn-postMessage-sent");
35
+ i.postMessage(s);
37
36
  });
38
37
  };
39
38
  //#endregion
40
- export { i as performTaskWithWorker };
39
+ export { r as performTaskWithWorker };
@@ -1 +1 @@
1
- var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-C1JsPCdv.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-C1JsPCdv.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
1
+ var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-kZ10ZLfi.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-kZ10ZLfi.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
@@ -1,4 +1,4 @@
1
1
  //#region libs/shared/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url
2
- var e = "" + new URL("../../../../assets/utxoWorkerLauncher-C1JsPCdv.js", import.meta.url).href;
2
+ var e = "" + new URL("../../../../assets/utxoWorkerLauncher-kZ10ZLfi.js", import.meta.url).href;
3
3
  //#endregion
4
4
  export { e as default };
@@ -1 +1 @@
1
- const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-DFS-H2t0.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`),a=require(`ethers`),o=require(`@solana/web3.js`);var s=`solana-on-chain-utxo:`,c=8,l=e=>e.startsWith(s),u=e=>{if(!l(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=a.ethers.AbiCoder.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),r=n;if(!Array.isArray(r)||r.length!==c)throw Error(`Malformed encoded Solana UTXO payload`);let[i,s,u,d,f,p,m,h]=r,g=BigInt(i),_=BigInt(d),v=t.n(_)===1n,y=t.r(_),b=a.ethers.toBeHex(BigInt(f)),x=BigInt(p),S=BigInt(m),C=BigInt(h).toString(),w=Array.from(a.ethers.getBytes(s)),T=Array.from(a.ethers.getBytes(u)),E=new o.PublicKey(Uint8Array.from([...w.slice(16),...T.slice(16)])).toBase58();return{amount:g,erc20TokenAddress:t.p(BigInt(s),BigInt(u)),mintAddress:E,randomization:y,stealthAddress:b,H0:x,H1:S,timeStamp:C,isNewStyle:v}},d=e=>{let n=a.ethers.AbiCoder.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e),r=BigInt(n[0]),i=n[1],o=BigInt(n[2][0]),s=t.n(o),c=t.r(o),l=a.ethers.toBeHex(BigInt(n[2][1])),u=BigInt(n[2][2]),d=BigInt(n[2][3]),f=BigInt(n[3]).toString(),p=Number(n[4]);return{amount:r,erc20TokenAddress:i,randomization:c,isNewStyle:s===1n,stealthAddress:l,H0:u,H1:d,timeStamp:f,tokenId:p}},f=(n,r,i)=>{let{randomization:a,H0:o,H1:s,isNewStyle:c}=e.r(i)?u(n):d(n),l=c?t.s.verifyStealthPair([a,o],[0n,s],r):t.s.checkSignature(a,o,s,r);if(!l)throw Error(`UTXO doesn't belong to user`);return l},p=(t,n,r)=>{if(e.r(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s,isNewStyle:c,H0:l}=u(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,nullifyingKey:n,stealthAddress:o,isNewStyle:c,...c?{H0:[a,l]}:{randomization:a}}}let{amount:i,erc20TokenAddress:a,timeStamp:o,randomization:s,isNewStyle:c,stealthAddress:l,H0:f}=d(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,nullifyingKey:n,stealthAddress:l,isNewStyle:c,...c?{H0:[s,f]}:{randomization:s}}},m=class{static log(...t){e.a&&console.log(...t)}static logObject(t){e.a&&console.dir(t,{depth:null,colors:!0})}static error(...e){t.t(e)}},h=function(e){return e[e.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]=`BATCH_FILTER_UTXOS_WITH_NULLIFIER`,e[e.BUILD_UTXOS=1]=`BUILD_UTXOS`,e[e.DECIPHER_OUTPUTS=2]=`DECIPHER_OUTPUTS`,e}({}),g=new e.t,_=async({data:e})=>{let{utxos:n,nullifiers:r}=e,i=n.filter(e=>{let n=new t.o(e);return!r.has(n.getNullifier())});g.postMessageToMainThread({utxoConstructors:i,stealthPairCache:t.l.serialize(),stealthAddressCache:t.c.serialize()})},v=async({data:e})=>{let n=new t.s(e.signature),r=n.getShieldedPrivateKey(),i=e.encryptedOutputs.map(i=>{try{let a=i.isPositive?t.a(Buffer.from(i.value.slice(2),`hex`),n):p(i.value,r,e.chainId);return a.isBlocked=i.isBlocked,a}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);g.postMessageToMainThread(i)},y=async({data:e})=>{let n=new t.s(e.signature),r=[],{encryptedOutputs:i}=e,{lastOutput:a}=e,o=n.getShieldedPrivateKey();for(let s=0;s<i.length;s+=1){let c=i[s];if(a=c.value,c.isPositive)try{let e=t.i(Buffer.from(a.slice(2),`hex`),n);if(e.isBlocked=c.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);r.push(c)}catch{}else try{f(a,o,e.chainId)&&r.push(c)}catch{}}g.postMessageToMainThread({additionalEncryptedOutputs:r,lastOutput:a})},b=async e=>{try{await t.d(!0);let{type:n}=e.payload;switch(n){case h.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await _(e.payload);return;case h.BUILD_UTXOS:await v(e.payload);return;case h.DECIPHER_OUTPUTS:await y(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){m.error(`utxo worker message failed`,e),g.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await b(e)});
1
+ const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-D8yBaP96.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`),a=require(`ethers`),o=require(`@solana/web3.js`);var s=`solana-on-chain-utxo:`,c=8,l=e=>e.startsWith(s),u=e=>{if(!l(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=a.ethers.AbiCoder.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),r=n;if(!Array.isArray(r)||r.length!==c)throw Error(`Malformed encoded Solana UTXO payload`);let[i,s,u,d,f,p,m,h]=r,g=BigInt(i),_=BigInt(d),v=t.n(_)===1n,y=t.r(_),b=a.ethers.toBeHex(BigInt(f)),x=BigInt(p),S=BigInt(m),C=BigInt(h).toString(),w=Array.from(a.ethers.getBytes(s)),T=Array.from(a.ethers.getBytes(u)),E=new o.PublicKey(Uint8Array.from([...w.slice(16),...T.slice(16)])).toBase58();return{amount:g,erc20TokenAddress:t.f(BigInt(s),BigInt(u)),mintAddress:E,randomization:y,stealthAddress:b,H0:x,H1:S,timeStamp:C,isNewStyle:v}},d=e=>{let n=a.ethers.AbiCoder.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e),r=BigInt(n[0]),i=n[1],o=BigInt(n[2][0]),s=t.n(o),c=t.r(o),l=a.ethers.toBeHex(BigInt(n[2][1])),u=BigInt(n[2][2]),d=BigInt(n[2][3]),f=BigInt(n[3]).toString(),p=Number(n[4]);return{amount:r,erc20TokenAddress:i,randomization:c,isNewStyle:s===1n,stealthAddress:l,H0:u,H1:d,timeStamp:f,tokenId:p}},f=(n,r,i)=>{let{randomization:a,H0:o,H1:s,isNewStyle:c}=e.r(i)?u(n):d(n),l=c?t.s.verifyStealthPair([a,o],[0n,s],r):t.s.checkSignature(a,o,s,r);if(!l)throw Error(`UTXO doesn't belong to user`);return l},p=(t,n,r)=>{if(e.r(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s,isNewStyle:c,H0:l}=u(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,nullifyingKey:n,stealthAddress:o,isNewStyle:c,...c?{H0:[a,l]}:{randomization:a}}}let{amount:i,erc20TokenAddress:a,timeStamp:o,randomization:s,isNewStyle:c,stealthAddress:l,H0:f}=d(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,nullifyingKey:n,stealthAddress:l,isNewStyle:c,...c?{H0:[s,f]}:{randomization:s}}},m=class{static log(...t){e.a&&console.log(...t)}static logObject(t){e.a&&console.dir(t,{depth:null,colors:!0})}static error(...e){t.t(e)}},h=function(e){return e[e.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]=`BATCH_FILTER_UTXOS_WITH_NULLIFIER`,e[e.BUILD_UTXOS=1]=`BUILD_UTXOS`,e[e.DECIPHER_OUTPUTS=2]=`DECIPHER_OUTPUTS`,e}({}),g=new e.t,_=async({data:e})=>{let{utxos:n,nullifiers:r}=e,i=n.filter(e=>{let n=new t.o(e);return!r.has(n.getNullifier())});g.postMessageToMainThread({utxoConstructors:i,stealthPairCache:t.l.serialize(),stealthAddressCache:t.c.serialize()})},v=async({data:e})=>{let n=new t.s(e.signature),r=n.getShieldedPrivateKey(),i=e.encryptedOutputs.map(i=>{try{let a=i.isPositive?t.a(Buffer.from(i.value.slice(2),`hex`),n):p(i.value,r,e.chainId);return a.isBlocked=i.isBlocked,a}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);g.postMessageToMainThread(i)},y=async({data:e})=>{let n=new t.s(e.signature),r=[],{encryptedOutputs:i}=e,{lastOutput:a}=e,o=n.getShieldedPrivateKey();for(let s=0;s<i.length;s+=1){let c=i[s];if(a=c.value,c.isPositive)try{let e=t.i(Buffer.from(a.slice(2),`hex`),n);if(e.isBlocked=c.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);r.push(c)}catch{}else try{f(a,o,e.chainId)&&r.push(c)}catch{}}g.postMessageToMainThread({additionalEncryptedOutputs:r,lastOutput:a})},b=async e=>{try{await t.u(!0);let{type:n}=e.payload;switch(n){case h.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await _(e.payload);return;case h.BUILD_UTXOS:await v(e.payload);return;case h.DECIPHER_OUTPUTS:await y(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){m.error(`utxo worker message failed`,e),g.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await b(e)});
@@ -14,9 +14,8 @@
14
14
  var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
15
15
 
16
16
  const n = async () => ({
17
- [e.ZKProof]: await getWorkerURL(domain + '/0.3.26/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.26/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.26/' + 'utxoWorkerLauncher.js'),
20
- cryptoEngine: await getWorkerURL(domain + '/0.3.26/' + 'cryptoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.28/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.28/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.28/' + 'utxoWorkerLauncher.js'),
21
20
  });
22
21
  exports.getWorkerViteURL = n;
@@ -2,7 +2,6 @@
2
2
  * These imports tell vite to generate and bundle worker file.
3
3
  * These are import conditionally because we do not have vite when running on node.
4
4
  */
5
- export declare const getCryptoWorkerBuildURL: () => Promise<any>;
6
5
  export declare const getWorkerViteURL: () => Promise<{
7
6
  ZKProof: any;
8
7
  SnarkJS: any;
@@ -14,9 +14,8 @@
14
14
  var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
15
15
 
16
16
  const n = async () => ({
17
- [e.ZKProof]: await getWorkerURL(domain + '/0.3.26/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.26/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.26/' + 'utxoWorkerLauncher.js'),
20
- cryptoEngine: await getWorkerURL(domain + '/0.3.26/' + 'cryptoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.28/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.28/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.28/' + 'utxoWorkerLauncher.js'),
21
20
  });
22
21
  export { n as getWorkerViteURL };
@@ -1 +1 @@
1
- var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-Ces3iaVd.js`).href:new URL(`../../../../assets/zkProofWorkerLauncher-Ces3iaVd.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
1
+ var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-DxuIa0r1.js`).href:new URL(`../../../../assets/zkProofWorkerLauncher-DxuIa0r1.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
@@ -1,4 +1,4 @@
1
1
  //#region libs/shared/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url
2
- var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-Ces3iaVd.js", import.meta.url).href;
2
+ var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-DxuIa0r1.js", import.meta.url).href;
3
3
  //#endregion
4
4
  export { e as default };
@@ -1 +1 @@
1
- const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-DFS-H2t0.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`);require(`ethers`),Object.values({preHookContract:`0x0000000000000000000000000000000000000000`,hookContract:`0x0000000000000000000000000000000000000000`,preHookMetadata:`0x00`,postHookMetadata:`0x00`}),Array.from({length:25},()=>`0`);var a=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){n.push([]);for(let i=0;i<e[r].length;i+=1)n[r][i]=t.getSiblingHashesForVerification(BigInt(e[r][i].getCommitment())).map(e=>e.toString())}let r=[];for(let n=0;n<e.length;n+=1){r.push([]);for(let i=0;i<e[n].length;i+=1)r[n][i]=t.getSiblingSides(BigInt(e[n][i].getCommitment())).map(e=>e.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:r}},o=function(e){return e[e.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]=`CALC_COMMITMENTS_SIBLING_AND_SIDES`,e[e.BUILD_IN_NULLIFIERS=1]=`BUILD_IN_NULLIFIERS`,e}({}),s=class extends Error{constructor(){super(`Merkle tree is incomplete`),this.name=`MerkleTreeIncompleteError`}},c=class e{tree;count;index;reverseTree;static createWithData(t,n,r,i,a,o,s){return new e(a,o,s,t,n,r,i)}static create(n,r,i=t.u){return new e(n,i,r)}createReverseTree(){let e=new Map;for(let t=this.getStartIndex();t<this.getStartIndex()+this.count;t+=1n){let n=this.tree.get(t);n!==void 0&&e.set(n,t)}return e}constructor(e,t,n,r,i,a,o){this.hashFunction=e,this.levels=t,this.defaultNodeValue=n,this.tree=r??new Map,this.count=o??0n,this.index=a??2n**(t-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(e){let t=0n;for(;2n**t<e;)t+=1n;return t}bigIntMax(e,t){return e>t?e:t}forceInsert(e,t){if(t<this.getStartIndex())throw RangeError();this.tree.set(t,e),this.reverseTree.set(e,t);let n=this.index-this.getStartIndex(),r=this.logarithm2(n),i=t;for(let e=1n;e<=r;e+=1n){i/=2n;let e=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,e)}}insert(e,n){let r=!1;this.tree.has(n)&&(r=!0,t.t(`Editing commitment index: ${n} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(e,n)}remove(e){this.forceInsert(this.defaultNodeValue,e)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new s}getRootHash(){this.completenessCheck();for(let e=1n;e<2n**this.levels;e*=2n)if(this.tree.get(e))return this.tree.get(e);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getValue(e){return this.tree.get(e)}getSiblingIndex(e){return e===1n?1n:e%2n==1n?e-1n:e+1n}getSiblingHashesForVerification(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;)n.push(this.tree.get(this.getSiblingIndex(t))||this.defaultNodeValue),t/=2n;return n.slice(0,25)}getSiblingSides(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;){let e=t%2n==0n?0n:1n;n.push(e),t/=2n}return n.slice(0,25)}toJSON(){let{tree:e,reverseTree:t,count:n,index:r}=this;return{tree:Object.fromEntries(e),reverseTree:Object.fromEntries(t),count:n.toString(),index:r.toString()}}toJSONLite(){let{tree:e,count:t,index:n}=this;return{tree:Object.fromEntries(e),count:t.toString(),index:n.toString()}}clone(){return e.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}},l=e=>new Map(Object.entries(e).map(([e,t])=>[BigInt(e),BigInt(t)])),u=e=>{let n=l(e.tree),r=e.reverseTree?l(e.reverseTree):void 0;return c.createWithData(n,r,BigInt(e.index),BigInt(e.count),t.f,t.u,0n)},d=new e.t,f=e=>{let{inputUtxosSerialized:n,merkleTreeSerialized:r}=e.data,i=u(r),{inCommitmentSiblings:o,inCommitmentSiblingSides:s}=a(n.map(e=>e.map(e=>new t.o(e))),i);d.postMessageToMainThread({inCommitmentSiblings:o,inCommitmentSiblingSides:s})},p=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.o(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));d.postMessageToMainThread(r)},m=async e=>{try{await t.d(!0);let{type:n}=e.payload;switch(n){case o.CALC_COMMITMENTS_SIBLING_AND_SIDES:f(e.payload);return;case o.BUILD_IN_NULLIFIERS:p(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(`zk proof worker message failed`,e),d.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await m(e)});
1
+ const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-D8yBaP96.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`);require(`ethers`),Object.values({preHookContract:`0x0000000000000000000000000000000000000000`,hookContract:`0x0000000000000000000000000000000000000000`,preHookMetadata:`0x00`,postHookMetadata:`0x00`}),Array.from({length:25},()=>`0`);var a=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){n.push([]);for(let i=0;i<e[r].length;i+=1)n[r][i]=t.getSiblingHashesForVerification(BigInt(e[r][i].getCommitment())).map(e=>e.toString())}let r=[];for(let n=0;n<e.length;n+=1){r.push([]);for(let i=0;i<e[n].length;i+=1)r[n][i]=t.getSiblingSides(BigInt(e[n][i].getCommitment())).map(e=>e.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:r}},o=function(e){return e[e.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]=`CALC_COMMITMENTS_SIBLING_AND_SIDES`,e[e.BUILD_IN_NULLIFIERS=1]=`BUILD_IN_NULLIFIERS`,e}({}),s=class extends Error{constructor(){super(`Merkle tree is incomplete`),this.name=`MerkleTreeIncompleteError`}},c=class e{tree;count;index;reverseTree;static createWithData(t,n,r,i,a,o,s){return new e(a,o,s,t,n,r,i)}static create(n,r,i=t.p){return new e(n,i,r)}createReverseTree(){let e=new Map;for(let t=this.getStartIndex();t<this.getStartIndex()+this.count;t+=1n){let n=this.tree.get(t);n!==void 0&&e.set(n,t)}return e}constructor(e,t,n,r,i,a,o){this.hashFunction=e,this.levels=t,this.defaultNodeValue=n,this.tree=r??new Map,this.count=o??0n,this.index=a??2n**(t-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(e){let t=0n;for(;2n**t<e;)t+=1n;return t}bigIntMax(e,t){return e>t?e:t}forceInsert(e,t){if(t<this.getStartIndex())throw RangeError();this.tree.set(t,e),this.reverseTree.set(e,t);let n=this.index-this.getStartIndex(),r=this.logarithm2(n),i=t;for(let e=1n;e<=r;e+=1n){i/=2n;let e=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,e)}}insert(e,n){let r=!1;this.tree.has(n)&&(r=!0,t.t(`Editing commitment index: ${n} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(e,n)}remove(e){this.forceInsert(this.defaultNodeValue,e)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new s}getRootHash(){this.completenessCheck();for(let e=1n;e<2n**this.levels;e*=2n)if(this.tree.get(e))return this.tree.get(e);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getValue(e){return this.tree.get(e)}getSiblingIndex(e){return e===1n?1n:e%2n==1n?e-1n:e+1n}getSiblingHashesForVerification(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;)n.push(this.tree.get(this.getSiblingIndex(t))||this.defaultNodeValue),t/=2n;return n.slice(0,25)}getSiblingSides(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;){let e=t%2n==0n?0n:1n;n.push(e),t/=2n}return n.slice(0,25)}toJSON(){let{tree:e,reverseTree:t,count:n,index:r}=this;return{tree:Object.fromEntries(e),reverseTree:Object.fromEntries(t),count:n.toString(),index:r.toString()}}toJSONLite(){let{tree:e,count:t,index:n}=this;return{tree:Object.fromEntries(e),count:t.toString(),index:n.toString()}}clone(){return e.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}},l=e=>new Map(Object.entries(e).map(([e,t])=>[BigInt(e),BigInt(t)])),u=e=>{let n=l(e.tree),r=e.reverseTree?l(e.reverseTree):void 0;return c.createWithData(n,r,BigInt(e.index),BigInt(e.count),t.d,t.p,0n)},d=new e.t,f=e=>{let{inputUtxosSerialized:n,merkleTreeSerialized:r}=e.data,i=u(r),{inCommitmentSiblings:o,inCommitmentSiblingSides:s}=a(n.map(e=>e.map(e=>new t.o(e))),i);d.postMessageToMainThread({inCommitmentSiblings:o,inCommitmentSiblingSides:s})},p=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.o(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));d.postMessageToMainThread(r)},m=async e=>{try{await t.u(!0);let{type:n}=e.payload;switch(n){case o.CALC_COMMITMENTS_SIBLING_AND_SIDES:f(e.payload);return;case o.BUILD_IN_NULLIFIERS:p(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(`zk proof worker message failed`,e),d.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await m(e)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1,13 +1,8 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/crypto/rnCryptoBridge.cjs`),t=require(`../common/src/functions/utils/hinkalTiming.utils.cjs`),n=require(`../common/src/webworker/workerFactory.cjs`),r=require(`./workerCDNUrls.cjs`),i=require(`./bridge/serialization.utils.cjs`),a=require(`./bridge/HinkalRNWorker.cjs`),o=require(`./bridge/RnWebViewCryptoBridge.cjs`);let s=require(`react`),c=require(`react-native`),l=require(`react-native-webview`),u=require(`react/jsx-runtime`);var d=`${new URL(Object.values(r.WORKER_CDN_URLS)[0]).origin}/`;n.WorkerFactory.rnWorkerFactory=e=>new a.HinkalRNWorker(e);var f=`
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/webworker/workerFactory.cjs`),t=require(`./workerCDNUrls.cjs`),n=require(`./bridge/serialization.utils.cjs`),r=require(`./bridge/HinkalRNWorker.cjs`);let i=require(`react`),a=require(`react-native`),o=require(`react-native-webview`),s=require(`react/jsx-runtime`);var c=`${new URL(Object.values(t.WORKER_CDN_URLS)[0]).origin}/`;e.WorkerFactory.rnWorkerFactory=e=>new r.HinkalRNWorker(e);var l=`
2
2
  if (!window.__hinkalPageBoot) (function(){
3
3
  window.__hinkalPageBoot = true;
4
- var URLS = ${JSON.stringify(r.WORKER_CDN_URLS)};
5
- var CRYPTO_URL = ${JSON.stringify(r.CRYPTO_ENGINE_CDN_URL)};
4
+ var URLS = ${JSON.stringify(t.WORKER_CDN_URLS)};
6
5
  var BLOBS = {};
7
- var cryptoWorker = null;
8
- var cryptoReady = false;
9
- var cryptoInitPromise = null;
10
- var cryptoPending = {};
11
6
 
12
7
  function replacer(_key, value){
13
8
  if (typeof value === 'bigint') return { __bigint: value.toString() };
@@ -27,9 +22,6 @@ if (!window.__hinkalPageBoot) (function(){
27
22
  var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
28
23
  }
29
24
  function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
30
- function postPhase(requestId, variant, phase, t0){
31
- post({ type: 'TIMING', requestId: requestId, variant: variant, phase: phase, ms: Date.now() - t0 });
32
- }
33
25
  function describe(error){
34
26
  if (!error) return 'worker error';
35
27
  if (error.message) return error.message;
@@ -63,77 +55,15 @@ if (!window.__hinkalPageBoot) (function(){
63
55
  try { return new Worker(url, { type: 'module' }); } catch(_){ return new Worker(url); }
64
56
  }
65
57
 
66
- function postCrypto(payload){ post(Object.assign({ channel: 'crypto' }, payload)); }
67
-
68
- async function ensureCryptoWorker(){
69
- if (cryptoReady) return cryptoWorker;
70
- if (cryptoInitPromise) return cryptoInitPromise;
71
- cryptoInitPromise = new Promise(function(resolve, reject){
72
- blobUrl(CRYPTO_URL).then(function(url){
73
- cryptoWorker = spawn(url);
74
- cryptoWorker.onmessage = function(event){
75
- var data = event && event.data;
76
- if (!data || typeof data !== 'object') return;
77
- if (data.type === 'ready') {
78
- cryptoReady = true;
79
- resolve(cryptoWorker);
80
- return;
81
- }
82
- if (data.requestId && cryptoPending[data.requestId]) {
83
- cryptoPending[data.requestId](data);
84
- delete cryptoPending[data.requestId];
85
- }
86
- };
87
- cryptoWorker.onerror = function(event){ reject(new Error(describe(event))); };
88
- cryptoWorker.postMessage({ op: 'init' });
89
- }).catch(reject);
90
- });
91
- return cryptoInitPromise;
92
- }
93
-
94
- function cryptoCall(requestId, op, payload){
95
- ensureCryptoWorker().then(function(worker){
96
- cryptoPending[requestId] = function(response){
97
- if (response.type === 'result') postCrypto({ requestId: requestId, type: 'RESULT', data: response.data });
98
- else postCrypto({ requestId: requestId, type: 'ERROR', error: response.error || 'crypto worker error' });
99
- };
100
- worker.postMessage({ requestId: requestId, op: op, payload: payload });
101
- }).catch(function(error){
102
- postCrypto({ requestId: requestId, type: 'ERROR', error: describe(error) });
103
- });
104
- }
105
-
106
- window.handleCryptoMessage = function(envelope){
107
- if (!envelope || typeof envelope !== 'object') return;
108
- if (envelope.type === 'INIT') {
109
- ensureCryptoWorker().then(function(){
110
- postCrypto({ type: 'CRYPTO_READY', requestId: envelope.requestId });
111
- }).catch(function(error){
112
- postCrypto({ type: 'ERROR', requestId: envelope.requestId, error: describe(error) });
113
- });
114
- return;
115
- }
116
- if (envelope.type === 'CALL') {
117
- cryptoCall(envelope.requestId, envelope.op, revive(envelope.payload));
118
- }
119
- };
120
-
121
58
  window.handleMessage = async function(envelope){
122
59
  var requestId = envelope && envelope.requestId;
123
60
  var variant = envelope && envelope.variant;
124
61
  var message = revive(envelope && envelope.message);
125
62
  var url = URLS[variant];
126
- var t0 = Date.now();
127
- postPhase(requestId, variant, 'handleMessage-start', t0);
128
63
  if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
129
64
 
130
65
  var worker;
131
- try {
132
- var blob = await blobUrl(url);
133
- postPhase(requestId, variant, 'cdn-blob-ready', t0);
134
- worker = spawn(blob);
135
- postPhase(requestId, variant, 'inner-worker-spawned', t0);
136
- }
66
+ try { worker = spawn(await blobUrl(url)); }
137
67
  catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
138
68
 
139
69
  var done = false, ready = false, pending = message;
@@ -144,7 +74,6 @@ if (!window.__hinkalPageBoot) (function(){
144
74
  if (data && typeof data === 'object') {
145
75
  if (data.__hinkalWorkerReady) {
146
76
  ready = true;
147
- postPhase(requestId, variant, 'inner-worker-ready', t0);
148
77
  try { worker.postMessage(pending); pending = null; }
149
78
  catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
150
79
  return;
@@ -156,7 +85,6 @@ if (!window.__hinkalPageBoot) (function(){
156
85
  }
157
86
  }
158
87
  post({ requestId: requestId, type: 'RESULT', data: data });
159
- postPhase(requestId, variant, 'inner-worker-done', t0);
160
88
  finish();
161
89
  };
162
90
  worker.onerror = function(event){
@@ -167,4 +95,4 @@ if (!window.__hinkalPageBoot) (function(){
167
95
 
168
96
  post({ type: 'READY' });
169
97
  })();
170
- true;`,p=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${f}<\/script></body></html>`,m=c.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),h=()=>{let n=(0,s.useRef)(null),r=(0,s.useRef)({ready:!1,queue:[]}),a=(0,s.useCallback)((e,t,r)=>{let a;try{a=JSON.stringify({requestId:e,variant:t,message:r},i.bigIntReplacer)}catch(t){c.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:e,type:`ERROR`,error:`serialize failed: ${t?.message??t}`});return}n.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${a}); true;`)},[]);(0,s.useEffect)(()=>(e.RnCryptoBridgeFactory.bridge=new o.RnWebViewCryptoBridge,()=>{e.RnCryptoBridgeFactory.bridge=null}),[]),(0,s.useEffect)(()=>{let e=c.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let t={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};r.current.ready?a(t.requestId,t.variant,t.message):r.current.queue.push(t)});return()=>e.remove()},[a]),(0,s.useEffect)(()=>{let e=c.DeviceEventEmitter.addListener(`TO_WEBVIEW_CRYPTO`,e=>{let t;try{t=JSON.stringify(e,i.bigIntReplacer)}catch(e){c.DeviceEventEmitter.emit(`FROM_WEBVIEW_CRYPTO`,{type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}n.current?.injectJavaScript(`window.handleCryptoMessage && window.handleCryptoMessage(${t}); true;`)});return()=>e.remove()},[]);let h=(0,s.useCallback)(e=>{let n;try{n=i.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){c.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(n?.type===`READY`){r.current.ready=!0;let e=r.current.queue;r.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>a(e,t,n));return}if(n?.type===`TIMING`){t.logRnDeltaEvent(`webView.${n.variant}`,n.phase,{requestId:n.requestId,ms:n.ms});return}if(n?.channel===`crypto`){c.DeviceEventEmitter.emit(`FROM_WEBVIEW_CRYPTO`,n);return}c.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,n)},[a]);return(0,u.jsx)(c.View,{pointerEvents:`none`,style:m.hiddenHost,children:(0,u.jsx)(l.WebView,{ref:n,source:{html:p,baseUrl:d},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:h,onLoad:()=>n.current?.injectJavaScript(f)})})};module.exports=h;
98
+ true;`,u=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${l}<\/script></body></html>`,d=a.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),f=()=>{let e=(0,i.useRef)(null),t=(0,i.useRef)({ready:!1,queue:[]}),r=(0,i.useCallback)((t,r,i)=>{let o;try{o=JSON.stringify({requestId:t,variant:r,message:i},n.bigIntReplacer)}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:t,type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${o}); true;`)},[]);(0,i.useEffect)(()=>{let e=a.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let n={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};t.current.ready?r(n.requestId,n.variant,n.message):t.current.queue.push(n)});return()=>e.remove()},[r]);let f=(0,i.useCallback)(e=>{let i;try{i=n.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(i?.type===`READY`){t.current.ready=!0;let e=t.current.queue;t.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>r(e,t,n));return}a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,i)},[r]);return(0,s.jsx)(a.View,{pointerEvents:`none`,style:d.hiddenHost,children:(0,s.jsx)(o.WebView,{ref:e,source:{html:u,baseUrl:c},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:f,onLoad:()=>e.current?.injectJavaScript(l)})})};module.exports=f;