/// <reference types="node" />
import Status from "./Status";
import { EventEmitter } from "events";
import { Logger } from "../log/Logger";
export interface InfobipGateway {
    status: Status;
    connect(isReconnect: boolean): void;
    disconnect(): void;
    send(message: any): void;
    setLogger(logger: Logger): void;
}
export declare class InfobipGatewayImpl implements InfobipGateway {
    private eventEmitter;
    private logger;
    private token;
    status: Status;
    private ws;
    private readonly host;
    private retry;
    private heartbeat;
    private heartbeatCheck;
    private deviceInfo;
    private portunusInstanceHash;
    constructor(eventEmitter: EventEmitter, logger: Logger, token: string);
    connect(isReconnect?: boolean): void;
    disconnect(): void;
    send(data: any): void;
    setLogger(logger: Logger): void;
    private encodeDeviceInfo;
    private generatePortunusHost;
    private generatePortunusUrl;
    private logSendingMessage;
    private onOpen;
    private onMessage;
    private sendHeartbeatResponse;
    private logReceivedMessage;
    private onClose;
    private cleanup;
    private onError;
    private scheduleHeartbeat;
    private scheduleHeartbeatCheck;
    private initRetry;
    private generateDeviceInfo;
    private base64EncodeUrl;
    private cancelHeartbeatCheck;
}
