1- import { GetWalletClientReturnType } from '@wagmi/core ' ;
1+ import type { Account , Chain , WalletClient , Client } from 'viem ' ;
22import {
3- Account ,
4- Chain ,
53 createPublicClient ,
64 createWalletClient ,
75 getContract ,
86 http ,
9- WalletClient ,
107} from 'viem' ;
118import { privateKeyToAccount } from 'viem/accounts' ;
129import { INetworkConfig } from '../../interfaces/NetworkContext' ;
1310import { DEV_PRIVATE_KEY } from '@lit-protocol/constants' ;
11+ import type { LocalAccount } from 'viem/accounts' ;
1412
1513// ❗️ NOTE: This could be any network's signatures assuming they all have the same ABI signatures
1614// import { signatures } from '../../envs/naga-local/generated/naga-develop';
1715import { nagaDevSignatures } from '@lit-protocol/contracts' ;
1816type Signatures = typeof nagaDevSignatures ;
1917
20- export type ExpectedAccountOrWalletClient =
21- | Account
22- | WalletClient
23- | GetWalletClientReturnType
24- | any ;
18+ export type ExpectedAccountOrWalletClient = Account | WalletClient ;
2519
2620function _resolveAccount ( {
2721 accountOrWalletClient,
@@ -31,24 +25,19 @@ function _resolveAccount({
3125 accountOrWalletClient : ExpectedAccountOrWalletClient ;
3226 chainConfig : Chain ;
3327 rpcUrl : string ;
34- } ) {
35- // Check if accountOrWalletClient is null or undefined
36- if ( ! accountOrWalletClient ) {
37- throw new Error ( 'accountOrWalletClient is required but was not provided' ) ;
38- }
39-
40- // If a wallet client is already provided, use it directly
28+ } ) : WalletClient {
29+ if ( ! accountOrWalletClient )
30+ throw new Error ( 'accountOrWalletClient is required' ) ;
4131 if ( accountOrWalletClient . type === 'local' ) {
42- // If an account is provided, create a wallet client with it
43- const walletClient = createWalletClient ( {
44- account : accountOrWalletClient as Account ,
32+ const account = accountOrWalletClient as LocalAccount ;
33+ const client = createWalletClient ( {
34+ account,
4535 chain : chainConfig ,
4636 transport : http ( rpcUrl ) ,
4737 } ) ;
48- return walletClient ;
49- } else {
50- return accountOrWalletClient as WalletClient ;
38+ return client ;
5139 }
40+ return accountOrWalletClient as WalletClient ;
5241}
5342
5443export const createReadOnlyContractsManager = < T , M > (
@@ -66,12 +55,10 @@ export const createContractsManager = <T, M>(
6655 accountOrWalletClient : ExpectedAccountOrWalletClient
6756) : any => {
6857 // 2. Decide which publicClient to use
69- const publicClient =
70- // opts?.publicClient ??
71- createPublicClient ( {
72- chain : networkConfig . chainConfig ,
73- transport : http ( networkConfig . rpcUrl ) ,
74- } ) ;
58+ const publicClient = createPublicClient ( {
59+ chain : networkConfig . chainConfig ,
60+ transport : http ( networkConfig . rpcUrl ) ,
61+ } ) ;
7562
7663 // 3. Decide which walletClient to use
7764 const walletClient = _resolveAccount ( {
@@ -80,6 +67,10 @@ export const createContractsManager = <T, M>(
8067 rpcUrl : networkConfig . rpcUrl ,
8168 } ) ;
8269
70+ // Normalise to base Client type for contract typing
71+ const publicClientForContract : Client = publicClient as unknown as Client ;
72+ const walletClientForContract : Client = walletClient as unknown as Client ;
73+
8374 // 4. Get the contract data (casting a default type to ensure type safety)
8475 const contractData = networkConfig . abiSignatures as Signatures ;
8576
@@ -100,7 +91,10 @@ export const createContractsManager = <T, M>(
10091 contractData . PKPNFT . methods . safeTransferFrom ,
10192 ...contractData . PKPNFT . events ,
10293 ] ,
103- client : { public : publicClientForContract , wallet : walletClientForContract } ,
94+ client : {
95+ public : publicClientForContract ,
96+ wallet : walletClientForContract ,
97+ } ,
10498 } ) ;
10599
106100 const pkpHelperContract = getContract ( {
@@ -110,7 +104,7 @@ export const createContractsManager = <T, M>(
110104 contractData . PKPHelper . methods . mintNextAndAddAuthMethods ,
111105 ...contractData . PKPHelper . events ,
112106 ] ,
113- client : { public : publicClient , wallet : walletClient } ,
107+ client : { wallet : walletClientForContract } ,
114108 } ) ;
115109
116110 const stakingContract = getContract ( {
@@ -119,7 +113,7 @@ export const createContractsManager = <T, M>(
119113 contractData . Staking . methods . getActiveUnkickedValidatorStructsAndCounts ,
120114 ...contractData . Staking . events ,
121115 ] ,
122- client : { public : publicClient , wallet : walletClient } ,
116+ client : { public : publicClientForContract } ,
123117 } ) ;
124118
125119 const priceFeed = getContract ( {
@@ -128,7 +122,7 @@ export const createContractsManager = <T, M>(
128122 contractData . PriceFeed . methods . getNodesForRequest ,
129123 ...contractData . PriceFeed . events ,
130124 ] ,
131- client : { public : publicClient , wallet : walletClient } ,
125+ client : { public : publicClientForContract } ,
132126 } ) ;
133127
134128 const pkpPermissionsContract = getContract ( {
@@ -151,7 +145,10 @@ export const createContractsManager = <T, M>(
151145 contractData . PKPPermissions . methods . getTokenIdsForAuthMethod ,
152146 ...contractData . PKPPermissions . events ,
153147 ] ,
154- client : { public : publicClientForContract , wallet : walletClientForContract } ,
148+ client : {
149+ public : publicClientForContract ,
150+ wallet : walletClientForContract ,
151+ } ,
155152 } ) ;
156153
157154 const pubkeyRouterContract = getContract ( {
@@ -163,7 +160,7 @@ export const createContractsManager = <T, M>(
163160 contractData . PubkeyRouter . methods . getPubkey ,
164161 ...contractData . PubkeyRouter . events ,
165162 ] ,
166- client : { public : publicClient , wallet : walletClient } ,
163+ client : { public : publicClientForContract } ,
167164 } ) ;
168165
169166 const ledgerContract = getContract ( {
@@ -179,7 +176,10 @@ export const createContractsManager = <T, M>(
179176 contractData . Ledger . methods . withdraw ,
180177 ...contractData . Ledger . events ,
181178 ] ,
182- client : { public : publicClientForContract , wallet : walletClientForContract } ,
179+ client : {
180+ public : publicClientForContract ,
181+ wallet : walletClientForContract ,
182+ } ,
183183 } ) ;
184184
185185 const paymentDelegationContract = getContract ( {
@@ -196,7 +196,10 @@ export const createContractsManager = <T, M>(
196196 contractData . PaymentDelegation . methods . undelegatePaymentsBatch ,
197197 ...contractData . PaymentDelegation . events ,
198198 ] ,
199- client : { public : publicClientForContract , wallet : walletClientForContract } ,
199+ client : {
200+ public : publicClientForContract ,
201+ wallet : walletClientForContract ,
202+ } ,
200203 } ) ;
201204
202205 // ---------- End of all your contracts ----------
0 commit comments