///
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 retry;
private heartbeat;
private heartbeatCheck;
private heartbeatStartTime;
private readonly deviceInfo;
private portunusHost;
private portunusInstanceHash;
private decodedToken;
constructor(eventEmitter: EventEmitter, logger: Logger, token: string);
connect(isReconnect?: boolean): Promise;
disconnect(): void;
send(data: any): void;
setLogger(logger: Logger): void;
private encodeDeviceInfo;
private generatePortunusHost;
private evaluatePortunusHost;
private checkIfAvailable;
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;
private measureHeartbeatRate;
}