@kapa123456789/sdk 0.0.66 → 0.0.68
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.
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +10 -10
- package/common/src/error-handling/logger.cjs +1 -1
- package/common/src/error-handling/logger.mjs +7 -15
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +161 -48
- package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/generateZkProof.mjs +6 -1
- package/common/src/functions/web3/functionCalls/constructBatchCall.cjs +1 -1
- package/common/src/functions/web3/functionCalls/constructBatchCall.mjs +6 -27
- package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +145 -42
- package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
- package/common/src/providers/WagmiProviderAdapter.mjs +30 -7
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/utxoWorkerNode.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/package.json +1 -1
- package/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/caseInsensitive.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../error-handling/logger.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../externalABIs/index.cjs`),m=require(`../../functions/utils/tx-confirmation.utils.cjs`),h=require(`../../functions/utils/tronSimulation.utils.cjs`),g=require(`../../functions/web3/functionCalls/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/caseInsensitive.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../error-handling/logger.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../externalABIs/index.cjs`),m=require(`../../functions/utils/tx-confirmation.utils.cjs`),h=require(`../../functions/utils/tronSimulation.utils.cjs`),g=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),_=require(`../../API/admin-calls.cjs`),v=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`);var y=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let a=!1;for(let o=0;o<r;o+=1)if(u.isSameERC20Token(n[o].token,e[i])){n[o].balance+=t[i],a=!0;break}a||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},b=async(e,r,i,o)=>{for(let s=0;s<o.length;s+=1)a.caseInsensitiveEqual(o[s].token.erc20TokenAddress,t.zeroAddress)||await m.waitForEthereumTransactionConfirmation(r,(await e.getContractWithSigner(r,n.ContractType.ERC20Contract,o[s].token.erc20TokenAddress).approve(i,o[s].balance)).hash)},x=async(e,n,r,i)=>{let a=Array.from(i.entries());for(let i=0;i<a.length;i+=1){let[o,s]=a[i],c=await e.contract(p.ERC20ABI,o).allowance(n,r).call({from:n});if(BigInt(String(c))<s){let{transaction:i}=await e.transactionBuilder.triggerSmartContract(o,`approve(address,uint256)`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN},[{type:`address`,value:r},{type:`uint256`,value:s.toString()}],n),a=await e.trx.sign(i),c=await e.trx.sendRawTransaction(a);if(!c.result){let e=c.code??`UNKNOWN`,t=c.message?Buffer.from(c.message,`hex`).toString():`no message`;throw Error(`Tron token approval failed: ${e} - ${t}`)}}}},S=e=>{let t=new Set;e.forEach(({extraRandomization:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})},C=async(n,i,o,s,u)=>{let d=n.getTronWeb(),{hinkalAddress:f}=e.networkRegistry[i].contractData,p=c.evmHexToTronBase58Address(f),m=await n.getEthereumAddressByChain(i),_=o.map(e=>e.erc20TokenAddress),v=o.map(()=>0n),y=0n,b=new Map;for(let e=0;e<o.length;e+=1){let n=c.evmHexToTronBase58Address(o[e].erc20TokenAddress);if(a.caseInsensitiveEqual(o[e].erc20TokenAddress,t.zeroAddress))y+=s[e];else{let t=b.get(n)??0n;b.set(n,t+s[e])}}await x(d,m,p,b),await g.waitForTronErc20Approvals(d,m,p,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t})));let S=u.map(e=>({extraRandomization:e.extraRandomization.toString(),stealthAddress:e.stealthAddress.toString(),H0:e.H0.toString(),H1:e.H1.toString()}));if(await h.simulateTronTransaction(i,p,`prooflessDeposit`,e.networkRegistry[i].contractData.hinkalABI,[_,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])],m,y>0n?y:void 0),y>0n){let n=BigInt(await d.trx.getBalance(m)),a=BigInt(t.TRON_DEFAULT_FEE_LIMIT_SUN);try{let{hinkalABI:t}=e.networkRegistry[i].contractData;if(!t)throw Error(`Hinkal ABI not found`);a=await c.estimateTronFeeSunWithPadding(d,i,p,m,c.createTronCallData(t,`prooflessDeposit`,[_,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])]),y)}catch(e){l.Logger.error(`Error estimating Tron prooflessDeposit fee`,e)}if(n<y+a)throw Error(r.insufficientResourcesErrorCodes.INSUFFICIENT_TRON_BALANCE_FOR_FEE)}let{transaction:C}=await d.transactionBuilder.triggerSmartContract(p,`prooflessDeposit(address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:y>0n?Number(y):0},[{type:`address[]`,value:_},{type:`uint256[]`,value:s.map(String)},{type:`uint256[]`,value:v.map(String)},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:S.map(e=>[e.extraRandomization,e.stealthAddress,e.H0,e.H1])}],m),w=await d.trx.sign(C),T=await d.trx.sendRawTransaction(w);if(!T.result)throw l.Logger.error(`Tron prooflessDeposit broadcast failed`,T),Error(`Tron prooflessDeposit broadcast failed`);let E=typeof T==`string`?T:T?.txid??T?.transaction?.txID;if(!E)throw Error(`Tron prooflessDeposit failed (missing txid)`);return E},w=async(r,c,l,p,m)=>{let h=u.validateAndGetChainId(c),x=e.isTronLike(h),w=await r.getEthereumAddressByChain(h),T=r.userKeys.getShieldedPrivateKey(),E=p??c.map(()=>d.calcStealthAddressStructure(o.Utxo.findCorrectRandomization(i.randomBigInt(31),T),T));if(E.length!==c.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);S(E);let D;if(x)D=await C(r,h,c,l,E);else{let e=r.getContractWithSigner(h,n.ContractType.HinkalContract),i=r.getProviderAdapter(h),o=y(c,l),u=c.reduce((e,n,r)=>a.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+l[r]:e,0n),d=o.filter(({token:e,balance:n})=>!a.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),f;if(d.length>0&&await i.supportsBatchCall?.(h)&&i.sendBatchCallsTransaction){let t=v.buildApproveAndProoflessDepositCalls(d.map(({token:e})=>e.erc20TokenAddress),d.map(({balance:e})=>e),s.getContractAddress(e),e,c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,u);f=await i.sendBatchCallsTransaction(h,t)}else{await b(r,h,s.getContractAddress(e),o);let t=await r.getEthereumAddressByChain(h),n=o.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await g.waitForErc20Approvals(r,h,t,s.getContractAddress(e),n),f=await e.prooflessDeposit(c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,{value:u>0n?u:void 0})}D=f.hash}return _.emitTxPublicData(f.constructAdminData(m,h,c.map(({erc20TokenAddress:e})=>e),l,w)),D};exports.hinkalProoflessDeposit=w;
|
|
@@ -14,9 +14,9 @@ import { constructAdminData as _ } from "../../functions/pre-transaction/constru
|
|
|
14
14
|
import { ERC20ABI as v } from "../../externalABIs/index.mjs";
|
|
15
15
|
import { waitForEthereumTransactionConfirmation as y } from "../../functions/utils/tx-confirmation.utils.mjs";
|
|
16
16
|
import { simulateTronTransaction as b } from "../../functions/utils/tronSimulation.utils.mjs";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
17
|
+
import { waitForErc20Approvals as x, waitForTronErc20Approvals as S } from "../../functions/web3/functionCalls/waitForErc20Approvals.mjs";
|
|
18
|
+
import { emitTxPublicData as C } from "../../API/admin-calls.mjs";
|
|
19
|
+
import { buildApproveAndProoflessDepositCalls as w } from "../../functions/web3/functionCalls/constructBatchCall.mjs";
|
|
20
20
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.ts
|
|
21
21
|
var T = (e, t) => {
|
|
22
22
|
let n = [], r = 0;
|
|
@@ -60,16 +60,16 @@ var T = (e, t) => {
|
|
|
60
60
|
t.add(r);
|
|
61
61
|
});
|
|
62
62
|
}, k = async (e, i, o, c, l) => {
|
|
63
|
-
let m = e.getTronWeb(), { hinkalAddress: h } = t[i].contractData, g = f(h), _ = await e.getEthereumAddressByChain(i), v = o.map((e) => e.erc20TokenAddress), y = o.map(() => 0n), x = 0n,
|
|
63
|
+
let m = e.getTronWeb(), { hinkalAddress: h } = t[i].contractData, g = f(h), _ = await e.getEthereumAddressByChain(i), v = o.map((e) => e.erc20TokenAddress), y = o.map(() => 0n), x = 0n, C = /* @__PURE__ */ new Map();
|
|
64
64
|
for (let e = 0; e < o.length; e += 1) {
|
|
65
65
|
let t = f(o[e].erc20TokenAddress);
|
|
66
66
|
if (s(o[e].erc20TokenAddress, r)) x += c[e];
|
|
67
67
|
else {
|
|
68
|
-
let n =
|
|
69
|
-
|
|
68
|
+
let n = C.get(t) ?? 0n;
|
|
69
|
+
C.set(t, n + c[e]);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
await D(m, _, g,
|
|
72
|
+
await D(m, _, g, C), await S(m, _, g, Array.from(C.entries()).map(([e, t]) => ({
|
|
73
73
|
tokenAddress: e,
|
|
74
74
|
requiredAmount: t
|
|
75
75
|
})));
|
|
@@ -149,7 +149,7 @@ var T = (e, t) => {
|
|
|
149
149
|
else {
|
|
150
150
|
let e = t.getContractWithSigner(f, i.HinkalContract), o = t.getProviderAdapter(f), c = T(n, a), u = n.reduce((e, t, n) => s(t.erc20TokenAddress, r) ? e + a[n] : e, 0n), d = c.filter(({ token: e, balance: t }) => !s(e.erc20TokenAddress, r) && t > 0n), p;
|
|
151
151
|
if (d.length > 0 && await o.supportsBatchCall?.(f) && o.sendBatchCallsTransaction) {
|
|
152
|
-
let t =
|
|
152
|
+
let t = w(d.map(({ token: e }) => e.erc20TokenAddress), d.map(({ balance: e }) => e), l(e), e, n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, u);
|
|
153
153
|
p = await o.sendBatchCallsTransaction(f, t);
|
|
154
154
|
} else {
|
|
155
155
|
await E(t, f, l(e), c);
|
|
@@ -157,11 +157,11 @@ var T = (e, t) => {
|
|
|
157
157
|
tokenAddress: e.erc20TokenAddress,
|
|
158
158
|
requiredAmount: t
|
|
159
159
|
}));
|
|
160
|
-
await
|
|
160
|
+
await x(t, f, r, l(e), i), p = await e.prooflessDeposit(n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, { value: u > 0n ? u : void 0 });
|
|
161
161
|
}
|
|
162
162
|
b = p.hash;
|
|
163
163
|
}
|
|
164
|
-
return
|
|
164
|
+
return C(_(d, f, n.map(({ erc20TokenAddress: e }) => e), a, m)), b;
|
|
165
165
|
};
|
|
166
166
|
//#endregion
|
|
167
167
|
export { A as hinkalProoflessDeposit };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`./logError.cjs`);var t=class{static log(...e){}static logObject(e){}static error(...t){e.logError(t)}};exports.Logger=t;
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { logError as t } from "./logError.mjs";
|
|
1
|
+
import { logError as e } from "./logError.mjs";
|
|
3
2
|
//#region libs/shared/common/src/error-handling/logger.ts
|
|
4
|
-
var
|
|
5
|
-
static log(...
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
e && console.dir(t, {
|
|
10
|
-
depth: null,
|
|
11
|
-
colors: !0
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
static error(...e) {
|
|
15
|
-
t(e);
|
|
3
|
+
var t = class {
|
|
4
|
+
static log(...e) {}
|
|
5
|
+
static logObject(e) {}
|
|
6
|
+
static error(...t) {
|
|
7
|
+
e(t);
|
|
16
8
|
}
|
|
17
9
|
};
|
|
18
10
|
//#endregion
|
|
19
|
-
export {
|
|
11
|
+
export { t as Logger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),ee=require(`../../types/hinkal.types.cjs`),te=require(`../web3/etherFunctions.cjs`),ne=require(`../../data-structures/utxo/Utxo.cjs`),re=require(`../../error-handling/logger.cjs`),n=require(`./common.snarkjs.cjs`),ie=require(`./generateCircomData.cjs`),ae=require(`./generateZkProof.cjs`),oe=require(`../utils/fees.utils.cjs`),r=require(`../../data-structures/Hinkal/hinkalCheckTokenRegistry.cjs`),se=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`);var i=`[constructZkProof]`,a=e=>typeof e==`bigint`?e.toString():e,o=e=>({tokenGroupCount:e.length,groupSizes:e.map(e=>e.length),tokenAddresses:e.map(e=>e[0]?.erc20TokenAddress),amounts:e.map(e=>e.map(e=>e.amount.toString()))}),ce=e=>e?{feeToken:e.feeToken,flatFee:e.flatFee.toString(),variableRate:e.variableRate.toString()}:void 0,s=async(s,le,c,l,u,d,f,p,m,h,g=t.zeroAddress,_=e.chainIds.localhost,v=c.map(()=>!1),y=c.map(()=>0n),b=void 0,x=!1,S,C=void 0,w,T=t.defaultSignatureData,E)=>{console.log(`${i} start`,{chainId:_,verifierName:d,externalActionId:a(f),externalAddress:p,externalActionMetadataLength:m?.length,generateProofRemotely:h,relay:g,patchAccessTokenMerkleTree:x,onChainCreation:v,flatFees:y.map(e=>e.toString()),hasHookData:!!b,hasHinkalHelper:!!w,hasOriginalSender:!!E,inputUtxos:o(c),outputUtxos:o(l)});let D=n.calcAmountChanges(c,l),O=c.map(e=>e[0].erc20TokenAddress),k=n.calcEncryptedOutputs(l);console.log(`${i} derived base values`,{amountChanges:D.map(e=>e.toString()),erc20TokenAddresses:O,encryptedOutputGroupCount:k.length,encryptedOutputSizes:k.map(e=>e.length)});let A=u.getShieldedPrivateKey();console.log(`${i} shielded key ready`,{shieldedPrivateKeyLength:A?.toString()?.length});let j=ne.Utxo.findCorrectRandomization(te.randomBigInt(31),A);console.log(`${i} extra randomization ready`,{extraRandomization:j.toString()});let M=n.calcAmountChanges(c,l,!0);console.log(`${i} token registry check start`,{isTronLike:e.isTronLike(_),erc20TokenAddresses:O,signedAmountChanges:M.map(e=>e.toString())});let N=e.isTronLike(_)?await r.hinkalCheckTronTokenRegistry(O,M,_):await r.hinkalCheckTokenRegistry(w??r.createHinkalHelperFromData(_),O,M);console.log(`${i} token registry check complete`,{kycRequired:N});let P=e.isTronLike(_)?x||N:x;console.log(`${i} effective access token patch flag`,{effectivePatchAccessTokenMerkleTree:P});let F=c.map(e=>e.map(e=>e.getConstructableParams()));console.log(`${i} input utxos serialized`,{serializedGroupCount:F.length,serializedGroupSizes:F.map(e=>e.length)}),console.log(`${i} worker data fetch start`);let{inCommitmentSiblings:I,inCommitmentSiblingSides:L,accessTokenSiblings:R,accessTokenSiblingSides:z,rootHashHinkal:B,rootHashAccessToken:V,inNullifiers:H}=await se.getDataFromWorkers(_,s,le,u,F,P,N);console.log(`${i} worker data fetch complete`,{inNullifierGroupCount:H.length,inNullifierSizes:H.map(e=>e.length),inCommitmentSiblingGroupCount:I.length,inCommitmentSiblingSizes:I.map(e=>e.length),accessTokenSiblingGroupCount:R.length,accessTokenSiblingSizes:R.map(e=>e.length),rootHashHinkal:a(B),rootHashAccessToken:a(V),inCommitmentSiblingSidesGroupCount:L.length,accessTokenSiblingSidesGroupCount:z.length});let U=n.buildOutCommitments(l);console.log(`${i} out commitments built`,{outCommitmentGroupCount:U.length,outCommitmentSizes:U.map(e=>e.length)});let W={rootHashHinkal:B,shieldedPrivateKey:A,erc20TokenAddresses:O,inAmounts:c.map(e=>e.map(e=>e.amount.toString())),inTimeStamps:c.map(e=>e.map(e=>e.timeStamp)),inRandomizations:c.map(e=>e.map(e=>e.randomization)),inNullifiers:H,inCommitmentSiblings:I,inCommitmentSiblingSides:L,outAmounts:l.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(l[0][0].timeStamp),outPublicKeys:l.map(e=>e.map(e=>e.getStealthAddress())),extraRandomization:j,amountChanges:D,outCommitments:U,rootHashAccessToken:V,accessTokenSiblings:R,accessTokenSiblingSides:z,calldataHash:0n};console.log(`${i} proof input prepared`,{inAmountGroupCount:W.inAmounts.length,outAmountGroupCount:W.outAmounts.length,outTimeStamp:W.outTimeStamp.toString(),extraRandomization:W.extraRandomization.toString(),amountChanges:W.amountChanges.map(e=>e.toString())});let G=c.map(e=>e[0].tokenId??0),K=G.reduce((e,t)=>e+t,0)>0?G.length:0;K>0&&(W.tokenIds=G),console.log(`${i} token ids analyzed`,{tokenIds:G,tokenIdsPositive:K});let q=n.calcPublicSignalCount(d,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments,K);console.log(`${i} public signal count ready`,{publicSignalCount:q});let J=ee.defaultHinkalLogicArgs(D.length,u);W.interactionAddress=J.interactionAddress,W.externalApprovalAddresses=J.useApprovalUtxoData?.map(({externalApprovalAddresses:e})=>e),console.log(`${i} hinkal logic args ready`,{interactionAddress:J.interactionAddress,externalApprovalAddressesCount:W.externalApprovalAddresses?.length}),C||=(console.log(`${i} generating fee structure`),oe.generateFeeStructure(y,c.map(e=>e[0].erc20TokenAddress))),console.log(`${i} fee structure ready`,ce(C));let Y=M;console.log(`${i} signed amount changes ready`,{amountChangesBased:Y.map(e=>e.toString())}),S||=(console.log(`${i} generating slippage values`),n.getSlippageValues(Y)),console.log(`${i} slippage values ready`,{slippageValues:S.map(e=>e.toString())}),re.Logger.log({publicSignalCount:q}),console.log(`${i} calldata hash start`),W.calldataHash=n.createCallDataHash(q,g,p,f,m,k,y,b,S,v,J,C,T,E),console.log(`${i} calldata hash complete`,{calldataHash:W.calldataHash.toString()}),console.log(`${i} generateZkProof start`);let{zkCallData:X}=await ae.generateZkProof(_,d,W,h);console.log(`${i} generateZkProof complete`,{aLength:X?.[0]?.length,bOuterLength:X?.[1]?.length,bInnerLengths:X?.[1]?.map(e=>e.length),cLength:X?.[2]?.length,inputLength:X?.[3]?.length});let Z=n.calcStealthAddressStructure(j,A);console.log(`${i} stealth address structure ready`,{extraRandomization:a(Z.extraRandomization),stealthAddress:a(Z.stealthAddress)});let Q=ie.generateCircomData(U,H,B,V,Y,O,l,k,q,f,p,m,g,W.calldataHash,G,Z,v,b,void 0,J,S,C,T,E);console.log(`${i} circom data ready`,{tokenCount:Q.erc20TokenAddresses.length,amountChanges:Q.amountChanges.map(e=>e.toString()),inputNullifierGroupCount:Q.inputNullifiers.length,outCommitmentGroupCount:Q.outCommitments.length,encryptedOutputGroupCount:Q.encryptedOutputs.length,rootHashHinkal:a(Q.rootHashHinkal),rootHashAccessToken:a(Q.rootHashAccessToken),relay:Q.relay,externalAddress:Q.externalAddress,externalActionId:a(Q.externalActionId),calldataHash:a(Q.calldataHash)});let $={tokenNumber:c.length,nullifierAmount:c[0].length,outputAmount:l[0].length};return console.log(`${i} dim data ready`,$),console.log(`${i} complete`),{zkCallData:X,circomData:Q,dimData:$,encryptedOutputs:k}};exports.constructZkProof=s;
|
|
@@ -1,54 +1,167 @@
|
|
|
1
1
|
import { chainIds as e, isTronLike as t } from "../../constants/chains.constants.mjs";
|
|
2
|
-
import { defaultSignatureData as
|
|
3
|
-
import { defaultHinkalLogicArgs as
|
|
4
|
-
import { randomBigInt as
|
|
5
|
-
import { Utxo as
|
|
6
|
-
import { Logger as
|
|
7
|
-
import { buildOutCommitments as
|
|
8
|
-
import { generateCircomData as
|
|
9
|
-
import { generateZkProof as
|
|
10
|
-
import { generateFeeStructure as
|
|
11
|
-
import { createHinkalHelperFromData as
|
|
12
|
-
import { getDataFromWorkers as
|
|
2
|
+
import { defaultSignatureData as ee, zeroAddress as te } from "../../constants/protocol.constants.mjs";
|
|
3
|
+
import { defaultHinkalLogicArgs as ne } from "../../types/hinkal.types.mjs";
|
|
4
|
+
import { randomBigInt as re } from "../web3/etherFunctions.mjs";
|
|
5
|
+
import { Utxo as ie } from "../../data-structures/utxo/Utxo.mjs";
|
|
6
|
+
import { Logger as ae } from "../../error-handling/logger.mjs";
|
|
7
|
+
import { buildOutCommitments as oe, calcAmountChanges as n, calcEncryptedOutputs as se, calcPublicSignalCount as ce, calcStealthAddressStructure as le, createCallDataHash as ue, getSlippageValues as de } from "./common.snarkjs.mjs";
|
|
8
|
+
import { generateCircomData as fe } from "./generateCircomData.mjs";
|
|
9
|
+
import { generateZkProof as r } from "./generateZkProof.mjs";
|
|
10
|
+
import { generateFeeStructure as pe } from "../utils/fees.utils.mjs";
|
|
11
|
+
import { createHinkalHelperFromData as me, hinkalCheckTokenRegistry as he, hinkalCheckTronTokenRegistry as ge } from "../../data-structures/Hinkal/hinkalCheckTokenRegistry.mjs";
|
|
12
|
+
import { getDataFromWorkers as _e } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
13
13
|
//#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
var i = "[constructZkProof]", a = (e) => typeof e == "bigint" ? e.toString() : e, o = (e) => ({
|
|
15
|
+
tokenGroupCount: e.length,
|
|
16
|
+
groupSizes: e.map((e) => e.length),
|
|
17
|
+
tokenAddresses: e.map((e) => e[0]?.erc20TokenAddress),
|
|
18
|
+
amounts: e.map((e) => e.map((e) => e.amount.toString()))
|
|
19
|
+
}), ve = (e) => e ? {
|
|
20
|
+
feeToken: e.feeToken,
|
|
21
|
+
flatFee: e.flatFee.toString(),
|
|
22
|
+
variableRate: e.variableRate.toString()
|
|
23
|
+
} : void 0, s = async (s, ye, c, l, u, d, f, p, m, h, g = te, _ = e.localhost, v = c.map(() => !1), y = c.map(() => 0n), b = void 0, x = !1, S, C = void 0, w, T = ee, E) => {
|
|
24
|
+
console.log(`${i} start`, {
|
|
25
|
+
chainId: _,
|
|
26
|
+
verifierName: d,
|
|
27
|
+
externalActionId: a(f),
|
|
28
|
+
externalAddress: p,
|
|
29
|
+
externalActionMetadataLength: m?.length,
|
|
30
|
+
generateProofRemotely: h,
|
|
31
|
+
relay: g,
|
|
32
|
+
patchAccessTokenMerkleTree: x,
|
|
33
|
+
onChainCreation: v,
|
|
34
|
+
flatFees: y.map((e) => e.toString()),
|
|
35
|
+
hasHookData: !!b,
|
|
36
|
+
hasHinkalHelper: !!w,
|
|
37
|
+
hasOriginalSender: !!E,
|
|
38
|
+
inputUtxos: o(c),
|
|
39
|
+
outputUtxos: o(l)
|
|
40
|
+
});
|
|
41
|
+
let D = n(c, l), O = c.map((e) => e[0].erc20TokenAddress), k = se(l);
|
|
42
|
+
console.log(`${i} derived base values`, {
|
|
43
|
+
amountChanges: D.map((e) => e.toString()),
|
|
44
|
+
erc20TokenAddresses: O,
|
|
45
|
+
encryptedOutputGroupCount: k.length,
|
|
46
|
+
encryptedOutputSizes: k.map((e) => e.length)
|
|
47
|
+
});
|
|
48
|
+
let A = u.getShieldedPrivateKey();
|
|
49
|
+
console.log(`${i} shielded key ready`, { shieldedPrivateKeyLength: A?.toString()?.length });
|
|
50
|
+
let j = ie.findCorrectRandomization(re(31), A);
|
|
51
|
+
console.log(`${i} extra randomization ready`, { extraRandomization: j.toString() });
|
|
52
|
+
let M = n(c, l, !0);
|
|
53
|
+
console.log(`${i} token registry check start`, {
|
|
54
|
+
isTronLike: t(_),
|
|
55
|
+
erc20TokenAddresses: O,
|
|
56
|
+
signedAmountChanges: M.map((e) => e.toString())
|
|
57
|
+
});
|
|
58
|
+
let N = t(_) ? await ge(O, M, _) : await he(w ?? me(_), O, M);
|
|
59
|
+
console.log(`${i} token registry check complete`, { kycRequired: N });
|
|
60
|
+
let P = t(_) ? x || N : x;
|
|
61
|
+
console.log(`${i} effective access token patch flag`, { effectivePatchAccessTokenMerkleTree: P });
|
|
62
|
+
let F = c.map((e) => e.map((e) => e.getConstructableParams()));
|
|
63
|
+
console.log(`${i} input utxos serialized`, {
|
|
64
|
+
serializedGroupCount: F.length,
|
|
65
|
+
serializedGroupSizes: F.map((e) => e.length)
|
|
66
|
+
}), console.log(`${i} worker data fetch start`);
|
|
67
|
+
let { inCommitmentSiblings: I, inCommitmentSiblingSides: L, accessTokenSiblings: R, accessTokenSiblingSides: z, rootHashHinkal: B, rootHashAccessToken: V, inNullifiers: H } = await _e(_, s, ye, u, F, P, N);
|
|
68
|
+
console.log(`${i} worker data fetch complete`, {
|
|
69
|
+
inNullifierGroupCount: H.length,
|
|
70
|
+
inNullifierSizes: H.map((e) => e.length),
|
|
71
|
+
inCommitmentSiblingGroupCount: I.length,
|
|
72
|
+
inCommitmentSiblingSizes: I.map((e) => e.length),
|
|
73
|
+
accessTokenSiblingGroupCount: R.length,
|
|
74
|
+
accessTokenSiblingSizes: R.map((e) => e.length),
|
|
75
|
+
rootHashHinkal: a(B),
|
|
76
|
+
rootHashAccessToken: a(V),
|
|
77
|
+
inCommitmentSiblingSidesGroupCount: L.length,
|
|
78
|
+
accessTokenSiblingSidesGroupCount: z.length
|
|
79
|
+
});
|
|
80
|
+
let U = oe(l);
|
|
81
|
+
console.log(`${i} out commitments built`, {
|
|
82
|
+
outCommitmentGroupCount: U.length,
|
|
83
|
+
outCommitmentSizes: U.map((e) => e.length)
|
|
84
|
+
});
|
|
85
|
+
let W = {
|
|
86
|
+
rootHashHinkal: B,
|
|
87
|
+
shieldedPrivateKey: A,
|
|
88
|
+
erc20TokenAddresses: O,
|
|
89
|
+
inAmounts: c.map((e) => e.map((e) => e.amount.toString())),
|
|
90
|
+
inTimeStamps: c.map((e) => e.map((e) => e.timeStamp)),
|
|
91
|
+
inRandomizations: c.map((e) => e.map((e) => e.randomization)),
|
|
92
|
+
inNullifiers: H,
|
|
93
|
+
inCommitmentSiblings: I,
|
|
94
|
+
inCommitmentSiblingSides: L,
|
|
95
|
+
outAmounts: l.map((e) => e.map((e) => e.amount.toString())),
|
|
96
|
+
outTimeStamp: BigInt(l[0][0].timeStamp),
|
|
97
|
+
outPublicKeys: l.map((e) => e.map((e) => e.getStealthAddress())),
|
|
98
|
+
extraRandomization: j,
|
|
99
|
+
amountChanges: D,
|
|
100
|
+
outCommitments: U,
|
|
101
|
+
rootHashAccessToken: V,
|
|
102
|
+
accessTokenSiblings: R,
|
|
103
|
+
accessTokenSiblingSides: z,
|
|
34
104
|
calldataHash: 0n
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
105
|
+
};
|
|
106
|
+
console.log(`${i} proof input prepared`, {
|
|
107
|
+
inAmountGroupCount: W.inAmounts.length,
|
|
108
|
+
outAmountGroupCount: W.outAmounts.length,
|
|
109
|
+
outTimeStamp: W.outTimeStamp.toString(),
|
|
110
|
+
extraRandomization: W.extraRandomization.toString(),
|
|
111
|
+
amountChanges: W.amountChanges.map((e) => e.toString())
|
|
112
|
+
});
|
|
113
|
+
let G = c.map((e) => e[0].tokenId ?? 0), K = G.reduce((e, t) => e + t, 0) > 0 ? G.length : 0;
|
|
114
|
+
K > 0 && (W.tokenIds = G), console.log(`${i} token ids analyzed`, {
|
|
115
|
+
tokenIds: G,
|
|
116
|
+
tokenIdsPositive: K
|
|
117
|
+
});
|
|
118
|
+
let q = ce(d, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments, K);
|
|
119
|
+
console.log(`${i} public signal count ready`, { publicSignalCount: q });
|
|
120
|
+
let J = ne(D.length, u);
|
|
121
|
+
W.interactionAddress = J.interactionAddress, W.externalApprovalAddresses = J.useApprovalUtxoData?.map(({ externalApprovalAddresses: e }) => e), console.log(`${i} hinkal logic args ready`, {
|
|
122
|
+
interactionAddress: J.interactionAddress,
|
|
123
|
+
externalApprovalAddressesCount: W.externalApprovalAddresses?.length
|
|
124
|
+
}), C ||= (console.log(`${i} generating fee structure`), pe(y, c.map((e) => e[0].erc20TokenAddress))), console.log(`${i} fee structure ready`, ve(C));
|
|
125
|
+
let Y = M;
|
|
126
|
+
console.log(`${i} signed amount changes ready`, { amountChangesBased: Y.map((e) => e.toString()) }), S ||= (console.log(`${i} generating slippage values`), de(Y)), console.log(`${i} slippage values ready`, { slippageValues: S.map((e) => e.toString()) }), ae.log({ publicSignalCount: q }), console.log(`${i} calldata hash start`), W.calldataHash = ue(q, g, p, f, m, k, y, b, S, v, J, C, T, E), console.log(`${i} calldata hash complete`, { calldataHash: W.calldataHash.toString() }), console.log(`${i} generateZkProof start`);
|
|
127
|
+
let { zkCallData: X } = await r(_, d, W, h);
|
|
128
|
+
console.log(`${i} generateZkProof complete`, {
|
|
129
|
+
aLength: X?.[0]?.length,
|
|
130
|
+
bOuterLength: X?.[1]?.length,
|
|
131
|
+
bInnerLengths: X?.[1]?.map((e) => e.length),
|
|
132
|
+
cLength: X?.[2]?.length,
|
|
133
|
+
inputLength: X?.[3]?.length
|
|
134
|
+
});
|
|
135
|
+
let Z = le(j, A);
|
|
136
|
+
console.log(`${i} stealth address structure ready`, {
|
|
137
|
+
extraRandomization: a(Z.extraRandomization),
|
|
138
|
+
stealthAddress: a(Z.stealthAddress)
|
|
139
|
+
});
|
|
140
|
+
let Q = fe(U, H, B, V, Y, O, l, k, q, f, p, m, g, W.calldataHash, G, Z, v, b, void 0, J, S, C, T, E);
|
|
141
|
+
console.log(`${i} circom data ready`, {
|
|
142
|
+
tokenCount: Q.erc20TokenAddresses.length,
|
|
143
|
+
amountChanges: Q.amountChanges.map((e) => e.toString()),
|
|
144
|
+
inputNullifierGroupCount: Q.inputNullifiers.length,
|
|
145
|
+
outCommitmentGroupCount: Q.outCommitments.length,
|
|
146
|
+
encryptedOutputGroupCount: Q.encryptedOutputs.length,
|
|
147
|
+
rootHashHinkal: a(Q.rootHashHinkal),
|
|
148
|
+
rootHashAccessToken: a(Q.rootHashAccessToken),
|
|
149
|
+
relay: Q.relay,
|
|
150
|
+
externalAddress: Q.externalAddress,
|
|
151
|
+
externalActionId: a(Q.externalActionId),
|
|
152
|
+
calldataHash: a(Q.calldataHash)
|
|
153
|
+
});
|
|
154
|
+
let $ = {
|
|
155
|
+
tokenNumber: c.length,
|
|
156
|
+
nullifierAmount: c[0].length,
|
|
157
|
+
outputAmount: l[0].length
|
|
158
|
+
};
|
|
159
|
+
return console.log(`${i} dim data ready`, $), console.log(`${i} complete`), {
|
|
160
|
+
zkCallData: X,
|
|
161
|
+
circomData: Q,
|
|
162
|
+
dimData: $,
|
|
163
|
+
encryptedOutputs: k
|
|
51
164
|
};
|
|
52
165
|
};
|
|
53
166
|
//#endregion
|
|
54
|
-
export {
|
|
167
|
+
export { s as constructZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../error-handling/logger.cjs`),t=require(`./generateZkProofEnclave.cjs`),n=require(`./generateZkProofSelf.cjs`);var r=async(r,i,a,o)=>{if(o)try{return await t.generateZkProofEnclave(r,i,a)}catch(t){e.Logger.error(`enclave proof error`,t)}return n.generateZkProofSelf(r,i,a)};exports.generateZkProof=r;
|
|
1
|
+
const e=require(`../../error-handling/logger.cjs`),t=require(`./generateZkProofEnclave.cjs`),n=require(`./generateZkProofSelf.cjs`);var r=async(r,i,a,o)=>{if(console.log(`generateZkProof`,{chainId:r,verifierName:i,input:a,remotely:o}),o)try{return await t.generateZkProofEnclave(r,i,a)}catch(t){e.Logger.error(`enclave proof error`,t)}return n.generateZkProofSelf(r,i,a)};exports.generateZkProof=r;
|
|
@@ -3,7 +3,12 @@ import { generateZkProofEnclave as t } from "./generateZkProofEnclave.mjs";
|
|
|
3
3
|
import { generateZkProofSelf as n } from "./generateZkProofSelf.mjs";
|
|
4
4
|
//#region libs/shared/common/src/functions/snarkjs/generateZkProof.ts
|
|
5
5
|
var r = async (r, i, a, o) => {
|
|
6
|
-
if (
|
|
6
|
+
if (console.log("generateZkProof", {
|
|
7
|
+
chainId: r,
|
|
8
|
+
verifierName: i,
|
|
9
|
+
input: a,
|
|
10
|
+
remotely: o
|
|
11
|
+
}), o) try {
|
|
7
12
|
return await t(r, i, a);
|
|
8
13
|
} catch (t) {
|
|
9
14
|
e.error("enclave proof error", t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../utils/getContractAddress.cjs`),t=require(`../../../externalABIs/index.cjs`);let n=require(`ethers`);var r=(e,r)=>new n.ethers.Interface(t.ERC20ABI).encodeFunctionData(`approve`,[e,r]),i=(e,t,n,r
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../utils/getContractAddress.cjs`),t=require(`../../../externalABIs/index.cjs`);let n=require(`ethers`);var r=(e,r)=>new n.ethers.Interface(t.ERC20ABI).encodeFunctionData(`approve`,[e,r]),i=(e,t,n,r,i)=>i.encodeFunctionData(`prooflessDeposit`,[e,t,n,r]),a=(e,t,i,a,o,s)=>{let c=[];for(let a=0;a<e.length;a+=1){let o=e[a],s=t[a];o!==n.ethers.ZeroAddress&&s>0n&&c.push({to:o,value:`0x0`,data:r(i,s)})}return c.push({to:a,value:s>0n?`0x${s.toString(16)}`:`0x0`,data:o}),c},o=(t,n,r,o,s,c,l,u,d)=>{let f=i(s,c,l,u,o.interface);return a(t,n,r,e.getContractAddress(o),f,d)};exports.buildApproveAndProoflessDepositCalls=o;
|
|
@@ -2,18 +2,12 @@ import { getContractAddress as e } from "../../utils/getContractAddress.mjs";
|
|
|
2
2
|
import { ERC20ABI as t } from "../../../externalABIs/index.mjs";
|
|
3
3
|
import { ethers as n } from "ethers";
|
|
4
4
|
//#region libs/shared/common/src/functions/web3/functionCalls/constructBatchCall.ts
|
|
5
|
-
var r = (e, r) => new n.Interface(t).encodeFunctionData("approve", [e, r]), i = (e, t, n, r) =>
|
|
6
|
-
e[0],
|
|
7
|
-
e[1],
|
|
8
|
-
e[2],
|
|
9
|
-
t,
|
|
10
|
-
n
|
|
11
|
-
]), a = (e, t, n, r, i) => i.encodeFunctionData("prooflessDeposit", [
|
|
5
|
+
var r = (e, r) => new n.Interface(t).encodeFunctionData("approve", [e, r]), i = (e, t, n, r, i) => i.encodeFunctionData("prooflessDeposit", [
|
|
12
6
|
e,
|
|
13
7
|
t,
|
|
14
8
|
n,
|
|
15
9
|
r
|
|
16
|
-
]),
|
|
10
|
+
]), a = (e, t, i, a, o, s) => {
|
|
17
11
|
let c = [];
|
|
18
12
|
for (let a = 0; a < e.length; a += 1) {
|
|
19
13
|
let o = e[a], s = t[a];
|
|
@@ -28,24 +22,9 @@ var r = (e, r) => new n.Interface(t).encodeFunctionData("approve", [e, r]), i =
|
|
|
28
22
|
value: s > 0n ? `0x${s.toString(16)}` : "0x0",
|
|
29
23
|
data: o
|
|
30
24
|
}), c;
|
|
31
|
-
},
|
|
32
|
-
let f =
|
|
33
|
-
|
|
34
|
-
let i = t[e], s = a[e];
|
|
35
|
-
i !== n.ZeroAddress && s > 0n && f.push({
|
|
36
|
-
to: i,
|
|
37
|
-
value: "0x0",
|
|
38
|
-
data: r(o, s)
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return f.push({
|
|
42
|
-
to: e(s),
|
|
43
|
-
value: d > 0n ? `0x${d.toString(16)}` : "0x0",
|
|
44
|
-
data: i(c, l, u, s.interface)
|
|
45
|
-
}), f;
|
|
46
|
-
}, c = (t, n, r, i, s, c, l, u, d) => {
|
|
47
|
-
let f = a(s, c, l, u, i.interface);
|
|
48
|
-
return o(t, n, r, e(i), f, d);
|
|
25
|
+
}, o = (t, n, r, o, s, c, l, u, d) => {
|
|
26
|
+
let f = i(s, c, l, u, o.interface);
|
|
27
|
+
return a(t, n, r, e(o), f, d);
|
|
49
28
|
};
|
|
50
29
|
//#endregion
|
|
51
|
-
export {
|
|
30
|
+
export { o as buildApproveAndProoflessDepositCalls };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../../types/ethereum-network.types.cjs`),n=require(`../../utils/time.utils.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../../types/ethereum-network.types.cjs`),n=require(`../../utils/time.utils.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./waitForErc20Approvals.cjs`);let s=require(`ethers`);var c=`[transactCallDirect]`,l=e=>typeof e==`bigint`?e.toString():void 0,u=e=>({aLength:e?.[0]?.length,bOuterLength:e?.[1]?.length,bInnerLengths:e?.[1]?.map(e=>e.length),cLength:e?.[2]?.length,inputLength:e?.[3]?.length}),d=e=>({tokenCount:e.erc20TokenAddresses?.length,tokenAddresses:e.erc20TokenAddresses,amountChanges:e.amountChanges?.map(e=>e.toString()),inputNullifierGroupCount:e.inputNullifiers?.length,inputNullifierSizes:e.inputNullifiers?.map(e=>e.length),outCommitmentGroupCount:e.outCommitments?.length,outCommitmentSizes:e.outCommitments?.map(e=>e.length),encryptedOutputGroupCount:e.encryptedOutputs?.length,encryptedOutputSizes:e.encryptedOutputs?.map(e=>e.length),rootHashHinkal:l(e.rootHashHinkal),rootHashAccessToken:l(e.rootHashAccessToken),relay:e.relay,externalAddress:e.externalAddress,externalActionId:l(e.externalActionId),calldataHash:l(e.calldataHash),publicSignalCount:e.publicSignalCount,originalSender:e.originalSender}),f=e=>({hash:`hash`in e?e.hash:void 0,to:e.to,from:e.from,nonce:e.nonce,value:typeof e.value==`bigint`?e.value.toString():e.value,gasLimit:typeof e.gasLimit==`bigint`?e.gasLimit.toString():e.gasLimit,dataLength:typeof e.data==`string`?e.data.length:void 0}),p=async(l,p,m,h,g,_,v,y,b,x=!0,S=!1)=>{console.log(`${c} start`,{chainId:p,preEstimateGas:x,returnTxData:S,amountIsArray:Array.isArray(m),tokenIsArray:Array.isArray(h),zkCallData:u(g),dimData:v,circomData:d(_)});let C=Array.isArray(m)?m:[m],w=Array.isArray(h)?h:[h];if(console.log(`${c} normalized inputs`,{amounts:C.map(e=>e.toString()),tokenAddresses:w.map(({erc20TokenAddress:e})=>e),tokenSymbols:w.map(({symbol:e})=>e)}),C.length!==w.length)throw Error(`token and amount length mismatch`);console.log(`${c} fetching signer contract`);let T=l.getContractWithSigner(p,t.ContractType.HinkalContract);console.log(`${c} signer contract ready`,{hinkalContractAddress:r.getContractAddress(T)}),console.log(`${c} fetching ethereum address`);let E=await l.getEthereumAddressByChain(p);console.log(`${c} ethereum address ready`,{ethereumAddress:E});let D=y??T,O=b??T;console.log(`${c} contracts resolved`,{approvalContractAddress:r.getContractAddress(D),transactionContractAddress:r.getContractAddress(O),usedCustomApprovalContract:!!y,usedCustomTransactionContract:!!b});let k=`transact`,A=w.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),j=w.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),M=A===-1?0n:C[A];console.log(`${c} token analysis`,{ethIndex:A,needsApproval:j,ethAmount:M.toString()}),console.log(`${c} fetching provider adapter`);let N=l.getProviderAdapter(p);if(console.log(`${c} provider adapter ready`,{providerAdapterType:N?.constructor?.name}),console.log(`${c} checking batch support`),!S&&(console.log(`${c} approving tokens start`),await a.approveTokensToHinkal(l,p,D,w,C),console.log(`${c} approving tokens complete`),j)){let e=w.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:C[t]}));console.log(`${c} waiting for approvals start`,{ownerAddress:E,spenderAddress:r.getContractAddress(D),requirements:e.map(({tokenAddress:e,requiredAmount:t})=>({tokenAddress:e,requiredAmount:t.toString()}))}),await o.waitForErc20Approvals(l,p,E,r.getContractAddress(D),e),console.log(`${c} waiting for approvals complete`)}let P={value:M>0n?BigInt(M).toString():void 0,gasLimit:void 0};console.log(`${c} overrides prepared`,P);let F,I=[g[0],g[1],g[2],v,_,{...P,from:E}];console.log(`${c} call data prepared`,{method:k,dimData:v,transactionContractAddress:r.getContractAddress(O),from:E,value:P.value,zkCallData:u(g)});let{runner:L}=O;if(console.log(`${c} runner resolved`,{runnerType:L?.constructor?.name,hasProvider:!!L?.provider}),!(L instanceof s.ethers.AbstractSigner))throw console.log(`${c} runner is not a signer`,{runnerType:L?.constructor?.name}),Error(`expected signer`);if(x){console.log(`${c} estimateGas start`);try{F=Number(await O[k].estimateGas(...I)),console.log(`${c} estimateGas success`,{gasCosts:F})}catch(e){console.log(`${c} estimateGas error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,reason:e?.reason,data:e?.data,error:e})}}else console.log(`${c} estimateGas skipped`);let R=F&&F>=0?Math.ceil(F*12/10):void 0;R&&(I[5].gasLimit=R),console.log(`${c} gas configuration final`,{gasCosts:F,extendedGasCosts:R,finalOverrides:I[5]}),console.log(`${c} waitLittle start`),await n.waitLittle(),console.log(`${c} waitLittle complete`);let z;try{S?(console.log(`${c} populateTransaction start`),z=await O[k].populateTransaction(...I),console.log(`${c} populateTransaction success`,f(z))):(console.log(`${c} contract call start`),z=await O[k](...I),console.log(`${c} contract call success`,f(z)))}catch(e){if(console.log(`${c} contract call error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,reason:e?.reason,transactionHash:e?.transactionHash,data:e?.data,error:e}),!e?.transactionHash)throw e;console.log(`${c} recoverTransactionFromError start`,{transactionHash:e.transactionHash});let t=await i.recoverTransactionFromError(L.provider,e.transactionHash);if(!t)throw console.log(`${c} recoverTransactionFromError failed`),e;console.log(`${c} recoverTransactionFromError success`,f(t)),z=t}return console.log(`${c} complete`,f(z)),z};exports.transactCallDirect=p;
|
|
@@ -4,57 +4,160 @@ import { waitLittle as n } from "../../utils/time.utils.mjs";
|
|
|
4
4
|
import { getContractAddress as r } from "../../utils/getContractAddress.mjs";
|
|
5
5
|
import { recoverTransactionFromError as i } from "./recoverTransactionFromError.mjs";
|
|
6
6
|
import { approveTokensToHinkal as a } from "./approveTokensToHinkal.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { ethers as c } from "ethers";
|
|
7
|
+
import { waitForErc20Approvals as o } from "./waitForErc20Approvals.mjs";
|
|
8
|
+
import { ethers as s } from "ethers";
|
|
10
9
|
//#region libs/shared/common/src/functions/web3/functionCalls/transactCallDirect.ts
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
var c = "[transactCallDirect]", l = (e) => typeof e == "bigint" ? e.toString() : void 0, u = (e) => ({
|
|
11
|
+
aLength: e?.[0]?.length,
|
|
12
|
+
bOuterLength: e?.[1]?.length,
|
|
13
|
+
bInnerLengths: e?.[1]?.map((e) => e.length),
|
|
14
|
+
cLength: e?.[2]?.length,
|
|
15
|
+
inputLength: e?.[3]?.length
|
|
16
|
+
}), d = (e) => ({
|
|
17
|
+
tokenCount: e.erc20TokenAddresses?.length,
|
|
18
|
+
tokenAddresses: e.erc20TokenAddresses,
|
|
19
|
+
amountChanges: e.amountChanges?.map((e) => e.toString()),
|
|
20
|
+
inputNullifierGroupCount: e.inputNullifiers?.length,
|
|
21
|
+
inputNullifierSizes: e.inputNullifiers?.map((e) => e.length),
|
|
22
|
+
outCommitmentGroupCount: e.outCommitments?.length,
|
|
23
|
+
outCommitmentSizes: e.outCommitments?.map((e) => e.length),
|
|
24
|
+
encryptedOutputGroupCount: e.encryptedOutputs?.length,
|
|
25
|
+
encryptedOutputSizes: e.encryptedOutputs?.map((e) => e.length),
|
|
26
|
+
rootHashHinkal: l(e.rootHashHinkal),
|
|
27
|
+
rootHashAccessToken: l(e.rootHashAccessToken),
|
|
28
|
+
relay: e.relay,
|
|
29
|
+
externalAddress: e.externalAddress,
|
|
30
|
+
externalActionId: l(e.externalActionId),
|
|
31
|
+
calldataHash: l(e.calldataHash),
|
|
32
|
+
publicSignalCount: e.publicSignalCount,
|
|
33
|
+
originalSender: e.originalSender
|
|
34
|
+
}), f = (e) => ({
|
|
35
|
+
hash: "hash" in e ? e.hash : void 0,
|
|
36
|
+
to: e.to,
|
|
37
|
+
from: e.from,
|
|
38
|
+
nonce: e.nonce,
|
|
39
|
+
value: typeof e.value == "bigint" ? e.value.toString() : e.value,
|
|
40
|
+
gasLimit: typeof e.gasLimit == "bigint" ? e.gasLimit.toString() : e.gasLimit,
|
|
41
|
+
dataLength: typeof e.data == "string" ? e.data.length : void 0
|
|
42
|
+
}), p = async (l, p, m, h, g, _, v, y, b, x = !0, S = !1) => {
|
|
43
|
+
console.log(`${c} start`, {
|
|
44
|
+
chainId: p,
|
|
45
|
+
preEstimateGas: x,
|
|
46
|
+
returnTxData: S,
|
|
47
|
+
amountIsArray: Array.isArray(m),
|
|
48
|
+
tokenIsArray: Array.isArray(h),
|
|
49
|
+
zkCallData: u(g),
|
|
50
|
+
dimData: v,
|
|
51
|
+
circomData: d(_)
|
|
52
|
+
});
|
|
53
|
+
let C = Array.isArray(m) ? m : [m], w = Array.isArray(h) ? h : [h];
|
|
54
|
+
if (console.log(`${c} normalized inputs`, {
|
|
55
|
+
amounts: C.map((e) => e.toString()),
|
|
56
|
+
tokenAddresses: w.map(({ erc20TokenAddress: e }) => e),
|
|
57
|
+
tokenSymbols: w.map(({ symbol: e }) => e)
|
|
58
|
+
}), C.length !== w.length) throw Error("token and amount length mismatch");
|
|
59
|
+
console.log(`${c} fetching signer contract`);
|
|
60
|
+
let T = l.getContractWithSigner(p, t.HinkalContract);
|
|
61
|
+
console.log(`${c} signer contract ready`, { hinkalContractAddress: r(T) }), console.log(`${c} fetching ethereum address`);
|
|
62
|
+
let E = await l.getEthereumAddressByChain(p);
|
|
63
|
+
console.log(`${c} ethereum address ready`, { ethereumAddress: E });
|
|
64
|
+
let D = y ?? T, O = b ?? T;
|
|
65
|
+
console.log(`${c} contracts resolved`, {
|
|
66
|
+
approvalContractAddress: r(D),
|
|
67
|
+
transactionContractAddress: r(O),
|
|
68
|
+
usedCustomApprovalContract: !!y,
|
|
69
|
+
usedCustomTransactionContract: !!b
|
|
70
|
+
});
|
|
71
|
+
let k = "transact", A = w.findIndex(({ erc20TokenAddress: t }) => t === e), j = w.some(({ erc20TokenAddress: t }) => t !== e), M = A === -1 ? 0n : C[A];
|
|
72
|
+
console.log(`${c} token analysis`, {
|
|
73
|
+
ethIndex: A,
|
|
74
|
+
needsApproval: j,
|
|
75
|
+
ethAmount: M.toString()
|
|
76
|
+
}), console.log(`${c} fetching provider adapter`);
|
|
77
|
+
let N = l.getProviderAdapter(p);
|
|
78
|
+
if (console.log(`${c} provider adapter ready`, { providerAdapterType: N?.constructor?.name }), console.log(`${c} checking batch support`), !S && (console.log(`${c} approving tokens start`), await a(l, p, D, w, C), console.log(`${c} approving tokens complete`), j)) {
|
|
79
|
+
let e = w.map(({ erc20TokenAddress: e }, t) => ({
|
|
21
80
|
tokenAddress: e,
|
|
22
|
-
requiredAmount:
|
|
81
|
+
requiredAmount: C[t]
|
|
23
82
|
}));
|
|
24
|
-
|
|
83
|
+
console.log(`${c} waiting for approvals start`, {
|
|
84
|
+
ownerAddress: E,
|
|
85
|
+
spenderAddress: r(D),
|
|
86
|
+
requirements: e.map(({ tokenAddress: e, requiredAmount: t }) => ({
|
|
87
|
+
tokenAddress: e,
|
|
88
|
+
requiredAmount: t.toString()
|
|
89
|
+
}))
|
|
90
|
+
}), await o(l, p, E, r(D), e), console.log(`${c} waiting for approvals complete`);
|
|
25
91
|
}
|
|
26
|
-
let
|
|
27
|
-
value:
|
|
92
|
+
let P = {
|
|
93
|
+
value: M > 0n ? BigInt(M).toString() : void 0,
|
|
28
94
|
gasLimit: void 0
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
95
|
+
};
|
|
96
|
+
console.log(`${c} overrides prepared`, P);
|
|
97
|
+
let F, I = [
|
|
98
|
+
g[0],
|
|
99
|
+
g[1],
|
|
100
|
+
g[2],
|
|
101
|
+
v,
|
|
102
|
+
_,
|
|
35
103
|
{
|
|
36
|
-
...
|
|
37
|
-
from:
|
|
104
|
+
...P,
|
|
105
|
+
from: E
|
|
38
106
|
}
|
|
39
|
-
]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let L;
|
|
107
|
+
];
|
|
108
|
+
console.log(`${c} call data prepared`, {
|
|
109
|
+
method: k,
|
|
110
|
+
dimData: v,
|
|
111
|
+
transactionContractAddress: r(O),
|
|
112
|
+
from: E,
|
|
113
|
+
value: P.value,
|
|
114
|
+
zkCallData: u(g)
|
|
115
|
+
});
|
|
116
|
+
let { runner: L } = O;
|
|
117
|
+
if (console.log(`${c} runner resolved`, {
|
|
118
|
+
runnerType: L?.constructor?.name,
|
|
119
|
+
hasProvider: !!L?.provider
|
|
120
|
+
}), !(L instanceof s.AbstractSigner)) throw console.log(`${c} runner is not a signer`, { runnerType: L?.constructor?.name }), Error("expected signer");
|
|
121
|
+
if (x) {
|
|
122
|
+
console.log(`${c} estimateGas start`);
|
|
123
|
+
try {
|
|
124
|
+
F = Number(await O[k].estimateGas(...I)), console.log(`${c} estimateGas success`, { gasCosts: F });
|
|
125
|
+
} catch (e) {
|
|
126
|
+
console.log(`${c} estimateGas error`, {
|
|
127
|
+
message: e?.message,
|
|
128
|
+
code: e?.code,
|
|
129
|
+
shortMessage: e?.shortMessage,
|
|
130
|
+
reason: e?.reason,
|
|
131
|
+
data: e?.data,
|
|
132
|
+
error: e
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
} else console.log(`${c} estimateGas skipped`);
|
|
136
|
+
let R = F && F >= 0 ? Math.ceil(F * 12 / 10) : void 0;
|
|
137
|
+
R && (I[5].gasLimit = R), console.log(`${c} gas configuration final`, {
|
|
138
|
+
gasCosts: F,
|
|
139
|
+
extendedGasCosts: R,
|
|
140
|
+
finalOverrides: I[5]
|
|
141
|
+
}), console.log(`${c} waitLittle start`), await n(), console.log(`${c} waitLittle complete`);
|
|
142
|
+
let z;
|
|
49
143
|
try {
|
|
50
|
-
|
|
144
|
+
S ? (console.log(`${c} populateTransaction start`), z = await O[k].populateTransaction(...I), console.log(`${c} populateTransaction success`, f(z))) : (console.log(`${c} contract call start`), z = await O[k](...I), console.log(`${c} contract call success`, f(z)));
|
|
51
145
|
} catch (e) {
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
146
|
+
if (console.log(`${c} contract call error`, {
|
|
147
|
+
message: e?.message,
|
|
148
|
+
code: e?.code,
|
|
149
|
+
shortMessage: e?.shortMessage,
|
|
150
|
+
reason: e?.reason,
|
|
151
|
+
transactionHash: e?.transactionHash,
|
|
152
|
+
data: e?.data,
|
|
153
|
+
error: e
|
|
154
|
+
}), !e?.transactionHash) throw e;
|
|
155
|
+
console.log(`${c} recoverTransactionFromError start`, { transactionHash: e.transactionHash });
|
|
156
|
+
let t = await i(L.provider, e.transactionHash);
|
|
157
|
+
if (!t) throw console.log(`${c} recoverTransactionFromError failed`), e;
|
|
158
|
+
console.log(`${c} recoverTransactionFromError success`, f(t)), z = t;
|
|
56
159
|
}
|
|
57
|
-
return
|
|
160
|
+
return console.log(`${c} complete`, f(z)), z;
|
|
58
161
|
};
|
|
59
162
|
//#endregion
|
|
60
|
-
export {
|
|
163
|
+
export { p as transactCallDirect };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../types/eip5792.types.cjs`),n=require(`../error-handling/error-codes.constants.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{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(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(t){if(t instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=n.transactionErrorCodes.CONNECTION_FAILED;throw t?.code===4001&&(r=n.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,t,r){if((await this.fetchProviders[e]?.waitForTransaction(t,r))?.status)return!0;throw Error(n.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let t=await(0,c.signMessage)(this.config,{message:e});if(!t)throw Error(n.transactionErrorCodes.SIGNING_FAILED);if(t.includes(`error`))throw Error(n.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return t}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(e){if(!this.config)throw Error(`No Config In Provider Adapter`);return(0,c.switchChain)(this.config,{chainId:e.chainId})}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}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(r).getSigner(n)}async supportsBatchCall(e){if(
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../types/eip5792.types.cjs`),n=require(`../error-handling/error-codes.constants.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{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(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(t){if(t instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=n.transactionErrorCodes.CONNECTION_FAILED;throw t?.code===4001&&(r=n.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,t,r){if((await this.fetchProviders[e]?.waitForTransaction(t,r))?.status)return!0;throw Error(n.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let t=await(0,c.signMessage)(this.config,{message:e});if(!t)throw Error(n.transactionErrorCodes.SIGNING_FAILED);if(t.includes(`error`))throw Error(n.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return t}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(e){if(!this.config)throw Error(`No Config In Provider Adapter`);return(0,c.switchChain)(this.config,{chainId:e.chainId})}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}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(r).getSigner(n)}async supportsBatchCall(e){let t=`[WagmiProviderAdapter.supportsBatchCall]`;if(r.Logger.log(`${t} start`,{chainId:e,hasOriginalProvider:!!this.originalProvider,adapterChainId:this.chainId}),!this.originalProvider)return r.Logger.log(`${t} no original provider`),!1;try{r.Logger.log(`${t} resolving user address`);let n=await this.getAddress();r.Logger.log(`${t} user address resolved`,{userAddress:n});let i=`0x${e.toString(16)}`;r.Logger.log(`${t} chain id hex`,{chainIdHex:i}),r.Logger.log(`${t} wallet_getCapabilities start`);let a=await this.originalProvider.send(`wallet_getCapabilities`,[n,[i]]);r.Logger.log(`${t} wallet_getCapabilities success`,{capabilityKeys:a?Object.keys(a):void 0,capabilities:a});let o=a?.[i]||a?.[`0x0`];if(r.Logger.log(`${t} chain capabilities resolved`,{chainCapabilities:o}),!o?.atomic)return r.Logger.log(`${t} atomic capability missing or falsy`),!1;let s=typeof o.atomic==`string`?o.atomic:o.atomic?.status;r.Logger.log(`${t} atomic capability parsed`,{atomicValue:s});let c=s===`supported`||s===`ready`;return r.Logger.log(`${t} complete`,{isSupported:c}),c}catch(e){return r.Logger.log(`${t} error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,data:e?.data,error:e}),!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let n=0;n<60;n+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let n=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(n.status===t.CallsStatus.Confirmed&&n.receipts?.[0]?.transactionHash)return n.receipts[0].transactionHash;if(n.status===t.CallsStatus.OffchainFailure||n.status===t.CallsStatus.ChainFailure||n.status===t.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(e,t){if(!this.fetchProviders[e])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let n=await this.getAddress(),r={version:`2.0.0`,chainId:`0x${e.toString(16)}`,from:n,atomicRequired:!0,calls:t},i=await this.originalProvider.send(`wallet_sendCalls`,[r]),a=i?.id||i;if(!a||typeof a!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let o=await this.waitForBatchTransactionStatus(a),s=await this.fetchProviders[e].getTransaction(o);if(!s)throw Error(`Transaction not found`);return s}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
|
|
@@ -143,14 +143,37 @@ var y = class {
|
|
|
143
143
|
return new l.BrowserProvider(r).getSigner(n);
|
|
144
144
|
}
|
|
145
145
|
async supportsBatchCall(e) {
|
|
146
|
-
|
|
146
|
+
let t = "[WagmiProviderAdapter.supportsBatchCall]";
|
|
147
|
+
if (o.log(`${t} start`, {
|
|
148
|
+
chainId: e,
|
|
149
|
+
hasOriginalProvider: !!this.originalProvider,
|
|
150
|
+
adapterChainId: this.chainId
|
|
151
|
+
}), !this.originalProvider) return o.log(`${t} no original provider`), !1;
|
|
147
152
|
try {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
o.log(`${t} resolving user address`);
|
|
154
|
+
let n = await this.getAddress();
|
|
155
|
+
o.log(`${t} user address resolved`, { userAddress: n });
|
|
156
|
+
let r = `0x${e.toString(16)}`;
|
|
157
|
+
o.log(`${t} chain id hex`, { chainIdHex: r }), o.log(`${t} wallet_getCapabilities start`);
|
|
158
|
+
let i = await this.originalProvider.send("wallet_getCapabilities", [n, [r]]);
|
|
159
|
+
o.log(`${t} wallet_getCapabilities success`, {
|
|
160
|
+
capabilityKeys: i ? Object.keys(i) : void 0,
|
|
161
|
+
capabilities: i
|
|
162
|
+
});
|
|
163
|
+
let a = i?.[r] || i?.["0x0"];
|
|
164
|
+
if (o.log(`${t} chain capabilities resolved`, { chainCapabilities: a }), !a?.atomic) return o.log(`${t} atomic capability missing or falsy`), !1;
|
|
165
|
+
let s = typeof a.atomic == "string" ? a.atomic : a.atomic?.status;
|
|
166
|
+
o.log(`${t} atomic capability parsed`, { atomicValue: s });
|
|
167
|
+
let c = s === "supported" || s === "ready";
|
|
168
|
+
return o.log(`${t} complete`, { isSupported: c }), c;
|
|
169
|
+
} catch (e) {
|
|
170
|
+
return o.log(`${t} error`, {
|
|
171
|
+
message: e?.message,
|
|
172
|
+
code: e?.code,
|
|
173
|
+
shortMessage: e?.shortMessage,
|
|
174
|
+
data: e?.data,
|
|
175
|
+
error: e
|
|
176
|
+
}), !1;
|
|
154
177
|
}
|
|
155
178
|
}
|
|
156
179
|
async waitForBatchTransactionStatus(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-
|
|
1
|
+
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region libs/shared/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url
|
|
2
|
-
var e = "" + new URL("../../../../assets/utxoWorkerLauncher-
|
|
2
|
+
var e = "" + new URL("../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js", import.meta.url).href;
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./workerProxy-Cr4zT_SW.js`),t=require(`./logError-DlIdq8zv.js`);let n=require(`worker_threads`),r=require(`buffer`);var i=new Uint8Array(32),a=[`then`],o={},s=new WeakMap;function c(e){return s.get(e)}function l(e,t){s.set(e,t)}function u(e,t){let n=Error(`deferred error during ABI decoding triggered accessing ${e}`);throw n.error=t,n}function d(e,t,n){return e.indexOf(null)>=0?t.map((e,t)=>e instanceof f?d(c(e),e,n):e):e.reduce((e,r,i)=>{let a=t.getValue(r);return r in e||(n&&a instanceof f&&(a=d(c(a),a,n)),e[r]=a),e},{})}var f=class e extends Array{#e;constructor(...e){let n=e[0],r=e[1],i=(e[2]||[]).slice(),s=!0;n!==o&&(r=e,i=[],s=!1),super(r.length),r.forEach((e,t)=>{this[t]=e});let d=i.reduce((e,t)=>(typeof t==`string`&&e.set(t,(e.get(t)||0)+1),e),new Map);if(l(this,Object.freeze(r.map((e,t)=>{let n=i[t];return n!=null&&d.get(n)===1?n:null}))),this.#e=[],this.#e??this.#e,!s)return;Object.freeze(this);let f=new Proxy(this,{get:(e,n,r)=>{if(typeof n==`string`){if(n.match(/^[0-9]+$/)){let r=t.v(n,`%index`);if(r<0||r>=this.length)throw RangeError(`out of result range`);let i=e[r];return i instanceof Error&&u(`index ${r}`,i),i}if(a.indexOf(n)>=0)return Reflect.get(e,n,r);let i=e[n];if(i instanceof Function)return function(...t){return i.apply(this===r?e:this,t)};if(!(n in e))return e.getValue.apply(this===r?e:this,[n])}return Reflect.get(e,n,r)}});return l(f,c(this)),f}toArray(t){let n=[];return this.forEach((r,i)=>{r instanceof Error&&u(`index ${i}`,r),t&&r instanceof e&&(r=r.toArray(t)),n.push(r)}),n}toObject(e){let n=c(this);return n.reduce((r,i,a)=>(t.k(i!=null,`value at index ${a} unnamed`,`UNSUPPORTED_OPERATION`,{operation:`toObject()`}),d(n,this,e)),{})}slice(t,n){t??=0,t<0&&(t+=this.length,t<0&&(t=0)),n??=this.length,n<0&&(n+=this.length,n<0&&(n=0)),n>this.length&&(n=this.length);let r=c(this),i=[],a=[];for(let e=t;e<n;e++)i.push(this[e]),a.push(r[e]);return new e(o,i,a)}filter(t,n){let r=c(this),i=[],a=[];for(let e=0;e<this.length;e++){let o=this[e];o instanceof Error&&u(`index ${e}`,o),t.call(n,o,e,this)&&(i.push(o),a.push(r[e]))}return new e(o,i,a)}map(e,t){let n=[];for(let r=0;r<this.length;r++){let i=this[r];i instanceof Error&&u(`index ${r}`,i),n.push(e.call(t,i,r,this))}return n}getValue(e){let t=c(this).indexOf(e);if(t===-1)return;let n=this[t];return n instanceof Error&&u(`property ${JSON.stringify(e)}`,n.error),n}static fromItems(t,n){return new e(o,t,n)}};function p(e){let n=t.b(e);return t.k(n.length<=32,`value out-of-bounds`,`BUFFER_OVERRUN`,{buffer:n,length:32,offset:n.length}),n.length!==32&&(n=t.D(t.T([i.slice(n.length%32),n]))),n}var m=class{name;type;localName;dynamic;constructor(e,n,r,i){t.F(this,{name:e,type:n,localName:r,dynamic:i},{name:`string`,type:`string`,localName:`string`,dynamic:`boolean`})}_throwError(e,n){t.A(!1,e,this.localName,n)}},h=class{#e;#t;constructor(){this.#e=[],this.#t=0}get data(){return t.T(this.#e)}get length(){return this.#t}#n(e){return this.#e.push(e),this.#t+=e.length,e.length}appendWriter(e){return this.#n(t.D(e.data))}writeBytes(e){let n=t.D(e),r=n.length%32;return r&&(n=t.D(t.T([n,i.slice(r)]))),this.#n(n)}writeValue(e){return this.#n(p(e))}writeUpdatableValue(){let e=this.#e.length;return this.#e.push(i),this.#t+=32,t=>{this.#e[e]=p(t)}}},g=class e{allowLoose;#e;#t;#n;#r;#i;constructor(e,n,r){t.F(this,{allowLoose:!!n}),this.#e=t.D(e),this.#n=0,this.#r=null,this.#i=r??1024,this.#t=0}get data(){return t.O(this.#e)}get dataLength(){return this.#e.length}get consumed(){return this.#t}get bytes(){return new Uint8Array(this.#e)}#a(e){if(this.#r)return this.#r.#a(e);this.#n+=e,t.k(this.#i<1||this.#n<=this.#i*this.dataLength,`compressed ABI data exceeds inflation ratio of ${this.#i} ( see: https:/\/github.com/ethers-io/ethers.js/issues/4537 )`,`BUFFER_OVERRUN`,{buffer:t.D(this.#e),offset:this.#t,length:e,info:{bytesRead:this.#n,dataLength:this.dataLength}})}#o(e,n,r){let i=Math.ceil(n/32)*32;return this.#t+i>this.#e.length&&(this.allowLoose&&r&&this.#t+n<=this.#e.length?i=n:t.k(!1,`data out-of-bounds`,`BUFFER_OVERRUN`,{buffer:t.D(this.#e),length:this.#e.length,offset:this.#t+i})),this.#e.slice(this.#t,this.#t+i)}subReader(t){let n=new e(this.#e.slice(this.#t+t),this.allowLoose,this.#i);return n.#r=this,n}readBytes(e,t){let n=this.#o(0,e,!!t);return this.#a(e),this.#t+=n.length,n.slice(0,e)}readValue(){return t.S(this.readBytes(32))}readIndex(){return t.C(this.readBytes(32))}},_={};function v(e,t){let n=!1;return t<0&&(n=!0,t*=-1),new x(_,`${n?``:`u`}int${t}`,e,{signed:n,width:t})}function y(e,t){return new x(_,`bytes${t||``}`,e,{size:t})}var b=Symbol.for(`_ethers_typed`),x=class e{type;value;#e;_typedSymbol;constructor(e,n,r,i){i??=null,t.M(_,e,`Typed`),t.F(this,{_typedSymbol:b,type:n,value:r}),this.#e=i,this.format()}format(){if(this.type===`array`||this.type===`dynamicArray`)throw Error(``);return this.type===`tuple`?`tuple(${this.value.map(e=>e.format()).join(`,`)})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith(`bytes`)}isString(){return this.type===`string`}get tupleName(){if(this.type!==`tuple`)throw TypeError(`not a tuple`);return this.#e}get arrayLength(){if(this.type!==`array`)throw TypeError(`not an array`);return this.#e===!0?-1:this.#e===!1?this.value.length:null}static from(t,n){return new e(_,t,n)}static uint8(e){return v(e,8)}static uint16(e){return v(e,16)}static uint24(e){return v(e,24)}static uint32(e){return v(e,32)}static uint40(e){return v(e,40)}static uint48(e){return v(e,48)}static uint56(e){return v(e,56)}static uint64(e){return v(e,64)}static uint72(e){return v(e,72)}static uint80(e){return v(e,80)}static uint88(e){return v(e,88)}static uint96(e){return v(e,96)}static uint104(e){return v(e,104)}static uint112(e){return v(e,112)}static uint120(e){return v(e,120)}static uint128(e){return v(e,128)}static uint136(e){return v(e,136)}static uint144(e){return v(e,144)}static uint152(e){return v(e,152)}static uint160(e){return v(e,160)}static uint168(e){return v(e,168)}static uint176(e){return v(e,176)}static uint184(e){return v(e,184)}static uint192(e){return v(e,192)}static uint200(e){return v(e,200)}static uint208(e){return v(e,208)}static uint216(e){return v(e,216)}static uint224(e){return v(e,224)}static uint232(e){return v(e,232)}static uint240(e){return v(e,240)}static uint248(e){return v(e,248)}static uint256(e){return v(e,256)}static uint(e){return v(e,256)}static int8(e){return v(e,-8)}static int16(e){return v(e,-16)}static int24(e){return v(e,-24)}static int32(e){return v(e,-32)}static int40(e){return v(e,-40)}static int48(e){return v(e,-48)}static int56(e){return v(e,-56)}static int64(e){return v(e,-64)}static int72(e){return v(e,-72)}static int80(e){return v(e,-80)}static int88(e){return v(e,-88)}static int96(e){return v(e,-96)}static int104(e){return v(e,-104)}static int112(e){return v(e,-112)}static int120(e){return v(e,-120)}static int128(e){return v(e,-128)}static int136(e){return v(e,-136)}static int144(e){return v(e,-144)}static int152(e){return v(e,-152)}static int160(e){return v(e,-160)}static int168(e){return v(e,-168)}static int176(e){return v(e,-176)}static int184(e){return v(e,-184)}static int192(e){return v(e,-192)}static int200(e){return v(e,-200)}static int208(e){return v(e,-208)}static int216(e){return v(e,-216)}static int224(e){return v(e,-224)}static int232(e){return v(e,-232)}static int240(e){return v(e,-240)}static int248(e){return v(e,-248)}static int256(e){return v(e,-256)}static int(e){return v(e,-256)}static bytes1(e){return y(e,1)}static bytes2(e){return y(e,2)}static bytes3(e){return y(e,3)}static bytes4(e){return y(e,4)}static bytes5(e){return y(e,5)}static bytes6(e){return y(e,6)}static bytes7(e){return y(e,7)}static bytes8(e){return y(e,8)}static bytes9(e){return y(e,9)}static bytes10(e){return y(e,10)}static bytes11(e){return y(e,11)}static bytes12(e){return y(e,12)}static bytes13(e){return y(e,13)}static bytes14(e){return y(e,14)}static bytes15(e){return y(e,15)}static bytes16(e){return y(e,16)}static bytes17(e){return y(e,17)}static bytes18(e){return y(e,18)}static bytes19(e){return y(e,19)}static bytes20(e){return y(e,20)}static bytes21(e){return y(e,21)}static bytes22(e){return y(e,22)}static bytes23(e){return y(e,23)}static bytes24(e){return y(e,24)}static bytes25(e){return y(e,25)}static bytes26(e){return y(e,26)}static bytes27(e){return y(e,27)}static bytes28(e){return y(e,28)}static bytes29(e){return y(e,29)}static bytes30(e){return y(e,30)}static bytes31(e){return y(e,31)}static bytes32(e){return y(e,32)}static address(t){return new e(_,`address`,t)}static bool(t){return new e(_,`bool`,!!t)}static bytes(t){return new e(_,`bytes`,t)}static string(t){return new e(_,`string`,t)}static array(e,t){throw Error(`not implemented yet`)}static tuple(e,t){throw Error(`not implemented yet`)}static overrides(t){return new e(_,`overrides`,Object.assign({},t))}static isTyped(e){return e&&typeof e==`object`&&`_typedSymbol`in e&&e._typedSymbol===b}static dereference(t,n){if(e.isTyped(t)){if(t.type!==n)throw Error(`invalid type: expecetd ${n}, got ${t.type}`);return t.value}return t}},ee=class extends m{constructor(e){super(`address`,`address`,e,!1)}defaultValue(){return`0x0000000000000000000000000000000000000000`}encode(e,n){let r=x.dereference(n,`string`);try{r=t.p(r)}catch(e){return this._throwError(e.message,n)}return e.writeValue(r)}decode(e){return t.p(t.x(e.readValue(),20))}},te=class extends m{coder;constructor(e){super(e.name,e.type,`_`,e.dynamic),this.coder=e}defaultValue(){return this.coder.defaultValue()}encode(e,t){return this.coder.encode(e,t)}decode(e){return this.coder.decode(e)}};function S(e,n,r){let i=[];if(Array.isArray(r))i=r;else if(r&&typeof r==`object`){let e={};i=n.map(n=>{let i=n.localName;return t.k(i,`cannot encode object for signature with missing names`,`INVALID_ARGUMENT`,{argument:`values`,info:{coder:n},value:r}),t.k(!e[i],`cannot encode object for signature with duplicate names`,`INVALID_ARGUMENT`,{argument:`values`,info:{coder:n},value:r}),e[i]=!0,r[i]})}else t.A(!1,`invalid tuple value`,`tuple`,r);t.A(n.length===i.length,`types/value length mismatch`,`tuple`,r);let a=new h,o=new h,s=[];n.forEach((e,t)=>{let n=i[t];if(e.dynamic){let t=o.length;e.encode(o,n);let r=a.writeUpdatableValue();s.push(e=>{r(e+t)})}else e.encode(a,n)}),s.forEach(e=>{e(a.length)});let c=e.appendWriter(a);return c+=e.appendWriter(o),c}function C(e,n){let r=[],i=[],a=e.subReader(0);return n.forEach(n=>{let o=null;if(n.dynamic){let r=e.readIndex(),i=a.subReader(r);try{o=n.decode(i)}catch(e){if(t.N(e,`BUFFER_OVERRUN`))throw e;o=e,o.baseType=n.name,o.name=n.localName,o.type=n.type}}else try{o=n.decode(e)}catch(e){if(t.N(e,`BUFFER_OVERRUN`))throw e;o=e,o.baseType=n.name,o.name=n.localName,o.type=n.type}if(o==null)throw Error(`investigate`);r.push(o),i.push(n.localName||null)}),f.fromItems(r,i)}var ne=class extends m{coder;length;constructor(e,n,r){let i=e.type+`[`+(n>=0?n:``)+`]`,a=n===-1||e.dynamic;super(`array`,i,r,a),t.F(this,{coder:e,length:n})}defaultValue(){let e=this.coder.defaultValue(),t=[];for(let n=0;n<this.length;n++)t.push(e);return t}encode(e,n){let r=x.dereference(n,`array`);Array.isArray(r)||this._throwError(`expected array value`,r);let i=this.length;i===-1&&(i=r.length,e.writeValue(r.length)),t.j(r.length,i,`coder array`+(this.localName?` `+this.localName:``));let a=[];for(let e=0;e<r.length;e++)a.push(this.coder);return S(e,a,r)}decode(e){let n=this.length;n===-1&&(n=e.readIndex(),t.k(n*32<=e.dataLength,`insufficient data length`,`BUFFER_OVERRUN`,{buffer:e.bytes,offset:n*32,length:e.dataLength}));let r=[];for(let e=0;e<n;e++)r.push(new te(this.coder));return C(e,r)}},re=class extends m{constructor(e){super(`bool`,`bool`,e,!1)}defaultValue(){return!1}encode(e,t){let n=x.dereference(t,`bool`);return e.writeValue(+!!n)}decode(e){return!!e.readValue()}},w=class extends m{constructor(e,t){super(e,e,t,!0)}defaultValue(){return`0x`}encode(e,n){n=t.D(n);let r=e.writeValue(n.length);return r+=e.writeBytes(n),r}decode(e){return e.readBytes(e.readIndex(),!0)}},ie=class extends w{constructor(e){super(`bytes`,e)}decode(e){return t.O(super.decode(e))}},T=class extends m{size;constructor(e,n){let r=`bytes`+String(e);super(r,r,n,!1),t.F(this,{size:e},{size:`number`})}defaultValue(){return`0x0000000000000000000000000000000000000000000000000000000000000000`.substring(0,2+this.size*2)}encode(e,n){let r=t.D(x.dereference(n,this.type));return r.length!==this.size&&this._throwError(`incorrect data length`,n),e.writeBytes(r)}decode(e){return t.O(e.readBytes(this.size))}},E=new Uint8Array([]),D=class extends m{constructor(e){super(`null`,``,e,!1)}defaultValue(){return null}encode(e,t){return t!=null&&this._throwError(`not null`,t),e.writeBytes(E)}decode(e){return e.readBytes(0),null}},ae=BigInt(0),oe=BigInt(1),se=BigInt(`0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`),ce=class extends m{size;signed;constructor(e,n,r){let i=(n?`int`:`uint`)+e*8;super(i,i,r,!1),t.F(this,{size:e,signed:n},{size:`number`,signed:`boolean`})}defaultValue(){return 0}encode(e,n){let r=t._(x.dereference(n,this.type)),i=t.y(se,256);if(this.signed){let e=t.y(i,this.size*8-1);(r>e||r<-(e+oe))&&this._throwError(`value out-of-bounds`,n),r=t.w(r,256)}else (r<ae||r>t.y(i,this.size*8))&&this._throwError(`value out-of-bounds`,n);return e.writeValue(r)}decode(e){let n=t.y(e.readValue(),this.size*8);return this.signed&&(n=t.g(n,this.size*8)),n}},le=class extends w{constructor(e){super(`string`,e)}defaultValue(){return``}encode(e,n){return super.encode(e,t.m(x.dereference(n,`string`)))}decode(e){return t.h(super.decode(e))}},O=class extends m{coders;constructor(e,n){let r=!1,i=[];e.forEach(e=>{e.dynamic&&(r=!0),i.push(e.type)});let a=`tuple(`+i.join(`,`)+`)`;super(`tuple`,a,n,r),t.F(this,{coders:Object.freeze(e.slice())})}defaultValue(){let e=[];this.coders.forEach(t=>{e.push(t.defaultValue())});let t=this.coders.reduce((e,t)=>{let n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e},{});return this.coders.forEach((n,r)=>{let i=n.localName;!i||t[i]!==1||(i===`length`&&(i=`_length`),e[i]??(e[i]=e[r]))}),Object.freeze(e)}encode(e,t){let n=x.dereference(t,`tuple`);return S(e,this.coders,n)}decode(e){return C(e,this.coders)}};function k(e){let t=new Set;return e.forEach(e=>t.add(e)),Object.freeze(t)}k(`external public payable override`.split(` `));var A=`constant external internal payable private public pure view override`;k(A.split(` `));var j=`constructor error event fallback function receive struct`;k(j.split(` `));var M=`calldata memory storage payable indexed`,ue=k(M.split(` `)),de=k([j,M,`tuple returns`,A].join(` `).split(` `)),fe={"(":`OPEN_PAREN`,")":`CLOSE_PAREN`,"[":`OPEN_BRACKET`,"]":`CLOSE_BRACKET`,",":`COMMA`,"@":`AT`},pe=RegExp(`^(\\s*)`),me=RegExp(`^([0-9]+)`),N=RegExp(`^([a-zA-Z$_][a-zA-Z0-9$_]*)`),P=RegExp(`^([a-zA-Z$_][a-zA-Z0-9$_]*)$`),F=RegExp(`^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$`),I=class e{#e;#t;get offset(){return this.#e}get length(){return this.#t.length-this.#e}constructor(e){this.#e=0,this.#t=e.slice()}clone(){return new e(this.#t)}reset(){this.#e=0}#n(t=0,n=0){return new e(this.#t.slice(t,n).map(e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t}))))}popKeyword(e){let t=this.peek();if(t.type!==`KEYWORD`||!e.has(t.text))throw Error(`expected keyword ${t.text}`);return this.pop().text}popType(e){if(this.peek().type!==e){let t=this.peek();throw Error(`expected ${e}; got ${t.type} ${JSON.stringify(t.text)}`)}return this.pop().text}popParen(){let e=this.peek();if(e.type!==`OPEN_PAREN`)throw Error(`bad start`);let t=this.#n(this.#e+1,e.match+1);return this.#e=e.match+1,t}popParams(){let e=this.peek();if(e.type!==`OPEN_PAREN`)throw Error(`bad start`);let t=[];for(;this.#e<e.match-1;){let e=this.peek().linkNext;t.push(this.#n(this.#e+1,e)),this.#e=e}return this.#e=e.match+1,t}peek(){if(this.#e>=this.#t.length)throw Error(`out-of-bounds`);return this.#t[this.#e]}peekKeyword(e){let t=this.peekType(`KEYWORD`);return t!=null&&e.has(t)?t:null}peekType(e){if(this.length===0)return null;let t=this.peek();return t.type===e?t.text:null}pop(){let e=this.peek();return this.#e++,e}toString(){let e=[];for(let t=this.#e;t<this.#t.length;t++){let n=this.#t[t];e.push(`${n.type}:${n.text}`)}return`<TokenString ${e.join(` `)}>`}};function L(e){let n=[],r=t=>{let n=o<e.length?JSON.stringify(e[o]):`$EOI`;throw Error(`invalid token ${n} at ${o}: ${t}`)},i=[],a=[],o=0;for(;o<e.length;){let s=e.substring(o),c=s.match(pe);c&&(o+=c[1].length,s=e.substring(o));let l={depth:i.length,linkBack:-1,linkNext:-1,match:-1,type:``,text:``,offset:o,value:-1};n.push(l);let u=fe[s[0]]||``;if(u){if(l.type=u,l.text=s[0],o++,u===`OPEN_PAREN`)i.push(n.length-1),a.push(n.length-1);else if(u==`CLOSE_PAREN`)i.length===0&&r(`no matching open bracket`),l.match=i.pop(),n[l.match].match=n.length-1,l.depth--,l.linkBack=a.pop(),n[l.linkBack].linkNext=n.length-1;else if(u===`COMMA`)l.linkBack=a.pop(),n[l.linkBack].linkNext=n.length-1,a.push(n.length-1);else if(u===`OPEN_BRACKET`)l.type=`BRACKET`;else if(u===`CLOSE_BRACKET`){let e=n.pop().text;if(n.length>0&&n[n.length-1].type===`NUMBER`){let r=n.pop().text;e=r+e,n[n.length-1].value=t.v(r)}if(n.length===0||n[n.length-1].type!==`BRACKET`)throw Error(`missing opening bracket`);n[n.length-1].text+=e}continue}if(c=s.match(N),c){if(l.text=c[1],o+=l.text.length,de.has(l.text)){l.type=`KEYWORD`;continue}if(l.text.match(F)){l.type=`TYPE`;continue}l.type=`ID`;continue}if(c=s.match(me),c){l.text=c[1],l.type=`NUMBER`,o+=l.text.length;continue}throw Error(`unexpected token ${JSON.stringify(s[0])} at position ${o}`)}return new I(n.map(e=>Object.freeze(e)))}function R(e,t){let n=new Set;for(;;){let r=e.peekType(`KEYWORD`);if(r==null||t&&!t.has(r))break;if(e.pop(),n.has(r))throw Error(`duplicate keywords: ${JSON.stringify(r)}`);n.add(r)}return Object.freeze(n)}var z=new RegExp(/^(.*)\[([0-9]*)\]$/);function B(e){let n=e.match(F);if(t.A(n,`invalid type`,`type`,e),e===`uint`)return`uint256`;if(e===`int`)return`int256`;if(n[2]){let r=parseInt(n[2]);t.A(r!==0&&r<=32,`invalid bytes length`,`type`,e)}else if(n[3]){let r=parseInt(n[3]);t.A(r!==0&&r<=256&&r%8==0,`invalid numeric width`,`type`,e)}return e}var V={},H=Symbol.for(`_ethers_internal`),U=`_ParamTypeInternal`,W=class e{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(e,n,r,i,a,o,s,c){if(t.M(e,V,`ParamType`),Object.defineProperty(this,H,{value:U}),o&&=Object.freeze(o.slice()),i===`array`){if(s==null||c==null)throw Error(``)}else if(s!=null||c!=null)throw Error(``);if(i===`tuple`){if(o==null)throw Error(``)}else if(o!=null)throw Error(``);t.F(this,{name:n,type:r,baseType:i,indexed:a,components:o,arrayLength:s,arrayChildren:c})}format(e){if(e??=`sighash`,e===`json`){let t=this.name||``;if(this.isArray()){let e=JSON.parse(this.arrayChildren.format(`json`));return e.name=t,e.type+=`[${this.arrayLength<0?``:String(this.arrayLength)}]`,JSON.stringify(e)}let n={type:this.baseType===`tuple`?`tuple`:this.type,name:t};return typeof this.indexed==`boolean`&&(n.indexed=this.indexed),this.isTuple()&&(n.components=this.components.map(t=>JSON.parse(t.format(e)))),JSON.stringify(n)}let t=``;return this.isArray()?(t+=this.arrayChildren.format(e),t+=`[${this.arrayLength<0?``:String(this.arrayLength)}]`):this.isTuple()?t+=`(`+this.components.map(t=>t.format(e)).join(e===`full`?`, `:`,`)+`)`:t+=this.type,e!==`sighash`&&(this.indexed===!0&&(t+=` indexed`),e===`full`&&this.name&&(t+=` `+this.name)),t}isArray(){return this.baseType===`array`}isTuple(){return this.baseType===`tuple`}isIndexable(){return this.indexed!=null}walk(e,t){if(this.isArray()){if(!Array.isArray(e))throw Error(`invalid array value`);if(this.arrayLength!==-1&&e.length!==this.arrayLength)throw Error(`array is wrong length`);let n=this;return e.map(e=>n.arrayChildren.walk(e,t))}if(this.isTuple()){if(!Array.isArray(e))throw Error(`invalid tuple value`);if(e.length!==this.components.length)throw Error(`array is wrong length`);let n=this;return e.map((e,r)=>n.components[r].walk(e,t))}return t(this.type,e)}#e(e,t,n,r){if(this.isArray()){if(!Array.isArray(t))throw Error(`invalid array value`);if(this.arrayLength!==-1&&t.length!==this.arrayLength)throw Error(`array is wrong length`);let i=this.arrayChildren,a=t.slice();a.forEach((t,r)=>{i.#e(e,t,n,e=>{a[r]=e})}),r(a);return}if(this.isTuple()){let i=this.components,a;if(Array.isArray(t))a=t.slice();else{if(typeof t!=`object`||!t)throw Error(`invalid tuple value`);a=i.map(e=>{if(!e.name)throw Error(`cannot use object value with unnamed components`);if(!(e.name in t))throw Error(`missing value for component ${e.name}`);return t[e.name]})}if(a.length!==this.components.length)throw Error(`array is wrong length`);a.forEach((t,r)=>{i[r].#e(e,t,n,e=>{a[r]=e})}),r(a);return}let i=n(this.type,t);i.then?e.push((async function(){r(await i)})()):r(i)}async walkAsync(e,t){let n=[],r=[e];return this.#e(n,e,t,e=>{r[0]=e}),n.length&&await Promise.all(n),r[0]}static from(n,r){if(e.isParamType(n))return n;if(typeof n==`string`)try{return e.from(L(n),r)}catch{t.A(!1,`invalid param type`,`obj`,n)}else if(n instanceof I){let t=``,i=``,a=null;R(n,k([`tuple`])).has(`tuple`)||n.peekType(`OPEN_PAREN`)?(i=`tuple`,a=n.popParams().map(t=>e.from(t)),t=`tuple(${a.map(e=>e.format()).join(`,`)})`):(t=B(n.popType(`TYPE`)),i=t);let o=null,s=null;for(;n.length&&n.peekType(`BRACKET`);){let r=n.pop();o=new e(V,``,t,i,null,a,s,o),s=r.value,t+=r.text,i=`array`,a=null}let c=null;if(R(n,ue).has(`indexed`)){if(!r)throw Error(``);c=!0}let l=n.peekType(`ID`)?n.pop().text:``;if(n.length)throw Error(`leftover tokens`);return new e(V,l,t,i,c,a,s,o)}let i=n.name;t.A(!i||typeof i==`string`&&i.match(P),`invalid name`,`obj.name`,i);let a=n.indexed;a!=null&&(t.A(r,`parameter cannot be indexed`,`obj.indexed`,n.indexed),a=!!a);let o=n.type,s=o.match(z);if(s){let t=parseInt(s[2]||`-1`),r=e.from({type:s[1],components:n.components});return new e(V,i||``,o,`array`,a,null,t,r)}if(o===`tuple`||o.startsWith(`tuple(`)||o.startsWith(`(`)){let t=n.components==null?null:n.components.map(t=>e.from(t));return new e(V,i||``,o,`tuple`,a,t,null,null)}return o=B(n.type),new e(V,i||``,o,o,a,null,null,null)}static isParamType(e){return e&&e[H]===U}},G=new Map;G.set(0,`GENERIC_PANIC`),G.set(1,`ASSERT_FALSE`),G.set(17,`OVERFLOW`),G.set(18,`DIVIDE_BY_ZERO`),G.set(33,`ENUM_RANGE_ERROR`),G.set(34,`BAD_STORAGE_DATA`),G.set(49,`STACK_UNDERFLOW`),G.set(50,`ARRAY_RANGE_ERROR`),G.set(65,`OUT_OF_MEMORY`),G.set(81,`UNINITIALIZED_FUNCTION_CALL`);var he=new RegExp(/^bytes([0-9]*)$/),ge=new RegExp(/^(u?int)([0-9]*)$/),K=null,q=1024;function _e(e,n,r,i){let a=`missing revert data`,o=null,s=null;if(r){a=`execution reverted`;let e=t.E(r);if(r=t.O(r),e.length===0)a+=` (no data present; likely require(false) occurred`,o=`require(false)`;else if(e.length%32!=4)a+=` (could not decode reason; invalid data length)`;else if(t.O(e.slice(0,4))===`0x08c379a0`)try{o=i.decode([`string`],e.slice(4))[0],s={signature:`Error(string)`,name:`Error`,args:[o]},a+=`: ${JSON.stringify(o)}`}catch{a+=` (could not decode reason; invalid string data)`}else if(t.O(e.slice(0,4))===`0x4e487b71`)try{let t=Number(i.decode([`uint256`],e.slice(4))[0]);s={signature:`Panic(uint256)`,name:`Panic`,args:[t]},o=`Panic due to ${G.get(t)||`UNKNOWN`}(${t})`,a+=`: ${o}`}catch{a+=` (could not decode panic code)`}else a+=` (unknown custom error)`}let c={to:n.to?t.p(n.to):null,data:n.data||`0x`};return n.from&&(c.from=t.p(n.from)),t.P(a,`CALL_EXCEPTION`,{action:e,data:r,reason:o,transaction:c,invocation:null,revert:s})}var J=class e{#e(e){if(e.isArray())return new ne(this.#e(e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new O(e.components.map(e=>this.#e(e)),e.name);switch(e.baseType){case`address`:return new ee(e.name);case`bool`:return new re(e.name);case`string`:return new le(e.name);case`bytes`:return new ie(e.name);case``:return new D(e.name)}let n=e.type.match(ge);if(n){let r=parseInt(n[2]||`256`);return t.A(r!==0&&r<=256&&r%8==0,`invalid `+n[1]+` bit length`,`param`,e),new ce(r/8,n[1]===`int`,e.name)}if(n=e.type.match(he),n){let r=parseInt(n[1]);return t.A(r!==0&&r<=32,`invalid bytes length`,`param`,e),new T(r,e.name)}t.A(!1,`invalid type`,`type`,e.type)}getDefaultValue(e){return new O(e.map(e=>this.#e(W.from(e))),`_`).defaultValue()}encode(e,n){t.j(n.length,e.length,`types/values length mismatch`);let r=new O(e.map(e=>this.#e(W.from(e))),`_`),i=new h;return r.encode(i,n),i.data}decode(e,t,n){return new O(e.map(e=>this.#e(W.from(e))),`_`).decode(new g(t,n,q))}static _setDefaultMaxInflation(e){t.A(typeof e==`number`&&Number.isInteger(e),`invalid defaultMaxInflation factor`,`value`,e),q=e}static defaultAbiCoder(){return K??=new e,K}static getBuiltinCallException(t,n,r){return _e(t,n,r,e.defaultAbiCoder())}},ve=e.S(e._()),ye=`solana-on-chain-utxo:`,be=8,xe=e=>e.startsWith(ye),Y=e=>{if(!xe(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=J.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),r=n;if(!Array.isArray(r)||r.length!==be)throw Error(`Malformed encoded Solana UTXO payload`);let[i,a,o,s,c,l,u,d]=r,f=BigInt(i),p=BigInt(s),m=t.x(BigInt(c)),h=BigInt(l),g=BigInt(u),_=BigInt(d).toString(),v=Array.from(t.E(a)),y=Array.from(t.E(o)),b=new t.l(Uint8Array.from([...v.slice(16),...y.slice(16)])).toBase58();return{amount:f,erc20TokenAddress:t.f(BigInt(a),BigInt(o)),mintAddress:b,randomization:p,stealthAddress:m,H0:h,H1:g,timeStamp:_}},X=e=>{let n=J.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e);return{amount:BigInt(n[0]),erc20TokenAddress:n[1],randomization:BigInt(n[2][0]),stealthAddress:t.x(BigInt(n[2][1])),H0:BigInt(n[2][2]),H1:BigInt(n[2][3]),timeStamp:BigInt(n[3]).toString(),tokenId:Number(n[4])}},Se=(t,n,r)=>{if(e.r(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s}=Y(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,tokenId:0,randomization:a,shieldedPrivateKey:n,stealthAddress:o}}let{amount:i,erc20TokenAddress:a,timeStamp:o,tokenId:s,randomization:c,stealthAddress:l}=X(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,tokenId:s,randomization:c,shieldedPrivateKey:n,stealthAddress:l}},Z=(n,r,i)=>{let{randomization:a,H0:o,H1:s}=e.r(i)?Y(n):X(n),c=t.a.checkSignature(a,o,s,r);if(!c)throw Error(`UTXO doesn't belong to user`);return c},Ce=class{static log(...t){e.a&&console.log(...t)}static logObject(t){e.a&&console.dir(t,{depth:null,colors:!0})}static error(...e){t.t(e)}},Q=function(e){return e[e.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]=`BATCH_FILTER_UTXOS_WITH_NULLIFIER`,e[e.BUILD_UTXOS=1]=`BUILD_UTXOS`,e[e.DECIPHER_OUTPUTS=2]=`DECIPHER_OUTPUTS`,e}({}),$=new e.t,we=async({data:e})=>{let{utxos:n,nullifiers:r}=e,i=n.filter(e=>{let n=new t.i(e);return!r.has(n.getNullifier())});$.postMessageToMainThread({utxoConstructors:i,stealthPairCache:t.s.serialize(),stealthAddressCache:t.o.serialize()})},Te=async({data:e})=>{let n=new t.a(e.signature),r=n.getShieldedPrivateKey(),i=e.encryptedOutputs.map(i=>{try{let a=i.isPositive?t.r(Buffer.from(i.value.slice(2),`hex`),n):Se(i.value,r,e.chainId);return a.isBlocked=i.isBlocked,a}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);$.postMessageToMainThread(i)},Ee=async({data:e})=>{let n=new t.a(e.signature),r=[],{encryptedOutputs:i}=e,{lastOutput:a}=e,o=n.getShieldedPrivateKey();for(let s=0;s<i.length;s+=1){let c=i[s];if(a=c.value,c.isPositive)try{let e=t.n(Buffer.from(a.slice(2),`hex`),n);if(e.isBlocked=c.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);r.push(c)}catch{}else try{Z(a,o,e.chainId)&&r.push(c)}catch{}}$.postMessageToMainThread({additionalEncryptedOutputs:r,lastOutput:a})},De=async e=>{try{await t.u();let{type:n}=e.payload;switch(n){case Q.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await we(e.payload);return;case Q.BUILD_UTXOS:await Te(e.payload);return;case Q.DECIPHER_OUTPUTS:await Ee(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){Ce.error(`utxo worker message failed`,e),$.postErrorToMainThread(e)}};globalThis.process=ve.default,globalThis.Buffer=r.Buffer,n.parentPort.on(`message`,async e=>{await De(e)});
|
|
1
|
+
const e=require(`./workerProxy-Cr4zT_SW.js`),t=require(`./logError-DlIdq8zv.js`);let n=require(`worker_threads`),r=require(`buffer`);var i=new Uint8Array(32),a=[`then`],o={},s=new WeakMap;function c(e){return s.get(e)}function l(e,t){s.set(e,t)}function u(e,t){let n=Error(`deferred error during ABI decoding triggered accessing ${e}`);throw n.error=t,n}function d(e,t,n){return e.indexOf(null)>=0?t.map((e,t)=>e instanceof f?d(c(e),e,n):e):e.reduce((e,r,i)=>{let a=t.getValue(r);return r in e||(n&&a instanceof f&&(a=d(c(a),a,n)),e[r]=a),e},{})}var f=class e extends Array{#e;constructor(...e){let n=e[0],r=e[1],i=(e[2]||[]).slice(),s=!0;n!==o&&(r=e,i=[],s=!1),super(r.length),r.forEach((e,t)=>{this[t]=e});let d=i.reduce((e,t)=>(typeof t==`string`&&e.set(t,(e.get(t)||0)+1),e),new Map);if(l(this,Object.freeze(r.map((e,t)=>{let n=i[t];return n!=null&&d.get(n)===1?n:null}))),this.#e=[],this.#e??this.#e,!s)return;Object.freeze(this);let f=new Proxy(this,{get:(e,n,r)=>{if(typeof n==`string`){if(n.match(/^[0-9]+$/)){let r=t.v(n,`%index`);if(r<0||r>=this.length)throw RangeError(`out of result range`);let i=e[r];return i instanceof Error&&u(`index ${r}`,i),i}if(a.indexOf(n)>=0)return Reflect.get(e,n,r);let i=e[n];if(i instanceof Function)return function(...t){return i.apply(this===r?e:this,t)};if(!(n in e))return e.getValue.apply(this===r?e:this,[n])}return Reflect.get(e,n,r)}});return l(f,c(this)),f}toArray(t){let n=[];return this.forEach((r,i)=>{r instanceof Error&&u(`index ${i}`,r),t&&r instanceof e&&(r=r.toArray(t)),n.push(r)}),n}toObject(e){let n=c(this);return n.reduce((r,i,a)=>(t.k(i!=null,`value at index ${a} unnamed`,`UNSUPPORTED_OPERATION`,{operation:`toObject()`}),d(n,this,e)),{})}slice(t,n){t??=0,t<0&&(t+=this.length,t<0&&(t=0)),n??=this.length,n<0&&(n+=this.length,n<0&&(n=0)),n>this.length&&(n=this.length);let r=c(this),i=[],a=[];for(let e=t;e<n;e++)i.push(this[e]),a.push(r[e]);return new e(o,i,a)}filter(t,n){let r=c(this),i=[],a=[];for(let e=0;e<this.length;e++){let o=this[e];o instanceof Error&&u(`index ${e}`,o),t.call(n,o,e,this)&&(i.push(o),a.push(r[e]))}return new e(o,i,a)}map(e,t){let n=[];for(let r=0;r<this.length;r++){let i=this[r];i instanceof Error&&u(`index ${r}`,i),n.push(e.call(t,i,r,this))}return n}getValue(e){let t=c(this).indexOf(e);if(t===-1)return;let n=this[t];return n instanceof Error&&u(`property ${JSON.stringify(e)}`,n.error),n}static fromItems(t,n){return new e(o,t,n)}};function p(e){let n=t.b(e);return t.k(n.length<=32,`value out-of-bounds`,`BUFFER_OVERRUN`,{buffer:n,length:32,offset:n.length}),n.length!==32&&(n=t.D(t.T([i.slice(n.length%32),n]))),n}var m=class{name;type;localName;dynamic;constructor(e,n,r,i){t.F(this,{name:e,type:n,localName:r,dynamic:i},{name:`string`,type:`string`,localName:`string`,dynamic:`boolean`})}_throwError(e,n){t.A(!1,e,this.localName,n)}},h=class{#e;#t;constructor(){this.#e=[],this.#t=0}get data(){return t.T(this.#e)}get length(){return this.#t}#n(e){return this.#e.push(e),this.#t+=e.length,e.length}appendWriter(e){return this.#n(t.D(e.data))}writeBytes(e){let n=t.D(e),r=n.length%32;return r&&(n=t.D(t.T([n,i.slice(r)]))),this.#n(n)}writeValue(e){return this.#n(p(e))}writeUpdatableValue(){let e=this.#e.length;return this.#e.push(i),this.#t+=32,t=>{this.#e[e]=p(t)}}},g=class e{allowLoose;#e;#t;#n;#r;#i;constructor(e,n,r){t.F(this,{allowLoose:!!n}),this.#e=t.D(e),this.#n=0,this.#r=null,this.#i=r??1024,this.#t=0}get data(){return t.O(this.#e)}get dataLength(){return this.#e.length}get consumed(){return this.#t}get bytes(){return new Uint8Array(this.#e)}#a(e){if(this.#r)return this.#r.#a(e);this.#n+=e,t.k(this.#i<1||this.#n<=this.#i*this.dataLength,`compressed ABI data exceeds inflation ratio of ${this.#i} ( see: https:/\/github.com/ethers-io/ethers.js/issues/4537 )`,`BUFFER_OVERRUN`,{buffer:t.D(this.#e),offset:this.#t,length:e,info:{bytesRead:this.#n,dataLength:this.dataLength}})}#o(e,n,r){let i=Math.ceil(n/32)*32;return this.#t+i>this.#e.length&&(this.allowLoose&&r&&this.#t+n<=this.#e.length?i=n:t.k(!1,`data out-of-bounds`,`BUFFER_OVERRUN`,{buffer:t.D(this.#e),length:this.#e.length,offset:this.#t+i})),this.#e.slice(this.#t,this.#t+i)}subReader(t){let n=new e(this.#e.slice(this.#t+t),this.allowLoose,this.#i);return n.#r=this,n}readBytes(e,t){let n=this.#o(0,e,!!t);return this.#a(e),this.#t+=n.length,n.slice(0,e)}readValue(){return t.S(this.readBytes(32))}readIndex(){return t.C(this.readBytes(32))}},_={};function v(e,t){let n=!1;return t<0&&(n=!0,t*=-1),new x(_,`${n?``:`u`}int${t}`,e,{signed:n,width:t})}function y(e,t){return new x(_,`bytes${t||``}`,e,{size:t})}var b=Symbol.for(`_ethers_typed`),x=class e{type;value;#e;_typedSymbol;constructor(e,n,r,i){i??=null,t.M(_,e,`Typed`),t.F(this,{_typedSymbol:b,type:n,value:r}),this.#e=i,this.format()}format(){if(this.type===`array`||this.type===`dynamicArray`)throw Error(``);return this.type===`tuple`?`tuple(${this.value.map(e=>e.format()).join(`,`)})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith(`bytes`)}isString(){return this.type===`string`}get tupleName(){if(this.type!==`tuple`)throw TypeError(`not a tuple`);return this.#e}get arrayLength(){if(this.type!==`array`)throw TypeError(`not an array`);return this.#e===!0?-1:this.#e===!1?this.value.length:null}static from(t,n){return new e(_,t,n)}static uint8(e){return v(e,8)}static uint16(e){return v(e,16)}static uint24(e){return v(e,24)}static uint32(e){return v(e,32)}static uint40(e){return v(e,40)}static uint48(e){return v(e,48)}static uint56(e){return v(e,56)}static uint64(e){return v(e,64)}static uint72(e){return v(e,72)}static uint80(e){return v(e,80)}static uint88(e){return v(e,88)}static uint96(e){return v(e,96)}static uint104(e){return v(e,104)}static uint112(e){return v(e,112)}static uint120(e){return v(e,120)}static uint128(e){return v(e,128)}static uint136(e){return v(e,136)}static uint144(e){return v(e,144)}static uint152(e){return v(e,152)}static uint160(e){return v(e,160)}static uint168(e){return v(e,168)}static uint176(e){return v(e,176)}static uint184(e){return v(e,184)}static uint192(e){return v(e,192)}static uint200(e){return v(e,200)}static uint208(e){return v(e,208)}static uint216(e){return v(e,216)}static uint224(e){return v(e,224)}static uint232(e){return v(e,232)}static uint240(e){return v(e,240)}static uint248(e){return v(e,248)}static uint256(e){return v(e,256)}static uint(e){return v(e,256)}static int8(e){return v(e,-8)}static int16(e){return v(e,-16)}static int24(e){return v(e,-24)}static int32(e){return v(e,-32)}static int40(e){return v(e,-40)}static int48(e){return v(e,-48)}static int56(e){return v(e,-56)}static int64(e){return v(e,-64)}static int72(e){return v(e,-72)}static int80(e){return v(e,-80)}static int88(e){return v(e,-88)}static int96(e){return v(e,-96)}static int104(e){return v(e,-104)}static int112(e){return v(e,-112)}static int120(e){return v(e,-120)}static int128(e){return v(e,-128)}static int136(e){return v(e,-136)}static int144(e){return v(e,-144)}static int152(e){return v(e,-152)}static int160(e){return v(e,-160)}static int168(e){return v(e,-168)}static int176(e){return v(e,-176)}static int184(e){return v(e,-184)}static int192(e){return v(e,-192)}static int200(e){return v(e,-200)}static int208(e){return v(e,-208)}static int216(e){return v(e,-216)}static int224(e){return v(e,-224)}static int232(e){return v(e,-232)}static int240(e){return v(e,-240)}static int248(e){return v(e,-248)}static int256(e){return v(e,-256)}static int(e){return v(e,-256)}static bytes1(e){return y(e,1)}static bytes2(e){return y(e,2)}static bytes3(e){return y(e,3)}static bytes4(e){return y(e,4)}static bytes5(e){return y(e,5)}static bytes6(e){return y(e,6)}static bytes7(e){return y(e,7)}static bytes8(e){return y(e,8)}static bytes9(e){return y(e,9)}static bytes10(e){return y(e,10)}static bytes11(e){return y(e,11)}static bytes12(e){return y(e,12)}static bytes13(e){return y(e,13)}static bytes14(e){return y(e,14)}static bytes15(e){return y(e,15)}static bytes16(e){return y(e,16)}static bytes17(e){return y(e,17)}static bytes18(e){return y(e,18)}static bytes19(e){return y(e,19)}static bytes20(e){return y(e,20)}static bytes21(e){return y(e,21)}static bytes22(e){return y(e,22)}static bytes23(e){return y(e,23)}static bytes24(e){return y(e,24)}static bytes25(e){return y(e,25)}static bytes26(e){return y(e,26)}static bytes27(e){return y(e,27)}static bytes28(e){return y(e,28)}static bytes29(e){return y(e,29)}static bytes30(e){return y(e,30)}static bytes31(e){return y(e,31)}static bytes32(e){return y(e,32)}static address(t){return new e(_,`address`,t)}static bool(t){return new e(_,`bool`,!!t)}static bytes(t){return new e(_,`bytes`,t)}static string(t){return new e(_,`string`,t)}static array(e,t){throw Error(`not implemented yet`)}static tuple(e,t){throw Error(`not implemented yet`)}static overrides(t){return new e(_,`overrides`,Object.assign({},t))}static isTyped(e){return e&&typeof e==`object`&&`_typedSymbol`in e&&e._typedSymbol===b}static dereference(t,n){if(e.isTyped(t)){if(t.type!==n)throw Error(`invalid type: expecetd ${n}, got ${t.type}`);return t.value}return t}},ee=class extends m{constructor(e){super(`address`,`address`,e,!1)}defaultValue(){return`0x0000000000000000000000000000000000000000`}encode(e,n){let r=x.dereference(n,`string`);try{r=t.p(r)}catch(e){return this._throwError(e.message,n)}return e.writeValue(r)}decode(e){return t.p(t.x(e.readValue(),20))}},te=class extends m{coder;constructor(e){super(e.name,e.type,`_`,e.dynamic),this.coder=e}defaultValue(){return this.coder.defaultValue()}encode(e,t){return this.coder.encode(e,t)}decode(e){return this.coder.decode(e)}};function S(e,n,r){let i=[];if(Array.isArray(r))i=r;else if(r&&typeof r==`object`){let e={};i=n.map(n=>{let i=n.localName;return t.k(i,`cannot encode object for signature with missing names`,`INVALID_ARGUMENT`,{argument:`values`,info:{coder:n},value:r}),t.k(!e[i],`cannot encode object for signature with duplicate names`,`INVALID_ARGUMENT`,{argument:`values`,info:{coder:n},value:r}),e[i]=!0,r[i]})}else t.A(!1,`invalid tuple value`,`tuple`,r);t.A(n.length===i.length,`types/value length mismatch`,`tuple`,r);let a=new h,o=new h,s=[];n.forEach((e,t)=>{let n=i[t];if(e.dynamic){let t=o.length;e.encode(o,n);let r=a.writeUpdatableValue();s.push(e=>{r(e+t)})}else e.encode(a,n)}),s.forEach(e=>{e(a.length)});let c=e.appendWriter(a);return c+=e.appendWriter(o),c}function C(e,n){let r=[],i=[],a=e.subReader(0);return n.forEach(n=>{let o=null;if(n.dynamic){let r=e.readIndex(),i=a.subReader(r);try{o=n.decode(i)}catch(e){if(t.N(e,`BUFFER_OVERRUN`))throw e;o=e,o.baseType=n.name,o.name=n.localName,o.type=n.type}}else try{o=n.decode(e)}catch(e){if(t.N(e,`BUFFER_OVERRUN`))throw e;o=e,o.baseType=n.name,o.name=n.localName,o.type=n.type}if(o==null)throw Error(`investigate`);r.push(o),i.push(n.localName||null)}),f.fromItems(r,i)}var ne=class extends m{coder;length;constructor(e,n,r){let i=e.type+`[`+(n>=0?n:``)+`]`,a=n===-1||e.dynamic;super(`array`,i,r,a),t.F(this,{coder:e,length:n})}defaultValue(){let e=this.coder.defaultValue(),t=[];for(let n=0;n<this.length;n++)t.push(e);return t}encode(e,n){let r=x.dereference(n,`array`);Array.isArray(r)||this._throwError(`expected array value`,r);let i=this.length;i===-1&&(i=r.length,e.writeValue(r.length)),t.j(r.length,i,`coder array`+(this.localName?` `+this.localName:``));let a=[];for(let e=0;e<r.length;e++)a.push(this.coder);return S(e,a,r)}decode(e){let n=this.length;n===-1&&(n=e.readIndex(),t.k(n*32<=e.dataLength,`insufficient data length`,`BUFFER_OVERRUN`,{buffer:e.bytes,offset:n*32,length:e.dataLength}));let r=[];for(let e=0;e<n;e++)r.push(new te(this.coder));return C(e,r)}},re=class extends m{constructor(e){super(`bool`,`bool`,e,!1)}defaultValue(){return!1}encode(e,t){let n=x.dereference(t,`bool`);return e.writeValue(+!!n)}decode(e){return!!e.readValue()}},w=class extends m{constructor(e,t){super(e,e,t,!0)}defaultValue(){return`0x`}encode(e,n){n=t.D(n);let r=e.writeValue(n.length);return r+=e.writeBytes(n),r}decode(e){return e.readBytes(e.readIndex(),!0)}},ie=class extends w{constructor(e){super(`bytes`,e)}decode(e){return t.O(super.decode(e))}},T=class extends m{size;constructor(e,n){let r=`bytes`+String(e);super(r,r,n,!1),t.F(this,{size:e},{size:`number`})}defaultValue(){return`0x0000000000000000000000000000000000000000000000000000000000000000`.substring(0,2+this.size*2)}encode(e,n){let r=t.D(x.dereference(n,this.type));return r.length!==this.size&&this._throwError(`incorrect data length`,n),e.writeBytes(r)}decode(e){return t.O(e.readBytes(this.size))}},E=new Uint8Array([]),D=class extends m{constructor(e){super(`null`,``,e,!1)}defaultValue(){return null}encode(e,t){return t!=null&&this._throwError(`not null`,t),e.writeBytes(E)}decode(e){return e.readBytes(0),null}},ae=BigInt(0),oe=BigInt(1),se=BigInt(`0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`),ce=class extends m{size;signed;constructor(e,n,r){let i=(n?`int`:`uint`)+e*8;super(i,i,r,!1),t.F(this,{size:e,signed:n},{size:`number`,signed:`boolean`})}defaultValue(){return 0}encode(e,n){let r=t._(x.dereference(n,this.type)),i=t.y(se,256);if(this.signed){let e=t.y(i,this.size*8-1);(r>e||r<-(e+oe))&&this._throwError(`value out-of-bounds`,n),r=t.w(r,256)}else (r<ae||r>t.y(i,this.size*8))&&this._throwError(`value out-of-bounds`,n);return e.writeValue(r)}decode(e){let n=t.y(e.readValue(),this.size*8);return this.signed&&(n=t.g(n,this.size*8)),n}},le=class extends w{constructor(e){super(`string`,e)}defaultValue(){return``}encode(e,n){return super.encode(e,t.m(x.dereference(n,`string`)))}decode(e){return t.h(super.decode(e))}},O=class extends m{coders;constructor(e,n){let r=!1,i=[];e.forEach(e=>{e.dynamic&&(r=!0),i.push(e.type)});let a=`tuple(`+i.join(`,`)+`)`;super(`tuple`,a,n,r),t.F(this,{coders:Object.freeze(e.slice())})}defaultValue(){let e=[];this.coders.forEach(t=>{e.push(t.defaultValue())});let t=this.coders.reduce((e,t)=>{let n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e},{});return this.coders.forEach((n,r)=>{let i=n.localName;!i||t[i]!==1||(i===`length`&&(i=`_length`),e[i]??(e[i]=e[r]))}),Object.freeze(e)}encode(e,t){let n=x.dereference(t,`tuple`);return S(e,this.coders,n)}decode(e){return C(e,this.coders)}};function k(e){let t=new Set;return e.forEach(e=>t.add(e)),Object.freeze(t)}k(`external public payable override`.split(` `));var A=`constant external internal payable private public pure view override`;k(A.split(` `));var j=`constructor error event fallback function receive struct`;k(j.split(` `));var M=`calldata memory storage payable indexed`,ue=k(M.split(` `)),de=k([j,M,`tuple returns`,A].join(` `).split(` `)),fe={"(":`OPEN_PAREN`,")":`CLOSE_PAREN`,"[":`OPEN_BRACKET`,"]":`CLOSE_BRACKET`,",":`COMMA`,"@":`AT`},pe=RegExp(`^(\\s*)`),me=RegExp(`^([0-9]+)`),N=RegExp(`^([a-zA-Z$_][a-zA-Z0-9$_]*)`),P=RegExp(`^([a-zA-Z$_][a-zA-Z0-9$_]*)$`),F=RegExp(`^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$`),I=class e{#e;#t;get offset(){return this.#e}get length(){return this.#t.length-this.#e}constructor(e){this.#e=0,this.#t=e.slice()}clone(){return new e(this.#t)}reset(){this.#e=0}#n(t=0,n=0){return new e(this.#t.slice(t,n).map(e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t}))))}popKeyword(e){let t=this.peek();if(t.type!==`KEYWORD`||!e.has(t.text))throw Error(`expected keyword ${t.text}`);return this.pop().text}popType(e){if(this.peek().type!==e){let t=this.peek();throw Error(`expected ${e}; got ${t.type} ${JSON.stringify(t.text)}`)}return this.pop().text}popParen(){let e=this.peek();if(e.type!==`OPEN_PAREN`)throw Error(`bad start`);let t=this.#n(this.#e+1,e.match+1);return this.#e=e.match+1,t}popParams(){let e=this.peek();if(e.type!==`OPEN_PAREN`)throw Error(`bad start`);let t=[];for(;this.#e<e.match-1;){let e=this.peek().linkNext;t.push(this.#n(this.#e+1,e)),this.#e=e}return this.#e=e.match+1,t}peek(){if(this.#e>=this.#t.length)throw Error(`out-of-bounds`);return this.#t[this.#e]}peekKeyword(e){let t=this.peekType(`KEYWORD`);return t!=null&&e.has(t)?t:null}peekType(e){if(this.length===0)return null;let t=this.peek();return t.type===e?t.text:null}pop(){let e=this.peek();return this.#e++,e}toString(){let e=[];for(let t=this.#e;t<this.#t.length;t++){let n=this.#t[t];e.push(`${n.type}:${n.text}`)}return`<TokenString ${e.join(` `)}>`}};function L(e){let n=[],r=t=>{let n=o<e.length?JSON.stringify(e[o]):`$EOI`;throw Error(`invalid token ${n} at ${o}: ${t}`)},i=[],a=[],o=0;for(;o<e.length;){let s=e.substring(o),c=s.match(pe);c&&(o+=c[1].length,s=e.substring(o));let l={depth:i.length,linkBack:-1,linkNext:-1,match:-1,type:``,text:``,offset:o,value:-1};n.push(l);let u=fe[s[0]]||``;if(u){if(l.type=u,l.text=s[0],o++,u===`OPEN_PAREN`)i.push(n.length-1),a.push(n.length-1);else if(u==`CLOSE_PAREN`)i.length===0&&r(`no matching open bracket`),l.match=i.pop(),n[l.match].match=n.length-1,l.depth--,l.linkBack=a.pop(),n[l.linkBack].linkNext=n.length-1;else if(u===`COMMA`)l.linkBack=a.pop(),n[l.linkBack].linkNext=n.length-1,a.push(n.length-1);else if(u===`OPEN_BRACKET`)l.type=`BRACKET`;else if(u===`CLOSE_BRACKET`){let e=n.pop().text;if(n.length>0&&n[n.length-1].type===`NUMBER`){let r=n.pop().text;e=r+e,n[n.length-1].value=t.v(r)}if(n.length===0||n[n.length-1].type!==`BRACKET`)throw Error(`missing opening bracket`);n[n.length-1].text+=e}continue}if(c=s.match(N),c){if(l.text=c[1],o+=l.text.length,de.has(l.text)){l.type=`KEYWORD`;continue}if(l.text.match(F)){l.type=`TYPE`;continue}l.type=`ID`;continue}if(c=s.match(me),c){l.text=c[1],l.type=`NUMBER`,o+=l.text.length;continue}throw Error(`unexpected token ${JSON.stringify(s[0])} at position ${o}`)}return new I(n.map(e=>Object.freeze(e)))}function R(e,t){let n=new Set;for(;;){let r=e.peekType(`KEYWORD`);if(r==null||t&&!t.has(r))break;if(e.pop(),n.has(r))throw Error(`duplicate keywords: ${JSON.stringify(r)}`);n.add(r)}return Object.freeze(n)}var z=new RegExp(/^(.*)\[([0-9]*)\]$/);function B(e){let n=e.match(F);if(t.A(n,`invalid type`,`type`,e),e===`uint`)return`uint256`;if(e===`int`)return`int256`;if(n[2]){let r=parseInt(n[2]);t.A(r!==0&&r<=32,`invalid bytes length`,`type`,e)}else if(n[3]){let r=parseInt(n[3]);t.A(r!==0&&r<=256&&r%8==0,`invalid numeric width`,`type`,e)}return e}var V={},H=Symbol.for(`_ethers_internal`),U=`_ParamTypeInternal`,W=class e{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(e,n,r,i,a,o,s,c){if(t.M(e,V,`ParamType`),Object.defineProperty(this,H,{value:U}),o&&=Object.freeze(o.slice()),i===`array`){if(s==null||c==null)throw Error(``)}else if(s!=null||c!=null)throw Error(``);if(i===`tuple`){if(o==null)throw Error(``)}else if(o!=null)throw Error(``);t.F(this,{name:n,type:r,baseType:i,indexed:a,components:o,arrayLength:s,arrayChildren:c})}format(e){if(e??=`sighash`,e===`json`){let t=this.name||``;if(this.isArray()){let e=JSON.parse(this.arrayChildren.format(`json`));return e.name=t,e.type+=`[${this.arrayLength<0?``:String(this.arrayLength)}]`,JSON.stringify(e)}let n={type:this.baseType===`tuple`?`tuple`:this.type,name:t};return typeof this.indexed==`boolean`&&(n.indexed=this.indexed),this.isTuple()&&(n.components=this.components.map(t=>JSON.parse(t.format(e)))),JSON.stringify(n)}let t=``;return this.isArray()?(t+=this.arrayChildren.format(e),t+=`[${this.arrayLength<0?``:String(this.arrayLength)}]`):this.isTuple()?t+=`(`+this.components.map(t=>t.format(e)).join(e===`full`?`, `:`,`)+`)`:t+=this.type,e!==`sighash`&&(this.indexed===!0&&(t+=` indexed`),e===`full`&&this.name&&(t+=` `+this.name)),t}isArray(){return this.baseType===`array`}isTuple(){return this.baseType===`tuple`}isIndexable(){return this.indexed!=null}walk(e,t){if(this.isArray()){if(!Array.isArray(e))throw Error(`invalid array value`);if(this.arrayLength!==-1&&e.length!==this.arrayLength)throw Error(`array is wrong length`);let n=this;return e.map(e=>n.arrayChildren.walk(e,t))}if(this.isTuple()){if(!Array.isArray(e))throw Error(`invalid tuple value`);if(e.length!==this.components.length)throw Error(`array is wrong length`);let n=this;return e.map((e,r)=>n.components[r].walk(e,t))}return t(this.type,e)}#e(e,t,n,r){if(this.isArray()){if(!Array.isArray(t))throw Error(`invalid array value`);if(this.arrayLength!==-1&&t.length!==this.arrayLength)throw Error(`array is wrong length`);let i=this.arrayChildren,a=t.slice();a.forEach((t,r)=>{i.#e(e,t,n,e=>{a[r]=e})}),r(a);return}if(this.isTuple()){let i=this.components,a;if(Array.isArray(t))a=t.slice();else{if(typeof t!=`object`||!t)throw Error(`invalid tuple value`);a=i.map(e=>{if(!e.name)throw Error(`cannot use object value with unnamed components`);if(!(e.name in t))throw Error(`missing value for component ${e.name}`);return t[e.name]})}if(a.length!==this.components.length)throw Error(`array is wrong length`);a.forEach((t,r)=>{i[r].#e(e,t,n,e=>{a[r]=e})}),r(a);return}let i=n(this.type,t);i.then?e.push((async function(){r(await i)})()):r(i)}async walkAsync(e,t){let n=[],r=[e];return this.#e(n,e,t,e=>{r[0]=e}),n.length&&await Promise.all(n),r[0]}static from(n,r){if(e.isParamType(n))return n;if(typeof n==`string`)try{return e.from(L(n),r)}catch{t.A(!1,`invalid param type`,`obj`,n)}else if(n instanceof I){let t=``,i=``,a=null;R(n,k([`tuple`])).has(`tuple`)||n.peekType(`OPEN_PAREN`)?(i=`tuple`,a=n.popParams().map(t=>e.from(t)),t=`tuple(${a.map(e=>e.format()).join(`,`)})`):(t=B(n.popType(`TYPE`)),i=t);let o=null,s=null;for(;n.length&&n.peekType(`BRACKET`);){let r=n.pop();o=new e(V,``,t,i,null,a,s,o),s=r.value,t+=r.text,i=`array`,a=null}let c=null;if(R(n,ue).has(`indexed`)){if(!r)throw Error(``);c=!0}let l=n.peekType(`ID`)?n.pop().text:``;if(n.length)throw Error(`leftover tokens`);return new e(V,l,t,i,c,a,s,o)}let i=n.name;t.A(!i||typeof i==`string`&&i.match(P),`invalid name`,`obj.name`,i);let a=n.indexed;a!=null&&(t.A(r,`parameter cannot be indexed`,`obj.indexed`,n.indexed),a=!!a);let o=n.type,s=o.match(z);if(s){let t=parseInt(s[2]||`-1`),r=e.from({type:s[1],components:n.components});return new e(V,i||``,o,`array`,a,null,t,r)}if(o===`tuple`||o.startsWith(`tuple(`)||o.startsWith(`(`)){let t=n.components==null?null:n.components.map(t=>e.from(t));return new e(V,i||``,o,`tuple`,a,t,null,null)}return o=B(n.type),new e(V,i||``,o,o,a,null,null,null)}static isParamType(e){return e&&e[H]===U}},G=new Map;G.set(0,`GENERIC_PANIC`),G.set(1,`ASSERT_FALSE`),G.set(17,`OVERFLOW`),G.set(18,`DIVIDE_BY_ZERO`),G.set(33,`ENUM_RANGE_ERROR`),G.set(34,`BAD_STORAGE_DATA`),G.set(49,`STACK_UNDERFLOW`),G.set(50,`ARRAY_RANGE_ERROR`),G.set(65,`OUT_OF_MEMORY`),G.set(81,`UNINITIALIZED_FUNCTION_CALL`);var he=new RegExp(/^bytes([0-9]*)$/),ge=new RegExp(/^(u?int)([0-9]*)$/),K=null,q=1024;function _e(e,n,r,i){let a=`missing revert data`,o=null,s=null;if(r){a=`execution reverted`;let e=t.E(r);if(r=t.O(r),e.length===0)a+=` (no data present; likely require(false) occurred`,o=`require(false)`;else if(e.length%32!=4)a+=` (could not decode reason; invalid data length)`;else if(t.O(e.slice(0,4))===`0x08c379a0`)try{o=i.decode([`string`],e.slice(4))[0],s={signature:`Error(string)`,name:`Error`,args:[o]},a+=`: ${JSON.stringify(o)}`}catch{a+=` (could not decode reason; invalid string data)`}else if(t.O(e.slice(0,4))===`0x4e487b71`)try{let t=Number(i.decode([`uint256`],e.slice(4))[0]);s={signature:`Panic(uint256)`,name:`Panic`,args:[t]},o=`Panic due to ${G.get(t)||`UNKNOWN`}(${t})`,a+=`: ${o}`}catch{a+=` (could not decode panic code)`}else a+=` (unknown custom error)`}let c={to:n.to?t.p(n.to):null,data:n.data||`0x`};return n.from&&(c.from=t.p(n.from)),t.P(a,`CALL_EXCEPTION`,{action:e,data:r,reason:o,transaction:c,invocation:null,revert:s})}var J=class e{#e(e){if(e.isArray())return new ne(this.#e(e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new O(e.components.map(e=>this.#e(e)),e.name);switch(e.baseType){case`address`:return new ee(e.name);case`bool`:return new re(e.name);case`string`:return new le(e.name);case`bytes`:return new ie(e.name);case``:return new D(e.name)}let n=e.type.match(ge);if(n){let r=parseInt(n[2]||`256`);return t.A(r!==0&&r<=256&&r%8==0,`invalid `+n[1]+` bit length`,`param`,e),new ce(r/8,n[1]===`int`,e.name)}if(n=e.type.match(he),n){let r=parseInt(n[1]);return t.A(r!==0&&r<=32,`invalid bytes length`,`param`,e),new T(r,e.name)}t.A(!1,`invalid type`,`type`,e.type)}getDefaultValue(e){return new O(e.map(e=>this.#e(W.from(e))),`_`).defaultValue()}encode(e,n){t.j(n.length,e.length,`types/values length mismatch`);let r=new O(e.map(e=>this.#e(W.from(e))),`_`),i=new h;return r.encode(i,n),i.data}decode(e,t,n){return new O(e.map(e=>this.#e(W.from(e))),`_`).decode(new g(t,n,q))}static _setDefaultMaxInflation(e){t.A(typeof e==`number`&&Number.isInteger(e),`invalid defaultMaxInflation factor`,`value`,e),q=e}static defaultAbiCoder(){return K??=new e,K}static getBuiltinCallException(t,n,r){return _e(t,n,r,e.defaultAbiCoder())}},ve=e.S(e._()),ye=`solana-on-chain-utxo:`,be=8,xe=e=>e.startsWith(ye),Y=e=>{if(!xe(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=J.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),r=n;if(!Array.isArray(r)||r.length!==be)throw Error(`Malformed encoded Solana UTXO payload`);let[i,a,o,s,c,l,u,d]=r,f=BigInt(i),p=BigInt(s),m=t.x(BigInt(c)),h=BigInt(l),g=BigInt(u),_=BigInt(d).toString(),v=Array.from(t.E(a)),y=Array.from(t.E(o)),b=new t.l(Uint8Array.from([...v.slice(16),...y.slice(16)])).toBase58();return{amount:f,erc20TokenAddress:t.f(BigInt(a),BigInt(o)),mintAddress:b,randomization:p,stealthAddress:m,H0:h,H1:g,timeStamp:_}},X=e=>{let n=J.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e);return{amount:BigInt(n[0]),erc20TokenAddress:n[1],randomization:BigInt(n[2][0]),stealthAddress:t.x(BigInt(n[2][1])),H0:BigInt(n[2][2]),H1:BigInt(n[2][3]),timeStamp:BigInt(n[3]).toString(),tokenId:Number(n[4])}},Se=(t,n,r)=>{if(e.r(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s}=Y(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,tokenId:0,randomization:a,shieldedPrivateKey:n,stealthAddress:o}}let{amount:i,erc20TokenAddress:a,timeStamp:o,tokenId:s,randomization:c,stealthAddress:l}=X(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,tokenId:s,randomization:c,shieldedPrivateKey:n,stealthAddress:l}},Z=(n,r,i)=>{let{randomization:a,H0:o,H1:s}=e.r(i)?Y(n):X(n),c=t.a.checkSignature(a,o,s,r);if(!c)throw Error(`UTXO doesn't belong to user`);return c},Ce=class{static log(...e){}static logObject(e){}static error(...e){t.t(e)}},Q=function(e){return e[e.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]=`BATCH_FILTER_UTXOS_WITH_NULLIFIER`,e[e.BUILD_UTXOS=1]=`BUILD_UTXOS`,e[e.DECIPHER_OUTPUTS=2]=`DECIPHER_OUTPUTS`,e}({}),$=new e.t,we=async({data:e})=>{let{utxos:n,nullifiers:r}=e,i=n.filter(e=>{let n=new t.i(e);return!r.has(n.getNullifier())});$.postMessageToMainThread({utxoConstructors:i,stealthPairCache:t.s.serialize(),stealthAddressCache:t.o.serialize()})},Te=async({data:e})=>{let n=new t.a(e.signature),r=n.getShieldedPrivateKey(),i=e.encryptedOutputs.map(i=>{try{let a=i.isPositive?t.r(Buffer.from(i.value.slice(2),`hex`),n):Se(i.value,r,e.chainId);return a.isBlocked=i.isBlocked,a}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);$.postMessageToMainThread(i)},Ee=async({data:e})=>{let n=new t.a(e.signature),r=[],{encryptedOutputs:i}=e,{lastOutput:a}=e,o=n.getShieldedPrivateKey();for(let s=0;s<i.length;s+=1){let c=i[s];if(a=c.value,c.isPositive)try{let e=t.n(Buffer.from(a.slice(2),`hex`),n);if(e.isBlocked=c.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);r.push(c)}catch{}else try{Z(a,o,e.chainId)&&r.push(c)}catch{}}$.postMessageToMainThread({additionalEncryptedOutputs:r,lastOutput:a})},De=async e=>{try{await t.u();let{type:n}=e.payload;switch(n){case Q.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await we(e.payload);return;case Q.BUILD_UTXOS:await Te(e.payload);return;case Q.DECIPHER_OUTPUTS:await Ee(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){Ce.error(`utxo worker message failed`,e),$.postErrorToMainThread(e)}};globalThis.process=ve.default,globalThis.Buffer=r.Buffer,n.parentPort.on(`message`,async e=>{await De(e)});
|
|
@@ -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.0.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.0.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.0.
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.0.68/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.0.68/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.0.68/' + '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.0.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.0.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.0.
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.0.68/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.0.68/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.0.68/' + 'utxoWorkerLauncher.js'),
|
|
20
20
|
});
|
|
21
21
|
export { n as getWorkerViteURL };
|
package/package.json
CHANGED
package/sdk/package.json.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={name:`@kapa123456789/sdk`,version:`0.0.
|
|
1
|
+
var e={name:`@kapa123456789/sdk`,version:`0.0.67`,homepage:`hinkal.io`,author:{name:`Hinkal Protocol`},keywords:[`blockchain`,`privacy`,`zero-knowledge`,`stealth addresses`],exports:{".":{types:`./index.d.ts`,main:`./index.cjs`,"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.6.8`,"async-mutex":`^0.4.0`,bs58:`^6.0.0`,buffer:`6.0.3`,"circomlibjs-hinkal-fork":`^0.0.3`,dotenv:`^16.4.5`,ethers:`^6.15.0`,"idb-keyval":`6.2.1`,multiformats:`^13.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`,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;
|