import { Mutex } from 'async-mutex';
import { MobiusAsyncEvent } from '../calling/types';
import { LOGGER } from '../../Logger/types';
import { IRegistration } from './types';
import { Devices, IDeviceInfo, RegistrationStatus, ServiceData } from '../../common/types';
import { WebexSDK } from '../../SDKConnector/types';
import { LineEmitterCallback } from '../line/types';
export declare class Registration implements IRegistration {
    private sdkConnector;
    private webex;
    private userId;
    private serviceData;
    private failback429RetryAttempts;
    private registrationStatus;
    private failbackTimer?;
    private activeMobiusUrl;
    private rehomingIntervalMin;
    private rehomingIntervalMax;
    private mutex;
    private metricManager;
    private lineEmitter;
    private callManager;
    private deviceInfo;
    private primaryMobiusUris;
    private backupMobiusUris;
    private registerRetry;
    private reconnectPending;
    private jwe?;
    private isCCFlow;
    private failoverImmediately;
    private retryAfter;
    private scheduled429Retry;
    private webWorker;
    private apiRequest;
    constructor(webex: WebexSDK, serviceData: ServiceData, mutex: Mutex, lineEmitter: LineEmitterCallback, logLevel: LOGGER, jwe?: string);
    private getServerType;
    private getFailoverCacheKey;
    private saveFailoverState;
    private clearFailoverState;
    private resumeFailover;
    getActiveMobiusUrl(): string;
    setActiveMobiusUrl(url: string): void;
    setDeviceInfo(devicesInfo: Devices): void;
    setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;
    private deleteRegistration;
    private postRegistration;
    private restorePreviousRegistration;
    private handle404KeepaliveFailure;
    private handle429Retry;
    private getRegRetryInterval;
    private startFailoverTimer;
    private clearFailbackTimer;
    private postKeepAlive;
    private isPrimaryActive;
    private isFailbackRequired;
    private getFailbackInterval;
    private initiateFailback;
    private startFailbackTimer;
    private executeFailback;
    private setIntervalValues;
    getDeviceInfo(): IDeviceInfo;
    isDeviceRegistered(): boolean;
    getStatus(): RegistrationStatus;
    setStatus(value: RegistrationStatus): void;
    private restartRegistration;
    handleConnectionRestoration(retry: boolean): Promise<boolean>;
    private restoreRegistrationCallBack;
    triggerRegistration(): Promise<void>;
    private attemptRegistrationWithServers;
    private startKeepaliveTimer;
    clearKeepaliveTimer(): void;
    isReconnectPending(): boolean;
    deregister(closeMobiusWss?: boolean): Promise<void>;
    private isRegRetry;
    private setRegRetry;
    private getExistingDevice;
    reconnectOnFailure(caller: string): Promise<void>;
    handleRegistrationDownEvent(event?: MobiusAsyncEvent): Promise<void>;
    private performRegistrationDownCleanup;
}
export declare const createRegistration: (webex: WebexSDK, serviceData: ServiceData, mutex: Mutex, lineEmitter: LineEmitterCallback, logLevel: LOGGER, jwe?: string) => IRegistration;
//# sourceMappingURL=register.d.ts.map