@@ -2,9 +2,12 @@ import { LendProviderMorpho } from '@/lend/index.js'
22import { ChainManager } from '@/services/ChainManager.js'
33import type { LendProvider } from '@/types/lend.js'
44import type { VerbsConfig } from '@/types/verbs.js'
5- import type { HostedWalletProvider } from '@/wallet/providers/base/HostedWalletProvider.js'
65import type { SmartWalletProvider } from '@/wallet/providers/base/SmartWalletProvider.js'
76import { DefaultSmartWalletProvider } from '@/wallet/providers/DefaultSmartWalletProvider.js'
7+ import type {
8+ HostedProviderInstanceMap ,
9+ HostedProviderType ,
10+ } from '@/wallet/providers/hostedProvider.types.js'
811import { HostedWalletProviderRegistry } from '@/wallet/providers/HostedWalletProviderRegistry.js'
912import { WalletNamespace } from '@/wallet/WalletNamespace.js'
1013import { WalletProvider } from '@/wallet/WalletProvider.js'
@@ -13,15 +16,18 @@ import { WalletProvider } from '@/wallet/WalletProvider.js'
1316 * Main Verbs SDK class
1417 * @description Core implementation of the Verbs SDK
1518 */
16- export class Verbs {
17- public readonly wallet : WalletNamespace
19+ export class Verbs < THostedWalletProviderType extends HostedProviderType > {
20+ public readonly wallet : WalletNamespace <
21+ HostedProviderInstanceMap [ THostedWalletProviderType ] ,
22+ SmartWalletProvider
23+ >
1824 private chainManager : ChainManager
1925 private lendProvider ?: LendProvider
20- private hostedWalletProvider ! : HostedWalletProvider
26+ private hostedWalletProvider ! : HostedProviderInstanceMap [ THostedWalletProviderType ]
2127 private smartWalletProvider ! : SmartWalletProvider
2228 private hostedWalletProviderRegistry : HostedWalletProviderRegistry
2329
24- constructor ( config : VerbsConfig ) {
30+ constructor ( config : VerbsConfig < THostedWalletProviderType > ) {
2531 this . chainManager = new ChainManager ( config . chains )
2632 this . hostedWalletProviderRegistry = new HostedWalletProviderRegistry ( )
2733
@@ -58,7 +64,9 @@ export class Verbs {
5864 * @param config - Wallet configuration
5965 * @returns WalletProvider instance
6066 */
61- private createWalletProvider ( config : VerbsConfig [ 'wallet' ] ) {
67+ private createWalletProvider (
68+ config : VerbsConfig < THostedWalletProviderType > [ 'wallet' ] ,
69+ ) {
6270 const hostedWalletProviderConfig = config . hostedWalletConfig . provider
6371 const factory = this . hostedWalletProviderRegistry . getFactory (
6472 hostedWalletProviderConfig . type ,
@@ -100,7 +108,9 @@ export class Verbs {
100108 * @param config - Wallet configuration
101109 * @returns WalletNamespace instance
102110 */
103- private createWalletNamespace ( config : VerbsConfig [ 'wallet' ] ) {
111+ private createWalletNamespace (
112+ config : VerbsConfig < THostedWalletProviderType > [ 'wallet' ] ,
113+ ) {
104114 const walletProvider = this . createWalletProvider ( config )
105115 return new WalletNamespace ( walletProvider )
106116 }
0 commit comments