import { IEthereumProvider } from "./misc"; import { SignClient } from "../../packages/sign-client/client"; import { SessionTypes, EngineTypes, SessionNamespace, RequestParams, RequestArguments } from "@okxconnect/core"; import { EventEmitter } from "eventemitter3"; import ConnectParams = EngineTypes.ConnectParams; import { JsonRpcPayload, JsonRpcRequest } from "@okxconnect/core"; export interface IProvider { readonly namespace: SessionNamespace; readonly client: SignClient; request: (args: RequestParams) => Promise; updateNamespace: (args: SessionTypes.Namespace) => void; setDefaultChain: (chain: string, rpcUrl?: string | undefined) => void; getDefaultChain: () => string; requestAccounts: () => string[]; showRequestModal: (args: RequestParams) => boolean; } export declare abstract class IJSONRpcConnection { abstract events: EventEmitter; abstract on(event: string, listener: any): void; abstract once(event: string, listener: any): void; abstract off(event: string, listener: any): void; abstract removeListener(event: string, listener: any): void; abstract connected: boolean; abstract connecting: boolean; abstract open(opts?: any): Promise; abstract close(): Promise; abstract send(payload: JsonRpcPayload, context?: any): Promise; } export declare abstract class IJSONRpcProvider { abstract events: EventEmitter; abstract connection: IJSONRpcConnection | string; abstract on(event: string, listener: any): void; abstract once(event: string, listener: any): void; abstract off(event: string, listener: any): void; abstract removeListener(event: string, listener: any): void; abstract connected: boolean; abstract connecting: boolean; constructor(opt: any); abstract connect(connection?: string | IJSONRpcConnection): Promise; abstract request(request: RequestArguments, context?: any): Promise; protected abstract onPayload(payload: JsonRpcPayload): void; protected abstract requestStrict(request: JsonRpcRequest, context?: any): Promise; } export interface IUniversalProvider extends IEthereumProvider { client: SignClient; session?: SessionTypes.Struct; uri: string | undefined; request: (args: RequestArguments, chain?: string) => Promise; connect: (opts: ConnectParams) => Promise; disconnect: () => Promise; setDefaultChain: (chain: string, rpcUrl?: string | undefined) => void; } export interface IUniversalForProvider { request: (args: RequestArguments, chain?: string) => Promise; session?: SessionTypes.Struct; requestDefaultChainWithNamespace(string: any): string; requestAccountsWithNamespace(string: any): string[]; on(event: any, listener: any): void; connected(): boolean; }