@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
@@ -4,160 +4,57 @@ import { waitLittle as n } from "../../utils/time.utils.mjs";
4
4
  import { getContractAddress as r } from "../../utils/getContractAddress.mjs";
5
5
  import { recoverTransactionFromError as i } from "./recoverTransactionFromError.mjs";
6
6
  import { approveTokensToHinkal as a } from "./approveTokensToHinkal.mjs";
7
- import { waitForErc20Approvals as o } from "./waitForErc20Approvals.mjs";
8
- import { ethers as s } from "ethers";
7
+ import { buildApproveAndTransactCalls as o } from "./constructBatchCall.mjs";
8
+ import { waitForErc20Approvals as s } from "./waitForErc20Approvals.mjs";
9
+ import { ethers as c } from "ethers";
9
10
  //#region libs/shared/common/src/functions/web3/functionCalls/transactCallDirect.ts
10
- var c = "[transactCallDirect]", l = (e) => typeof e == "bigint" ? e.toString() : void 0, u = (e) => ({
11
- aLength: e?.[0]?.length,
12
- bOuterLength: e?.[1]?.length,
13
- bInnerLengths: e?.[1]?.map((e) => e.length),
14
- cLength: e?.[2]?.length,
15
- inputLength: e?.[3]?.length
16
- }), d = (e) => ({
17
- tokenCount: e.erc20TokenAddresses?.length,
18
- tokenAddresses: e.erc20TokenAddresses,
19
- amountChanges: e.amountChanges?.map((e) => e.toString()),
20
- inputNullifierGroupCount: e.inputNullifiers?.length,
21
- inputNullifierSizes: e.inputNullifiers?.map((e) => e.length),
22
- outCommitmentGroupCount: e.outCommitments?.length,
23
- outCommitmentSizes: e.outCommitments?.map((e) => e.length),
24
- encryptedOutputGroupCount: e.encryptedOutputs?.length,
25
- encryptedOutputSizes: e.encryptedOutputs?.map((e) => e.length),
26
- rootHashHinkal: l(e.rootHashHinkal),
27
- rootHashAccessToken: l(e.rootHashAccessToken),
28
- relay: e.relay,
29
- externalAddress: e.externalAddress,
30
- externalActionId: l(e.externalActionId),
31
- calldataHash: l(e.calldataHash),
32
- publicSignalCount: e.publicSignalCount,
33
- originalSender: e.originalSender
34
- }), f = (e) => ({
35
- hash: "hash" in e ? e.hash : void 0,
36
- to: e.to,
37
- from: e.from,
38
- nonce: e.nonce,
39
- value: typeof e.value == "bigint" ? e.value.toString() : e.value,
40
- gasLimit: typeof e.gasLimit == "bigint" ? e.gasLimit.toString() : e.gasLimit,
41
- dataLength: typeof e.data == "string" ? e.data.length : void 0
42
- }), p = async (l, p, m, h, g, _, v, y, b, x = !0, S = !1) => {
43
- console.log(`${c} start`, {
44
- chainId: p,
45
- preEstimateGas: x,
46
- returnTxData: S,
47
- amountIsArray: Array.isArray(m),
48
- tokenIsArray: Array.isArray(h),
49
- zkCallData: u(g),
50
- dimData: v,
51
- circomData: d(_)
52
- });
53
- let C = Array.isArray(m) ? m : [m], w = Array.isArray(h) ? h : [h];
54
- if (console.log(`${c} normalized inputs`, {
55
- amounts: C.map((e) => e.toString()),
56
- tokenAddresses: w.map(({ erc20TokenAddress: e }) => e),
57
- tokenSymbols: w.map(({ symbol: e }) => e)
58
- }), C.length !== w.length) throw Error("token and amount length mismatch");
59
- console.log(`${c} fetching signer contract`);
60
- let T = l.getContractWithSigner(p, t.HinkalContract);
61
- console.log(`${c} signer contract ready`, { hinkalContractAddress: r(T) }), console.log(`${c} fetching ethereum address`);
62
- let E = await l.getEthereumAddressByChain(p);
63
- console.log(`${c} ethereum address ready`, { ethereumAddress: E });
64
- let D = y ?? T, O = b ?? T;
65
- console.log(`${c} contracts resolved`, {
66
- approvalContractAddress: r(D),
67
- transactionContractAddress: r(O),
68
- usedCustomApprovalContract: !!y,
69
- usedCustomTransactionContract: !!b
70
- });
71
- let k = "transact", A = w.findIndex(({ erc20TokenAddress: t }) => t === e), j = w.some(({ erc20TokenAddress: t }) => t !== e), M = A === -1 ? 0n : C[A];
72
- console.log(`${c} token analysis`, {
73
- ethIndex: A,
74
- needsApproval: j,
75
- ethAmount: M.toString()
76
- }), console.log(`${c} fetching provider adapter`);
77
- let N = l.getProviderAdapter(p);
78
- if (console.log(`${c} provider adapter ready`, { providerAdapterType: N?.constructor?.name }), console.log(`${c} checking batch support`), !S && (console.log(`${c} approving tokens start`), await a(l, p, D, w, C), console.log(`${c} approving tokens complete`), j)) {
79
- let e = w.map(({ erc20TokenAddress: e }, t) => ({
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);
18
+ }
19
+ if (!y && (await a(l, u, w, x, b), O)) {
20
+ let e = x.map(({ erc20TokenAddress: e }, t) => ({
80
21
  tokenAddress: e,
81
- requiredAmount: C[t]
22
+ requiredAmount: b[t]
82
23
  }));
83
- console.log(`${c} waiting for approvals start`, {
84
- ownerAddress: E,
85
- spenderAddress: r(D),
86
- requirements: e.map(({ tokenAddress: e, requiredAmount: t }) => ({
87
- tokenAddress: e,
88
- requiredAmount: t.toString()
89
- }))
90
- }), await o(l, p, E, r(D), e), console.log(`${c} waiting for approvals complete`);
24
+ await s(l, u, C, r(w), e);
91
25
  }
92
- let P = {
93
- value: M > 0n ? BigInt(M).toString() : void 0,
26
+ let M = {
27
+ value: k > 0n ? BigInt(k).toString() : void 0,
94
28
  gasLimit: void 0
95
- };
96
- console.log(`${c} overrides prepared`, P);
97
- let F, I = [
98
- g[0],
99
- g[1],
100
- g[2],
101
- v,
102
- _,
29
+ }, N, P = [
30
+ p[0],
31
+ p[1],
32
+ p[2],
33
+ h,
34
+ m,
103
35
  {
104
- ...P,
105
- from: E
106
- }
107
- ];
108
- console.log(`${c} call data prepared`, {
109
- method: k,
110
- dimData: v,
111
- transactionContractAddress: r(O),
112
- from: E,
113
- value: P.value,
114
- zkCallData: u(g)
115
- });
116
- let { runner: L } = O;
117
- if (console.log(`${c} runner resolved`, {
118
- runnerType: L?.constructor?.name,
119
- hasProvider: !!L?.provider
120
- }), !(L instanceof s.AbstractSigner)) throw console.log(`${c} runner is not a signer`, { runnerType: L?.constructor?.name }), Error("expected signer");
121
- if (x) {
122
- console.log(`${c} estimateGas start`);
123
- try {
124
- F = Number(await O[k].estimateGas(...I)), console.log(`${c} estimateGas success`, { gasCosts: F });
125
- } catch (e) {
126
- console.log(`${c} estimateGas error`, {
127
- message: e?.message,
128
- code: e?.code,
129
- shortMessage: e?.shortMessage,
130
- reason: e?.reason,
131
- data: e?.data,
132
- error: e
133
- });
36
+ ...M,
37
+ from: C
134
38
  }
135
- } else console.log(`${c} estimateGas skipped`);
136
- let R = F && F >= 0 ? Math.ceil(F * 12 / 10) : void 0;
137
- R && (I[5].gasLimit = R), console.log(`${c} gas configuration final`, {
138
- gasCosts: F,
139
- extendedGasCosts: R,
140
- finalOverrides: I[5]
141
- }), console.log(`${c} waitLittle start`), await n(), console.log(`${c} waitLittle complete`);
142
- let z;
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;
143
49
  try {
144
- S ? (console.log(`${c} populateTransaction start`), z = await O[k].populateTransaction(...I), console.log(`${c} populateTransaction success`, f(z))) : (console.log(`${c} contract call start`), z = await O[k](...I), console.log(`${c} contract call success`, f(z)));
50
+ L = y ? await T[E].populateTransaction(...P) : await T[E](...P);
145
51
  } catch (e) {
146
- if (console.log(`${c} contract call error`, {
147
- message: e?.message,
148
- code: e?.code,
149
- shortMessage: e?.shortMessage,
150
- reason: e?.reason,
151
- transactionHash: e?.transactionHash,
152
- data: e?.data,
153
- error: e
154
- }), !e?.transactionHash) throw e;
155
- console.log(`${c} recoverTransactionFromError start`, { transactionHash: e.transactionHash });
156
- let t = await i(L.provider, e.transactionHash);
157
- if (!t) throw console.log(`${c} recoverTransactionFromError failed`), e;
158
- console.log(`${c} recoverTransactionFromError success`, f(t)), z = t;
52
+ if (!e?.transactionHash) throw e;
53
+ let t = await i(F.provider, e.transactionHash);
54
+ if (!t) throw e;
55
+ L = t;
159
56
  }
160
- return console.log(`${c} complete`, f(z)), z;
57
+ return L;
161
58
  };
162
59
  //#endregion
163
- export { p as transactCallDirect };
60
+ export { l as transactCallDirect };
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../types/eip5792.types.cjs`),n=require(`../error-handling/error-codes.constants.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);if(e.id===`walletConnect`)try{await(0,c.reconnect)(this.config,{connectors:[e]}),await(0,c.disconnect)(this.config)}catch{}try{return(await(0,c.connect)(this.config,{connector:e})).chainId}catch(t){if(t instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=n.transactionErrorCodes.CONNECTION_FAILED;throw t?.code===4001&&(r=n.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,t,r){if((await this.fetchProviders[e]?.waitForTransaction(t,r))?.status)return!0;throw Error(n.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let t=await(0,c.signMessage)(this.config,{message:e});if(!t)throw Error(n.transactionErrorCodes.SIGNING_FAILED);if(t.includes(`error`))throw Error(n.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return t}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(e){if(!this.config)throw Error(`No Config In Provider Adapter`);return(0,c.switchChain)(this.config,{chainId:e.chainId})}async getAddress(){if(!this.config)throw Error(`No Config In Provider Adapter`);let{address:e}=(0,c.getAccount)(this.config);if(!e)throw Error(`IllegalState`);return o.ethers.getAddress(e)}setChainEventListener(e){if(!this.config)throw Error(`No Config In Provider Adapter`);this.chainEventListener=e,this.chainEventListener&&(this.unsubscribeFns.push((0,c.watchAccount)(this.config,{onChange:({address:e},{address:t})=>{this.chainEventListener&&e!==t&&this.chainEventListener.onAccountChanged()}})),this.unsubscribeFns.push((0,c.watchChainId)(this.config,{onChange:e=>{this.chainEventListener&&this.chainEventListener.onChainChanged(e)}})))}onAccountChanged(){return this.init()}onChainChanged(e){return this.init(e)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(e=>e()),this.unsubscribeFns=[]}getContract(e,t,n=void 0,r){return a.getContract(t,e,n,r)}getContractWithSigner(e,t,n=void 0){if(!this.signer)throw Error(`IllegalState: no signer`);return this.getContract(e,t,n,this.signer)}getContractWithFetcher(e,t,n=void 0){let r=this.fetchProviders[e];if(!r)throw Error(`fetchProvider not initialized`);return this.getContract(e,t,n,r)}async sendTransaction(e){if(!this.signer)throw Error(`IllegalState: no signer`);return await this.signer.sendTransaction(e)}async connectAndPatchProvider(e){return await this.connectToConnector(e)}isPermitterAvailable(){if(!this.chainId)throw Error(`Illegal state: no chainId`);return!!e.networkRegistry[this.chainId]?.contractData?.permitterAddress}async getGasPrice(e){let t=(await this.fetchProviders[e]?.getFeeData())?.gasPrice;if(!t)throw Error(`Could not fetch gas price in getGasPrice`);return t}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(r).getSigner(n)}async supportsBatchCall(e){let t=`[WagmiProviderAdapter.supportsBatchCall]`;if(r.Logger.log(`${t} start`,{chainId:e,hasOriginalProvider:!!this.originalProvider,adapterChainId:this.chainId}),!this.originalProvider)return r.Logger.log(`${t} no original provider`),!1;try{r.Logger.log(`${t} resolving user address`);let n=await this.getAddress();r.Logger.log(`${t} user address resolved`,{userAddress:n});let i=`0x${e.toString(16)}`;r.Logger.log(`${t} chain id hex`,{chainIdHex:i}),r.Logger.log(`${t} wallet_getCapabilities start`);let a=await this.originalProvider.send(`wallet_getCapabilities`,[n,[i]]);r.Logger.log(`${t} wallet_getCapabilities success`,{capabilityKeys:a?Object.keys(a):void 0,capabilities:a});let o=a?.[i]||a?.[`0x0`];if(r.Logger.log(`${t} chain capabilities resolved`,{chainCapabilities:o}),!o?.atomic)return r.Logger.log(`${t} atomic capability missing or falsy`),!1;let s=typeof o.atomic==`string`?o.atomic:o.atomic?.status;r.Logger.log(`${t} atomic capability parsed`,{atomicValue:s});let c=s===`supported`||s===`ready`;return r.Logger.log(`${t} complete`,{isSupported:c}),c}catch(e){return r.Logger.log(`${t} error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,data:e?.data,error:e}),!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let n=0;n<60;n+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let n=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(n.status===t.CallsStatus.Confirmed&&n.receipts?.[0]?.transactionHash)return n.receipts[0].transactionHash;if(n.status===t.CallsStatus.OffchainFailure||n.status===t.CallsStatus.ChainFailure||n.status===t.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(e,t){if(!this.fetchProviders[e])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let n=await this.getAddress(),r={version:`2.0.0`,chainId:`0x${e.toString(16)}`,from:n,atomicRequired:!0,calls:t},i=await this.originalProvider.send(`wallet_sendCalls`,[r]),a=i?.id||i;if(!a||typeof a!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let o=await this.waitForBatchTransactionStatus(a),s=await this.fetchProviders[e].getTransaction(o);if(!s)throw Error(`Transaction not found`);return s}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../types/eip5792.types.cjs`),n=require(`../error-handling/error-codes.constants.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);if(e.id===`walletConnect`)try{await(0,c.reconnect)(this.config,{connectors:[e]}),await(0,c.disconnect)(this.config)}catch{}try{return(await(0,c.connect)(this.config,{connector:e})).chainId}catch(t){if(t instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=n.transactionErrorCodes.CONNECTION_FAILED;throw t?.code===4001&&(r=n.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,t,r){if((await this.fetchProviders[e]?.waitForTransaction(t,r))?.status)return!0;throw Error(n.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let t=await(0,c.signMessage)(this.config,{message:e});if(!t)throw Error(n.transactionErrorCodes.SIGNING_FAILED);if(t.includes(`error`))throw Error(n.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return t}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(e){if(!this.config)throw Error(`No Config In Provider Adapter`);return(0,c.switchChain)(this.config,{chainId:e.chainId})}async getAddress(){if(!this.config)throw Error(`No Config In Provider Adapter`);let{address:e}=(0,c.getAccount)(this.config);if(!e)throw Error(`IllegalState`);return o.ethers.getAddress(e)}setChainEventListener(e){if(!this.config)throw Error(`No Config In Provider Adapter`);this.chainEventListener=e,this.chainEventListener&&(this.unsubscribeFns.push((0,c.watchAccount)(this.config,{onChange:({address:e},{address:t})=>{this.chainEventListener&&e!==t&&this.chainEventListener.onAccountChanged()}})),this.unsubscribeFns.push((0,c.watchChainId)(this.config,{onChange:e=>{this.chainEventListener&&this.chainEventListener.onChainChanged(e)}})))}onAccountChanged(){return this.init()}onChainChanged(e){return this.init(e)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(e=>e()),this.unsubscribeFns=[]}getContract(e,t,n=void 0,r){return a.getContract(t,e,n,r)}getContractWithSigner(e,t,n=void 0){if(!this.signer)throw Error(`IllegalState: no signer`);return this.getContract(e,t,n,this.signer)}getContractWithFetcher(e,t,n=void 0){let r=this.fetchProviders[e];if(!r)throw Error(`fetchProvider not initialized`);return this.getContract(e,t,n,r)}async sendTransaction(e){if(!this.signer)throw Error(`IllegalState: no signer`);return await this.signer.sendTransaction(e)}async connectAndPatchProvider(e){return await this.connectToConnector(e)}isPermitterAvailable(){if(!this.chainId)throw Error(`Illegal state: no chainId`);return!!e.networkRegistry[this.chainId]?.contractData?.permitterAddress}async getGasPrice(e){let t=(await this.fetchProviders[e]?.getFeeData())?.gasPrice;if(!t)throw Error(`Could not fetch gas price in getGasPrice`);return t}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(r).getSigner(n)}async supportsBatchCall(e){if(!this.originalProvider)return!1;try{let t=await this.getAddress(),n=`0x${e.toString(16)}`,r=await this.originalProvider.send(`wallet_getCapabilities`,[t,[n]]),i=r?.[n]||r?.[`0x0`];if(!i?.atomic)return!1;let a=typeof i.atomic==`string`?i.atomic:i.atomic?.status;return a===`supported`||a===`ready`}catch{return!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let n=0;n<60;n+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let n=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(n.status===t.CallsStatus.Confirmed&&n.receipts?.[0]?.transactionHash)return n.receipts[0].transactionHash;if(n.status===t.CallsStatus.OffchainFailure||n.status===t.CallsStatus.ChainFailure||n.status===t.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(e,t){if(!this.fetchProviders[e])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let n=await this.getAddress(),r={version:`2.0.0`,chainId:`0x${e.toString(16)}`,from:n,atomicRequired:!0,calls:t},i=await this.originalProvider.send(`wallet_sendCalls`,[r]),a=i?.id||i;if(!a||typeof a!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let o=await this.waitForBatchTransactionStatus(a),s=await this.fetchProviders[e].getTransaction(o);if(!s)throw Error(`Transaction not found`);return s}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
@@ -143,37 +143,14 @@ var y = class {
143
143
  return new l.BrowserProvider(r).getSigner(n);
144
144
  }
145
145
  async supportsBatchCall(e) {
146
- let t = "[WagmiProviderAdapter.supportsBatchCall]";
147
- if (o.log(`${t} start`, {
148
- chainId: e,
149
- hasOriginalProvider: !!this.originalProvider,
150
- adapterChainId: this.chainId
151
- }), !this.originalProvider) return o.log(`${t} no original provider`), !1;
146
+ if (!this.originalProvider) return !1;
152
147
  try {
153
- o.log(`${t} resolving user address`);
154
- let n = await this.getAddress();
155
- o.log(`${t} user address resolved`, { userAddress: n });
156
- let r = `0x${e.toString(16)}`;
157
- o.log(`${t} chain id hex`, { chainIdHex: r }), o.log(`${t} wallet_getCapabilities start`);
158
- let i = await this.originalProvider.send("wallet_getCapabilities", [n, [r]]);
159
- o.log(`${t} wallet_getCapabilities success`, {
160
- capabilityKeys: i ? Object.keys(i) : void 0,
161
- capabilities: i
162
- });
163
- let a = i?.[r] || i?.["0x0"];
164
- if (o.log(`${t} chain capabilities resolved`, { chainCapabilities: a }), !a?.atomic) return o.log(`${t} atomic capability missing or falsy`), !1;
165
- let s = typeof a.atomic == "string" ? a.atomic : a.atomic?.status;
166
- o.log(`${t} atomic capability parsed`, { atomicValue: s });
167
- let c = s === "supported" || s === "ready";
168
- return o.log(`${t} complete`, { isSupported: c }), c;
169
- } catch (e) {
170
- return o.log(`${t} error`, {
171
- message: e?.message,
172
- code: e?.code,
173
- shortMessage: e?.shortMessage,
174
- data: e?.data,
175
- error: e
176
- }), !1;
148
+ let t = await this.getAddress(), n = `0x${e.toString(16)}`, r = await this.originalProvider.send("wallet_getCapabilities", [t, [n]]), i = r?.[n] || r?.["0x0"];
149
+ if (!i?.atomic) return !1;
150
+ let a = typeof i.atomic == "string" ? i.atomic : i.atomic?.status;
151
+ return a === "supported" || a === "ready";
152
+ } catch {
153
+ return !1;
177
154
  }
178
155
  }
179
156
  async waitForBatchTransactionStatus(e) {