import { Observable, Subscription } from "rxjs"; import { SpiderMeshNode, RpcOptions, MeshTransporter, NodeRef } from './types.js'; export type HelloEvent = SpiderMeshNode & { back?: boolean; }; export type ServiceChecker = (nodes: NodeRef[]) => Promise | boolean; export type NodesMap = { nodes: Map; last_updated_node_id: string; }; export declare class SpiderMesh { #private; readonly node_id: string; readonly namespace: string; constructor(); registerTransporter(meshTransporter: MeshTransporter, name?: string): Subscription; listRpcNodes(service: string): NodeRef[]; watchService(service: string): Observable; callRemoteService(options: RpcOptions): Observable; linkEvent(factory: { new (...args: any[]): T; }): { publish: (data: T) => Promise; listen: () => Observable; }; }