import { SCIM_ENTERPRISE_USER, SCIM_WEBEXIDENTITY_USER } from './constants';
export type MobiusDeviceId = string;
export type MobiusDeviceUri = string;
export type SettingEnabled = boolean;
export declare enum ALLOWED_SERVICES {
    MOBIUS = "mobius",
    JANUS = "janus"
}
export declare enum HTTP_METHODS {
    GET = "GET",
    POST = "POST",
    PATCH = "PATCH",
    PUT = "PUT",
    DELETE = "DELETE"
}
export declare enum RegistrationStatus {
    IDLE = "IDLE",
    ACTIVE = "active",
    INACTIVE = "inactive"
}
export declare enum CALLING_BACKEND {
    WXC = "WEBEX_CALLING",
    BWRKS = "BROADWORKS_CALLING",
    UCM = "UCM_CALLING",
    INVALID = "Calling backend is currently not supported"
}
export type DeviceList = unknown;
export type CallId = string;
export type CorrelationId = string;
export declare enum CallType {
    URI = "uri",
    TEL = "tel"
}
export type CallDetails = {
    type: CallType;
    address: string;
};
export type CallDestination = CallDetails;
export declare enum CallDirection {
    INBOUND = "inbound",
    OUTBOUND = "outbound"
}
export type AvatarId = string;
export type DisplayName = string;
export type DisplayInformation = {
    avatarSrc: AvatarId | undefined;
    name: DisplayName | undefined;
    num: string | undefined;
    id: string | undefined;
};
export type WebexRequestPayload = {
    method?: HTTP_METHODS;
    uri?: string;
    addAuthHeader?: boolean;
    headers?: {
        [key: string]: string | null;
    };
    body?: object;
    statusCode?: number;
    json?: boolean;
    service?: ALLOWED_SERVICES;
};
export type ErrorCode = string;
export type Digit = string | number;
export type ServerInfo = {
    region: string;
    uris: string[];
    wss?: string[];
};
export type MobiusServers = {
    primary: ServerInfo;
    backup: ServerInfo;
};
export type IpInfo = {
    ipv4: string;
    ipv6: string;
};
export type DeviceType = {
    deviceId: string;
    uri: string;
    status: string;
    lastSeen: string;
    addresses: string[];
    clientDeviceUri: string;
};
export type Devices = {
    userId: string;
    devices: DeviceType[];
};
export type RegionInfo = {
    countryCode: string;
    clientRegion: string;
};
export interface IDeviceInfo {
    userId?: string;
    errorCode?: number;
    device?: DeviceType;
    devices?: DeviceType[];
    keepaliveInterval?: number;
    callKeepaliveInterval?: number;
    voicePortalNumber?: number;
    voicePortalExtension?: number;
    rehomingIntervalMin?: number;
    rehomingIntervalMax?: number;
}
export interface IMetaContext {
    file?: string;
    method?: string;
}
export declare enum SORT {
    ASC = "ASC",
    DESC = "DESC",
    DEFAULT = "DESC"
}
export declare enum SORT_BY {
    END_TIME = "endTime",
    DEFAULT = "endTime",
    START_TIME = "startTime"
}
export declare enum ServiceIndicator {
    CALLING = "calling",
    CONTACT_CENTER = "contactcenter",
    GUEST_CALLING = "guestcalling"
}
export type ServiceData = {
    indicator: ServiceIndicator;
    domain?: string;
};
export type PhoneNumber = {
    type: string;
    value: string;
    primary?: boolean;
};
export type PersonInfo = {
    id: string;
    emails: string[];
    phoneNumbers: PhoneNumber[];
    displayName: string;
    nickName: string;
    firstName: string;
    lastName: string;
    avatar: string;
    orgId: string;
    created: string;
    lastModified: string;
    lastActivity: string;
    status: string;
    type: string;
};
export type PeopleListResponse = {
    items: PersonInfo[];
    notFoundIds: string[];
};
export declare enum DecodeType {
    PEOPLE = "PEOPLE",
    ORGANIZATION = "ORGANIZATION"
}
export type ContactDetail = {
    type?: string;
    value: string;
};
export interface URIAddress {
    value: string;
    type: string;
    primary?: boolean;
}
export type KmsKey = {
    uri: string;
    userId: string;
    createDate: string;
    expirationDate: string;
    bindDate?: string;
    resourceUri?: string;
};
export type KmsResourceObject = {
    uri: string;
    keyUris: string[];
    authorizationUris: string[];
};
export interface Name {
    familyName: string;
    givenName: string;
}
export interface Address {
    city?: string;
    country?: string;
    state?: string;
    street?: string;
    zipCode?: string;
}
interface WebexIdentityMeta {
    organizationId: string;
}
interface WebexIdentityUser {
    sipAddresses?: URIAddress[];
    meta?: WebexIdentityMeta;
}
interface Manager {
    value: string;
    displayName: string;
    $ref: string;
}
interface EnterpriseUser {
    department?: string;
    manager?: Manager;
}
interface Resource {
    schemas: string[];
    id: string;
    userName: string;
    active?: boolean;
    name?: Name;
    displayName?: string;
    emails?: URIAddress[];
    userType: string;
    phoneNumbers?: PhoneNumber[];
    photos?: ContactDetail[];
    addresses?: Address[];
    [SCIM_WEBEXIDENTITY_USER]?: WebexIdentityUser;
    [SCIM_ENTERPRISE_USER]?: EnterpriseUser;
}
export interface SCIMListResponse {
    schemas: string[];
    totalResults: number;
    itemsPerPage: number;
    startIndex: number;
    Resources: Resource[];
}
export declare enum WorkerMessageType {
    START_KEEPALIVE = "START_KEEPALIVE",
    CLEAR_KEEPALIVE = "CLEAR_KEEPALIVE",
    SEND_KEEPALIVE = "SEND_KEEPALIVE",
    KEEPALIVE_RESULT = "KEEPALIVE_RESULT",
    KEEPALIVE_SUCCESS = "KEEPALIVE_SUCCESS",
    KEEPALIVE_FAILURE = "KEEPALIVE_FAILURE"
}
export type KeepaliveStatusMessage = {
    type: WorkerMessageType.KEEPALIVE_SUCCESS | WorkerMessageType.KEEPALIVE_FAILURE;
    err?: unknown;
    keepAliveRetryCount?: number;
    statusCode?: number;
};
export type LogsMetaData = {
    callId?: string;
    feedbackId?: string;
    correlationId?: string;
    broadworksCorrelationInfo?: string;
};
export type UploadLogsResponse = {
    trackingid?: string;
    url?: string;
    userId?: string;
    feedbackId: string;
    correlationId?: string;
};
export {};
//# sourceMappingURL=types.d.ts.map