import { TZMQPublisherErrorHandlers } from "./Errors";
import { TSubscriptionEndpoints } from "./ZMQSubscriber/ZMQSubscriber";
export declare const PUBLISHER_CACHE_EXPIRED: string;
export declare enum EMessageType {
    HEARTBEAT = "HEARTBEAT",
    PUBLISH = "PUBLISH"
}
export declare enum EPublishMessage {
    Topic = 0,
    MessageType = 1,
    Nonce = 2,
    Message = 3
}
export declare type TPublishMessage = [topic: string, type: EMessageType, nonce: number, message: string];
declare type TRecoveryFailure = [error: string];
export declare type TRecoveryMessage = TPublishMessage | TRecoveryFailure;
export declare type TRecoveryRequest = [string, ...number[]];
export declare type TRecoveryResponse = TRecoveryMessage[];
export declare class ZMQPublisher {
    private readonly mEndpoint;
    private readonly mErrorHandlers;
    private mHeartbeatTimeout;
    private readonly mMessageCaches;
    private mPublisher;
    private readonly mPublishQueue;
    private mResponse;
    private mSafeToPublish;
    private readonly mTopicDetails;
    constructor(aEndpoint: TSubscriptionEndpoints, aErrorHandlers?: TZMQPublisherErrorHandlers);
    get Endpoint(): string;
    private CheckHeartbeats;
    private HandleRequest;
    private HandleZMQPublishError;
    private ProcessPublish;
    private QueuePublish;
    Close(): void;
    Open(): Promise<void>;
    Publish(aTopic: string, aData: string): void;
}
export {};
