import { Discovery, Logger, ServiceHandle, ServiceWatch } from "realm-object-server";
import * as consul from "consul";
export declare class ConsulServiceWatch extends ServiceWatch {
    private consulClient;
    private logger;
    private watch;
    constructor(consulClient: consul.Consul, logger: Logger, name: string, tags?: string[]);
    private startWatch;
}
export interface IConsulDiscoveryConfiguration {
    consulHost?: string;
    consulPort?: string;
    secure?: boolean;
    logger?: Logger;
    advertiseAddress?: string;
    advertisePortMap?: {
        [localPort: number]: number;
    };
    namespace?: string;
    checkTtl?: number;
}
export declare class ConsulDiscovery extends Discovery {
    consul: consul.Consul;
    readonly advertiseAddress: string;
    readonly advertisePortMap: {
        readonly [localPort: number]: number;
    };
    private serviceIdMap;
    private intervalMap;
    private checkTtl;
    private logger;
    private namespace;
    constructor(config?: IConsulDiscoveryConfiguration);
    registerService(service: any, address: string, port: number): Promise<void>;
    deregisterService(service: any): Promise<void>;
    findAll(name: string, tags?: string[]): Promise<ServiceHandle[]>;
    watchService(name: string, tags?: string[]): ConsulServiceWatch;
    private createConsulServiceHandle;
    private findId;
    private findOrCreateId;
    private namespacedTags;
}
