import { Base } from './base.js'; import { type PayloadDataType, Connection, Payload } from './shared-connection.js'; import { type Error as MyError } from './errors.js'; import { SocketProtocolTransformer, type SocketAdapter } from '@akala/core'; /** * json-rpc-ws connection * * @constructor * @param {Socket} socket - web socket for this connection * @param {Object} parent - parent that controls this connection */ export declare function JsonNDRpcTransformer(): SocketProtocolTransformer; export default abstract class Client extends Base { private socketConstructor; private options?; constructor(socketConstructor: (address: string, options?: TConnectOptions) => SocketAdapter>, options?: TConnectOptions); socket?: SocketAdapter>; /** * Connect to a json-rpc-ws server * * @param {String} address - url to connect to i.e. `ws://foo.com/`. * @param {function} callback - optional callback to call once socket is connected * @public */ connect(address: string, callback: (err?: Event) => void): void; /** * Test whether we have a connection or not * * @returns {Boolean} whether or not we have a connection * @public */ isConnected(): boolean; /** * Return the current connection (there can be only one) * * @returns {Object} current connection * @public */ getConnection(): Connection; /** * Close the current connection */ disconnect(): Promise; /** * Send a method request * * @param {String} method - name of method * @param {Array} params - optional parameters for method * @param {function} callback - optional reply handler * @public * @todo allow for empty params aka arguments.length === 2 */ send, TReplyType extends PayloadDataType>(method: string, params: TParamType, callback?: (error?: MyError, result?: TReplyType) => void): void; }