import * as zmq from "zeromq";
import { TZMQSubscriberErrorHandlers } from "../Errors";
import { ZMQRequest } from "../ZMQRequest";
import TopicEntry from "./TopicEntry";
export declare type TSubscriptionCallback = (aMessage: string) => void;
export declare type TEndpointEntry = {
    Subscriber: zmq.Subscriber;
    Requester: ZMQRequest;
    TopicEntries: Map<string, TopicEntry>;
};
export declare type TSubscriptionEndpoints = {
    PublisherAddress: string;
    RequestAddress: string;
};
export declare class ZMQSubscriber {
    private readonly mEndpoints;
    private readonly mErrorHandlers;
    private mSubscriptions;
    private mTokenId;
    constructor(aErrorHandlers?: TZMQSubscriberErrorHandlers);
    private get SubscriptionId();
    private static CloseEndpoint;
    private AddSubscriptionEndpoint;
    private EmitCacheError;
    private EmitDroppedMessageWarn;
    private InitTopicEntry;
    private ParseNewMessage;
    private PruneIfEmpty;
    private RecoverMissingMessages;
    Close(): void;
    Subscribe(aEndpoint: TSubscriptionEndpoints, aTopic: string, aCallback: TSubscriptionCallback): number;
    Unsubscribe(aSubscriptionId: number): void;
}
