import type UniversalProvider from '@walletconnect/universal-provider'; import type { W3mFrameProvider } from '@reown/appkit-wallet'; import type { BaseProvider } from './BaseProvider.js'; import type { CoinbaseWalletProvider } from './CoinbaseProvider.js'; import type { InjectedProvider } from './InjectedProvider.js'; import type { SafeProvider } from './SafeProvider.js'; export type Address = `0x${string}`; export type ProviderType = { injected?: InjectedProvider; baseAccount?: BaseProvider; coinbaseWallet?: CoinbaseWalletProvider; safe?: SafeProvider; EIP6963?: boolean; metadata: Metadata; }; export interface RequestArguments { readonly method: string; readonly params?: readonly unknown[] | object; } type ProviderEventListener = { connect: (connectParams: { chainId: number; }) => void; disconnect: (error: Error) => void; chainChanged: (chainId: string) => void; accountsChanged: (accounts: string[]) => void; message: (message: { type: string; data: unknown; }) => void; }; export interface Provider { request: (args: RequestArguments) => Promise; on(event: T, listener: ProviderEventListener[T]): void; removeListener: (event: string, listener: (data: T) => void) => void; emit: (event: string) => void; } export type Metadata = { name: string; description: string; url: string; icons: string[]; }; export type CombinedProvider = W3mFrameProvider & Provider; export type UniversalProviderType = UniversalProvider & W3mFrameProvider & Provider; export type Chain = { id: string | number; chainId: string | number; name: string; currency: string; explorerUrl: string; rpcUrl: string; chain: string; imageId: string | undefined; }; export {};