import { Mutex } from 'async-mutex';
import { CallDetails, CorrelationId, IDeviceInfo, MobiusDeviceId, RegistrationStatus } from '../../common/types';
import { ILine, LINE_EVENTS } from './types';
import { IRegistration } from '../registration/types';
import { CallingClientConfig } from '../types';
import { Eventing } from '../../Events/impl';
import { LineError } from '../../Errors/catalog/LineError';
import { LOGGER } from '../../Logger/types';
import { LineEventTypes } from '../../Events/types';
import { ICall } from '../calling/types';
export default class Line extends Eventing<LineEventTypes> implements ILine {
    #private;
    registration: IRegistration;
    userId: string;
    clientDeviceUri: string;
    lineId: string;
    mobiusDeviceId?: string;
    private mobiusUri?;
    phoneNumber?: string;
    extension?: string;
    sipAddresses: string[];
    voicemail?: string;
    lastSeen?: string;
    keepaliveInterval?: number;
    callKeepaliveInterval?: number;
    rehomingIntervalMin?: number;
    rehomingIntervalMax?: number;
    voicePortalNumber?: number;
    voicePortalExtension?: number;
    private callManager;
    private serviceData;
    constructor(userId: string, clientDeviceUri: string, mutex: Mutex, primaryMobiusUris: string[], backupMobiusUris: string[], logLevel: LOGGER, serviceDataConfig?: CallingClientConfig['serviceData'], jwe?: string, phoneNumber?: string, extension?: string, voicemail?: string);
    register(): Promise<void>;
    deregister(closeMobiusWss?: boolean): Promise<void>;
    private normalizeLine;
    lineEmitter: (event: LINE_EVENTS, deviceInfo?: IDeviceInfo, lineError?: LineError) => void;
    getLoggingLevel(): LOGGER;
    getActiveMobiusUrl(): string;
    getStatus: () => RegistrationStatus;
    getDeviceId: () => MobiusDeviceId | undefined;
    makeCall: (dest?: CallDetails) => ICall | undefined;
    private incomingCallListener;
    getCall: (correlationId: CorrelationId) => ICall;
}
//# sourceMappingURL=index.d.ts.map