import { providers } from 'ethers' export type ConnectorData = { account: string provider: Provider } export abstract class Connector< Provider = providers.ExternalProvider, Options = any, > { // Connector name abstract readonly name: string // Options to pass to the third-party provider readonly options: Options constructor(options: Options) { this.options = options } abstract connect(): Promise> abstract getProvider(): Promise abstract disconnect(): Promise abstract onDisconnect(handler: (...args: any[]) => any): void abstract onAccountsChanged(handler: (accounts: string[]) => any): void abstract onChainChanged(handler: (chainId: number) => any): void abstract switchChain(chainId: number): Promise }