/// /// import type EventEmitter from "events"; export interface RPCRequest { module: string; method: string; data: any; } export interface ClientRPCRequest extends RPCRequest { bypassCache?: boolean; } export interface RPCResponse { updated?: number; data?: any | RPCResponse; error?: string; signature?: string; signedField?: string; } export interface RPCMethod { cacheable: boolean; handler: (req: any) => Promise; } export interface RPCCacheData { [query: string]: RPCCacheItem | null; } export interface RPCCacheItem extends RPCResponse { value: RPCResponse; signature: string; } export interface RPCClearCacheRequest { request: string; relays?: string[]; } export declare type RPCClearCacheResponseRelayList = { [relay: string]: RPCClearCacheResponse; }; export interface RPCClearCacheResponse extends RPCResponse { relays?: RPCClearCacheResponseRelayList; } export interface RPCBroadcastRequest { request: RPCRequest; relays: string[]; } export interface RPCBroadcastResponse extends RPCResponse { relays: { [relay: string]: RPCResponse; }; } export declare class RPCServer extends EventEmitter { get cache(): RPCCache; registerMethod( moduleName: string, methodName: string, options: RPCMethod ): void; getMethods(): string[]; setup(stream: any): any; signData(data: any): string; static hashQuery(query: RPCRequest): string; } export declare class RPCCache extends EventEmitter { get data(): RPCCacheData; constructor(server: RPCServer); getNodeQuery(node: string, queryHash: string): Promise; signResponse(item: RPCCacheItem): any; verifyResponse(pubkey: Buffer, item: RPCCacheItem): boolean | Buffer; addItem(query: RPCRequest, response: RPCResponse): void; deleteItem(queryHash: string): boolean; } //# sourceMappingURL=rpc.d.ts.map