@kapa123456789/sdk 0.0.68 → 0.0.70

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 (76) hide show
  1. package/common/src/constants/vite.constants.cjs +1 -1
  2. package/common/src/constants/vite.constants.mjs +6 -2
  3. package/common/src/crypto/BabyJubRN.cjs +1 -0
  4. package/common/src/crypto/BabyJubRN.d.ts +18 -0
  5. package/common/src/crypto/BabyJubRN.mjs +33 -0
  6. package/common/src/crypto/babyJub.cjs +1 -1
  7. package/common/src/crypto/babyJub.mjs +6 -34
  8. package/common/src/crypto/poseidon.cjs +1 -1
  9. package/common/src/crypto/poseidon.mjs +13 -14
  10. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  11. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +2 -35
  12. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  13. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +10 -10
  14. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  15. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +9 -49
  16. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +12 -59
  18. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +13 -58
  20. package/common/src/error-handling/logger.cjs +1 -1
  21. package/common/src/error-handling/logger.mjs +15 -7
  22. package/common/src/functions/index.cjs +1 -1
  23. package/common/src/functions/index.mjs +1 -0
  24. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  25. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +48 -161
  26. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  27. package/common/src/functions/snarkjs/generateZkProof.mjs +1 -6
  28. package/common/src/functions/utils/bigint-math.utils.cjs +1 -0
  29. package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
  30. package/common/src/functions/utils/bigint-math.utils.mjs +12 -0
  31. package/common/src/functions/utils/index.cjs +1 -1
  32. package/common/src/functions/utils/index.d.ts +1 -0
  33. package/common/src/functions/utils/index.mjs +1 -0
  34. package/common/src/functions/web3/functionCalls/constructBatchCall.cjs +1 -1
  35. package/common/src/functions/web3/functionCalls/constructBatchCall.mjs +27 -6
  36. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  37. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +42 -145
  38. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  39. package/common/src/providers/WagmiProviderAdapter.mjs +7 -30
  40. package/common/src/webworker/{logError-DlIdq8zv.js → logError-D7JCP4vy.js} +5 -5
  41. package/common/src/webworker/package.json +2 -2
  42. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  43. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  44. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  45. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  46. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  47. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  48. package/common/src/webworker/viteWorkerURL.constant.cjs +4 -4
  49. package/common/src/webworker/viteWorkerURL.constant.mjs +4 -4
  50. package/common/src/webworker/workerFactory.cjs +1 -1
  51. package/common/src/webworker/workerFactory.mjs +1 -1
  52. package/common/src/webworker/{workerProxy-Cr4zT_SW.js → workerProxy-C1ojG-04.js} +1 -1
  53. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  54. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  55. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  56. package/package.json +2 -2
  57. package/react-native/HinkalWebViewWorker.cjs +3 -3
  58. package/react-native/HinkalWebViewWorker.mjs +46 -68
  59. package/react-native/bridge/HinkalRNWorker.cjs +1 -0
  60. package/react-native/bridge/HinkalRNWorker.d.ts +13 -0
  61. package/react-native/bridge/HinkalRNWorker.mjs +26 -0
  62. package/react-native/bridge/serialization.utils.cjs +1 -0
  63. package/react-native/bridge/serialization.utils.d.ts +3 -0
  64. package/react-native/bridge/serialization.utils.mjs +13 -0
  65. package/react-native/metro-config.js +4 -8
  66. package/react-native/shims/circomlibjs-hinkal-fork.js +1 -1
  67. package/react-native/shims/crypto.js +23 -16
  68. package/react-native/shims/globals.js +6 -4
  69. package/react-native/shims/idb-keyval.js +13 -5
  70. package/react-native/shims/path.js +20 -7
  71. package/react-native/shims/snarkjs.js +7 -6
  72. package/react-native/workerCDNUrls.cjs +1 -1
  73. package/react-native/workerCDNUrls.mjs +2 -4
  74. package/sdk/package.json.cjs +1 -1
  75. package/sdk/package.json.mjs +2 -2
  76. package/react-native/shims/circomlibjs.js +0 -16
@@ -32,78 +32,33 @@ var x = async (e, t, n, r) => {
32
32
  outputUtxosArray: o
33
33
  };
34
34
  }, S = async (a, l, u, S, C, w, T, E) => {
35
- console.log("[hinkalWithdraw] start", {
36
- tokenCount: l.length,
37
- deltaAmountsBase: u,
38
- recipientAddress: S,
39
- isRelayerOff: C,
40
- feeToken: w,
41
- hasFeeStructureOverride: !!T,
42
- action: E
43
- });
44
- let D = c(l);
45
- console.log("[hinkalWithdraw] chainId", D);
46
- let O = e(D);
47
- console.log("[hinkalWithdraw] isTron", O);
48
- let k = o(await a.getEthereumAddressByChain(D));
49
- console.log("[hinkalWithdraw] ethereumAddress", k);
50
- let A = l.map((e) => e.erc20TokenAddress);
51
- console.log("[hinkalWithdraw] erc20Addresses", A);
52
- let j = await f(D, l, u);
53
- console.log("[hinkalWithdraw] deltaAmounts", j);
54
- let M;
55
- if (console.log("[hinkalWithdraw] feeStructure initialized as undefined"), !C) {
56
- console.log("[hinkalWithdraw] resolving relayer fee structure");
57
- let e = T ?? await m(D, w, A, r.Transact);
58
- console.log("[hinkalWithdraw] rawFeeStructure", e);
59
- let t = d(-j[0], e);
60
- console.log("[hinkalWithdraw] totalFee", t), M = {
35
+ let D = c(l), O = e(D), k = o(await a.getEthereumAddressByChain(D)), A = l.map((e) => e.erc20TokenAddress), j = await f(D, l, u), M;
36
+ if (!C) {
37
+ let e = T ?? await m(D, w, A, r.Transact), t = d(-j[0], e);
38
+ M = {
61
39
  feeToken: e.feeToken,
62
40
  flatFee: t,
63
41
  variableRate: 0n
64
- }, console.log("[hinkalWithdraw] feeStructure", M), b(D, A, j, M), console.log("[hinkalWithdraw] deltaAmounts after fee merge", j);
42
+ }, b(D, A, j, M);
65
43
  }
66
44
  let N = l[0];
67
- if (console.log("[hinkalWithdraw] primary token", N), !N) throw Error("Deposit Action: No Token Found");
45
+ if (!N) throw Error("Deposit Action: No Token Found");
68
46
  let P = {
69
47
  externalActionId: 0n,
70
48
  externalAddress: o(S),
71
49
  externalActionMetadata: "0x00"
72
- };
73
- console.log("[hinkalWithdraw] externalActionData", P), console.log("[hinkalWithdraw] loading relay, kyc data, and utxos");
74
- let [F, { patchAccessTokenMerkleTree: I, signatureData: L }, { inputUtxosArray: R, outputUtxosArray: z }] = await Promise.all([
50
+ }, [F, { patchAccessTokenMerkleTree: I, signatureData: L }, { inputUtxosArray: R, outputUtxosArray: z }] = await Promise.all([
75
51
  a.getRandomRelay(D, !0),
76
52
  h(a, D, A, j, k),
77
53
  x(a, D, A, j)
78
54
  ]);
79
- if (console.log("[hinkalWithdraw] relay and proof inputs ready", {
80
- relay: F,
81
- hasPatchAccessTokenMerkleTree: !!I,
82
- hasSignatureData: !!L,
83
- inputUtxoGroups: R.length,
84
- outputUtxoGroups: z.length,
85
- inputUtxoSizes: R.map((e) => e.length),
86
- outputUtxoSizes: z.map((e) => e.length)
87
- }), !C && !F) throw Error(i.RELAYER_NOT_AVAILABLE);
88
- let B = `swapperM${j.length.toString()}x${R[0].length}x1`;
89
- console.log("[hinkalWithdraw] circuitName", B), console.log("[hinkalWithdraw] constructing zk proof and commitment validation data");
90
- let [{ zkCallData: V, circomData: H, dimData: U }, W] = await Promise.all([_(a.merkleTreeHinkalByChain[D], a.merkleTreeAccessTokenByChain[D], R, z, a.userKeys, B, P.externalActionId, P.externalAddress, P.externalActionMetadata, a.generateProofRemotely, C ? t : F, D, void 0, void 0, void 0, I, void 0, M, a.getContractWithFetcher(D, n.HinkalHelperContract), L, C ? k : void 0), g(D, a.userKeys, A, R)]);
91
- console.log("[hinkalWithdraw] proof data ready", {
92
- zkCallDataLength: V?.length,
93
- circomDataLength: Array.isArray(H) ? H.length : void 0,
94
- dimDataLength: Array.isArray(U) ? U.length : void 0,
95
- commitmentValidationData: W
96
- });
97
- let G = await s(O, V, U, H);
98
- if (console.log("[hinkalWithdraw] tronProofSignature", G), C) {
99
- if (console.log("[hinkalWithdraw] relayer disabled, using direct transaction path"), !N) throw Error("Withdraw Action: No Token Found");
100
- let e = await v(a, D, j[0], N, V, H, U);
101
- return console.log("[hinkalWithdraw] direct transaction result", e), e;
55
+ if (!C && !F) throw Error(i.RELAYER_NOT_AVAILABLE);
56
+ let B = `swapperM${j.length.toString()}x${R[0].length}x1`, [{ zkCallData: V, circomData: H, dimData: U }, W] = await Promise.all([_(a.merkleTreeHinkalByChain[D], a.merkleTreeAccessTokenByChain[D], R, z, a.userKeys, B, P.externalActionId, P.externalAddress, P.externalActionMetadata, a.generateProofRemotely, C ? t : F, D, void 0, void 0, void 0, I, void 0, M, a.getContractWithFetcher(D, n.HinkalHelperContract), L, C ? k : void 0), g(D, a.userKeys, A, R)]), G = await s(O, V, U, H);
57
+ if (C) {
58
+ if (!N) throw Error("Withdraw Action: No Token Found");
59
+ return await v(a, D, j[0], N, V, H, U);
102
60
  }
103
- let K = p(E, D, A, j, k);
104
- console.log("[hinkalWithdraw] adminData", K), console.log("[hinkalWithdraw] calling transactCallRelayer");
105
- let q = await y(D, V, U, H, W, void 0, void 0, K, G);
106
- return console.log("[hinkalWithdraw] txHash", q), q;
61
+ return await y(D, V, U, H, W, void 0, void 0, p(E, D, A, j, k), G);
107
62
  };
108
63
  //#endregion
109
64
  export { S as hinkalWithdraw };
@@ -1 +1 @@
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
+ const e=require(`../constants/vite.constants.cjs`),t=require(`./logError.cjs`);var n=class{static log(...t){e.isNotClientProduction&&console.log(...t)}static logObject(t){e.isNotClientProduction&&console.dir(t,{depth:null,colors:!0})}static error(...e){t.logError(e)}};exports.Logger=n;
@@ -1,11 +1,19 @@
1
- import { logError as e } from "./logError.mjs";
1
+ import { isNotClientProduction as e } from "../constants/vite.constants.mjs";
2
+ import { logError as t } from "./logError.mjs";
2
3
  //#region libs/shared/common/src/error-handling/logger.ts
3
- var t = class {
4
- static log(...e) {}
5
- static logObject(e) {}
6
- static error(...t) {
7
- e(t);
4
+ var n = class {
5
+ static log(...t) {
6
+ e && console.log(...t);
7
+ }
8
+ static logObject(t) {
9
+ e && console.dir(t, {
10
+ depth: null,
11
+ colors: !0
12
+ });
13
+ }
14
+ static error(...e) {
15
+ t(e);
8
16
  }
9
17
  };
10
18
  //#endregion
11
- export { t as Logger };
19
+ export { n as Logger };
@@ -1 +1 @@
1
- require(`./utils/serialize.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./pre-transaction/solana.cjs`),require(`./web3/functionCalls/accessTokenCalls.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/create-provider.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getFlatFees.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/getKycAndSignatureData.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./kyc/openDefaultPassportWindow.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./web3/events/balanceChangedHandler.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructEmporiumProof.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/lifiAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/signAndSendSerializedTransaction.cjs`),require(`./web3/index.cjs`),require(`./kyc/checkTokenLimitsUSD.cjs`),require(`./kyc/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
1
+ require(`./utils/serialize.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./pre-transaction/solana.cjs`),require(`./web3/functionCalls/accessTokenCalls.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/bigint-math.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/create-provider.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getFlatFees.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/getKycAndSignatureData.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./kyc/openDefaultPassportWindow.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./web3/events/balanceChangedHandler.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructEmporiumProof.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/lifiAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/signAndSendSerializedTransaction.cjs`),require(`./web3/index.cjs`),require(`./kyc/checkTokenLimitsUSD.cjs`),require(`./kyc/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
@@ -5,6 +5,7 @@ import "./web3/functionCalls/accessTokenCalls.mjs";
5
5
  import "./web3/etherFunctions.mjs";
6
6
  import "./utils/erc20tokenFunctions.mjs";
7
7
  import "./utils/caseInsensitive.utils.mjs";
8
+ import "./utils/bigint-math.utils.mjs";
8
9
  import "./utils/time.utils.mjs";
9
10
  import "./utils/upToDateState.mjs";
10
11
  import "./utils/getContractAddress.mjs";
@@ -1 +1 @@
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
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/utxo/Utxo.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`./common.snarkjs.cjs`),s=require(`./generateCircomData.cjs`),c=require(`./generateZkProof.cjs`),l=require(`../utils/fees.utils.cjs`),u=require(`../../data-structures/Hinkal/hinkalCheckTokenRegistry.cjs`),d=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`);var f=async(f,p,m,h,g,_,v,y,b,x,S=t.zeroAddress,C=e.chainIds.localhost,w=m.map(()=>!1),T=m.map(()=>0n),E=void 0,D=!1,O,k=void 0,A,j=t.defaultSignatureData,M)=>{let N=o.calcAmountChanges(m,h),P=m.map(e=>e[0].erc20TokenAddress),F=o.calcEncryptedOutputs(h),I=g.getShieldedPrivateKey(),L=i.Utxo.findCorrectRandomization(r.randomBigInt(31),I),R=e.isTronLike(C)?await u.hinkalCheckTronTokenRegistry(P,o.calcAmountChanges(m,h,!0),C):await u.hinkalCheckTokenRegistry(A??u.createHinkalHelperFromData(C),P,o.calcAmountChanges(m,h,!0)),z=e.isTronLike(C)?D||R:D,{inCommitmentSiblings:B,inCommitmentSiblingSides:V,accessTokenSiblings:H,accessTokenSiblingSides:U,rootHashHinkal:W,rootHashAccessToken:G,inNullifiers:K}=await d.getDataFromWorkers(C,f,p,g,m.map(e=>e.map(e=>e.getConstructableParams())),z,R),q=o.buildOutCommitments(h),J={rootHashHinkal:W,shieldedPrivateKey:I,erc20TokenAddresses:P,inAmounts:m.map(e=>e.map(e=>e.amount.toString())),inTimeStamps:m.map(e=>e.map(e=>e.timeStamp)),inRandomizations:m.map(e=>e.map(e=>e.randomization)),inNullifiers:K,inCommitmentSiblings:B,inCommitmentSiblingSides:V,outAmounts:h.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(h[0][0].timeStamp),outPublicKeys:h.map(e=>e.map(e=>e.getStealthAddress())),extraRandomization:L,amountChanges:N,outCommitments:q,rootHashAccessToken:G,accessTokenSiblings:H,accessTokenSiblingSides:U,calldataHash:0n},Y=m.map(e=>e[0].tokenId??0),X=Y.reduce((e,t)=>e+t,0)>0?Y.length:0;X>0&&(J.tokenIds=Y);let Z=o.calcPublicSignalCount(_,J.erc20TokenAddresses,J.amountChanges,J.inNullifiers,J.outCommitments,X),Q=n.defaultHinkalLogicArgs(N.length,g);J.interactionAddress=Q.interactionAddress,J.externalApprovalAddresses=Q.useApprovalUtxoData?.map(({externalApprovalAddresses:e})=>e),k||=l.generateFeeStructure(T,m.map(e=>e[0].erc20TokenAddress));let $=o.calcAmountChanges(m,h,!0);O||=o.getSlippageValues($),a.Logger.log({publicSignalCount:Z}),J.calldataHash=o.createCallDataHash(Z,S,y,v,b,F,T,E,O,w,Q,k,j,M);let{zkCallData:ee}=await c.generateZkProof(C,_,J,x),te=o.calcStealthAddressStructure(L,I);return{zkCallData:ee,circomData:s.generateCircomData(q,K,W,G,$,P,h,F,Z,v,y,b,S,J.calldataHash,Y,te,w,E,void 0,Q,O,k,j,M),dimData:{tokenNumber:m.length,nullifierAmount:m[0].length,outputAmount:h[0].length},encryptedOutputs:F}};exports.constructZkProof=f;
@@ -1,167 +1,54 @@
1
1
  import { chainIds as e, isTronLike as t } from "../../constants/chains.constants.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";
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";
13
13
  //#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
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,
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,
104
34
  calldataHash: 0n
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
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
164
51
  };
165
52
  };
166
53
  //#endregion
167
- export { s as constructZkProof };
54
+ export { f 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(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;
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;
@@ -3,12 +3,7 @@ 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 (console.log("generateZkProof", {
7
- chainId: r,
8
- verifierName: i,
9
- input: a,
10
- remotely: o
11
- }), o) try {
6
+ if (o) try {
12
7
  return await t(r, i, a);
13
8
  } catch (t) {
14
9
  e.error("enclave proof error", t);
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/protocol.constants.cjs`);var t=(t,n=e.CIRCOM_P)=>{let r=t%n;return r>=0n?r:r+n},n=(e,n,r)=>{let i=1n,a=t(e,r),o=n;for(;o>0n;)o%2n==1n&&(i=i*a%r),o/=2n,a=a*a%r;return i};exports.mod=t,exports.modpow=n;
@@ -0,0 +1,2 @@
1
+ export declare const mod: (value: bigint, m?: bigint) => bigint;
2
+ export declare const modpow: (b: bigint, e: bigint, m: bigint) => bigint;
@@ -0,0 +1,12 @@
1
+ import { CIRCOM_P as e } from "../../constants/protocol.constants.mjs";
2
+ //#region libs/shared/common/src/functions/utils/bigint-math.utils.ts
3
+ var t = (t, n = e) => {
4
+ let r = t % n;
5
+ return r >= 0n ? r : r + n;
6
+ }, n = (e, n, r) => {
7
+ let i = 1n, a = t(e, r), o = n;
8
+ for (; o > 0n;) o % 2n == 1n && (i = i * a % r), o /= 2n, a = a * a % r;
9
+ return i;
10
+ };
11
+ //#endregion
12
+ export { t as mod, n as modpow };
@@ -1 +1 @@
1
- require(`./serialize.utils.cjs`),require(`./amounts.utils.cjs`),require(`../pre-transaction/solana.cjs`),require(`./erc20tokenFunctions.cjs`),require(`./caseInsensitive.utils.cjs`),require(`./time.utils.cjs`),require(`./upToDateState.cjs`),require(`./getContractAddress.cjs`),require(`./cacheFunctions.cjs`),require(`./encryptInputForEnclave.cjs`),require(`./solanaMint.utils.cjs`),require(`./addresses.cjs`),require(`./tron.utils.cjs`),require(`./get-signature-header.cjs`),require(`./auth.utils.cjs`),require(`./string.utils.cjs`),require(`./token-check.utils.cjs`),require(`./mutexes.utils.cjs`),require(`../pre-transaction/outputUtxoProcessing.cjs`),require(`./external-action.utils.cjs`),require(`./fees.utils.cjs`),require(`./create-provider.cjs`),require(`./resolve-sync.utils.cjs`),require(`./convertIntegrationProviderToExternalActionId.cjs`),require(`../pre-transaction/process-gas-estimates.cjs`),require(`../pre-transaction/getVolatileTransferAmount.cjs`),require(`../pre-transaction/constructAdminData.cjs`),require(`../pre-transaction/convert-okx-instructions.cjs`),require(`./process.utils.cjs`),require(`../pre-transaction/sendV0Transaction.cjs`),require(`./bytes32.utils.cjs`),require(`../pre-transaction/recipientUtxoProcessing.cjs`),require(`../pre-transaction/ensureAmountChanges.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`../pre-transaction/getKycAndSignatureData.cjs`),require(`../pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`../pre-transaction/buildCommitmentValidationData.cjs`),require(`../pre-transaction/index.cjs`),require(`./evmNetworkFunctions.cjs`),require(`./userAgent.cjs`),require(`./reloadPage.cjs`),require(`./cacheDevice.utils.cjs`),require(`./getBlockExplorerUrl.cjs`),require(`./involves-permit2-op.cjs`),require(`./convertEmporiumOpToCallInfo.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./publicBalance.utils.cjs`),require(`./rpc-int-encode.cjs`),require(`./walletBalances.utils.cjs`),require(`./nftTokenFunctions.cjs`),require(`./inLogicMetadata.cjs`),require(`./networks.utils.cjs`),require(`./postToOffscreen.cjs`),require(`./prepareHinkal.cjs`),require(`./getUtxosFromReceipt.utils.cjs`),require(`./getUtxosFromReceiptSolana.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./enclave-signature-storage.cjs`),require(`./tx-confirmation.utils.cjs`),require(`./buildClaimableDepositPlan.cjs`),require(`./formatter.cjs`),require(`./tronSimulation.utils.cjs`),require(`./getSignerFromContract.cjs`),require(`./deposit-claimable.utils.cjs`),require(`./transfer-claimable.utils.cjs`),require(`./dispatchBalanceRefreshes.cjs`),require(`./lifi.utils.cjs`),require(`./enclave-recipient-info-storage.cjs`);
1
+ require(`./serialize.utils.cjs`),require(`./amounts.utils.cjs`),require(`../pre-transaction/solana.cjs`),require(`./erc20tokenFunctions.cjs`),require(`./caseInsensitive.utils.cjs`),require(`./bigint-math.utils.cjs`),require(`./time.utils.cjs`),require(`./upToDateState.cjs`),require(`./getContractAddress.cjs`),require(`./cacheFunctions.cjs`),require(`./encryptInputForEnclave.cjs`),require(`./solanaMint.utils.cjs`),require(`./addresses.cjs`),require(`./tron.utils.cjs`),require(`./get-signature-header.cjs`),require(`./auth.utils.cjs`),require(`./string.utils.cjs`),require(`./token-check.utils.cjs`),require(`./mutexes.utils.cjs`),require(`../pre-transaction/outputUtxoProcessing.cjs`),require(`./external-action.utils.cjs`),require(`./fees.utils.cjs`),require(`./create-provider.cjs`),require(`./resolve-sync.utils.cjs`),require(`./convertIntegrationProviderToExternalActionId.cjs`),require(`../pre-transaction/process-gas-estimates.cjs`),require(`../pre-transaction/getVolatileTransferAmount.cjs`),require(`../pre-transaction/constructAdminData.cjs`),require(`../pre-transaction/convert-okx-instructions.cjs`),require(`./process.utils.cjs`),require(`../pre-transaction/sendV0Transaction.cjs`),require(`./bytes32.utils.cjs`),require(`../pre-transaction/recipientUtxoProcessing.cjs`),require(`../pre-transaction/ensureAmountChanges.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`../pre-transaction/getKycAndSignatureData.cjs`),require(`../pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`../pre-transaction/buildCommitmentValidationData.cjs`),require(`../pre-transaction/index.cjs`),require(`./evmNetworkFunctions.cjs`),require(`./userAgent.cjs`),require(`./reloadPage.cjs`),require(`./cacheDevice.utils.cjs`),require(`./getBlockExplorerUrl.cjs`),require(`./involves-permit2-op.cjs`),require(`./convertEmporiumOpToCallInfo.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./publicBalance.utils.cjs`),require(`./rpc-int-encode.cjs`),require(`./walletBalances.utils.cjs`),require(`./nftTokenFunctions.cjs`),require(`./inLogicMetadata.cjs`),require(`./networks.utils.cjs`),require(`./postToOffscreen.cjs`),require(`./prepareHinkal.cjs`),require(`./getUtxosFromReceipt.utils.cjs`),require(`./getUtxosFromReceiptSolana.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./enclave-signature-storage.cjs`),require(`./tx-confirmation.utils.cjs`),require(`./buildClaimableDepositPlan.cjs`),require(`./formatter.cjs`),require(`./tronSimulation.utils.cjs`),require(`./getSignerFromContract.cjs`),require(`./deposit-claimable.utils.cjs`),require(`./transfer-claimable.utils.cjs`),require(`./dispatchBalanceRefreshes.cjs`),require(`./lifi.utils.cjs`),require(`./enclave-recipient-info-storage.cjs`);
@@ -1,4 +1,5 @@
1
1
  export * from './amounts.utils';
2
+ export * from './bigint-math.utils';
2
3
  export * from './cacheFunctions';
3
4
  export * from './create-provider';
4
5
  export * from './external-action.utils';
@@ -3,6 +3,7 @@ import "./amounts.utils.mjs";
3
3
  import "../pre-transaction/solana.mjs";
4
4
  import "./erc20tokenFunctions.mjs";
5
5
  import "./caseInsensitive.utils.mjs";
6
+ import "./bigint-math.utils.mjs";
6
7
  import "./time.utils.mjs";
7
8
  import "./upToDateState.mjs";
8
9
  import "./getContractAddress.mjs";
@@ -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,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;
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)=>r.encodeFunctionData(`transact`,[e[0],e[1],e[2],t,n]),a=(e,t,n,r,i)=>i.encodeFunctionData(`prooflessDeposit`,[e,t,n,r]),o=(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},s=(t,a,o,s,c,l,u,d)=>{let f=[];for(let e=0;e<t.length;e+=1){let i=t[e],s=a[e];i!==n.ethers.ZeroAddress&&s>0n&&f.push({to:i,value:`0x0`,data:r(o,s)})}return f.push({to:e.getContractAddress(s),value:d>0n?`0x${d.toString(16)}`:`0x0`,data:i(c,l,u,s.interface)}),f},c=(t,n,r,i,s,c,l,u,d)=>{let f=a(s,c,l,u,i.interface);return o(t,n,r,e.getContractAddress(i),f,d)};exports.buildApproveAndProoflessDepositCalls=c,exports.buildApproveAndTransactCalls=s;
@@ -2,12 +2,18 @@ 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, i) => i.encodeFunctionData("prooflessDeposit", [
5
+ var r = (e, r) => new n.Interface(t).encodeFunctionData("approve", [e, r]), i = (e, t, n, r) => r.encodeFunctionData("transact", [
6
+ e[0],
7
+ e[1],
8
+ e[2],
9
+ t,
10
+ n
11
+ ]), a = (e, t, n, r, i) => i.encodeFunctionData("prooflessDeposit", [
6
12
  e,
7
13
  t,
8
14
  n,
9
15
  r
10
- ]), a = (e, t, i, a, o, s) => {
16
+ ]), o = (e, t, i, a, o, s) => {
11
17
  let c = [];
12
18
  for (let a = 0; a < e.length; a += 1) {
13
19
  let o = e[a], s = t[a];
@@ -22,9 +28,24 @@ var r = (e, r) => new n.Interface(t).encodeFunctionData("approve", [e, r]), i =
22
28
  value: s > 0n ? `0x${s.toString(16)}` : "0x0",
23
29
  data: o
24
30
  }), c;
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);
31
+ }, s = (t, a, o, s, c, l, u, d) => {
32
+ let f = [];
33
+ for (let e = 0; e < t.length; e += 1) {
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);
28
49
  };
29
50
  //#endregion
30
- export { o as buildApproveAndProoflessDepositCalls };
51
+ export { c as buildApproveAndProoflessDepositCalls, s as buildApproveAndTransactCalls };
@@ -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(`./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;
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;