///
import EventEmitter from 'events';
export interface IJSONRPCError {
code: number;
message: string;
data: any;
}
export interface IJSONRPCRequest {
jsonrpc: '2.0';
method: string;
params?: any;
id?: string | number;
}
export interface IJSONRPCResultResponse {
jsonrpc: '2.0';
result: T;
id: string | number;
}
export interface IJSONRPCErrorResponse {
jsonrpc: '2.0';
error: IJSONRPCError;
id: string | number;
}
export interface IJSONRPCResponse extends IJSONRPCResultResponse, IJSONRPCErrorResponse {
}
export declare enum JSONRPCProtocol {
HTTP = 0,
WS = 1
}
export declare enum RPCClientEvent {
/** Emitted when a connection is established with the server. */
Connected = "connected",
/** Emitted when the connection to the server is closed down. */
Disconnected = "disconnected",
/** Emitted when an error is encountered that can't be propagated in a more sensible fashion. */
Error = "error",
/** Emitted when an event message (not a response message) is received from the server. */
Message = "message",
/**
* Emitted when an EVM event message (not a response message) is received from the server
* EVM do not subscribe to subevents as normal Loom events, it only focus listen the emitter
*/
EVMMessage = "EVMMessage",
/**
* Emitted when chain events subscription status changes.
* Listener will receive a single boolean value, `true` indicates that the event subscription is
* active, `false` indicates that it's inactive.
*/
Subscribed = "subscribed",
Unsubscribed = "unsubscribed"
}
/**
* Sends JSON-RPC messages.
*/
export interface IJSONRPCClient extends EventEmitter {
url: string;
requestTimeout: number;
isSubscribed: boolean;
disconnect(): void;
ensureConnectionAsync(): Promise;
sendAsync(method: string, params: object | any[]): Promise;
}