@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
35 lines (34 loc) • 1.37 kB
TypeScript
import BrowserConnection from '../connection/Browser.js';
type RpcApiHandler = (p?: any) => any | undefined;
type RpcApi<Api> = {
[k in keyof Api]: RpcApiHandler;
};
type WithOrigin<Api extends RpcApi<Api>> = {
[k in keyof Api]: (p: Parameters<Api[k]>[0], origin: string) => ReturnType<Api[k]>;
};
/**
* Contain functionality for using RPC conection
* @category aepp wallet communication
* @param connection - Connection object
* @param onDisconnect - Disconnect callback
* @param methods - Object containing handlers for each request by name
*/
export default class RpcClient<RemoteApi extends RpcApi<RemoteApi>, LocalApi extends RpcApi<LocalApi>> {
#private;
connection: BrowserConnection;
constructor(connection: BrowserConnection, onDisconnect: () => void, methods: WithOrigin<LocalApi>);
/**
* Make a request
* @param name - Method name
* @param params - Method params
* @returns Promise which will be resolved after receiving response message
*/
request<Name extends keyof RemoteApi>(name: Name, params: Parameters<RemoteApi[Name]>[0]): Promise<ReturnType<RemoteApi[Name]>>;
/**
* Make a notification
* @param name - Method name
* @param params - Method params
*/
notify<Name extends keyof RemoteApi>(name: Name, params: Parameters<RemoteApi[Name]>[0]): void;
}
export {};