@kapa123456789/sdk 0.0.65 → 0.0.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  2. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +35 -2
  3. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  4. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +49 -9
  5. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  6. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +59 -12
  7. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  8. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +58 -13
  9. package/common/src/error-handling/logger.cjs +1 -1
  10. package/common/src/error-handling/logger.mjs +7 -15
  11. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  12. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +161 -48
  13. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  14. package/common/src/functions/snarkjs/generateZkProof.mjs +6 -1
  15. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  16. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +159 -38
  17. package/common/src/webworker/package.json +1 -1
  18. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  19. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  20. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  21. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  22. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  23. package/package.json +1 -1
  24. package/react-native/HinkalWebViewWorker.cjs +3 -3
  25. package/react-native/HinkalWebViewWorker.mjs +53 -55
  26. package/react-native/metro-config.js +3 -2
  27. package/react-native/shims/constants.js +7 -0
  28. package/sdk/package.json.cjs +1 -1
  29. package/sdk/package.json.mjs +1 -1
@@ -1,54 +1,167 @@
1
1
  import { chainIds as e, isTronLike as t } from "../../constants/chains.constants.mjs";
2
- import { defaultSignatureData as n, zeroAddress as r } from "../../constants/protocol.constants.mjs";
3
- import { defaultHinkalLogicArgs as ee } from "../../types/hinkal.types.mjs";
4
- import { randomBigInt as te } from "../web3/etherFunctions.mjs";
5
- import { Utxo as ne } from "../../data-structures/utxo/Utxo.mjs";
6
- import { Logger as re } from "../../error-handling/logger.mjs";
7
- import { buildOutCommitments as ie, calcAmountChanges as i, calcEncryptedOutputs as a, calcPublicSignalCount as o, calcStealthAddressStructure as s, createCallDataHash as ae, getSlippageValues as c } from "./common.snarkjs.mjs";
8
- import { generateCircomData as oe } from "./generateCircomData.mjs";
9
- import { generateZkProof as se } from "./generateZkProof.mjs";
10
- import { generateFeeStructure as ce } from "../utils/fees.utils.mjs";
11
- import { createHinkalHelperFromData as l, hinkalCheckTokenRegistry as u, hinkalCheckTronTokenRegistry as le } from "../../data-structures/Hinkal/hinkalCheckTokenRegistry.mjs";
12
- import { getDataFromWorkers as d } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
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 f = async (f, p, m, h, g, _, v, y, b, x, S = r, C = e.localhost, w = m.map(() => !1), T = m.map(() => 0n), E = void 0, D = !1, O, k = void 0, A, j = n, M) => {
15
- let N = i(m, h), P = m.map((e) => e[0].erc20TokenAddress), F = a(h), I = g.getShieldedPrivateKey(), L = ne.findCorrectRandomization(te(31), I), R = t(C) ? await le(P, i(m, h, !0), C) : await u(A ?? l(C), P, i(m, h, !0)), z = t(C) ? D || R : D, { inCommitmentSiblings: B, inCommitmentSiblingSides: V, accessTokenSiblings: H, accessTokenSiblingSides: U, rootHashHinkal: W, rootHashAccessToken: G, inNullifiers: K } = await d(C, f, p, g, m.map((e) => e.map((e) => e.getConstructableParams())), z, R), q = ie(h), J = {
16
- rootHashHinkal: W,
17
- shieldedPrivateKey: I,
18
- erc20TokenAddresses: P,
19
- inAmounts: m.map((e) => e.map((e) => e.amount.toString())),
20
- inTimeStamps: m.map((e) => e.map((e) => e.timeStamp)),
21
- inRandomizations: m.map((e) => e.map((e) => e.randomization)),
22
- inNullifiers: K,
23
- inCommitmentSiblings: B,
24
- inCommitmentSiblingSides: V,
25
- outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
26
- outTimeStamp: BigInt(h[0][0].timeStamp),
27
- outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
28
- extraRandomization: L,
29
- amountChanges: N,
30
- outCommitments: q,
31
- rootHashAccessToken: G,
32
- accessTokenSiblings: H,
33
- accessTokenSiblingSides: U,
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
- }, Y = m.map((e) => e[0].tokenId ?? 0), X = Y.reduce((e, t) => e + t, 0) > 0 ? Y.length : 0;
36
- X > 0 && (J.tokenIds = Y);
37
- let Z = o(_, J.erc20TokenAddresses, J.amountChanges, J.inNullifiers, J.outCommitments, X), Q = ee(N.length, g);
38
- J.interactionAddress = Q.interactionAddress, J.externalApprovalAddresses = Q.useApprovalUtxoData?.map(({ externalApprovalAddresses: e }) => e), k ||= ce(T, m.map((e) => e[0].erc20TokenAddress));
39
- let $ = i(m, h, !0);
40
- O ||= c($), re.log({ publicSignalCount: Z }), J.calldataHash = ae(Z, S, y, v, b, F, T, E, O, w, Q, k, j, M);
41
- let { zkCallData: ue } = await se(C, _, J, x), de = s(L, I);
42
- return {
43
- zkCallData: ue,
44
- circomData: oe(q, K, W, G, $, P, h, F, Z, v, y, b, S, J.calldataHash, Y, de, w, E, void 0, Q, O, k, j, M),
45
- dimData: {
46
- tokenNumber: m.length,
47
- nullifierAmount: m[0].length,
48
- outputAmount: h[0].length
49
- },
50
- encryptedOutputs: F
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 { f as constructZkProof };
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 (o) try {
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(`../../../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(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m,h,g,_,v=!0,y=!1)=>{let b=Array.isArray(d)?d:[d],x=Array.isArray(f)?f:[f];if(b.length!==x.length)throw Error(`token and amount length mismatch`);let S=l.getContractWithSigner(u,t.ContractType.HinkalContract),C=await l.getEthereumAddressByChain(u),w=g??S,T=_??S,E=`transact`,D=x.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),O=x.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),k=D===-1?0n:b[D],A=l.getProviderAdapter(u),j=await A.supportsBatchCall?.(u);if(!y&&O&&j&&A.sendBatchCallsTransaction){let e=o.buildApproveAndTransactCalls(x.map(e=>e.erc20TokenAddress),b,r.getContractAddress(w),T,p,h,m,k);return await A.sendBatchCallsTransaction(u,e)}if(!y&&(await a.approveTokensToHinkal(l,u,w,x,b),O)){let e=x.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:b[t]}));await s.waitForErc20Approvals(l,u,C,r.getContractAddress(w),e)}let M={value:k>0n?BigInt(k).toString():void 0,gasLimit:void 0},N,P=[p[0],p[1],p[2],h,m,{...M,from:C}],{runner:F}=T;if(!(F instanceof c.ethers.AbstractSigner))throw Error(`expected signer`);if(v)try{N=Number(await T[E].estimateGas(...P))}catch(e){console.log(`hinkalDeposit: gas estimation error`,{err:e})}let I=N&&N>=0?Math.ceil(N*12/10):void 0;I&&(P[5].gasLimit=I),await n.waitLittle();let L;try{L=y?await T[E].populateTransaction(...P):await T[E](...P)}catch(e){if(!e?.transactionHash)throw e;let t=await i.recoverTransactionFromError(F.provider,e.transactionHash);if(!t)throw e;L=t}return L};exports.transactCallDirect=l;
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(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=`[transactCallDirect]`,u=e=>typeof e==`bigint`?e.toString():void 0,d=e=>({aLength:e?.[0]?.length,bOuterLength:e?.[1]?.length,bInnerLengths:e?.[1]?.map(e=>e.length),cLength:e?.[2]?.length,inputLength:e?.[3]?.length}),f=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:u(e.rootHashHinkal),rootHashAccessToken:u(e.rootHashAccessToken),relay:e.relay,externalAddress:e.externalAddress,externalActionId:u(e.externalActionId),calldataHash:u(e.calldataHash),publicSignalCount:e.publicSignalCount,originalSender:e.originalSender}),p=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}),m=async(u,m,h,g,_,v,y,b,x,S=!0,C=!1)=>{console.log(`${l} start`,{chainId:m,preEstimateGas:S,returnTxData:C,amountIsArray:Array.isArray(h),tokenIsArray:Array.isArray(g),zkCallData:d(_),dimData:y,circomData:f(v)});let w=Array.isArray(h)?h:[h],T=Array.isArray(g)?g:[g];if(console.log(`${l} normalized inputs`,{amounts:w.map(e=>e.toString()),tokenAddresses:T.map(({erc20TokenAddress:e})=>e),tokenSymbols:T.map(({symbol:e})=>e)}),w.length!==T.length)throw Error(`token and amount length mismatch`);console.log(`${l} fetching signer contract`);let E=u.getContractWithSigner(m,t.ContractType.HinkalContract);console.log(`${l} signer contract ready`,{hinkalContractAddress:r.getContractAddress(E)}),console.log(`${l} fetching ethereum address`);let D=await u.getEthereumAddressByChain(m);console.log(`${l} ethereum address ready`,{ethereumAddress:D});let O=b??E,k=x??E;console.log(`${l} contracts resolved`,{approvalContractAddress:r.getContractAddress(O),transactionContractAddress:r.getContractAddress(k),usedCustomApprovalContract:!!b,usedCustomTransactionContract:!!x});let A=`transact`,j=T.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),M=T.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),N=j===-1?0n:w[j];console.log(`${l} token analysis`,{ethIndex:j,needsApproval:M,ethAmount:N.toString()}),console.log(`${l} fetching provider adapter`);let P=u.getProviderAdapter(m);console.log(`${l} provider adapter ready`,{providerAdapterType:P?.constructor?.name}),console.log(`${l} checking batch support`);let F=await P.supportsBatchCall?.(m);if(console.log(`${l} batch support resolved`,{supportsBatchCall:F,hasSendBatchCallsTransaction:!!P.sendBatchCallsTransaction}),!C&&M&&F&&P.sendBatchCallsTransaction){console.log(`${l} entering batch call path`);let e=T.map(e=>e.erc20TokenAddress),t=o.buildApproveAndTransactCalls(e,w,r.getContractAddress(O),k,_,y,v,N);console.log(`${l} batch calls built`,{batchCallCount:t.length,tokenAddresses:e,approvalContractAddress:r.getContractAddress(O),transactionContractAddress:r.getContractAddress(k)}),console.log(`${l} sending batch calls transaction`);let n=await P.sendBatchCallsTransaction(m,t);return console.log(`${l} batch calls transaction sent`,p(n)),n}if(!C&&(console.log(`${l} approving tokens start`),await a.approveTokensToHinkal(u,m,O,T,w),console.log(`${l} approving tokens complete`),M)){let e=T.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:w[t]}));console.log(`${l} waiting for approvals start`,{ownerAddress:D,spenderAddress:r.getContractAddress(O),requirements:e.map(({tokenAddress:e,requiredAmount:t})=>({tokenAddress:e,requiredAmount:t.toString()}))}),await s.waitForErc20Approvals(u,m,D,r.getContractAddress(O),e),console.log(`${l} waiting for approvals complete`)}let I={value:N>0n?BigInt(N).toString():void 0,gasLimit:void 0};console.log(`${l} overrides prepared`,I);let L,R=[_[0],_[1],_[2],y,v,{...I,from:D}];console.log(`${l} call data prepared`,{method:A,dimData:y,transactionContractAddress:r.getContractAddress(k),from:D,value:I.value,zkCallData:d(_)});let{runner:z}=k;if(console.log(`${l} runner resolved`,{runnerType:z?.constructor?.name,hasProvider:!!z?.provider}),!(z instanceof c.ethers.AbstractSigner))throw console.log(`${l} runner is not a signer`,{runnerType:z?.constructor?.name}),Error(`expected signer`);if(S){console.log(`${l} estimateGas start`);try{L=Number(await k[A].estimateGas(...R)),console.log(`${l} estimateGas success`,{gasCosts:L})}catch(e){console.log(`${l} estimateGas error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,reason:e?.reason,data:e?.data,error:e})}}else console.log(`${l} estimateGas skipped`);let B=L&&L>=0?Math.ceil(L*12/10):void 0;B&&(R[5].gasLimit=B),console.log(`${l} gas configuration final`,{gasCosts:L,extendedGasCosts:B,finalOverrides:R[5]}),console.log(`${l} waitLittle start`),await n.waitLittle(),console.log(`${l} waitLittle complete`);let V;try{C?(console.log(`${l} populateTransaction start`),V=await k[A].populateTransaction(...R),console.log(`${l} populateTransaction success`,p(V))):(console.log(`${l} contract call start`),V=await k[A](...R),console.log(`${l} contract call success`,p(V)))}catch(e){if(console.log(`${l} 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(`${l} recoverTransactionFromError start`,{transactionHash:e.transactionHash});let t=await i.recoverTransactionFromError(z.provider,e.transactionHash);if(!t)throw console.log(`${l} recoverTransactionFromError failed`),e;console.log(`${l} recoverTransactionFromError success`,p(t)),V=t}return console.log(`${l} complete`,p(V)),V};exports.transactCallDirect=m;
@@ -8,53 +8,174 @@ import { buildApproveAndTransactCalls as o } from "./constructBatchCall.mjs";
8
8
  import { waitForErc20Approvals as s } from "./waitForErc20Approvals.mjs";
9
9
  import { ethers as c } from "ethers";
10
10
  //#region libs/shared/common/src/functions/web3/functionCalls/transactCallDirect.ts
11
- var l = async (l, u, d, f, p, m, h, g, _, v = !0, y = !1) => {
12
- let b = Array.isArray(d) ? d : [d], x = Array.isArray(f) ? f : [f];
13
- if (b.length !== x.length) throw Error("token and amount length mismatch");
14
- let S = l.getContractWithSigner(u, t.HinkalContract), C = await l.getEthereumAddressByChain(u), w = g ?? S, T = _ ?? S, E = "transact", D = x.findIndex(({ erc20TokenAddress: t }) => t === e), O = x.some(({ erc20TokenAddress: t }) => t !== e), k = D === -1 ? 0n : b[D], A = l.getProviderAdapter(u), j = await A.supportsBatchCall?.(u);
15
- if (!y && O && j && A.sendBatchCallsTransaction) {
16
- let e = o(x.map((e) => e.erc20TokenAddress), b, r(w), T, p, h, m, k);
17
- return await A.sendBatchCallsTransaction(u, e);
11
+ var l = "[transactCallDirect]", u = (e) => typeof e == "bigint" ? e.toString() : void 0, d = (e) => ({
12
+ aLength: e?.[0]?.length,
13
+ bOuterLength: e?.[1]?.length,
14
+ bInnerLengths: e?.[1]?.map((e) => e.length),
15
+ cLength: e?.[2]?.length,
16
+ inputLength: e?.[3]?.length
17
+ }), f = (e) => ({
18
+ tokenCount: e.erc20TokenAddresses?.length,
19
+ tokenAddresses: e.erc20TokenAddresses,
20
+ amountChanges: e.amountChanges?.map((e) => e.toString()),
21
+ inputNullifierGroupCount: e.inputNullifiers?.length,
22
+ inputNullifierSizes: e.inputNullifiers?.map((e) => e.length),
23
+ outCommitmentGroupCount: e.outCommitments?.length,
24
+ outCommitmentSizes: e.outCommitments?.map((e) => e.length),
25
+ encryptedOutputGroupCount: e.encryptedOutputs?.length,
26
+ encryptedOutputSizes: e.encryptedOutputs?.map((e) => e.length),
27
+ rootHashHinkal: u(e.rootHashHinkal),
28
+ rootHashAccessToken: u(e.rootHashAccessToken),
29
+ relay: e.relay,
30
+ externalAddress: e.externalAddress,
31
+ externalActionId: u(e.externalActionId),
32
+ calldataHash: u(e.calldataHash),
33
+ publicSignalCount: e.publicSignalCount,
34
+ originalSender: e.originalSender
35
+ }), p = (e) => ({
36
+ hash: "hash" in e ? e.hash : void 0,
37
+ to: e.to,
38
+ from: e.from,
39
+ nonce: e.nonce,
40
+ value: typeof e.value == "bigint" ? e.value.toString() : e.value,
41
+ gasLimit: typeof e.gasLimit == "bigint" ? e.gasLimit.toString() : e.gasLimit,
42
+ dataLength: typeof e.data == "string" ? e.data.length : void 0
43
+ }), m = async (u, m, h, g, _, v, y, b, x, S = !0, C = !1) => {
44
+ console.log(`${l} start`, {
45
+ chainId: m,
46
+ preEstimateGas: S,
47
+ returnTxData: C,
48
+ amountIsArray: Array.isArray(h),
49
+ tokenIsArray: Array.isArray(g),
50
+ zkCallData: d(_),
51
+ dimData: y,
52
+ circomData: f(v)
53
+ });
54
+ let w = Array.isArray(h) ? h : [h], T = Array.isArray(g) ? g : [g];
55
+ if (console.log(`${l} normalized inputs`, {
56
+ amounts: w.map((e) => e.toString()),
57
+ tokenAddresses: T.map(({ erc20TokenAddress: e }) => e),
58
+ tokenSymbols: T.map(({ symbol: e }) => e)
59
+ }), w.length !== T.length) throw Error("token and amount length mismatch");
60
+ console.log(`${l} fetching signer contract`);
61
+ let E = u.getContractWithSigner(m, t.HinkalContract);
62
+ console.log(`${l} signer contract ready`, { hinkalContractAddress: r(E) }), console.log(`${l} fetching ethereum address`);
63
+ let D = await u.getEthereumAddressByChain(m);
64
+ console.log(`${l} ethereum address ready`, { ethereumAddress: D });
65
+ let O = b ?? E, k = x ?? E;
66
+ console.log(`${l} contracts resolved`, {
67
+ approvalContractAddress: r(O),
68
+ transactionContractAddress: r(k),
69
+ usedCustomApprovalContract: !!b,
70
+ usedCustomTransactionContract: !!x
71
+ });
72
+ let A = "transact", j = T.findIndex(({ erc20TokenAddress: t }) => t === e), M = T.some(({ erc20TokenAddress: t }) => t !== e), N = j === -1 ? 0n : w[j];
73
+ console.log(`${l} token analysis`, {
74
+ ethIndex: j,
75
+ needsApproval: M,
76
+ ethAmount: N.toString()
77
+ }), console.log(`${l} fetching provider adapter`);
78
+ let P = u.getProviderAdapter(m);
79
+ console.log(`${l} provider adapter ready`, { providerAdapterType: P?.constructor?.name }), console.log(`${l} checking batch support`);
80
+ let F = await P.supportsBatchCall?.(m);
81
+ if (console.log(`${l} batch support resolved`, {
82
+ supportsBatchCall: F,
83
+ hasSendBatchCallsTransaction: !!P.sendBatchCallsTransaction
84
+ }), !C && M && F && P.sendBatchCallsTransaction) {
85
+ console.log(`${l} entering batch call path`);
86
+ let e = T.map((e) => e.erc20TokenAddress), t = o(e, w, r(O), k, _, y, v, N);
87
+ console.log(`${l} batch calls built`, {
88
+ batchCallCount: t.length,
89
+ tokenAddresses: e,
90
+ approvalContractAddress: r(O),
91
+ transactionContractAddress: r(k)
92
+ }), console.log(`${l} sending batch calls transaction`);
93
+ let n = await P.sendBatchCallsTransaction(m, t);
94
+ return console.log(`${l} batch calls transaction sent`, p(n)), n;
18
95
  }
19
- if (!y && (await a(l, u, w, x, b), O)) {
20
- let e = x.map(({ erc20TokenAddress: e }, t) => ({
96
+ if (!C && (console.log(`${l} approving tokens start`), await a(u, m, O, T, w), console.log(`${l} approving tokens complete`), M)) {
97
+ let e = T.map(({ erc20TokenAddress: e }, t) => ({
21
98
  tokenAddress: e,
22
- requiredAmount: b[t]
99
+ requiredAmount: w[t]
23
100
  }));
24
- await s(l, u, C, r(w), e);
101
+ console.log(`${l} waiting for approvals start`, {
102
+ ownerAddress: D,
103
+ spenderAddress: r(O),
104
+ requirements: e.map(({ tokenAddress: e, requiredAmount: t }) => ({
105
+ tokenAddress: e,
106
+ requiredAmount: t.toString()
107
+ }))
108
+ }), await s(u, m, D, r(O), e), console.log(`${l} waiting for approvals complete`);
25
109
  }
26
- let M = {
27
- value: k > 0n ? BigInt(k).toString() : void 0,
110
+ let I = {
111
+ value: N > 0n ? BigInt(N).toString() : void 0,
28
112
  gasLimit: void 0
29
- }, N, P = [
30
- p[0],
31
- p[1],
32
- p[2],
33
- h,
34
- m,
113
+ };
114
+ console.log(`${l} overrides prepared`, I);
115
+ let L, R = [
116
+ _[0],
117
+ _[1],
118
+ _[2],
119
+ y,
120
+ v,
35
121
  {
36
- ...M,
37
- from: C
122
+ ...I,
123
+ from: D
38
124
  }
39
- ], { runner: F } = T;
40
- if (!(F instanceof c.AbstractSigner)) throw Error("expected signer");
41
- if (v) try {
42
- N = Number(await T[E].estimateGas(...P));
43
- } catch (e) {
44
- console.log("hinkalDeposit: gas estimation error", { err: e });
45
- }
46
- let I = N && N >= 0 ? Math.ceil(N * 12 / 10) : void 0;
47
- I && (P[5].gasLimit = I), await n();
48
- let L;
125
+ ];
126
+ console.log(`${l} call data prepared`, {
127
+ method: A,
128
+ dimData: y,
129
+ transactionContractAddress: r(k),
130
+ from: D,
131
+ value: I.value,
132
+ zkCallData: d(_)
133
+ });
134
+ let { runner: z } = k;
135
+ if (console.log(`${l} runner resolved`, {
136
+ runnerType: z?.constructor?.name,
137
+ hasProvider: !!z?.provider
138
+ }), !(z instanceof c.AbstractSigner)) throw console.log(`${l} runner is not a signer`, { runnerType: z?.constructor?.name }), Error("expected signer");
139
+ if (S) {
140
+ console.log(`${l} estimateGas start`);
141
+ try {
142
+ L = Number(await k[A].estimateGas(...R)), console.log(`${l} estimateGas success`, { gasCosts: L });
143
+ } catch (e) {
144
+ console.log(`${l} estimateGas error`, {
145
+ message: e?.message,
146
+ code: e?.code,
147
+ shortMessage: e?.shortMessage,
148
+ reason: e?.reason,
149
+ data: e?.data,
150
+ error: e
151
+ });
152
+ }
153
+ } else console.log(`${l} estimateGas skipped`);
154
+ let B = L && L >= 0 ? Math.ceil(L * 12 / 10) : void 0;
155
+ B && (R[5].gasLimit = B), console.log(`${l} gas configuration final`, {
156
+ gasCosts: L,
157
+ extendedGasCosts: B,
158
+ finalOverrides: R[5]
159
+ }), console.log(`${l} waitLittle start`), await n(), console.log(`${l} waitLittle complete`);
160
+ let V;
49
161
  try {
50
- L = y ? await T[E].populateTransaction(...P) : await T[E](...P);
162
+ C ? (console.log(`${l} populateTransaction start`), V = await k[A].populateTransaction(...R), console.log(`${l} populateTransaction success`, p(V))) : (console.log(`${l} contract call start`), V = await k[A](...R), console.log(`${l} contract call success`, p(V)));
51
163
  } catch (e) {
52
- if (!e?.transactionHash) throw e;
53
- let t = await i(F.provider, e.transactionHash);
54
- if (!t) throw e;
55
- L = t;
164
+ if (console.log(`${l} contract call error`, {
165
+ message: e?.message,
166
+ code: e?.code,
167
+ shortMessage: e?.shortMessage,
168
+ reason: e?.reason,
169
+ transactionHash: e?.transactionHash,
170
+ data: e?.data,
171
+ error: e
172
+ }), !e?.transactionHash) throw e;
173
+ console.log(`${l} recoverTransactionFromError start`, { transactionHash: e.transactionHash });
174
+ let t = await i(z.provider, e.transactionHash);
175
+ if (!t) throw console.log(`${l} recoverTransactionFromError failed`), e;
176
+ console.log(`${l} recoverTransactionFromError success`, p(t)), V = t;
56
177
  }
57
- return L;
178
+ return console.log(`${l} complete`, p(V)), V;
58
179
  };
59
180
  //#endregion
60
- export { l as transactCallDirect };
181
+ export { m as transactCallDirect };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapa123456789/sdk",
3
- "version": "0.0.65",
3
+ "version": "0.0.67",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-DCxQ7eXx.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-DCxQ7eXx.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
1
+ var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-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-DCxQ7eXx.js", import.meta.url).href;
2
+ var e = "" + new URL("../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js", import.meta.url).href;
3
3
  //#endregion
4
4
  export { e as default };