import { Logger } from 'pino'; import { Redis } from 'ioredis'; import { Netron } from '../netron'; import { NodeInfo, ServiceInfo, DiscoveryEvent, DiscoveryOptions } from './types'; export declare class ServiceDiscovery { private redis; private nodeId; private address; private services; private heartbeatTimer?; private options; private readonly pubSubChannel; private subscriber?; private stopped; private shutdownPromise?; private registered; logger: Logger; constructor(redis: Redis, netron: Netron, address: string, services: ServiceInfo[], options?: DiscoveryOptions); startHeartbeat(): void; shutdown(): Promise; publishHeartbeat(): Promise; getActiveNodes(): Promise; findNodesByService(name: string, version?: string): Promise; subscribeToEvents(handler: (event: DiscoveryEvent) => void): Promise; private deregisterNodeById; isNodeActive(nodeId: string): Promise; updateServices(services: ServiceInfo[]): Promise; updateAddress(address: string): Promise; private publishEvent; private unsubscribeFromEvents; }