UNPKG

@keplr-ewallet/ewallet-sdk-eth

Version:
44 lines (43 loc) 1.93 kB
import { EventEmitter } from "eventemitter3"; import type { Address, AddEthereumChainParameter as Chain } from "viem"; import type { RpcMethod, RpcRequestArgs, RpcResponseData, RpcError } from "../rpc"; import type { EthSigner } from "../types"; export interface ProviderConnectInfo { chainId: string; } export type ProviderEventMap = { connect: ProviderConnectInfo; disconnect: RpcError; chainChanged: string; accountsChanged: Address[]; }; export type ProviderEvent = keyof ProviderEventMap; export type ProviderEventHandlers = { connect: (info: ProviderConnectInfo) => void; disconnect: (error: RpcError) => void; chainChanged: (chainId: string) => void; accountsChanged: (accounts: Address[]) => void; }; export type ProviderEventHandler<K extends ProviderEvent> = (payload: ProviderEventMap[K]) => void; export declare class ProviderEventEmitter extends EventEmitter<ProviderEvent> { on<K extends ProviderEvent>(event: K, handler: ProviderEventHandler<K>): this; once<K extends ProviderEvent>(event: K, handler: ProviderEventHandler<K>): this; off<K extends ProviderEvent>(event: K, handler: ProviderEventHandler<K>): this; emit<K extends ProviderEvent>(event: K, payload: ProviderEventMap[K]): boolean; addListener<K extends ProviderEvent>(event: K, handler: ProviderEventHandler<K>): this; removeListener<K extends ProviderEvent>(event: K, handler: ProviderEventHandler<K>): this; } export interface EIP1193Provider extends ProviderEventEmitter { request<M extends RpcMethod>(args: RpcRequestArgs<M>): Promise<RpcResponseData<M>>; } export type ChainValidationStatus = "pending" | "valid" | "invalid"; export type ChainWithStatus = Chain & { connected: boolean; validationStatus: ChainValidationStatus; }; export type EWalletEIP1193ProviderOptions = { id: string; chains: Chain[]; signer?: EthSigner; skipChainValidation?: boolean; };