import { BytesLike, TypedDataField, Wallet } from 'ethers'; import type UniversalProvider from '@walletconnect/universal-provider'; import { UniqueSubject } from '../../common'; import { NetworkNames } from '../../network'; export interface WalletProvider { readonly type?: string; readonly wallet?: Wallet; readonly address: string; readonly address$?: UniqueSubject; readonly networkName?: NetworkNames; readonly networkName$?: UniqueSubject; signMessage(message: BytesLike): Promise; signTypedData(typedData: TypedDataField[], message: any, accountAddress: string): Promise; } export interface Web3Provider { send(payload: any, callback: (err: any, response?: any) => any): any; } export interface RequestArguments { method: string; params?: unknown[] | object; } export interface Web3eip1193Provider { request(args: RequestArguments): any; } export interface WalletConnectConnector { accounts: string[]; chainId: number; signPersonalMessage(params: any[]): Promise; on(event: string, callback: (error: Error | null, payload: any | null) => void): void; } export interface WalletLike { privateKey: string; } export declare class EthereumProvider { accounts: string[]; signer: InstanceType; chainId: number; request(args: RequestArguments): Promise; sendAsync(args: RequestArguments, callback: (error: Error | null, response: any) => void): void; disconnect(): Promise; on(event: string, callback: (error: Error | null, payload: any | null) => void): void; once(event: string, callback: (error: Error | null, payload: any | null) => void): void; removeListener(event: string, callback: (error: Error | null, payload: any | null) => void): void; off(event: string, callback: (error: Error | null, payload: any | null) => void): void; readonly isWalletConnect?: boolean; } export type WalletProviderLike = string | WalletLike | WalletProvider | EthereumProvider;