@keplr-ewallet/ewallet-sdk-eth
Version:
44 lines (43 loc) • 1.93 kB
TypeScript
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;
};