@gurge/sdk 0.3.23 → 0.3.25

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 (37) hide show
  1. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  2. package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +1 -3
  3. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +22 -30
  4. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
  5. package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +42 -26
  6. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  7. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +49 -38
  8. package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
  9. package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +25 -20
  10. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  11. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +65 -70
  12. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -1
  13. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +10 -21
  14. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  15. package/common/src/functions/snarkjs/generateZkProof.mjs +12 -23
  16. package/common/src/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
  17. package/common/src/functions/snarkjs/generateZkProofEnclave.mjs +11 -14
  18. package/common/src/functions/snarkjs/generateZkProofSelf.cjs +1 -1
  19. package/common/src/functions/snarkjs/generateZkProofSelf.mjs +14 -20
  20. package/common/src/functions/utils/hinkalTiming.utils.cjs +1 -1
  21. package/common/src/functions/utils/hinkalTiming.utils.d.ts +4 -2
  22. package/common/src/functions/utils/hinkalTiming.utils.mjs +13 -10
  23. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  24. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +82 -35
  25. package/common/src/webworker/package.json +1 -1
  26. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  27. package/common/src/webworker/performTaskWithWorker.mjs +14 -14
  28. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  29. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  30. package/package.json +1 -1
  31. package/react-native/HinkalWebViewWorker.cjs +16 -4
  32. package/react-native/HinkalWebViewWorker.mjs +69 -49
  33. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  34. package/react-native/bridge/HinkalRNWorker.d.ts +1 -0
  35. package/react-native/bridge/HinkalRNWorker.mjs +16 -11
  36. package/sdk/package.json.cjs +1 -1
  37. package/sdk/package.json.mjs +1 -1
@@ -1,91 +1,86 @@
1
- import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
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 i } 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";
1
+ import { chainIds as e, getOnchainChainId as ee } from "../../constants/chains.constants.mjs";
2
+ import { defaultSignatureData as te, zeroAddress as t } from "../../constants/protocol.constants.mjs";
3
+ import { poseidonFunction as ne } from "../../crypto/poseidon.mjs";
4
+ import { randomBigInt as n } from "../web3/etherFunctions.mjs";
5
+ import { UserKeys as re } from "../../data-structures/crypto-keys/keys.mjs";
6
+ import { getCurrentTimeInSeconds as r } from "../utils/time.utils.mjs";
7
+ import { ExternalActionId as i } from "../../types/external-action.types.mjs";
8
8
  import { Logger as ie } from "../../error-handling/logger.mjs";
9
- import { takeOffHighestBit as ae } from "../utils/bit.operations.mjs";
10
- import { buildOutCommitments as oe, calcAmountChanges as a, calcEncryptedOutputs as se, calcPublicSignalCount as o, calcStealthAddressStructure as s, createCallDataHash as c, getSlippageValues as l, getUtxoCircuitH0Coords as u, getUtxoCircuitInRandomization as ce, getZkProofVerifierName as le } from "./common.snarkjs.mjs";
11
- import { computeSignedMessageHashEvm as ue } from "./signedMessageHash.mjs";
12
- import { generateCircomData as de } from "./generateCircomData.mjs";
13
- import { AccountActions as fe } from "../../data-structures/AccountActions/AccountActions.mjs";
14
- import { createHinkalTiming as pe } from "../utils/hinkalTiming.utils.mjs";
15
- import { generateMainAndCommitmentZkProof as me } from "./generateMainAndCommitmentZkProof.mjs";
16
- import { getDataFromWorkers as d } from "./getMerkleTreeSiblingsAndRootHashes.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 a, calcAmountChanges as o, calcEncryptedOutputs as s, calcPublicSignalCount as c, calcStealthAddressStructure as l, createCallDataHash as se, 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";
15
+ import { generateMainAndCommitmentZkProof as d } from "./generateMainAndCommitmentZkProof.mjs";
16
+ import { getDataFromWorkers as me } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
17
17
  import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.mjs";
18
18
  //#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
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 = pe("constructZkProof"), k = le(m, h), A = a(m, h), j = m.map((e) => e[0].erc20TokenAddress), M = se(h), N = ee, P = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: F } = g.getSpendingKeyPair(), I = s(i.findCorrectRandomization(r(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", {
22
- verifierName: k,
19
+ var p = async (p, m, h, g, _, v, y, b, x, S = t, C = e.localhost, w = m.map(() => !1), T = void 0, E, D) => {
20
+ let he = ae("webView.getDataFromWorkers"), O = ue(m, h), k = o(m, h), A = m.map((e) => e[0].erc20TokenAddress), j = s(h), M = te, N = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: P } = g.getSpendingKeyPair(), F = l(re.findCorrectRandomization(n(31), N), N, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: I, inCommitmentSiblingSides: L, rootHashHinkal: R, inNullifiers: z } = await me(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
21
+ he.log("done", {
22
+ verifierName: O,
23
23
  chainId: C
24
24
  });
25
- let V = oe(h), H = r(31), U = te(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
26
- rootHashHinkal: z,
27
- spendingPublicKey: F,
28
- nullifyingPrivateKey: P,
29
- erc20TokenAddresses: j,
30
- amountChanges: A,
25
+ let B = a(h), V = n(31), H = ne(V), U = BigInt(h.length > 0 ? h[0][0].timeStamp : r()), W = {
26
+ rootHashHinkal: R,
27
+ spendingPublicKey: P,
28
+ nullifyingPrivateKey: N,
29
+ erc20TokenAddresses: A,
30
+ amountChanges: k,
31
31
  inAmounts: m.map((e) => e.map((e) => e.amount.toString())),
32
- inRandomizations: m.map((e) => e.map((e) => ce(e))),
32
+ inRandomizations: m.map((e) => e.map((e) => le(e))),
33
33
  inH0Ax: m.map((e) => e.map((e) => u(e)[0].toString())),
34
34
  inH0Ay: m.map((e) => e.map((e) => u(e)[1].toString())),
35
35
  isNewStyle: m.map((e) => e.map((e) => !!e.isNewStyle)),
36
36
  inTimeStamps: m.map((e) => e.map((e) => e.timeStamp)),
37
- inNullifiers: B,
38
- inCommitmentSiblings: L,
39
- inCommitmentSiblingSides: R,
37
+ inNullifiers: z,
38
+ inCommitmentSiblings: I,
39
+ inCommitmentSiblingSides: L,
40
40
  outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
41
- outTimeStamp: W,
41
+ outTimeStamp: U,
42
42
  outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
43
- outCommitments: V,
43
+ outCommitments: B,
44
44
  calldataHash: 0n,
45
- messageSeed: H,
46
- H0Ax: ae(I.extraRandomization),
47
- H0Ay: I.H0
48
- }, K = o(k, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = l(q);
49
- ie.log({ publicSignalCount: K });
50
- let Y = Array.isArray(y) ? y : [y], he = t(C), ge = D ? fe.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);
51
- O.log("encodeEmporiumMetadata", { externalActionId: _.toString() }), G.calldataHash = c(K, S, v, _, X, M, T, J, w, x, N, E);
52
- let Z = ue({
53
- rootHashHinkal: z,
54
- erc20TokenAddresses: j,
55
- amountChanges: A,
56
- outTimeStamp: W,
57
- inNullifiers: B,
58
- outCommitments: V,
59
- calldataHash: G.calldataHash,
60
- message: U,
61
- outH1Ay: I.H1,
62
- H0Ax: G.H0Ax,
63
- H0Ay: I.H0
45
+ messageSeed: V,
46
+ H0Ax: oe(F.extraRandomization),
47
+ H0Ay: F.H0
48
+ }, G = c(O, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments), K = o(m, h, !0), q = ce(K);
49
+ ie.log({ publicSignalCount: G });
50
+ let J = Array.isArray(y) ? y : [y], ge = ee(C), Y = D ? pe.getSignerAddressFromPrivateKey(ge, D) : void 0, X = _ === i.Emporium ? await f(C, v ?? t, D, J, H, Y) : await f(C, t, void 0, _ === 0n ? [] : J, H, t);
51
+ W.calldataHash = se(G, S, v, _, X, j, T, q, w, x, M, E);
52
+ let Z = de({
53
+ rootHashHinkal: R,
54
+ erc20TokenAddresses: A,
55
+ amountChanges: k,
56
+ outTimeStamp: U,
57
+ inNullifiers: z,
58
+ outCommitments: B,
59
+ calldataHash: W.calldataHash,
60
+ message: H,
61
+ outH1Ay: F.H1,
62
+ H0Ax: W.H0Ax,
63
+ H0Ay: F.H0
64
64
  }), { R8: Q, S: _e } = g.signEddsa(Z);
65
- G.eddsaSignature = [
65
+ W.eddsaSignature = [
66
66
  Q[0],
67
67
  Q[1],
68
68
  _e
69
- ], G.signedMessageHash = Z;
70
- let $ = k.startsWith("mainEVMCircuitMin0"), ve = {
71
- outTimeStamp: W,
72
- calldataHash: G.calldataHash,
73
- messageSeed: H
74
- }, { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, k, $ ? ve : G, b);
75
- O.log("generateMainAndCommitmentZkProof", {
76
- verifierName: k,
77
- generateProofRemotely: b
78
- });
79
- let xe = de(V, B, z, q, j, h, M, K, _, v, X, S, G.calldataHash, I, w, T, $ ? Number(W) : void 0, J, x, N, E), Se = {
80
- tokenNumber: m.length,
81
- nullifierAmount: m.length > 0 ? m[0].length : 0,
82
- outputAmount: h.length > 0 ? h[0].length : 0
83
- };
84
- return O.log("done"), {
69
+ ], W.signedMessageHash = Z;
70
+ let $ = O.startsWith("mainEVMCircuitMin0"), ve = {
71
+ outTimeStamp: U,
72
+ calldataHash: W.calldataHash,
73
+ messageSeed: V
74
+ }, { zkCallData: ye, commitmentValidationData: be } = await d(C, g, A, m, O, $ ? ve : W, b);
75
+ return {
85
76
  zkCallData: ye,
86
- circomData: xe,
87
- dimData: Se,
88
- encryptedOutputs: M,
77
+ circomData: fe(B, z, R, K, A, h, j, G, _, v, X, S, W.calldataHash, F, w, T, $ ? Number(U) : void 0, q, x, M, E),
78
+ dimData: {
79
+ tokenNumber: m.length,
80
+ nullifierAmount: m.length > 0 ? m[0].length : 0,
81
+ outputAmount: h.length > 0 ? h[0].length : 0
82
+ },
83
+ encryptedOutputs: j,
89
84
  commitmentValidationData: be
90
85
  };
91
86
  };
@@ -1 +1 @@
1
- const e=require(`../utils/hinkalTiming.utils.cjs`),t=require(`../pre-transaction/buildCommitmentValidationData.cjs`);require(`../pre-transaction/index.cjs`);const n=require(`./generateZkProof.cjs`);var r=async(r,i,a,o,s,c,l)=>{let u=e.createHinkalTiming(`generateMainAndCommitmentZkProof`),d=await t.buildCommitmentValidationData(r,i,a,o);u.log(`buildCommitmentValidationData`,{mainVerifierName:s,hasCommitmentProof:!!d});let f=[s],p=[c];d&&(f.push(d.verifierName),p.push(d.commitmentInput));let m=await n.generateZkProof(r,f,p,l);u.log(`generateZkProof`,{verifierNames:f,generateProofRemotely:l});let{zkCallData:h,publicSignals:g}=m[0];return{zkCallData:h,publicSignals:g,commitmentValidationData:t.buildCommitmentValidationDataFromProof(d,m[1])}};exports.generateMainAndCommitmentZkProof=r;
1
+ const e=require(`../pre-transaction/buildCommitmentValidationData.cjs`);require(`../pre-transaction/index.cjs`);const t=require(`./generateZkProof.cjs`);var n=async(n,r,i,a,o,s,c)=>{let l=await e.buildCommitmentValidationData(n,r,i,a),u=[o],d=[s];l&&(u.push(l.verifierName),d.push(l.commitmentInput));let f=await t.generateZkProof(n,u,d,c),{zkCallData:p,publicSignals:m}=f[0];return{zkCallData:p,publicSignals:m,commitmentValidationData:e.buildCommitmentValidationDataFromProof(l,f[1])}};exports.generateMainAndCommitmentZkProof=n;
@@ -1,27 +1,16 @@
1
- import { createHinkalTiming as e } from "../utils/hinkalTiming.utils.mjs";
2
- import { buildCommitmentValidationData as t, buildCommitmentValidationDataFromProof as n } from "../pre-transaction/buildCommitmentValidationData.mjs";
1
+ import { buildCommitmentValidationData as e, buildCommitmentValidationDataFromProof as t } from "../pre-transaction/buildCommitmentValidationData.mjs";
3
2
  import "../pre-transaction/index.mjs";
4
- import { generateZkProof as r } from "./generateZkProof.mjs";
3
+ import { generateZkProof as n } from "./generateZkProof.mjs";
5
4
  //#region libs/shared/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.ts
6
- var i = async (i, a, o, s, c, l, u) => {
7
- let d = e("generateMainAndCommitmentZkProof"), f = await t(i, a, o, s);
8
- d.log("buildCommitmentValidationData", {
9
- mainVerifierName: c,
10
- hasCommitmentProof: !!f
11
- });
12
- let p = [c], m = [l];
13
- f && (p.push(f.verifierName), m.push(f.commitmentInput));
14
- let h = await r(i, p, m, u);
15
- d.log("generateZkProof", {
16
- verifierNames: p,
17
- generateProofRemotely: u
18
- });
19
- let { zkCallData: g, publicSignals: _ } = h[0];
5
+ var r = async (r, i, a, o, s, c, l) => {
6
+ let u = await e(r, i, a, o), d = [s], f = [c];
7
+ u && (d.push(u.verifierName), f.push(u.commitmentInput));
8
+ let p = await n(r, d, f, l), { zkCallData: m, publicSignals: h } = p[0];
20
9
  return {
21
- zkCallData: g,
22
- publicSignals: _,
23
- commitmentValidationData: n(f, h[1])
10
+ zkCallData: m,
11
+ publicSignals: h,
12
+ commitmentValidationData: t(u, p[1])
24
13
  };
25
14
  };
26
15
  //#endregion
27
- export { i as generateMainAndCommitmentZkProof };
16
+ export { r as generateMainAndCommitmentZkProof };
@@ -1 +1 @@
1
- const e=require(`../utils/customEnclaveFunctionsRegister.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../utils/hinkalTiming.utils.cjs`),r=require(`./getZKFiles.cjs`),i=require(`./generateZkProofEnclave.cjs`),a=require(`./generateZkProofSelf.cjs`);var o=async(o,s,c,l)=>{let u=n.createHinkalTiming(`generateZkProof`);if(u.log(`start`,{remotely:!!l,verifierNames:s}),l)try{let t=e.getCustomProofGenerator();if(t){let e=await t(c,s.map(e=>r.getWASMFile(e,o)),s.map(e=>r.getZKeyFile(e,o)));return u.log(`customProofGenerator`,{verifierNames:s}),e.map(({zkCallData:e,publicSignals:t})=>({zkCallData:e,publicSignals:t}))}let n=await i.generateZkProofEnclave(o,s,c);return u.log(`enclave`,{verifierNames:s}),n}catch(e){t.Logger.error(`enclave proof error`,e),u.log(`enclave-failed-fallback-self`)}let d=await Promise.all(s.map((e,t)=>a.generateZkProofSelf(o,e,c[t])));return u.log(`self`,{verifierNames:s}),d};exports.generateZkProof=o;
1
+ const e=require(`../utils/customEnclaveFunctionsRegister.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`./getZKFiles.cjs`),r=require(`./generateZkProofEnclave.cjs`),i=require(`./generateZkProofSelf.cjs`);var a=async(a,o,s,c)=>{if(c)try{let t=e.getCustomProofGenerator();return t?(await t(s,o.map(e=>n.getWASMFile(e,a)),o.map(e=>n.getZKeyFile(e,a)))).map(({zkCallData:e,publicSignals:t})=>({zkCallData:e,publicSignals:t})):await r.generateZkProofEnclave(a,o,s)}catch(e){t.Logger.error(`enclave proof error`,e)}return Promise.all(o.map((e,t)=>i.generateZkProofSelf(a,e,s[t])))};exports.generateZkProof=a;
@@ -1,31 +1,20 @@
1
1
  import { getCustomProofGenerator as e } from "../utils/customEnclaveFunctionsRegister.mjs";
2
2
  import { Logger as t } from "../../error-handling/logger.mjs";
3
- import { createHinkalTiming as n } from "../utils/hinkalTiming.utils.mjs";
4
- import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
5
- import { generateZkProofEnclave as a } from "./generateZkProofEnclave.mjs";
6
- import { generateZkProofSelf as o } from "./generateZkProofSelf.mjs";
3
+ import { getWASMFile as n, getZKeyFile as r } from "./getZKFiles.mjs";
4
+ import { generateZkProofEnclave as i } from "./generateZkProofEnclave.mjs";
5
+ import { generateZkProofSelf as a } from "./generateZkProofSelf.mjs";
7
6
  //#region libs/shared/common/src/functions/snarkjs/generateZkProof.ts
8
- var s = async (s, c, l, u) => {
9
- let d = n("generateZkProof");
10
- if (d.log("start", {
11
- remotely: !!u,
12
- verifierNames: c
13
- }), u) try {
7
+ var o = async (o, s, c, l) => {
8
+ if (l) try {
14
9
  let t = e();
15
- if (t) {
16
- let e = await t(l, c.map((e) => r(e, s)), c.map((e) => i(e, s)));
17
- return d.log("customProofGenerator", { verifierNames: c }), e.map(({ zkCallData: e, publicSignals: t }) => ({
18
- zkCallData: e,
19
- publicSignals: t
20
- }));
21
- }
22
- let n = await a(s, c, l);
23
- return d.log("enclave", { verifierNames: c }), n;
10
+ return t ? (await t(c, s.map((e) => n(e, o)), s.map((e) => r(e, o)))).map(({ zkCallData: e, publicSignals: t }) => ({
11
+ zkCallData: e,
12
+ publicSignals: t
13
+ })) : await i(o, s, c);
24
14
  } catch (e) {
25
- t.error("enclave proof error", e), d.log("enclave-failed-fallback-self");
15
+ t.error("enclave proof error", e);
26
16
  }
27
- let f = await Promise.all(c.map((e, t) => o(s, e, l[t])));
28
- return d.log("self", { verifierNames: c }), f;
17
+ return Promise.all(s.map((e, t) => a(o, e, c[t])));
29
18
  };
30
19
  //#endregion
31
- export { s as generateZkProof };
20
+ export { o as generateZkProof };
@@ -1 +1 @@
1
- const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(`../utils/hinkalTiming.utils.cjs`),i=require(`./getZKFiles.cjs`);var a=e=>{if(e.startsWith(`http`)){let t=e.split(`/`).at(-1);if(!t)throw Error(`invalid verifierName`);return t}return e},o=async(o,s,c)=>{let l=r.createHinkalTiming(`generateZkProofEnclave`),u=s.map(e=>a(i.getWASMFile(e,o))),d=s.map(e=>a(i.getZKeyFile(e,o))),{keyCiphertext:f,inputCiphertext:p}=await n.makeEnclaveHandshakeAndEncryptInput(c);l.log(`handshake+encrypt`,{verifierNames:s});let m={circuit_wasms:u,circuit_zkeys:d,inputs:p,key:f},h=await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,m);return l.log(`enclave-http`,{verifierNames:s}),h.map(({zk_calldata:e,public_signals:t})=>({zkCallData:e,publicSignals:t}))};exports.generateZkProofEnclave=o;
1
+ const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(`./getZKFiles.cjs`);var i=e=>{if(e.startsWith(`http`)){let t=e.split(`/`).at(-1);if(!t)throw Error(`invalid verifierName`);return t}return e},a=async(a,o,s)=>{let c=o.map(e=>i(r.getWASMFile(e,a))),l=o.map(e=>i(r.getZKeyFile(e,a))),{keyCiphertext:u,inputCiphertext:d}=await n.makeEnclaveHandshakeAndEncryptInput(s),f={circuit_wasms:c,circuit_zkeys:l,inputs:d,key:u};return(await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,f)).map(({zk_calldata:e,public_signals:t})=>({zkCallData:e,publicSignals:t}))};exports.generateZkProofEnclave=a;
@@ -2,29 +2,26 @@ import { ENCLAVE_URL as e } from "./constant.mjs";
2
2
  import { httpClient as t } from "../../data-structures/http/HttpClient.mjs";
3
3
  import "../../data-structures/http/index.mjs";
4
4
  import { makeEnclaveHandshakeAndEncryptInput as n } from "../utils/encryptInputForEnclave.mjs";
5
- import { createHinkalTiming as r } from "../utils/hinkalTiming.utils.mjs";
6
- import { getWASMFile as i, getZKeyFile as a } from "./getZKFiles.mjs";
5
+ import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
7
6
  //#region libs/shared/common/src/functions/snarkjs/generateZkProofEnclave.ts
8
- var o = (e) => {
7
+ var a = (e) => {
9
8
  if (e.startsWith("http")) {
10
9
  let t = e.split("/").at(-1);
11
10
  if (!t) throw Error("invalid verifierName");
12
11
  return t;
13
12
  }
14
13
  return e;
15
- }, s = async (s, c, l) => {
16
- let u = r("generateZkProofEnclave"), d = c.map((e) => o(i(e, s))), f = c.map((e) => o(a(e, s))), { keyCiphertext: p, inputCiphertext: m } = await n(l);
17
- u.log("handshake+encrypt", { verifierNames: c });
18
- let h = {
19
- circuit_wasms: d,
20
- circuit_zkeys: f,
21
- inputs: m,
22
- key: p
23
- }, g = await t.post(`${e}/generate-proofs`, h);
24
- return u.log("enclave-http", { verifierNames: c }), g.map(({ zk_calldata: e, public_signals: t }) => ({
14
+ }, o = async (o, s, c) => {
15
+ let l = s.map((e) => a(r(e, o))), u = s.map((e) => a(i(e, o))), { keyCiphertext: d, inputCiphertext: f } = await n(c), p = {
16
+ circuit_wasms: l,
17
+ circuit_zkeys: u,
18
+ inputs: f,
19
+ key: d
20
+ };
21
+ return (await t.post(`${e}/generate-proofs`, p)).map(({ zk_calldata: e, public_signals: t }) => ({
25
22
  zkCallData: e,
26
23
  publicSignals: t
27
24
  }));
28
25
  };
29
26
  //#endregion
30
- export { s as generateZkProofEnclave };
27
+ export { o as generateZkProofEnclave };
@@ -1 +1 @@
1
- const e=require(`../../webworker/worker.registry.cjs`),t=require(`../utils/hinkalTiming.utils.cjs`),n=require(`../../webworker/performTaskWithWorker.cjs`),r=require(`./getZKFiles.cjs`),i=require(`../../webworker/snarkjsWorker/snarkjsWorker.types.cjs`);var a=async(a,o,s)=>{let c=t.createHinkalTiming(`generateZkProofSelf:${o}`),l=r.getWASMFile(o,a),u=r.getZKeyFile(o,a);c.log(`start`,{chainId:a,wasmFilePath:l});let{publicSignals:d,zkCallData:f}=await n.performTaskWithWorker({type:e.WorkerVariant.SnarkJS,payload:{type:i.SnarkJSWorkerActionType.FULL_PROVE,data:{input:s,chainId:a,wasmFilePath:l,zKeyFilePath:u}}});return c.log(`worker-done`),{zkCallData:f,publicSignals:d}};exports.generateZkProofSelf=a;
1
+ const e=require(`../../webworker/worker.registry.cjs`),t=require(`../../webworker/performTaskWithWorker.cjs`),n=require(`./getZKFiles.cjs`),r=require(`../../webworker/snarkjsWorker/snarkjsWorker.types.cjs`);var i=async(i,a,o)=>{let s=n.getWASMFile(a,i),c=n.getZKeyFile(a,i),{publicSignals:l,zkCallData:u}=await t.performTaskWithWorker({type:e.WorkerVariant.SnarkJS,payload:{type:r.SnarkJSWorkerActionType.FULL_PROVE,data:{input:o,chainId:i,wasmFilePath:s,zKeyFilePath:c}}});return{zkCallData:u,publicSignals:l}};exports.generateZkProofSelf=i;
@@ -1,31 +1,25 @@
1
1
  import { WorkerVariant as e } from "../../webworker/worker.registry.mjs";
2
- import { createHinkalTiming as t } from "../utils/hinkalTiming.utils.mjs";
3
- import { performTaskWithWorker as n } from "../../webworker/performTaskWithWorker.mjs";
4
- import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
5
- import { SnarkJSWorkerActionType as a } from "../../webworker/snarkjsWorker/snarkjsWorker.types.mjs";
2
+ import { performTaskWithWorker as t } from "../../webworker/performTaskWithWorker.mjs";
3
+ import { getWASMFile as n, getZKeyFile as r } from "./getZKFiles.mjs";
4
+ import { SnarkJSWorkerActionType as i } from "../../webworker/snarkjsWorker/snarkjsWorker.types.mjs";
6
5
  //#region libs/shared/common/src/functions/snarkjs/generateZkProofSelf.ts
7
- var o = async (o, s, c) => {
8
- let l = t(`generateZkProofSelf:${s}`), u = r(s, o), d = i(s, o);
9
- l.log("start", {
10
- chainId: o,
11
- wasmFilePath: u
12
- });
13
- let { publicSignals: f, zkCallData: p } = await n({
6
+ var a = async (a, o, s) => {
7
+ let c = n(o, a), l = r(o, a), { publicSignals: u, zkCallData: d } = await t({
14
8
  type: e.SnarkJS,
15
9
  payload: {
16
- type: a.FULL_PROVE,
10
+ type: i.FULL_PROVE,
17
11
  data: {
18
- input: c,
19
- chainId: o,
20
- wasmFilePath: u,
21
- zKeyFilePath: d
12
+ input: s,
13
+ chainId: a,
14
+ wasmFilePath: c,
15
+ zKeyFilePath: l
22
16
  }
23
17
  }
24
18
  });
25
- return l.log("worker-done"), {
26
- zkCallData: p,
27
- publicSignals: f
19
+ return {
20
+ zkCallData: d,
21
+ publicSignals: u
28
22
  };
29
23
  };
30
24
  //#endregion
31
- export { o as generateZkProofSelf };
25
+ export { a as generateZkProofSelf };
@@ -1 +1 @@
1
- var e=`[HinkalTiming]`,t=(t,n,r,i)=>{let a=Date.now(),o=a-r.last,s=a-r.start;r.last=a;let c=i?` ${JSON.stringify(i)}`:``;console.log(`${e} [${t}] ${n} +${o}ms (total ${s}ms)${c}`)},n=e=>{let n={start:Date.now(),last:Date.now()};return{marks:n,log:(r,i)=>t(e,r,n,i)}};exports.createHinkalTiming=n;
1
+ var e=`[HinkalRnDelta]`,t=e=>`at=${e}`,n=(n,r,i,a)=>{let o=Date.now(),s=o-i.last,c=o-i.start;i.last=o;let l=a?` ${JSON.stringify(a)}`:``;console.log(`${e} ${t(o)} [${n}] ${r} +${s}ms (total ${c}ms)${l}`)},r=e=>{let t={start:Date.now(),last:Date.now()};return{marks:t,log:(r,i)=>n(e,r,t,i)}},i=(n,r,i)=>{let a=Date.now(),o=i?` ${JSON.stringify(i)}`:``;console.log(`${e} ${t(a)} [${n}] ${r}${o}`)};exports.createRnDeltaTiming=r,exports.logRnDeltaEvent=i;
@@ -2,8 +2,10 @@ export type HinkalTimingMarks = {
2
2
  start: number;
3
3
  last: number;
4
4
  };
5
- export declare const logHinkalTiming: (scope: string, phase: string, marks: HinkalTimingMarks, extra?: Record<string, unknown>) => void;
6
- export declare const createHinkalTiming: (scope: string) => {
5
+ export declare const logRnDelta: (scope: string, phase: string, marks: HinkalTimingMarks, extra?: Record<string, unknown>) => void;
6
+ export declare const createRnDeltaTiming: (scope: string) => {
7
7
  marks: HinkalTimingMarks;
8
8
  log: (phase: string, extra?: Record<string, unknown>) => void;
9
9
  };
10
+ /** One-off event (e.g. WebView sub-phase with its own clock). */
11
+ export declare const logRnDeltaEvent: (scope: string, phase: string, extra?: Record<string, unknown>) => void;
@@ -1,18 +1,21 @@
1
1
  //#region libs/shared/common/src/functions/utils/hinkalTiming.utils.ts
2
- var e = "[HinkalTiming]", t = (t, n, r, i) => {
3
- let a = Date.now(), o = a - r.last, s = a - r.start;
4
- r.last = a;
5
- let c = i ? ` ${JSON.stringify(i)}` : "";
6
- console.log(`${e} [${t}] ${n} +${o}ms (total ${s}ms)${c}`);
7
- }, n = (e) => {
8
- let n = {
2
+ var e = "[HinkalRnDelta]", t = (e) => `at=${e}`, n = (n, r, i, a) => {
3
+ let o = Date.now(), s = o - i.last, c = o - i.start;
4
+ i.last = o;
5
+ let l = a ? ` ${JSON.stringify(a)}` : "";
6
+ console.log(`${e} ${t(o)} [${n}] ${r} +${s}ms (total ${c}ms)${l}`);
7
+ }, r = (e) => {
8
+ let t = {
9
9
  start: Date.now(),
10
10
  last: Date.now()
11
11
  };
12
12
  return {
13
- marks: n,
14
- log: (r, i) => t(e, r, n, i)
13
+ marks: t,
14
+ log: (r, i) => n(e, r, t, i)
15
15
  };
16
+ }, i = (n, r, i) => {
17
+ let a = Date.now(), o = i ? ` ${JSON.stringify(i)}` : "";
18
+ console.log(`${e} ${t(a)} [${n}] ${r}${o}`);
16
19
  };
17
20
  //#endregion
18
- export { n as createHinkalTiming };
21
+ export { r as createRnDeltaTiming, i as logRnDeltaEvent };
@@ -1 +1 @@
1
- require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/chains.constants.cjs`),t=require(`../../utils/caseInsensitive.utils.cjs`),n=require(`../../../data-structures/utxo/Utxo.cjs`),r=require(`../../utils/upToDateState.cjs`),i=require(`../../utils/cacheFunctions.cjs`),a=require(`../../utils/encodeTokenWithId.cjs`),o=require(`../../utils/solanaMint.utils.cjs`),s=require(`./getInputUtxosEnclave.cjs`),c=require(`../../utils/addresses.cjs`),l=require(`../../../API/scheduled-transactions-calls.cjs`),u=require(`../../utils/tron.utils.cjs`);var d=new(require(`async-mutex`)).Mutex,f=async(e,t)=>e.allowParallelBalanceLocalDecryption?t():d.runExclusive(t),p=async(e,t,n,a,o,s,c,l,u)=>f(e,async()=>{u+=1;let d=s.slice(u),{lastOutput:f,additionalEncryptedOutputs:p}=await e.utxoUtils.batchProcess(d,l,t,n),m=[...c,...p];return await r.checkAddressNotUpdated(e,a),i.setHinkalCache({lastOutput:f,encryptedOutputs:m},e,n,o),await e.utxoUtils.buildBatchProcess(m,t,n)}),m=async(e,t,n,r)=>{let{utxos:a,encryptedOutputs:o,lastOutput:c}=await s.getInputUtxosEnclave(e,n,t);return i.setHinkalCache({encryptedOutputs:o,lastOutput:c},e,n,r),a},h=async(e,t,n,r,i,a,o,s,c)=>{try{return await m(e,t,n,i)}catch{return p(e,t,n,r,i,a,o,s,c)}},g=e=>{if(Array.isArray(e))return e;if(e!==void 0)return[e]},_=async(e,t,n)=>await e.utxoUtils.batchFilterUtxosWithNullifier(t,n),v=(e,t,r,i,a,o,s,c)=>{for(e.sort((e,t)=>e.amount<=t.amount?1:-1);e.length<t||e.length>t&&e.length<6;)if(e.push(new n.Utxo({amount:0n,erc20TokenAddress:o,mintAddress:c,nullifyingKey:i,spendingPublicKey:a,isNewStyle:!0})),r)for(;e.length>6;)e.splice(e.length-1)},y=async({hinkal:e,chainId:t,passedShieldedPublicKey:n=void 0,ethAddress:a=void 0,resetCacheBefore:o=!1,allowRemoteDecryption:s=!1,useBlockedUtxos:c=!1})=>{let l=a??await e.getEthereumAddress(),u=n??e.userKeys.getShieldedPublicKey(),{userKeys:d}=e,f=e.encryptedOutputsByChain[t],m=e.nullifiersByChain[t],g=Array.from(f);o&&i.resetCache(e,t,u);let{encryptedOutputs:v,lastOutput:y}=i.getHinkalCache(e,t,u);await r.checkAddressNotUpdated(e,l);let b=y!==``,x=g.findIndex(e=>e.value===y),S=x>-1,C=!b&&x===-1,w=e.areMerkleTreeUpdatesDisabled(),T=!w&&(S||!s&&C),E=!w&&s&&C,D=!T&&!E,O=[];T?O=await p(e,d,t,l,u,g,v,y,x):E?O=await h(e,d,t,l,u,g,v,y,x):D&&(O=await e.utxoUtils.buildBatchProcess(v,d,t)),await r.checkAddressNotUpdated(e,l);let k=await _(e,O,m);return{inputUtxos:c?k.filter(e=>e.isBlocked):k.filter(e=>!e.isBlocked)}},b=async({hinkal:t,chainId:n,passedShieldedPublicKey:r=void 0,ethAddress:i=void 0,resetCacheBefore:a=!1,allowRemoteDecryption:o=!1})=>{let s=i??await t.getEthereumAddressByChain(n),d=c.hashEthereumAddress(e.isTronLike(n)?u.addressToHexFormat(s):s),{inputUtxos:f}=await y({hinkal:t,chainId:n,passedShieldedPublicKey:r,ethAddress:s,resetCacheBefore:a,allowRemoteDecryption:o,useBlockedUtxos:!0});if(!f.length)return{inputUtxos:[]};let{indexes:p}=await l.getScheduledTransactionsNullifierIndexes({hashedEthereumAddress:d,nullifiers:f.map(e=>e.getNullifier())});return{inputUtxos:p.map(e=>f[e]).filter(e=>!!e)}},x=async({hinkal:n,tokenWithId:r,minInput:i=2,sliceIfMore6:s=!0,chainId:c,passedShieldedPrivateKey:l=void 0,passedShieldedPublicKey:u=void 0,ethAddress:d=void 0,resetCacheBefore:f=!1,ensuredTokensWithId:p,allowRemoteDecryption:m=!1,useBlockedUtxos:h=!1})=>{let _=l??n.userKeys.getShieldedPrivateKey(),x=n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,{inputUtxos:S}=h?await b({hinkal:n,chainId:c,ethAddress:d,passedShieldedPrivateKey:l,resetCacheBefore:f,allowRemoteDecryption:m}):await y({hinkal:n,tokenWithId:r,minInput:i,sliceIfMore6:s,chainId:c,passedShieldedPrivateKey:l,passedShieldedPublicKey:u,ethAddress:d,resetCacheBefore:f,allowRemoteDecryption:m}),C=g(r),w=new Map;S.forEach(e=>{let n=e.getTokenAddress(c);if(C&&!C.some(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,n)))return;let r=a.encodeTokenWithId(c,{erc20TokenAddress:n,tokenId:0}),i=w.get(r)??[];w.set(r,[...i,e])}),p?.forEach(e=>{let t=a.encodeTokenWithId(c,{erc20TokenAddress:e.erc20TokenAddress,tokenId:0});w.set(t,w.get(t)??[])});for(let[t,n]of w){let r=t.split(`-`)[0],a=Number(t.split(`-`)[1]),l=e.isSolanaLike(c),u=l?r:void 0;v(n,i,s,_,x,l?o.formatMintAddress(r).compressedAddress.toLowerCase():r.toLowerCase(),a,u)}return w};exports.attemptGetInputUtxosRemotely=h,exports.getInputUtxoAndBalance=y,exports.getInputUtxoAndBalanceOfStuckUtxos=b,exports.getInputUtxoAndBalancePerToken=x,exports.getInputUtxosRemotely=m;
1
+ require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/chains.constants.cjs`),t=require(`../../utils/caseInsensitive.utils.cjs`),n=require(`../../../data-structures/utxo/Utxo.cjs`),r=require(`../../utils/upToDateState.cjs`),i=require(`../../utils/cacheFunctions.cjs`),a=require(`../../utils/encodeTokenWithId.cjs`),o=require(`../../utils/solanaMint.utils.cjs`),s=require(`./getInputUtxosEnclave.cjs`),c=require(`../../utils/addresses.cjs`),l=require(`../../../API/scheduled-transactions-calls.cjs`),u=require(`../../utils/tron.utils.cjs`),d=require(`../../utils/hinkalTiming.utils.cjs`);var f=new(require(`async-mutex`)).Mutex,p=async(e,t)=>{if(e.allowParallelBalanceLocalDecryption)return t();let n=d.createRnDeltaTiming(`utxoPrep.mutex`);return f.isLocked()&&n.log(`waiting-for-lock`),f.runExclusive(async()=>{n.log(`lock-acquired`);try{return await t()}finally{n.log(`lock-released`)}})},m=async(e,t,n,a,o,s,c,l,u)=>p(e,async()=>{let f=d.createRnDeltaTiming(`utxoPrep.decrypt`);u+=1;let p=s.slice(u);f.log(`batchProcess-start`,{outputsSlice:p.length,cached:c.length});let{lastOutput:m,additionalEncryptedOutputs:h}=await e.utxoUtils.batchProcess(p,l,t,n);f.log(`batchProcess-done`,{additionalEncryptedOutputs:h.length});let g=[...c,...h],_=d.createRnDeltaTiming(`wallet.checkAddress`);await r.checkAddressNotUpdated(e,a),_.log(`during-decrypt`),i.setHinkalCache({lastOutput:m,encryptedOutputs:g},e,n,o),f.log(`cache-write`,{encryptedOutputs:g.length});let v=await e.utxoUtils.buildBatchProcess(g,t,n);return f.log(`buildBatchProcess-done`,{utxoCount:v.length}),v}),h=async(e,t,n,r)=>{let{utxos:a,encryptedOutputs:o,lastOutput:c}=await s.getInputUtxosEnclave(e,n,t);return i.setHinkalCache({encryptedOutputs:o,lastOutput:c},e,n,r),a},g=async(e,t,n,r,i,a,o,s,c)=>{try{return await h(e,t,n,i)}catch{return m(e,t,n,r,i,a,o,s,c)}},_=e=>{if(Array.isArray(e))return e;if(e!==void 0)return[e]},v=async(e,t,n)=>await e.utxoUtils.batchFilterUtxosWithNullifier(t,n),y=(e,t,r,i,a,o,s,c)=>{for(e.sort((e,t)=>e.amount<=t.amount?1:-1);e.length<t||e.length>t&&e.length<6;)if(e.push(new n.Utxo({amount:0n,erc20TokenAddress:o,mintAddress:c,nullifyingKey:i,spendingPublicKey:a,isNewStyle:!0})),r)for(;e.length>6;)e.splice(e.length-1)},b=async({hinkal:e,chainId:t,passedShieldedPublicKey:n=void 0,ethAddress:a=void 0,resetCacheBefore:o=!1,allowRemoteDecryption:s=!1,useBlockedUtxos:c=!1})=>{let l=d.createRnDeltaTiming(`utxoPrep`);l.log(`start`);let u=a;u?l.log(`wallet.getEthereumAddress-skipped`,{ethAddressPassed:!0}):(u=await e.getEthereumAddress(),l.log(`wallet.getEthereumAddress`));let f=n??e.userKeys.getShieldedPublicKey(),{userKeys:p}=e,h=e.encryptedOutputsByChain[t],_=e.nullifiersByChain[t],y=Array.from(h);o&&i.resetCache(e,t,f);let{encryptedOutputs:b,lastOutput:x}=i.getHinkalCache(e,t,f);l.log(`cache.read`,{cachedEncryptedOutputs:b.length});let S=d.createRnDeltaTiming(`wallet.checkAddress`);await r.checkAddressNotUpdated(e,u),S.log(`before-decrypt`);let C=x!==``,w=y.findIndex(e=>e.value===x);l.log(`findLastOutputIndex`,{hinkalOutputs:y.length,lastOutputIndex:w});let T=w>-1,E=!C&&w===-1,D=e.areMerkleTreeUpdatesDisabled(),O=!D&&(T||!s&&E),k=!D&&s&&E,A=!O&&!k;l.log(`branch`,{decryptLocally:O,decryptRemotely:k,useCache:A,outputsSlice:w>-1?y.length-(w+1):0});let j=[];O?(j=await m(e,p,t,u,f,y,b,x,w),l.log(`decryptLocally-done`,{utxoCount:j.length})):k?(j=await g(e,p,t,u,f,y,b,x,w),l.log(`decryptRemotely-done`,{utxoCount:j.length})):A&&(j=await e.utxoUtils.buildBatchProcess(b,p,t),l.log(`useCache-buildBatchProcess-done`,{utxoCount:j.length}));let M=d.createRnDeltaTiming(`wallet.checkAddress`);await r.checkAddressNotUpdated(e,u),M.log(`after-decrypt`);let N=await v(e,j,_);l.log(`filterSpentUtxos`,{allUtxos:j.length,inputUtxos:N.length});let P=c?N.filter(e=>e.isBlocked):N.filter(e=>!e.isBlocked);return l.log(`done`,{inputUtxos:P.length}),{inputUtxos:P}},x=async({hinkal:t,chainId:n,passedShieldedPublicKey:r=void 0,ethAddress:i=void 0,resetCacheBefore:a=!1,allowRemoteDecryption:o=!1})=>{let s=i??await t.getEthereumAddressByChain(n),d=c.hashEthereumAddress(e.isTronLike(n)?u.addressToHexFormat(s):s),{inputUtxos:f}=await b({hinkal:t,chainId:n,passedShieldedPublicKey:r,ethAddress:s,resetCacheBefore:a,allowRemoteDecryption:o,useBlockedUtxos:!0});if(!f.length)return{inputUtxos:[]};let{indexes:p}=await l.getScheduledTransactionsNullifierIndexes({hashedEthereumAddress:d,nullifiers:f.map(e=>e.getNullifier())});return{inputUtxos:p.map(e=>f[e]).filter(e=>!!e)}},S=async({hinkal:n,tokenWithId:r,minInput:i=2,sliceIfMore6:s=!0,chainId:c,passedShieldedPrivateKey:l=void 0,passedShieldedPublicKey:u=void 0,ethAddress:d=void 0,resetCacheBefore:f=!1,ensuredTokensWithId:p,allowRemoteDecryption:m=!1,useBlockedUtxos:h=!1})=>{let g=l??n.userKeys.getShieldedPrivateKey(),v=n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,{inputUtxos:S}=h?await x({hinkal:n,chainId:c,ethAddress:d,passedShieldedPrivateKey:l,resetCacheBefore:f,allowRemoteDecryption:m}):await b({hinkal:n,tokenWithId:r,minInput:i,sliceIfMore6:s,chainId:c,passedShieldedPrivateKey:l,passedShieldedPublicKey:u,ethAddress:d,resetCacheBefore:f,allowRemoteDecryption:m}),C=_(r),w=new Map;S.forEach(e=>{let n=e.getTokenAddress(c);if(C&&!C.some(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,n)))return;let r=a.encodeTokenWithId(c,{erc20TokenAddress:n,tokenId:0}),i=w.get(r)??[];w.set(r,[...i,e])}),p?.forEach(e=>{let t=a.encodeTokenWithId(c,{erc20TokenAddress:e.erc20TokenAddress,tokenId:0});w.set(t,w.get(t)??[])});for(let[t,n]of w){let r=t.split(`-`)[0],a=Number(t.split(`-`)[1]),l=e.isSolanaLike(c),u=l?r:void 0;y(n,i,s,g,v,l?o.formatMintAddress(r).compressedAddress.toLowerCase():r.toLowerCase(),a,u)}return w};exports.attemptGetInputUtxosRemotely=g,exports.getInputUtxoAndBalance=b,exports.getInputUtxoAndBalanceOfStuckUtxos=x,exports.getInputUtxoAndBalancePerToken=S,exports.getInputUtxosRemotely=h;