export type RequestArguments = { method: string params?: Array | Record } export type JSONRPCResponse = { id: string | undefined jsonrpc: '2.0' method: string result?: Result error?: Error } export type EIP1193Provider = { request(req: RequestArguments): Promise } export type Web3ProviderSendCallback = ( err?: Error, response?: JSONRPCResponse ) => void export type Web3Provider = { enable(): Promise> sendAsync( req: RequestArguments, callback: Web3ProviderSendCallback ): void } export type ProviderTypes = { eip1193: EIP1193Provider web3: Web3Provider } export type ProviderKey = keyof ProviderTypes export type ProviderType = ProviderTypes[Key]