interface EthereumProvider {
    addListener<T>(eventName: T, listener: ((eventData: EthereumProviderEventMap[T]) => void)): EthereumProvider;
    off<T>(eventName: T, listener: ((eventData: EthereumProviderEventMap[T]) => void)): EthereumProvider;
    on<T>(eventName: T, listener: ((eventData: EthereumProviderEventMap[T]) => void)): EthereumProvider;
    removeListener<T>(eventName: T, listener: ((eventData: EthereumProviderEventMap[T]) => void)): EthereumProvider;
    request<M>(request: {
        method: M;
        params: EthereumRpcMethodMap[M]["params"];
    }): Promise<EthereumRpcMethodMap[M]["result"]>;
}

Methods