UNPKG

@aeternity/aepp-sdk

Version:

SDK for the æternity blockchain

35 lines (34 loc) 1.37 kB
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 {};