@gurge/sdk 0.3.21 → 0.3.22

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.
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/utils/hinkalTiming.utils.cjs`);require(`../../functions/pre-transaction/index.cjs`);const m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},x=async(i,c,l,x,S,C,w,T)=>{let E=s.validateAndGetChainId(c),D=p.createHinkalTiming(`withdraw:chain-${E}`);D.log(`start`,{isRelayerOff:S});let O=e.isTronLike(E),k=o.addressToHexFormat(await i.getEthereumAddressByChain(E)),A=c.map(e=>e.erc20TokenAddress),j=await u.modifyVolatileTokenAmountChanges(E,c,l),M=c[0];if(!M)throw Error(`Deposit Action: No Token Found`);let N;if(!S){let e=w??await f.getFeeStructure(E,C,A,a.ExternalActionId.Transact);N=await m.calculateModifiedFeeStructure(E,M,-j[0],e),await y.mergeWithFeeStructure(E,A,j,N)}D.log(`feeStructure`);let P={externalActionId:0n,externalAddress:o.addressToHexFormat(x),externalActionMetadata:`0x00`},[F,{inputUtxosArray:I,outputUtxosArray:L}]=await Promise.all([i.getRandomRelay(E,!0),b(i,E,A,j)]);if(D.log(`relay+inputOutputUtxos`),!S&&!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);D.log(`constructZkProof-start`);let{zkCallData:R,circomData:z,dimData:B,commitmentValidationData:V}=await h.constructZkProof(i.merkleTreeHinkalByChain[E],I,L,i.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,i.generateProofRemotely,N??n.zeroFeeStructure,S?t.zeroAddress:F,E,void 0,void 0,S?k:void 0);D.log(`constructZkProof-done`);let H=O&&S?void 0:await o.reorderZkCallData(O,R,B,z);if(D.log(`reorderZkCallData`),S){if(!M)throw Error(`Withdraw Action: No Token Found`);if(O){D.log(`transactCallDirectTron-start`);let e=await v.transactCallDirectTron(i,E,j[0],M,R,z,B);return D.log(`transactCallDirectTron-done`,{txid:e}),e}D.log(`transactCallDirect-start`);let e=await g.transactCallDirect(i,E,j[0],M,R,z,B);return D.log(`transactCallDirect-done`),e}let U=d.constructAdminData(T,E,A,j,k);D.log(`transactCallRelayer-start`);let W=await _.transactCallRelayer(E,R,B,z,V,void 0,void 0,U,H);return D.log(`transactCallRelayer-done`,{txHash:W}),W};exports.hinkalWithdraw=x;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var y=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},b=async(i,c,l,b,x,S,C,w)=>{let T=s.validateAndGetChainId(c),E=e.isTronLike(T),D=o.addressToHexFormat(await i.getEthereumAddressByChain(T)),O=c.map(e=>e.erc20TokenAddress),k=await u.modifyVolatileTokenAmountChanges(T,c,l),A=c[0];if(!A)throw Error(`Deposit Action: No Token Found`);let j;if(!x){let e=C??await f.getFeeStructure(T,S,O,a.ExternalActionId.Transact);j=await p.calculateModifiedFeeStructure(T,A,-k[0],e),await v.mergeWithFeeStructure(T,O,k,j)}let M={externalActionId:0n,externalAddress:o.addressToHexFormat(b),externalActionMetadata:`0x00`},[N,{inputUtxosArray:P,outputUtxosArray:F}]=await Promise.all([i.getRandomRelay(T,!0),y(i,T,O,k)]);if(!x&&!N)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{zkCallData:I,circomData:L,dimData:R,commitmentValidationData:z}=await m.constructZkProof(i.merkleTreeHinkalByChain[T],P,F,i.userKeys,M.externalActionId,M.externalAddress,M.externalActionMetadata,i.generateProofRemotely,j??n.zeroFeeStructure,x?t.zeroAddress:N,T,void 0,void 0,x?D:void 0),B=E&&x?void 0:await o.reorderZkCallData(E,I,R,L);if(x){if(!A)throw Error(`Withdraw Action: No Token Found`);return E?await _.transactCallDirectTron(i,T,k[0],A,I,L,R):await h.transactCallDirect(i,T,k[0],A,I,L,R)}return await g.transactCallRelayer(T,I,R,L,z,void 0,void 0,d.constructAdminData(w,T,O,k,D),B)};exports.hinkalWithdraw=b;
@@ -11,16 +11,15 @@ import { outputUtxoProcessing as u } from "../../functions/pre-transaction/outpu
11
11
  import { modifyVolatileTokenAmountChanges as d } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
12
12
  import { constructAdminData as f } from "../../functions/pre-transaction/constructAdminData.mjs";
13
13
  import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
14
- import { createHinkalTiming as m } from "../../functions/utils/hinkalTiming.utils.mjs";
15
14
  import "../../functions/pre-transaction/index.mjs";
16
- import { calculateModifiedFeeStructure as h } from "../../functions/utils/fees.utils.mjs";
17
- import { constructZkProof as g } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
18
- import { transactCallDirect as _ } from "../../functions/web3/functionCalls/transactCallDirect.mjs";
19
- import { transactCallRelayer as v } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
- import { transactCallDirectTron as y } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
21
- import { mergeWithFeeStructure as b } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
15
+ import { calculateModifiedFeeStructure as m } from "../../functions/utils/fees.utils.mjs";
16
+ import { constructZkProof as h } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
17
+ import { transactCallDirect as g } from "../../functions/web3/functionCalls/transactCallDirect.mjs";
18
+ import { transactCallRelayer as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
19
+ import { transactCallDirectTron as v } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
20
+ import { mergeWithFeeStructure as y } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
22
21
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdraw.ts
23
- var x = async (e, t, n, r) => {
22
+ var b = async (e, t, n, r) => {
24
23
  let a = [...await l(e, t, n, r)], o = [], s = i().toString();
25
24
  for (let t = 0; t < n.length; t += 1) {
26
25
  let { outputUtxos: n } = u(e.userKeys, a[t], r[t], s);
@@ -30,42 +29,26 @@ var x = async (e, t, n, r) => {
30
29
  inputUtxosArray: a,
31
30
  outputUtxosArray: o
32
31
  };
33
- }, S = async (i, l, u, S, C, w, T, E) => {
34
- let D = c(l), O = m(`withdraw:chain-${D}`);
35
- O.log("start", { isRelayerOff: C });
36
- let k = e(D), A = o(await i.getEthereumAddressByChain(D)), j = l.map((e) => e.erc20TokenAddress), M = await d(D, l, u), N = l[0];
37
- if (!N) throw Error("Deposit Action: No Token Found");
38
- let P;
39
- if (!C) {
40
- let e = T ?? await p(D, w, j, a.Transact);
41
- P = await h(D, N, -M[0], e), await b(D, j, M, P);
32
+ }, x = async (i, l, u, x, S, C, w, T) => {
33
+ let E = c(l), D = e(E), O = o(await i.getEthereumAddressByChain(E)), k = l.map((e) => e.erc20TokenAddress), A = await d(E, l, u), j = l[0];
34
+ if (!j) throw Error("Deposit Action: No Token Found");
35
+ let M;
36
+ if (!S) {
37
+ let e = w ?? await p(E, C, k, a.Transact);
38
+ M = await m(E, j, -A[0], e), await y(E, k, A, M);
42
39
  }
43
- O.log("feeStructure");
44
- let F = {
40
+ let N = {
45
41
  externalActionId: 0n,
46
- externalAddress: o(S),
42
+ externalAddress: o(x),
47
43
  externalActionMetadata: "0x00"
48
- }, [I, { inputUtxosArray: L, outputUtxosArray: R }] = await Promise.all([i.getRandomRelay(D, !0), x(i, D, j, M)]);
49
- if (O.log("relay+inputOutputUtxos"), !C && !I) throw Error(r.RELAYER_NOT_AVAILABLE);
50
- O.log("constructZkProof-start");
51
- let { zkCallData: z, circomData: B, dimData: V, commitmentValidationData: H } = await g(i.merkleTreeHinkalByChain[D], L, R, i.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, i.generateProofRemotely, P ?? n, C ? t : I, D, void 0, void 0, C ? A : void 0);
52
- O.log("constructZkProof-done");
53
- let U = k && C ? void 0 : await s(k, z, V, B);
54
- if (O.log("reorderZkCallData"), C) {
55
- if (!N) throw Error("Withdraw Action: No Token Found");
56
- if (k) {
57
- O.log("transactCallDirectTron-start");
58
- let e = await y(i, D, M[0], N, z, B, V);
59
- return O.log("transactCallDirectTron-done", { txid: e }), e;
60
- }
61
- O.log("transactCallDirect-start");
62
- let e = await _(i, D, M[0], N, z, B, V);
63
- return O.log("transactCallDirect-done"), e;
44
+ }, [P, { inputUtxosArray: F, outputUtxosArray: I }] = await Promise.all([i.getRandomRelay(E, !0), b(i, E, k, A)]);
45
+ if (!S && !P) throw Error(r.RELAYER_NOT_AVAILABLE);
46
+ let { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await h(i.merkleTreeHinkalByChain[E], F, I, i.userKeys, N.externalActionId, N.externalAddress, N.externalActionMetadata, i.generateProofRemotely, M ?? n, S ? t : P, E, void 0, void 0, S ? O : void 0), V = D && S ? void 0 : await s(D, L, z, R);
47
+ if (S) {
48
+ if (!j) throw Error("Withdraw Action: No Token Found");
49
+ return D ? await v(i, E, A[0], j, L, R, z) : await g(i, E, A[0], j, L, R, z);
64
50
  }
65
- let W = f(E, D, j, M, A);
66
- O.log("transactCallRelayer-start");
67
- let G = await v(D, z, V, B, H, void 0, void 0, W, U);
68
- return O.log("transactCallRelayer-done", { txHash: G }), G;
51
+ return await _(E, L, z, R, B, void 0, void 0, f(T, E, k, A, O), V);
69
52
  };
70
53
  //#endregion
71
- export { S as hinkalWithdraw };
54
+ export { x as hinkalWithdraw };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(`../utils/hinkalTiming.utils.cjs`),f=require(`./generateMainAndCommitmentZkProof.cjs`),p=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),m=require(`../private-wallet/emporium.helpers.cjs`);var h=async(h,g,_,v,y,b,x,S,C,w=t.zeroAddress,T=e.chainIds.localhost,E=g.map(()=>!1),D=void 0,O,k)=>{let A=l.getZkProofVerifierName(g,_),j=d.createHinkalTiming(`constructZkProof:chain-${T}`);j.log(`start`,{verifier:A});let M=l.calcAmountChanges(g,_),N=g.map(e=>e[0].erc20TokenAddress),P=l.calcEncryptedOutputs(_),F=t.defaultSignatureData,I=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:ne}=v.getSpendingKeyPair(),L=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),I),I,v.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(T,h,g.map(e=>e.map(e=>e.getConstructableParams())));j.log(`getDataFromWorkers`);let B=l.buildOutCommitments(_),V=r.randomBigInt(31),H=n.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:a.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:ne,nullifyingPrivateKey:I,erc20TokenAddresses:N,amountChanges:M,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:z,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(g,_,!0),q=l.getSlippageValues(K);s.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],Y=e.getOnchainChainId(T),ae=k?te.AccountActions.getSignerAddressFromPrivateKey(Y,k):void 0,X=y===o.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(T,b??t.zeroAddress,k,J,H,ae):await m.encodeEmporiumMetadata(T,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=l.createCallDataHash(G,w,b,y,X,P,D,q,E,C,F,O);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:N,amountChanges:M,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Q,S:oe}=v.signEddsa(Z);W.eddsaSignature=[Q[0],Q[1],oe],W.signedMessageHash=Z;let $=A.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V};j.log(`generateMainAndCommitmentZkProof-start`);let{zkCallData:ce,commitmentValidationData:le}=await f.generateMainAndCommitmentZkProof(T,v,N,g,A,$?se:W,S);return j.log(`generateMainAndCommitmentZkProof-done`),{zkCallData:ce,circomData:u.generateCircomData(B,z,R,K,N,_,P,G,y,b,X,w,W.calldataHash,L,E,D,$?Number(U):void 0,q,C,F,O),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:P,commitmentValidationData:le}};exports.constructZkProof=h;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(`./generateMainAndCommitmentZkProof.cjs`),f=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),p=require(`../private-wallet/emporium.helpers.cjs`);var m=async(m,h,g,_,v,y,b,x,S,C=t.zeroAddress,w=e.chainIds.localhost,T=h.map(()=>!1),E=void 0,D,O)=>{let k=l.getZkProofVerifierName(h,g),A=l.calcAmountChanges(h,g),j=h.map(e=>e[0].erc20TokenAddress),M=l.calcEncryptedOutputs(g),N=t.defaultSignatureData,P=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:F}=_.getSpendingKeyPair(),I=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),P),P,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:ne,inCommitmentSiblingSides:re,rootHashHinkal:L,inNullifiers:R}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams()))),z=l.buildOutCommitments(g),B=r.randomBigInt(31),V=n.poseidonFunction(B),H=BigInt(g.length>0?g[0][0].timeStamp:a.getCurrentTimeInSeconds()),U={rootHashHinkal:L,spendingPublicKey:F,nullifyingPrivateKey:P,erc20TokenAddresses:j,amountChanges:A,inAmounts:h.map(e=>e.map(e=>e.amount.toString())),inRandomizations:h.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:h.map(e=>e.map(e=>e.timeStamp)),inNullifiers:R,inCommitmentSiblings:ne,inCommitmentSiblingSides:re,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:H,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:z,calldataHash:0n,messageSeed:B,H0Ax:c.takeOffHighestBit(I.extraRandomization),H0Ay:I.H0},W=l.calcPublicSignalCount(k,U.erc20TokenAddresses,U.amountChanges,U.inNullifiers,U.outCommitments),G=l.calcAmountChanges(h,g,!0),K=l.getSlippageValues(G);s.Logger.log({publicSignalCount:W});let q=Array.isArray(b)?b:[b],J=e.getOnchainChainId(w),Y=O?te.AccountActions.getSignerAddressFromPrivateKey(J,O):void 0,X=v===o.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,q,V,Y):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:q,V,t.zeroAddress);U.calldataHash=l.createCallDataHash(W,C,y,v,X,M,E,K,T,S,N,D);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:L,erc20TokenAddresses:j,amountChanges:A,outTimeStamp:H,inNullifiers:R,outCommitments:z,calldataHash:U.calldataHash,message:V,outH1Ay:I.H1,H0Ax:U.H0Ax,H0Ay:I.H0}),{R8:Q,S:ie}=_.signEddsa(Z);U.eddsaSignature=[Q[0],Q[1],ie],U.signedMessageHash=Z;let $=k.startsWith(`mainEVMCircuitMin0`),ae={outTimeStamp:H,calldataHash:U.calldataHash,messageSeed:B},{zkCallData:oe,commitmentValidationData:se}=await d.generateMainAndCommitmentZkProof(w,_,j,h,k,$?ae:U,x);return{zkCallData:oe,circomData:u.generateCircomData(z,R,L,G,j,g,M,W,v,y,X,C,U.calldataHash,I,T,E,$?Number(H):void 0,K,S,N,D),dimData:{tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0},encryptedOutputs:M,commitmentValidationData:se}};exports.constructZkProof=m;
@@ -1,89 +1,82 @@
1
1
  import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
2
2
  import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
3
- import { poseidonFunction as r } from "../../crypto/poseidon.mjs";
4
- import { randomBigInt as i } from "../web3/etherFunctions.mjs";
5
- import { UserKeys as te } from "../../data-structures/crypto-keys/keys.mjs";
6
- import { getCurrentTimeInSeconds as ne } from "../utils/time.utils.mjs";
7
- import { ExternalActionId as re } from "../../types/external-action.types.mjs";
8
- import { Logger as ie } from "../../error-handling/logger.mjs";
9
- import { 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";
17
- import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.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 a } from "../utils/time.utils.mjs";
7
+ import { ExternalActionId as o } from "../../types/external-action.types.mjs";
8
+ import { Logger as s } from "../../error-handling/logger.mjs";
9
+ import { takeOffHighestBit as ne } from "../utils/bit.operations.mjs";
10
+ import { buildOutCommitments as re, calcAmountChanges as c, calcEncryptedOutputs as ie, calcPublicSignalCount as ae, calcStealthAddressStructure as oe, createCallDataHash as se, getSlippageValues as ce, getUtxoCircuitH0Coords as l, getUtxoCircuitInRandomization as le, getZkProofVerifierName as ue } from "./common.snarkjs.mjs";
11
+ import { computeSignedMessageHashEvm as de } from "./signedMessageHash.mjs";
12
+ import { generateCircomData as fe } from "./generateCircomData.mjs";
13
+ import { AccountActions as u } from "../../data-structures/AccountActions/AccountActions.mjs";
14
+ import { generateMainAndCommitmentZkProof as d } from "./generateMainAndCommitmentZkProof.mjs";
15
+ import { getDataFromWorkers as f } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
16
+ import { encodeEmporiumMetadata as p } from "../private-wallet/emporium.helpers.mjs";
18
17
  //#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 = le(m, h), k = pe(`constructZkProof:chain-${C}`);
21
- k.log("start", { verifier: O });
22
- let 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(te.findCorrectRandomization(i(31), P), P, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: L, inCommitmentSiblingSides: R, rootHashHinkal: z, inNullifiers: B } = await d(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
23
- k.log("getDataFromWorkers");
24
- let V = oe(h), H = i(31), U = r(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
25
- rootHashHinkal: z,
26
- spendingPublicKey: F,
27
- nullifyingPrivateKey: P,
28
- erc20TokenAddresses: j,
29
- amountChanges: A,
30
- inAmounts: m.map((e) => e.map((e) => e.amount.toString())),
31
- inRandomizations: m.map((e) => e.map((e) => ce(e))),
32
- inH0Ax: m.map((e) => e.map((e) => u(e)[0].toString())),
33
- inH0Ay: m.map((e) => e.map((e) => u(e)[1].toString())),
34
- isNewStyle: m.map((e) => e.map((e) => !!e.isNewStyle)),
35
- inTimeStamps: m.map((e) => e.map((e) => e.timeStamp)),
36
- inNullifiers: B,
37
- inCommitmentSiblings: L,
38
- inCommitmentSiblingSides: R,
39
- outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
40
- outTimeStamp: W,
41
- outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
42
- outCommitments: V,
18
+ var m = async (m, h, g, _, v, y, b, pe, x, S = n, C = e.localhost, w = h.map(() => !1), T = void 0, E, D) => {
19
+ let O = ue(h, g), k = c(h, g), A = h.map((e) => e[0].erc20TokenAddress), j = ie(g), M = ee, N = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: P } = _.getSpendingKeyPair(), F = oe(i.findCorrectRandomization(r(31), N), N, _.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: I, inCommitmentSiblingSides: L, rootHashHinkal: R, inNullifiers: z } = await f(C, m, h.map((e) => e.map((e) => e.getConstructableParams()))), B = re(g), V = r(31), H = te(V), U = BigInt(g.length > 0 ? g[0][0].timeStamp : a()), W = {
20
+ rootHashHinkal: R,
21
+ spendingPublicKey: P,
22
+ nullifyingPrivateKey: N,
23
+ erc20TokenAddresses: A,
24
+ amountChanges: k,
25
+ inAmounts: h.map((e) => e.map((e) => e.amount.toString())),
26
+ inRandomizations: h.map((e) => e.map((e) => le(e))),
27
+ inH0Ax: h.map((e) => e.map((e) => l(e)[0].toString())),
28
+ inH0Ay: h.map((e) => e.map((e) => l(e)[1].toString())),
29
+ isNewStyle: h.map((e) => e.map((e) => !!e.isNewStyle)),
30
+ inTimeStamps: h.map((e) => e.map((e) => e.timeStamp)),
31
+ inNullifiers: z,
32
+ inCommitmentSiblings: I,
33
+ inCommitmentSiblingSides: L,
34
+ outAmounts: g.map((e) => e.map((e) => e.amount.toString())),
35
+ outTimeStamp: U,
36
+ outPublicKeys: g.map((e) => e.map((e) => e.getStealthAddress())),
37
+ outCommitments: B,
43
38
  calldataHash: 0n,
44
- messageSeed: H,
45
- H0Ax: ae(I.extraRandomization),
46
- H0Ay: I.H0
47
- }, K = o(O, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = l(q);
48
- ie.log({ publicSignalCount: K });
49
- 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);
50
- G.calldataHash = c(K, S, v, _, X, M, T, J, w, x, N, E);
51
- let Z = ue({
52
- rootHashHinkal: z,
53
- erc20TokenAddresses: j,
54
- amountChanges: A,
55
- outTimeStamp: W,
56
- inNullifiers: B,
57
- outCommitments: V,
58
- calldataHash: G.calldataHash,
59
- message: U,
60
- outH1Ay: I.H1,
61
- H0Ax: G.H0Ax,
62
- H0Ay: I.H0
63
- }), { R8: Q, S: _e } = g.signEddsa(Z);
64
- G.eddsaSignature = [
65
- Q[0],
66
- Q[1],
67
- _e
68
- ], G.signedMessageHash = Z;
69
- let $ = O.startsWith("mainEVMCircuitMin0"), ve = {
70
- outTimeStamp: W,
71
- calldataHash: G.calldataHash,
72
- messageSeed: H
73
- };
74
- k.log("generateMainAndCommitmentZkProof-start");
75
- let { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, O, $ ? ve : G, b);
76
- return k.log("generateMainAndCommitmentZkProof-done"), {
77
- zkCallData: ye,
78
- circomData: 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),
39
+ messageSeed: V,
40
+ H0Ax: ne(F.extraRandomization),
41
+ H0Ay: F.H0
42
+ }, G = ae(O, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments), K = c(h, g, !0), q = ce(K);
43
+ s.log({ publicSignalCount: G });
44
+ let J = Array.isArray(b) ? b : [b], me = t(C), he = D ? u.getSignerAddressFromPrivateKey(me, D) : void 0, Y = v === o.Emporium ? await p(C, y ?? n, D, J, H, he) : await p(C, n, void 0, v === 0n ? [] : J, H, n);
45
+ W.calldataHash = se(G, S, y, v, Y, j, T, q, w, x, M, E);
46
+ let X = de({
47
+ rootHashHinkal: R,
48
+ erc20TokenAddresses: A,
49
+ amountChanges: k,
50
+ outTimeStamp: U,
51
+ inNullifiers: z,
52
+ outCommitments: B,
53
+ calldataHash: W.calldataHash,
54
+ message: H,
55
+ outH1Ay: F.H1,
56
+ H0Ax: W.H0Ax,
57
+ H0Ay: F.H0
58
+ }), { R8: Z, S: ge } = _.signEddsa(X);
59
+ W.eddsaSignature = [
60
+ Z[0],
61
+ Z[1],
62
+ ge
63
+ ], W.signedMessageHash = X;
64
+ let Q = O.startsWith("mainEVMCircuitMin0"), $ = {
65
+ outTimeStamp: U,
66
+ calldataHash: W.calldataHash,
67
+ messageSeed: V
68
+ }, { zkCallData: _e, commitmentValidationData: ve } = await d(C, _, A, h, O, Q ? $ : W, pe);
69
+ return {
70
+ zkCallData: _e,
71
+ circomData: fe(B, z, R, K, A, g, j, G, v, y, Y, S, W.calldataHash, F, w, T, Q ? Number(U) : void 0, q, x, M, E),
79
72
  dimData: {
80
- tokenNumber: m.length,
81
- nullifierAmount: m.length > 0 ? m[0].length : 0,
82
- outputAmount: h.length > 0 ? h[0].length : 0
73
+ tokenNumber: h.length,
74
+ nullifierAmount: h.length > 0 ? h[0].length : 0,
75
+ outputAmount: g.length > 0 ? g[0].length : 0
83
76
  },
84
- encryptedOutputs: M,
85
- commitmentValidationData: be
77
+ encryptedOutputs: j,
78
+ commitmentValidationData: ve
86
79
  };
87
80
  };
88
81
  //#endregion
89
- export { p as constructZkProof };
82
+ export { m as constructZkProof };
@@ -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(`enclave-proof:chain-${o}`);l.log(`start`,{verifierCount:s.length,verifiers:s});let 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(`encrypt-input-done`,{inputCount:c.length});let m={circuit_wasms:u,circuit_zkeys:d,inputs:p,key:f};l.log(`generate-proofs-request-start`,{url:`${e.ENCLAVE_URL}/generate-proofs`});let h=await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,m);return l.log(`generate-proofs-request-done`,{proofCount:h.length}),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,36 +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(`enclave-proof:chain-${s}`);
17
- u.log("start", {
18
- verifierCount: c.length,
19
- verifiers: c
20
- });
21
- let d = c.map((e) => o(i(e, s))), f = c.map((e) => o(a(e, s))), { keyCiphertext: p, inputCiphertext: m } = await n(l);
22
- u.log("encrypt-input-done", { inputCount: l.length });
23
- let h = {
24
- circuit_wasms: d,
25
- circuit_zkeys: f,
26
- inputs: m,
27
- key: p
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
28
20
  };
29
- u.log("generate-proofs-request-start", { url: `${e}/generate-proofs` });
30
- let g = await t.post(`${e}/generate-proofs`, h);
31
- return u.log("generate-proofs-request-done", { proofCount: g.length }), g.map(({ zk_calldata: e, public_signals: t }) => ({
21
+ return (await t.post(`${e}/generate-proofs`, p)).map(({ zk_calldata: e, public_signals: t }) => ({
32
22
  zkCallData: e,
33
23
  publicSignals: t
34
24
  }));
35
25
  };
36
26
  //#endregion
37
- export { s as generateZkProofEnclave };
27
+ export { o as generateZkProofEnclave };
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../types/eip5792.types.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class l{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);if((await e.getAccounts())?.length){let t=(0,c.getAccount)(this.config).chainId??await Promise.resolve(e.getChainId?.())??void 0;if(t)return t}if(e.id===`walletConnect`)try{await(0,c.reconnect)(this.config,{connectors:[e]}),await(0,c.disconnect)(this.config)}catch{}try{return(await(0,c.connect)(this.config,{connector:e})).chainId}catch(n){if(n instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=t.transactionErrorCodes.CONNECTION_FAILED;throw n?.code===4001&&(r=t.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,n,r){if((await this.fetchProviders[e]?.waitForTransaction(n,r))?.status)return!0;throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=await(0,c.signMessage)(this.config,{message:e});if(!n)throw Error(t.transactionErrorCodes.SIGNING_FAILED);if(n.includes(`error`))throw Error(t.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return n}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(t){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=e.getOnchainChainId(t.chainId);return(0,c.switchChain)(this.config,{chainId:n})}async getAddress(){if(!this.config)throw Error(`No Config In Provider Adapter`);let{address:e}=(0,c.getAccount)(this.config);if(!e)throw Error(`IllegalState`);return o.ethers.getAddress(e)}setChainEventListener(e){if(!this.config)throw Error(`No Config In Provider Adapter`);this.chainEventListener=e,this.chainEventListener&&(this.unsubscribeFns.push((0,c.watchAccount)(this.config,{onChange:({address:e},{address:t})=>{this.chainEventListener&&e!==t&&this.chainEventListener.onAccountChanged()}})),this.unsubscribeFns.push((0,c.watchChainId)(this.config,{onChange:e=>{this.chainEventListener&&this.chainEventListener.onChainChanged(e)}})))}onAccountChanged(){return this.init()}onChainChanged(e){return this.init(e)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(e=>e()),this.unsubscribeFns=[]}getContract(e,t,n=void 0,r){return a.getContract(t,e,n,r)}getContractWithSigner(e,t,n=void 0){if(!this.signer)throw Error(`IllegalState: no signer`);return this.getContract(e,t,n,this.signer)}getContractWithFetcher(e,t,n=void 0){let r=this.fetchProviders[e];if(!r)throw Error(`fetchProvider not initialized`);return this.getContract(e,t,n,r)}async sendTransaction(e){if(!this.signer)throw Error(`IllegalState: no signer`);return await this.signer.sendTransaction(e)}async connectAndPatchProvider(e){return await this.connectToConnector(e)}isPermitterAvailable(){if(!this.chainId)throw Error(`Illegal state: no chainId`);return!!e.networkRegistry[this.chainId]?.contractData?.permitterAddress}async getGasPrice(e){let t=(await this.fetchProviders[e]?.getFeeData())?.gasPrice;if(!t)throw Error(`Could not fetch gas price in getGasPrice`);return t}static FALLBACK_METHODS=new Set([`eth_blockNumber`,`eth_call`]);wrapTransportWithRpcFallback(e,t){let n=this.fetchProviders[t];return n?{request:async t=>{let r=await e.request(t);return r==null&&l.FALLBACK_METHODS.has(t.method)?n.send(t.method,Array.isArray(t.params)?t.params:[]):r}}:e}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(this.wrapTransportWithRpcFallback(r,t)).getSigner(n)}async supportsBatchCall(t){if(!this.originalProvider)return!1;try{let n=await this.getAddress(),r=`0x${e.getOnchainChainId(t).toString(16)}`,i=await this.originalProvider.send(`wallet_getCapabilities`,[n,[r]]),a=i?.[r]||i?.[`0x0`];if(!a?.atomic)return!1;let o=typeof a.atomic==`string`?a.atomic:a.atomic?.status;return o===`supported`||o===`ready`}catch{return!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let t=0;t<60;t+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let t=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(t.status===n.CallsStatus.Confirmed&&t.receipts?.[0]?.transactionHash)return t.receipts[0].transactionHash;if(t.status===n.CallsStatus.OffchainFailure||t.status===n.CallsStatus.ChainFailure||t.status===n.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(t,n){if(!this.fetchProviders[t])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let r=await this.getAddress(),i={version:`2.0.0`,chainId:`0x${e.getOnchainChainId(t).toString(16)}`,from:r,atomicRequired:!0,calls:n},a=await this.originalProvider.send(`wallet_sendCalls`,[i]),o=a?.id||a;if(!o||typeof o!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let s=await this.waitForBatchTransactionStatus(o),c=await this.fetchProviders[t].getTransaction(s);if(!c)throw Error(`Transaction not found`);return c}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../types/eip5792.types.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class l{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let{isConnected:n,chainId:r,address:i}=(0,c.getAccount)(this.config);if(n&&i){let t=r??await Promise.resolve(e.getChainId?.())??void 0;if(t)return t}if(e.id===`walletConnect`&&!n)try{await(0,c.reconnect)(this.config,{connectors:[e]}),await(0,c.disconnect)(this.config)}catch{}try{return(await(0,c.connect)(this.config,{connector:e})).chainId}catch(n){if(n instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=t.transactionErrorCodes.CONNECTION_FAILED;throw n?.code===4001&&(r=t.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,n,r){if((await this.fetchProviders[e]?.waitForTransaction(n,r))?.status)return!0;throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=await(0,c.signMessage)(this.config,{message:e});if(!n)throw Error(t.transactionErrorCodes.SIGNING_FAILED);if(n.includes(`error`))throw Error(t.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return n}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(t){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=e.getOnchainChainId(t.chainId);return(0,c.switchChain)(this.config,{chainId:n})}async getAddress(){if(!this.config)throw Error(`No Config In Provider Adapter`);let{address:e}=(0,c.getAccount)(this.config);if(!e)throw Error(`IllegalState`);return o.ethers.getAddress(e)}setChainEventListener(e){if(!this.config)throw Error(`No Config In Provider Adapter`);this.chainEventListener=e,this.chainEventListener&&(this.unsubscribeFns.push((0,c.watchAccount)(this.config,{onChange:({address:e},{address:t})=>{this.chainEventListener&&e!==t&&this.chainEventListener.onAccountChanged()}})),this.unsubscribeFns.push((0,c.watchChainId)(this.config,{onChange:e=>{this.chainEventListener&&this.chainEventListener.onChainChanged(e)}})))}onAccountChanged(){return this.init()}onChainChanged(e){return this.init(e)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(e=>e()),this.unsubscribeFns=[]}getContract(e,t,n=void 0,r){return a.getContract(t,e,n,r)}getContractWithSigner(e,t,n=void 0){if(!this.signer)throw Error(`IllegalState: no signer`);return this.getContract(e,t,n,this.signer)}getContractWithFetcher(e,t,n=void 0){let r=this.fetchProviders[e];if(!r)throw Error(`fetchProvider not initialized`);return this.getContract(e,t,n,r)}async sendTransaction(e){if(!this.signer)throw Error(`IllegalState: no signer`);return await this.signer.sendTransaction(e)}async connectAndPatchProvider(e){return await this.connectToConnector(e)}isPermitterAvailable(){if(!this.chainId)throw Error(`Illegal state: no chainId`);return!!e.networkRegistry[this.chainId]?.contractData?.permitterAddress}async getGasPrice(e){let t=(await this.fetchProviders[e]?.getFeeData())?.gasPrice;if(!t)throw Error(`Could not fetch gas price in getGasPrice`);return t}static FALLBACK_METHODS=new Set([`eth_blockNumber`,`eth_call`]);wrapTransportWithRpcFallback(e,t){let n=this.fetchProviders[t];return n?{request:async t=>{let r=await e.request(t);return r==null&&l.FALLBACK_METHODS.has(t.method)?n.send(t.method,Array.isArray(t.params)?t.params:[]):r}}:e}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(this.wrapTransportWithRpcFallback(r,t)).getSigner(n)}async supportsBatchCall(t){if(!this.originalProvider)return!1;try{let n=await this.getAddress(),r=`0x${e.getOnchainChainId(t).toString(16)}`,i=await this.originalProvider.send(`wallet_getCapabilities`,[n,[r]]),a=i?.[r]||i?.[`0x0`];if(!a?.atomic)return!1;let o=typeof a.atomic==`string`?a.atomic:a.atomic?.status;return o===`supported`||o===`ready`}catch{return!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let t=0;t<60;t+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let t=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(t.status===n.CallsStatus.Confirmed&&t.receipts?.[0]?.transactionHash)return t.receipts[0].transactionHash;if(t.status===n.CallsStatus.OffchainFailure||t.status===n.CallsStatus.ChainFailure||t.status===n.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(t,n){if(!this.fetchProviders[t])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let r=await this.getAddress(),i={version:`2.0.0`,chainId:`0x${e.getOnchainChainId(t).toString(16)}`,from:r,atomicRequired:!0,calls:n},a=await this.originalProvider.send(`wallet_sendCalls`,[i]),o=a?.id||a;if(!o||typeof o!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let s=await this.waitForBatchTransactionStatus(o),c=await this.fetchProviders[t].getTransaction(s);if(!c)throw Error(`Transaction not found`);return c}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
@@ -52,11 +52,12 @@ var b = class b {
52
52
  }
53
53
  async connectToConnector(e) {
54
54
  if (!this.config) throw Error("No Config In Provider Adapter");
55
- if ((await e.getAccounts())?.length) {
56
- let t = m(this.config).chainId ?? await Promise.resolve(e.getChainId?.()) ?? void 0;
55
+ let { isConnected: t, chainId: n, address: r } = m(this.config);
56
+ if (t && r) {
57
+ let t = n ?? await Promise.resolve(e.getChainId?.()) ?? void 0;
57
58
  if (t) return t;
58
59
  }
59
- if (e.id === "walletConnect") try {
60
+ if (e.id === "walletConnect" && !t) try {
60
61
  await h(this.config, { connectors: [e] }), await p(this.config);
61
62
  } catch {}
62
63
  try {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
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=e=>e&&typeof e==`object`&&`type`in e?String(e.type):`n/a`,a=async a=>{let o=i(a.payload),s=n.createHinkalTiming(`worker:${a.type}:${o}`);s.log(`start`);let c=await r.WorkerFactory.getWebWorker(a.type);return s.log(`getWebWorker`),new Promise((n,r)=>{let i={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:a,href:o}=window.location;i={origin:e,protocol:t,host:n,port:r,hostname:a,href:o}}c.onMessage(e=>{s.log(`worker-result`),n(e),c.terminate()}),c.onError(e=>{s.log(`worker-error`,{message:e instanceof Error?e.message:String(e)}),r(e),c.terminate()});let o={payload:a.payload,metadata:{hostLocation:i,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};c.postMessage(o),s.log(`postMessage`)})};exports.performTaskWithWorker=a;
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,42 +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 { createHinkalTiming 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 = (e) => e && typeof e == "object" && "type" in e ? String(e.type) : "n/a", a = async (a) => {
7
- let o = i(a.payload), s = n(`worker:${a.type}:${o}`);
8
- s.log("start");
9
- let c = await r.getWebWorker(a.type);
10
- return s.log("getWebWorker"), new Promise((n, r) => {
11
- let i = {};
5
+ var r = async (r) => {
6
+ let i = await n.getWebWorker(r.type);
7
+ return new Promise((n, a) => {
8
+ let o = {};
12
9
  if (typeof window < "u" && window.location) {
13
- let { origin: e, protocol: t, host: n, port: r, hostname: a, href: o } = window.location;
14
- i = {
10
+ let { origin: e, protocol: t, host: n, port: r, hostname: i, href: a } = window.location;
11
+ o = {
15
12
  origin: e,
16
13
  protocol: t,
17
14
  host: n,
18
15
  port: r,
19
- hostname: a,
20
- href: o
16
+ hostname: i,
17
+ href: a
21
18
  };
22
19
  }
23
- c.onMessage((e) => {
24
- s.log("worker-result"), n(e), c.terminate();
25
- }), c.onError((e) => {
26
- s.log("worker-error", { message: e instanceof Error ? e.message : String(e) }), r(e), c.terminate();
20
+ i.onMessage((e) => {
21
+ n(e), i.terminate();
22
+ }), i.onError((e) => {
23
+ a(e), i.terminate();
27
24
  });
28
- let o = {
29
- payload: a.payload,
25
+ let s = {
26
+ payload: r.payload,
30
27
  metadata: {
31
- hostLocation: i,
28
+ hostLocation: o,
32
29
  constants: {
33
30
  chains: { chainIds: t },
34
31
  isDevelopment: e
35
32
  }
36
33
  }
37
34
  };
38
- c.postMessage(o), s.log("postMessage");
35
+ i.postMessage(s);
39
36
  });
40
37
  };
41
38
  //#endregion
42
- export { a as performTaskWithWorker };
39
+ export { r as performTaskWithWorker };
@@ -14,8 +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.21/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.21/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.21/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.22/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.22/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.22/' + 'utxoWorkerLauncher.js'),
20
20
  });
21
21
  exports.getWorkerViteURL = n;
@@ -14,8 +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.21/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.21/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.21/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.22/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.22/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.22/' + 'utxoWorkerLauncher.js'),
20
20
  });
21
21
  export { n as getWorkerViteURL };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1,7 +1,7 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/functions/utils/hinkalTiming.utils.cjs`),t=require(`../common/src/webworker/workerFactory.cjs`),n=require(`./workerCDNUrls.cjs`),r=require(`./bridge/serialization.utils.cjs`),i=require(`./bridge/HinkalRNWorker.cjs`);let a=require(`react`),o=require(`react-native`),s=require(`react-native-webview`),c=require(`react/jsx-runtime`);var l=`${new URL(Object.values(n.WORKER_CDN_URLS)[0]).origin}/`;t.WorkerFactory.rnWorkerFactory=e=>new i.HinkalRNWorker(e);var u=`
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(n.WORKER_CDN_URLS)};
4
+ var URLS = ${JSON.stringify(t.WORKER_CDN_URLS)};
5
5
  var BLOBS = {};
6
6
 
7
7
  function replacer(_key, value){
@@ -22,18 +22,6 @@ if (!window.__hinkalPageBoot) (function(){
22
22
  var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
23
23
  }
24
24
  function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
25
- function logTiming(requestId, marks, phase, extra){
26
- var now = Date.now();
27
- post({
28
- type: 'TIMING',
29
- requestId: requestId,
30
- phase: phase,
31
- stepMs: now - marks.last,
32
- totalMs: now - marks.start,
33
- extra: extra || null,
34
- });
35
- marks.last = now;
36
- }
37
25
  function describe(error){
38
26
  if (!error) return 'worker error';
39
27
  if (error.message) return error.message;
@@ -41,16 +29,11 @@ if (!window.__hinkalPageBoot) (function(){
41
29
  try { return JSON.stringify(error); } catch(_){ return String(error); }
42
30
  }
43
31
 
44
- async function blobUrl(url, requestId, marks){
45
- if (BLOBS[url]) {
46
- logTiming(requestId, marks, 'blobUrl-cache-hit', { url: url });
47
- return BLOBS[url];
48
- }
49
- logTiming(requestId, marks, 'blobUrl-fetch-start', { url: url });
32
+ async function blobUrl(url){
33
+ if (BLOBS[url]) return BLOBS[url];
50
34
  var response = await fetch(url);
51
35
  if (!response.ok) throw new Error('HTTP ' + response.status + ' ' + url);
52
36
  var body = await response.text();
53
- logTiming(requestId, marks, 'blobUrl-fetch-done', { bytes: body.length });
54
37
  BLOBS[url] = URL.createObjectURL(new Blob([${JSON.stringify(`(function(){
55
38
  var post = self.postMessage.bind(self);
56
39
  function describe(error){
@@ -65,7 +48,6 @@ if (!window.__hinkalPageBoot) (function(){
65
48
  self.addEventListener('unhandledrejection', function(event){ try { post({ __hinkalWorkerError: 'unhandledrejection: ' + describe(event && event.reason) }); } catch(_){} });
66
49
  try { post({ __hinkalWorkerReady: true }); } catch(_){}
67
50
  })();`)}, body], { type: 'application/javascript' }));
68
- logTiming(requestId, marks, 'blobUrl-created');
69
51
  return BLOBS[url];
70
52
  }
71
53
 
@@ -76,18 +58,12 @@ if (!window.__hinkalPageBoot) (function(){
76
58
  window.handleMessage = async function(envelope){
77
59
  var requestId = envelope && envelope.requestId;
78
60
  var variant = envelope && envelope.variant;
79
- var marks = { start: Date.now(), last: Date.now() };
80
- logTiming(requestId, marks, 'handleMessage-start', { variant: variant });
81
61
  var message = revive(envelope && envelope.message);
82
- logTiming(requestId, marks, 'message-revived');
83
62
  var url = URLS[variant];
84
63
  if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
85
64
 
86
65
  var worker;
87
- try {
88
- worker = spawn(await blobUrl(url, requestId, marks));
89
- logTiming(requestId, marks, 'worker-spawned');
90
- }
66
+ try { worker = spawn(await blobUrl(url)); }
91
67
  catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
92
68
 
93
69
  var done = false, ready = false, pending = message;
@@ -98,24 +74,20 @@ if (!window.__hinkalPageBoot) (function(){
98
74
  if (data && typeof data === 'object') {
99
75
  if (data.__hinkalWorkerReady) {
100
76
  ready = true;
101
- logTiming(requestId, marks, 'worker-ready');
102
- try { worker.postMessage(pending); pending = null; logTiming(requestId, marks, 'worker-payload-sent'); }
77
+ try { worker.postMessage(pending); pending = null; }
103
78
  catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
104
79
  return;
105
80
  }
106
81
  if (typeof data.__hinkalWorkerError === 'string') {
107
- logTiming(requestId, marks, 'worker-error', { error: data.__hinkalWorkerError });
108
82
  post({ requestId: requestId, type: 'ERROR', error: data.__hinkalWorkerError });
109
83
  finish();
110
84
  return;
111
85
  }
112
86
  }
113
- logTiming(requestId, marks, 'worker-result');
114
87
  post({ requestId: requestId, type: 'RESULT', data: data });
115
88
  finish();
116
89
  };
117
90
  worker.onerror = function(event){
118
- logTiming(requestId, marks, 'worker-onerror', { ready: ready });
119
91
  post({ requestId: requestId, type: 'ERROR', error: (ready ? 'worker runtime: ' : 'worker startup: ') + describe(event) });
120
92
  finish();
121
93
  };
@@ -123,4 +95,4 @@ if (!window.__hinkalPageBoot) (function(){
123
95
 
124
96
  post({ type: 'READY' });
125
97
  })();
126
- true;`,d=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${u}<\/script></body></html>`,f=o.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),p=()=>{let t=(0,a.useRef)(null),n=(0,a.useRef)({ready:!1,queue:[]}),i=(0,a.useRef)(e.createHinkalTiming(`webview-host`)),p=(0,a.useCallback)((n,i,a)=>{let s=e.createHinkalTiming(`webview-inject:${n}`);s.log(`start`,{variant:i});let c;try{c=JSON.stringify({requestId:n,variant:i,message:a},r.bigIntReplacer),s.log(`serialized`,{bytes:c.length})}catch(e){s.log(`serialize-failed`,{message:e?.message??String(e)}),o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:n,type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}t.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${c}); true;`),s.log(`injectJavaScript-called`)},[]);(0,a.useEffect)(()=>{i.current.log(`mount`);let e=o.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let t={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};n.current.ready?(i.current.log(`TO_WEBVIEW_WORKER-inject`,{requestId:t.requestId,variant:t.variant}),p(t.requestId,t.variant,t.message)):(i.current.log(`TO_WEBVIEW_WORKER-queued`,{requestId:t.requestId,variant:t.variant}),n.current.queue.push(t))});return()=>e.remove()},[p]);let m=(0,a.useCallback)(e=>{let t;try{t=r.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(t?.type===`READY`){i.current.log(`webview-READY`,{queued:n.current.queue.length}),n.current.ready=!0;let e=n.current.queue;n.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>p(e,t,n));return}if(t?.type===`TIMING`){let e=t.extra?` ${JSON.stringify(t.extra)}`:``;console.log(`[HinkalTiming] [webview:${t.requestId??`unknown`}] ${t.phase} +${t.stepMs}ms (total ${t.totalMs}ms)${e}`);return}(t?.type===`RESULT`||t?.type===`ERROR`)&&i.current.log(`webview-${t.type}`,{requestId:t.requestId}),o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,t)},[p]);return(0,c.jsx)(o.View,{pointerEvents:`none`,style:f.hiddenHost,children:(0,c.jsx)(s.WebView,{ref:t,source:{html:d,baseUrl:l},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:m,onLoad:()=>{i.current.log(`webview-onLoad`),t.current?.injectJavaScript(u)}})})};module.exports=p;
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;
@@ -1,19 +1,18 @@
1
- import { createHinkalTiming as e } from "../common/src/functions/utils/hinkalTiming.utils.mjs";
2
- import { WorkerFactory as t } from "../common/src/webworker/workerFactory.mjs";
3
- import { WORKER_CDN_URLS as n } from "./workerCDNUrls.mjs";
4
- import { bigIntReplacer as r, reviveBigInts as i } from "./bridge/serialization.utils.mjs";
5
- import { HinkalRNWorker as a } from "./bridge/HinkalRNWorker.mjs";
6
- import { useCallback as o, useEffect as s, useRef as c } from "react";
7
- import { DeviceEventEmitter as l, StyleSheet as u, View as d } from "react-native";
8
- import { WebView as f } from "react-native-webview";
9
- import { jsx as p } from "react/jsx-runtime";
1
+ import { WorkerFactory as e } from "../common/src/webworker/workerFactory.mjs";
2
+ import { WORKER_CDN_URLS as t } from "./workerCDNUrls.mjs";
3
+ import { bigIntReplacer as n, reviveBigInts as r } from "./bridge/serialization.utils.mjs";
4
+ import { HinkalRNWorker as i } from "./bridge/HinkalRNWorker.mjs";
5
+ import { useCallback as a, useEffect as o, useRef as s } from "react";
6
+ import { DeviceEventEmitter as c, StyleSheet as l, View as u } from "react-native";
7
+ import { WebView as d } from "react-native-webview";
8
+ import { jsx as f } from "react/jsx-runtime";
10
9
  //#region libs/shared/sdk/src/react-native/HinkalWebViewWorker.tsx
11
- var m = `${new URL(Object.values(n)[0]).origin}/`;
12
- t.rnWorkerFactory = (e) => new a(e);
13
- var h = `
10
+ var p = `${new URL(Object.values(t)[0]).origin}/`;
11
+ e.rnWorkerFactory = (e) => new i(e);
12
+ var m = `
14
13
  if (!window.__hinkalPageBoot) (function(){
15
14
  window.__hinkalPageBoot = true;
16
- var URLS = ${JSON.stringify(n)};
15
+ var URLS = ${JSON.stringify(t)};
17
16
  var BLOBS = {};
18
17
 
19
18
  function replacer(_key, value){
@@ -34,18 +33,6 @@ if (!window.__hinkalPageBoot) (function(){
34
33
  var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
35
34
  }
36
35
  function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
37
- function logTiming(requestId, marks, phase, extra){
38
- var now = Date.now();
39
- post({
40
- type: 'TIMING',
41
- requestId: requestId,
42
- phase: phase,
43
- stepMs: now - marks.last,
44
- totalMs: now - marks.start,
45
- extra: extra || null,
46
- });
47
- marks.last = now;
48
- }
49
36
  function describe(error){
50
37
  if (!error) return 'worker error';
51
38
  if (error.message) return error.message;
@@ -53,18 +40,12 @@ if (!window.__hinkalPageBoot) (function(){
53
40
  try { return JSON.stringify(error); } catch(_){ return String(error); }
54
41
  }
55
42
 
56
- async function blobUrl(url, requestId, marks){
57
- if (BLOBS[url]) {
58
- logTiming(requestId, marks, 'blobUrl-cache-hit', { url: url });
59
- return BLOBS[url];
60
- }
61
- logTiming(requestId, marks, 'blobUrl-fetch-start', { url: url });
43
+ async function blobUrl(url){
44
+ if (BLOBS[url]) return BLOBS[url];
62
45
  var response = await fetch(url);
63
46
  if (!response.ok) throw new Error('HTTP ' + response.status + ' ' + url);
64
47
  var body = await response.text();
65
- logTiming(requestId, marks, 'blobUrl-fetch-done', { bytes: body.length });
66
48
  BLOBS[url] = URL.createObjectURL(new Blob([${JSON.stringify("(function(){\n var post = self.postMessage.bind(self);\n function describe(error){\n if (!error) return 'unknown';\n var parts = [];\n if (error.message) parts.push(error.message);\n if (error.error && error.error.stack) parts.push(error.error.stack);\n if (!parts.length) { try { parts.push(JSON.stringify(error)); } catch(_) { parts.push(String(error)); } }\n return parts.join(' | ');\n }\n self.addEventListener('error', function(event){ try { post({ __hinkalWorkerError: describe(event) }); } catch(_){} });\n self.addEventListener('unhandledrejection', function(event){ try { post({ __hinkalWorkerError: 'unhandledrejection: ' + describe(event && event.reason) }); } catch(_){} });\n try { post({ __hinkalWorkerReady: true }); } catch(_){}\n})();")}, body], { type: 'application/javascript' }));
67
- logTiming(requestId, marks, 'blobUrl-created');
68
49
  return BLOBS[url];
69
50
  }
70
51
 
@@ -75,18 +56,12 @@ if (!window.__hinkalPageBoot) (function(){
75
56
  window.handleMessage = async function(envelope){
76
57
  var requestId = envelope && envelope.requestId;
77
58
  var variant = envelope && envelope.variant;
78
- var marks = { start: Date.now(), last: Date.now() };
79
- logTiming(requestId, marks, 'handleMessage-start', { variant: variant });
80
59
  var message = revive(envelope && envelope.message);
81
- logTiming(requestId, marks, 'message-revived');
82
60
  var url = URLS[variant];
83
61
  if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
84
62
 
85
63
  var worker;
86
- try {
87
- worker = spawn(await blobUrl(url, requestId, marks));
88
- logTiming(requestId, marks, 'worker-spawned');
89
- }
64
+ try { worker = spawn(await blobUrl(url)); }
90
65
  catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
91
66
 
92
67
  var done = false, ready = false, pending = message;
@@ -97,24 +72,20 @@ if (!window.__hinkalPageBoot) (function(){
97
72
  if (data && typeof data === 'object') {
98
73
  if (data.__hinkalWorkerReady) {
99
74
  ready = true;
100
- logTiming(requestId, marks, 'worker-ready');
101
- try { worker.postMessage(pending); pending = null; logTiming(requestId, marks, 'worker-payload-sent'); }
75
+ try { worker.postMessage(pending); pending = null; }
102
76
  catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
103
77
  return;
104
78
  }
105
79
  if (typeof data.__hinkalWorkerError === 'string') {
106
- logTiming(requestId, marks, 'worker-error', { error: data.__hinkalWorkerError });
107
80
  post({ requestId: requestId, type: 'ERROR', error: data.__hinkalWorkerError });
108
81
  finish();
109
82
  return;
110
83
  }
111
84
  }
112
- logTiming(requestId, marks, 'worker-result');
113
85
  post({ requestId: requestId, type: 'RESULT', data: data });
114
86
  finish();
115
87
  };
116
88
  worker.onerror = function(event){
117
- logTiming(requestId, marks, 'worker-onerror', { ready: ready });
118
89
  post({ requestId: requestId, type: 'ERROR', error: (ready ? 'worker runtime: ' : 'worker startup: ') + describe(event) });
119
90
  finish();
120
91
  };
@@ -122,98 +93,82 @@ if (!window.__hinkalPageBoot) (function(){
122
93
 
123
94
  post({ type: 'READY' });
124
95
  })();
125
- true;`, g = `<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${h}<\/script></body></html>`, _ = u.create({ hiddenHost: {
96
+ true;`, h = `<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${m}<\/script></body></html>`, g = l.create({ hiddenHost: {
126
97
  position: "absolute",
127
98
  height: 1,
128
99
  width: 1,
129
100
  left: -9999,
130
101
  top: -9999,
131
102
  opacity: 0
132
- } }), v = () => {
133
- let t = c(null), n = c({
103
+ } }), _ = () => {
104
+ let e = s(null), t = s({
134
105
  ready: !1,
135
106
  queue: []
136
- }), a = c(e("webview-host")), u = o((n, i, a) => {
137
- let o = e(`webview-inject:${n}`);
138
- o.log("start", { variant: i });
139
- let s;
107
+ }), i = a((t, r, i) => {
108
+ let a;
140
109
  try {
141
- s = JSON.stringify({
142
- requestId: n,
143
- variant: i,
144
- message: a
145
- }, r), o.log("serialized", { bytes: s.length });
110
+ a = JSON.stringify({
111
+ requestId: t,
112
+ variant: r,
113
+ message: i
114
+ }, n);
146
115
  } catch (e) {
147
- o.log("serialize-failed", { message: e?.message ?? String(e) }), l.emit("FROM_WEBVIEW_WORKER", {
148
- requestId: n,
116
+ c.emit("FROM_WEBVIEW_WORKER", {
117
+ requestId: t,
149
118
  type: "ERROR",
150
119
  error: `serialize failed: ${e?.message ?? e}`
151
120
  });
152
121
  return;
153
122
  }
154
- t.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${s}); true;`), o.log("injectJavaScript-called");
123
+ e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${a}); true;`);
155
124
  }, []);
156
- s(() => {
157
- a.current.log("mount");
158
- let e = l.addListener("TO_WEBVIEW_WORKER", (e) => {
159
- let t = {
125
+ o(() => {
126
+ let e = c.addListener("TO_WEBVIEW_WORKER", (e) => {
127
+ let n = {
160
128
  requestId: e?.__requestId ?? "",
161
129
  variant: e?.variant ?? "",
162
130
  message: e?.message
163
131
  };
164
- n.current.ready ? (a.current.log("TO_WEBVIEW_WORKER-inject", {
165
- requestId: t.requestId,
166
- variant: t.variant
167
- }), u(t.requestId, t.variant, t.message)) : (a.current.log("TO_WEBVIEW_WORKER-queued", {
168
- requestId: t.requestId,
169
- variant: t.variant
170
- }), n.current.queue.push(t));
132
+ t.current.ready ? i(n.requestId, n.variant, n.message) : t.current.queue.push(n);
171
133
  });
172
134
  return () => e.remove();
173
- }, [u]);
174
- let v = o((e) => {
175
- let t;
135
+ }, [i]);
136
+ let l = a((e) => {
137
+ let n;
176
138
  try {
177
- t = i(JSON.parse(e.nativeEvent.data));
139
+ n = r(JSON.parse(e.nativeEvent.data));
178
140
  } catch (e) {
179
- l.emit("FROM_WEBVIEW_WORKER", {
141
+ c.emit("FROM_WEBVIEW_WORKER", {
180
142
  type: "ERROR",
181
143
  error: e?.message ?? "parse error"
182
144
  });
183
145
  return;
184
146
  }
185
- if (t?.type === "READY") {
186
- a.current.log("webview-READY", { queued: n.current.queue.length }), n.current.ready = !0;
187
- let e = n.current.queue;
188
- n.current.queue = [], e.forEach(({ requestId: e, variant: t, message: n }) => u(e, t, n));
189
- return;
190
- }
191
- if (t?.type === "TIMING") {
192
- let e = t.extra ? ` ${JSON.stringify(t.extra)}` : "";
193
- console.log(`[HinkalTiming] [webview:${t.requestId ?? "unknown"}] ${t.phase} +${t.stepMs}ms (total ${t.totalMs}ms)${e}`);
147
+ if (n?.type === "READY") {
148
+ t.current.ready = !0;
149
+ let e = t.current.queue;
150
+ t.current.queue = [], e.forEach(({ requestId: e, variant: t, message: n }) => i(e, t, n));
194
151
  return;
195
152
  }
196
- (t?.type === "RESULT" || t?.type === "ERROR") && a.current.log(`webview-${t.type}`, { requestId: t.requestId }), l.emit("FROM_WEBVIEW_WORKER", t);
197
- }, [u]);
198
- return /* @__PURE__ */ p(d, {
153
+ c.emit("FROM_WEBVIEW_WORKER", n);
154
+ }, [i]);
155
+ return /* @__PURE__ */ f(u, {
199
156
  pointerEvents: "none",
200
- style: _.hiddenHost,
201
- children: /* @__PURE__ */ p(f, {
202
- ref: t,
157
+ style: g.hiddenHost,
158
+ children: /* @__PURE__ */ f(d, {
159
+ ref: e,
203
160
  source: {
204
- html: g,
205
- baseUrl: m
161
+ html: h,
162
+ baseUrl: p
206
163
  },
207
164
  originWhitelist: ["*"],
208
165
  javaScriptEnabled: !0,
209
166
  domStorageEnabled: !0,
210
167
  androidLayerType: "hardware",
211
- onMessage: v,
212
- onLoad: () => {
213
- a.current.log("webview-onLoad"), t.current?.injectJavaScript(h);
214
- }
168
+ onMessage: l,
169
+ onLoad: () => e.current?.injectJavaScript(m)
215
170
  })
216
171
  });
217
172
  };
218
173
  //#endregion
219
- export { v as default };
174
+ export { _ as default };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../common/src/functions/utils/hinkalTiming.utils.cjs`),t=require(`./serialization.utils.cjs`);let n=require(`react-native`);var r=class{onmessage=null;onerror=null;requestId=t.nextRequestId();subscription;timing;constructor(t){this.variant=t,this.timing=e.createHinkalTiming(`rn-worker:${this.requestId}`),this.timing.log(`created`,{variant:t}),this.subscription=n.DeviceEventEmitter.addListener(`FROM_WEBVIEW_WORKER`,e=>{!e||e.requestId!==this.requestId||(e.type===`RESULT`?(this.timing.log(`result-from-webview`),this.onmessage?.({data:e.data})):e.type===`ERROR`&&(this.timing.log(`error-from-webview`,{error:e.error}),this.onerror?.(Error(e.error??`WebView worker error`))))})}postMessage(e){this.timing.log(`postMessage-to-webview`,{variant:this.variant}),n.DeviceEventEmitter.emit(`TO_WEBVIEW_WORKER`,{__requestId:this.requestId,variant:this.variant,message:e})}terminate(){this.subscription?.remove?.(),this.subscription=null}};exports.HinkalRNWorker=r;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`./serialization.utils.cjs`);let t=require(`react-native`);var n=class{onmessage=null;onerror=null;requestId=e.nextRequestId();subscription;constructor(e){this.variant=e,this.subscription=t.DeviceEventEmitter.addListener(`FROM_WEBVIEW_WORKER`,e=>{!e||e.requestId!==this.requestId||(e.type===`RESULT`?this.onmessage?.({data:e.data}):e.type===`ERROR`&&this.onerror?.(Error(e.error??`WebView worker error`)))})}postMessage(e){t.DeviceEventEmitter.emit(`TO_WEBVIEW_WORKER`,{__requestId:this.requestId,variant:this.variant,message:e})}terminate(){this.subscription?.remove?.(),this.subscription=null}};exports.HinkalRNWorker=n;
@@ -7,7 +7,6 @@ export declare class HinkalRNWorker {
7
7
  onerror: ((error: any) => void) | null;
8
8
  private requestId;
9
9
  private subscription;
10
- private timing;
11
10
  constructor(variant: WorkerVariant);
12
11
  postMessage(message: unknown): void;
13
12
  terminate(): void;
@@ -1,20 +1,18 @@
1
- import { createHinkalTiming as e } from "../../common/src/functions/utils/hinkalTiming.utils.mjs";
2
- import { nextRequestId as t } from "./serialization.utils.mjs";
3
- import { DeviceEventEmitter as n } from "react-native";
1
+ import { nextRequestId as e } from "./serialization.utils.mjs";
2
+ import { DeviceEventEmitter as t } from "react-native";
4
3
  //#region libs/shared/sdk/src/react-native/bridge/HinkalRNWorker.ts
5
- var r = class {
4
+ var n = class {
6
5
  onmessage = null;
7
6
  onerror = null;
8
- requestId = t();
7
+ requestId = e();
9
8
  subscription;
10
- timing;
11
- constructor(t) {
12
- this.variant = t, this.timing = e(`rn-worker:${this.requestId}`), this.timing.log("created", { variant: t }), this.subscription = n.addListener("FROM_WEBVIEW_WORKER", (e) => {
13
- !e || e.requestId !== this.requestId || (e.type === "RESULT" ? (this.timing.log("result-from-webview"), this.onmessage?.({ data: e.data })) : e.type === "ERROR" && (this.timing.log("error-from-webview", { error: e.error }), this.onerror?.(Error(e.error ?? "WebView worker error"))));
9
+ constructor(e) {
10
+ this.variant = e, this.subscription = t.addListener("FROM_WEBVIEW_WORKER", (e) => {
11
+ !e || e.requestId !== this.requestId || (e.type === "RESULT" ? this.onmessage?.({ data: e.data }) : e.type === "ERROR" && this.onerror?.(Error(e.error ?? "WebView worker error")));
14
12
  });
15
13
  }
16
14
  postMessage(e) {
17
- this.timing.log("postMessage-to-webview", { variant: this.variant }), n.emit("TO_WEBVIEW_WORKER", {
15
+ t.emit("TO_WEBVIEW_WORKER", {
18
16
  __requestId: this.requestId,
19
17
  variant: this.variant,
20
18
  message: e
@@ -25,4 +23,4 @@ var r = class {
25
23
  }
26
24
  };
27
25
  //#endregion
28
- export { r as HinkalRNWorker };
26
+ export { n as HinkalRNWorker };
@@ -17,12 +17,7 @@ const shim = (name) => ({
17
17
  type: 'sourceFile',
18
18
  });
19
19
 
20
- const isFromHinkalSdk = (originPath) =>
21
- !!originPath &&
22
- (originPath.includes('/@hinkal/sdk/') ||
23
- originPath.includes('/@gurge/sdk/') ||
24
- originPath.includes('node_modules/@hinkal/sdk') ||
25
- originPath.includes('node_modules/@gurge/sdk'));
20
+ const isFromHinkalSdk = (originPath) => !!originPath && originPath.includes('/@hinkal/sdk/');
26
21
 
27
22
  const applyHinkalMetroConfig = (config) => {
28
23
  if (!config || !config.resolver) {
@@ -73,12 +68,10 @@ const applyHinkalMetroConfig = (config) => {
73
68
  if (moduleName === 'circomlibjs-hinkal-fork') return shim('circomlibjs-hinkal-fork');
74
69
  if (moduleName === 'assert') return { filePath: require.resolve('assert/'), type: 'sourceFile' };
75
70
 
76
- // IndexedDB is unavailable on RN; always route idb-keyval through AsyncStorage shim.
77
- if (moduleName === 'idb-keyval') return shim('idb-keyval');
78
-
79
71
  if (isFromHinkalSdk(context.originModulePath)) {
80
72
  if (moduleName === 'multiformats' || moduleName.startsWith('multiformats/')) return shim('multiformats');
81
73
  if (moduleName === 'snarkjs') return shim('snarkjs');
74
+ if (moduleName === 'idb-keyval') return shim('idb-keyval');
82
75
  }
83
76
 
84
77
  if (moduleName.startsWith('node:')) {
@@ -1,15 +1,23 @@
1
- // idb-keyval shim for React Native
1
+ // idb-keyval shim for React Native
2
2
  const AsyncStorage =
3
3
  require("@react-native-async-storage/async-storage").default;
4
4
 
5
5
  const PREFIX = "@hinkal/idb-keyval:";
6
6
  const key = (k) => `${PREFIX}${typeof k === "string" ? k : JSON.stringify(k)}`;
7
7
 
8
+ const replacer = (_key, value) =>
9
+ typeof value === "bigint" ? { __bigint: value.toString() } : value;
10
+
11
+ const reviver = (_key, value) =>
12
+ value && typeof value === "object" && "__bigint" in value
13
+ ? BigInt(value.__bigint)
14
+ : value;
15
+
8
16
  async function get(k) {
9
17
  const raw = await AsyncStorage.getItem(key(k));
10
18
  if (raw == null) return undefined;
11
19
  try {
12
- return JSON.parse(raw);
20
+ return JSON.parse(raw, reviver);
13
21
  } catch {
14
22
  return undefined;
15
23
  }
@@ -20,7 +28,7 @@ async function set(k, value) {
20
28
  await AsyncStorage.removeItem(key(k));
21
29
  return;
22
30
  }
23
- await AsyncStorage.setItem(key(k), JSON.stringify(value));
31
+ await AsyncStorage.setItem(key(k), JSON.stringify(value, replacer));
24
32
  }
25
33
 
26
34
  async function update(k, updater) {
@@ -57,7 +65,6 @@ async function entries() {
57
65
  }
58
66
 
59
67
  function createStore() {
60
- // idb-keyval lets callers create a store with a custom DB name; we ignore it
61
68
  return undefined;
62
69
  }
63
70
 
@@ -1 +1 @@
1
- var e={name:`@gurge/sdk`,version:`0.3.20`,homepage:`hinkal.io`,author:{name:`Hinkal Protocol`},keywords:[`blockchain`,`privacy`,`zero-knowledge`,`stealth addresses`],exports:{".":{types:`./index.d.ts`,"react-native":`./index.cjs`,import:`./index.mjs`,default:`./index.cjs`},"./providers/WagmiProviderAdapter":{types:`./providers/WagmiProviderAdapter.d.ts`,"react-native":`./providers/WagmiProviderAdapter.cjs`,import:`./providers/WagmiProviderAdapter.mjs`,default:`./providers/WagmiProviderAdapter.cjs`},"./providers/EthersProviderAdapter":{types:`./providers/EthersProviderAdapter.d.ts`,"react-native":`./providers/EthersProviderAdapter.cjs`,import:`./providers/EthersProviderAdapter.mjs`,default:`./providers/EthersProviderAdapter.cjs`},"./providers/TronProviderAdapter":{types:`./providers/TronProviderAdapter.d.ts`,"react-native":`./providers/TronProviderAdapter.cjs`,import:`./providers/TronProviderAdapter.mjs`,default:`./providers/TronProviderAdapter.cjs`},"./providers/SolanaProviderAdapter":{types:`./providers/SolanaProviderAdapter.d.ts`,"react-native":`./providers/SolanaProviderAdapter.cjs`,import:`./providers/SolanaProviderAdapter.mjs`,default:`./providers/SolanaProviderAdapter.cjs`},"./providers/prepareEthersHinkal":{types:`./providers/prepareEthersHinkal.d.ts`,"react-native":`./providers/prepareEthersHinkal.cjs`,import:`./providers/prepareEthersHinkal.mjs`,default:`./providers/prepareEthersHinkal.cjs`},"./providers/prepareWagmiHinkal":{types:`./providers/prepareWagmiHinkal.d.ts`,"react-native":`./providers/prepareWagmiHinkal.cjs`,import:`./providers/prepareWagmiHinkal.mjs`,default:`./providers/prepareWagmiHinkal.cjs`},"./providers/prepareTronHinkal":{types:`./providers/prepareTronHinkal.d.ts`,"react-native":`./providers/prepareTronHinkal.cjs`,import:`./providers/prepareTronHinkal.mjs`,default:`./providers/prepareTronHinkal.cjs`},"./providers/prepareSolanaHinkal":{types:`./providers/prepareSolanaHinkal.d.ts`,"react-native":`./providers/prepareSolanaHinkal.cjs`,import:`./providers/prepareSolanaHinkal.mjs`,default:`./providers/prepareSolanaHinkal.cjs`},"./react-native/HinkalWebViewWorker":{types:`./react-native/HinkalWebViewWorker.d.ts`,"react-native":`./react-native/HinkalWebViewWorker.cjs`,import:`./react-native/HinkalWebViewWorker.mjs`,default:`./react-native/HinkalWebViewWorker.cjs`},"./react-native/metro-config":`./react-native/metro-config.js`,"./react-native/shims/*":`./react-native/shims/*`},types:`./index.d.ts`,scripts:{prebuild:`nx prebuild:workers`,build:`nx build`,lint:`nx lint`,test:`nx test`},devDependencies:{nx:`22.6.4`,vite:`^8.0.4`,"vite-plugin-dts":`^4.5.4`,"vite-tsconfig-paths":`^6.1.1`},dependencies:{"@coral-xyz/anchor":`^0.31.0`,"@solana/spl-token":`^0.4.14`,"@solana/web3.js":`^1.98.4`,"@solana/wallet-adapter-react":`^0.15.39`,axios:`^1.15.0`,"async-mutex":`^0.4.0`,bs58:`^6.0.0`,buffer:`6.0.3`,"circomlibjs-hinkal-fork":`^0.0.10`,dotenv:`^16.4.5`,ethers:`^6.15.0`,"idb-keyval":`6.2.1`,multiformats:`^9.4.2`,snarkjs:`0.7.5`,"libsodium-wrappers":`^0.8.2`,lodash:`^4.17.21`,tweetnacl:`^1.0.3`,process:`0.11.10`,"ua-parser-js":`^1.0.37`,uuid:`^9.0.1`,"node-forge":`^1.3.1`,"poseidon-lite":`^0.3.0`,tronweb:`^6.2.0`},peerDependencies:{wagmi:`2.13.3`,"@walletconnect/utils":`^2.17.2`,react:`*`,"react-native":`*`,"react-native-webview":`*`},peerDependenciesMeta:{wagmi:{optional:!0},"@walletconnect/utils":{optional:!0},react:{optional:!0},"react-native":{optional:!0},"react-native-webview":{optional:!0}}};exports.default=e;
1
+ var e={name:`@gurge/sdk`,version:`0.3.21`,homepage:`hinkal.io`,author:{name:`Hinkal Protocol`},keywords:[`blockchain`,`privacy`,`zero-knowledge`,`stealth addresses`],exports:{".":{types:`./index.d.ts`,"react-native":`./index.cjs`,import:`./index.mjs`,default:`./index.cjs`},"./providers/WagmiProviderAdapter":{types:`./providers/WagmiProviderAdapter.d.ts`,"react-native":`./providers/WagmiProviderAdapter.cjs`,import:`./providers/WagmiProviderAdapter.mjs`,default:`./providers/WagmiProviderAdapter.cjs`},"./providers/EthersProviderAdapter":{types:`./providers/EthersProviderAdapter.d.ts`,"react-native":`./providers/EthersProviderAdapter.cjs`,import:`./providers/EthersProviderAdapter.mjs`,default:`./providers/EthersProviderAdapter.cjs`},"./providers/TronProviderAdapter":{types:`./providers/TronProviderAdapter.d.ts`,"react-native":`./providers/TronProviderAdapter.cjs`,import:`./providers/TronProviderAdapter.mjs`,default:`./providers/TronProviderAdapter.cjs`},"./providers/SolanaProviderAdapter":{types:`./providers/SolanaProviderAdapter.d.ts`,"react-native":`./providers/SolanaProviderAdapter.cjs`,import:`./providers/SolanaProviderAdapter.mjs`,default:`./providers/SolanaProviderAdapter.cjs`},"./providers/prepareEthersHinkal":{types:`./providers/prepareEthersHinkal.d.ts`,"react-native":`./providers/prepareEthersHinkal.cjs`,import:`./providers/prepareEthersHinkal.mjs`,default:`./providers/prepareEthersHinkal.cjs`},"./providers/prepareWagmiHinkal":{types:`./providers/prepareWagmiHinkal.d.ts`,"react-native":`./providers/prepareWagmiHinkal.cjs`,import:`./providers/prepareWagmiHinkal.mjs`,default:`./providers/prepareWagmiHinkal.cjs`},"./providers/prepareTronHinkal":{types:`./providers/prepareTronHinkal.d.ts`,"react-native":`./providers/prepareTronHinkal.cjs`,import:`./providers/prepareTronHinkal.mjs`,default:`./providers/prepareTronHinkal.cjs`},"./providers/prepareSolanaHinkal":{types:`./providers/prepareSolanaHinkal.d.ts`,"react-native":`./providers/prepareSolanaHinkal.cjs`,import:`./providers/prepareSolanaHinkal.mjs`,default:`./providers/prepareSolanaHinkal.cjs`},"./react-native/HinkalWebViewWorker":{types:`./react-native/HinkalWebViewWorker.d.ts`,"react-native":`./react-native/HinkalWebViewWorker.cjs`,import:`./react-native/HinkalWebViewWorker.mjs`,default:`./react-native/HinkalWebViewWorker.cjs`},"./react-native/metro-config":`./react-native/metro-config.js`,"./react-native/shims/*":`./react-native/shims/*`},types:`./index.d.ts`,scripts:{prebuild:`nx prebuild:workers`,build:`nx build`,lint:`nx lint`,test:`nx test`},devDependencies:{nx:`22.6.4`,vite:`^8.0.4`,"vite-plugin-dts":`^4.5.4`,"vite-tsconfig-paths":`^6.1.1`},dependencies:{"@coral-xyz/anchor":`^0.31.0`,"@solana/spl-token":`^0.4.14`,"@solana/web3.js":`^1.98.4`,"@solana/wallet-adapter-react":`^0.15.39`,axios:`^1.15.0`,"async-mutex":`^0.4.0`,bs58:`^6.0.0`,buffer:`6.0.3`,"circomlibjs-hinkal-fork":`^0.0.10`,dotenv:`^16.4.5`,ethers:`^6.15.0`,"idb-keyval":`6.2.1`,multiformats:`^9.4.2`,snarkjs:`0.7.5`,"libsodium-wrappers":`^0.8.2`,lodash:`^4.17.21`,tweetnacl:`^1.0.3`,process:`0.11.10`,"ua-parser-js":`^1.0.37`,uuid:`^9.0.1`,"node-forge":`^1.3.1`,"poseidon-lite":`^0.3.0`,tronweb:`^6.2.0`},peerDependencies:{wagmi:`2.13.3`,"@walletconnect/utils":`^2.17.2`,react:`*`,"react-native":`*`,"react-native-webview":`*`},peerDependenciesMeta:{wagmi:{optional:!0},"@walletconnect/utils":{optional:!0},react:{optional:!0},"react-native":{optional:!0},"react-native-webview":{optional:!0}}};exports.default=e;
@@ -1,6 +1,6 @@
1
1
  var e = {
2
2
  name: "@gurge/sdk",
3
- version: "0.3.20",
3
+ version: "0.3.21",
4
4
  homepage: "hinkal.io",
5
5
  author: { name: "Hinkal Protocol" },
6
6
  keywords: [
@@ -1 +0,0 @@
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,18 +0,0 @@
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 = {
9
- start: Date.now(),
10
- last: Date.now()
11
- };
12
- return {
13
- marks: n,
14
- log: (r, i) => t(e, r, n, i)
15
- };
16
- };
17
- //#endregion
18
- export { n as createHinkalTiming };