import Star from '../../../lib/star';
import { DiscovererOptions } from '../../../typings/registry/discoverers';
import Registry from '../registry';
import { LoggerInstance } from '../../../typings/logger';
import Transit from '../../../lib/transit';
import Node from '../node';
export default class BaseDiscoverer {
    options: DiscovererOptions;
    heartbeatTimer: NodeJS.Timeout | null;
    checkNodesTimer: NodeJS.Timeout | null;
    offlineTimer: NodeJS.Timeout | null;
    localNode: Node | null;
    star: Star | null;
    registry: Registry | null;
    logger: LoggerInstance | null;
    transit: Transit | null;
    constructor(options?: DiscovererOptions);
    init(registry: Registry): void;
    startHeartbeatTimers(): void;
    stopHeartbeatTimers(): void;
    stop(): Promise<void>;
    registerUniverseMetrics(): void;
    beat(): Promise<void> | undefined;
    checkRemoteNodes(): void;
    checkOfflineNodes(): void;
    heartbeatReceived(nodeID: string, payload: any): void;
    sendHeartbeat(): Promise<void>;
    processRemoteNodeInfo(nodeID: string, payload: any): Node | null;
    localNodeDisconnected(): Promise<void>;
    remoteNodeDisconnected(nodeID: string, isUnexpected: boolean): void | undefined;
    discoverNode(nodeID?: string): Promise<any>;
    discoverAllNodes(): Promise<any>;
    sendLocalNodeInfo(nodeID?: string): Promise<any>;
    disableHeartbeat(): void;
}
disableHeartbeat(): void;
}
