import { IWebRTCCall } from '../webrtc/interfaces';
import { TargetParams } from '../../../utils/interfaces';
export declare type Environment = 'production' | 'development';
export interface IVertoOptions {
    host?: string;
    project?: string;
    token?: string;
    login?: string;
    passwd?: string;
    password?: string;
    login_token?: string;
    userVariables?: Record<string, any>;
    ringtoneFile?: string;
    ringbackFile?: string;
    env?: Environment;
    iceServers?: RTCIceServer[];
    video?: boolean;
    autoReconnect?: boolean;
    debug?: boolean;
    debugOutput?: 'socket' | 'file';
    prefetchIceCandidates?: boolean;
    forceRelayCandidate?: boolean;
    trickleIce?: boolean;
    keepConnectionAliveOnSocketClose?: boolean;
    hangupOnBeforeUnload?: boolean;
    useCanaryRtcServer?: boolean;
    region?: string;
    anonymous_login?: {
        target_type: string;
        target_id: string;
        target_version_id?: string;
        target_params?: TargetParams;
    };
    rtcIp?: string;
    rtcPort?: number;
    mutedMicOnStart?: boolean;
    maxReconnectAttempts?: number;
    enableCallReports?: boolean;
    callReportInterval?: number;
    callReportFlushInterval?: number;
    enableCallRecording?: boolean;
    callRecordingFlushIntervalMs?: number;
    callRecordingMaxBufferBytes?: number;
    callRecordingSampleRate?: number;
    callRecordingTracks?: Array<'local' | 'remote'>;
    callRecordingEndpoint?: string;
    debugLogLevel?: 'debug' | 'info' | 'warn' | 'error';
    debugLogMaxEntries?: number;
    skipLastVoiceSdkId?: boolean;
    skipTrailing?: boolean;
    mediaPermissionsRecovery?: {
        enabled: boolean;
        timeout: number;
        onSuccess?: () => void;
        onError?: (error: Error) => void;
    };
}
export interface ILoginParams {
    login?: string;
    password?: string;
    passwd?: string;
    login_token?: string;
    userVariables?: Record<string, any>;
    anonymous_login?: {
        target_type: string;
        target_id: string;
        target_version_id?: string;
        target_params?: TargetParams;
    };
}
export interface SubscribeParams {
    channels?: string[];
    protocol?: string;
    handler?: Function;
    nodeId?: string;
}
export interface BroadcastParams {
    channel?: string;
    protocol?: string;
    data?: object;
    nodeId?: string;
}
export interface IAudioSettings extends MediaTrackConstraints {
    micId?: string;
    micLabel?: string;
}
export interface IVideoSettings extends MediaTrackConstraints {
    camId?: string;
    camLabel?: string;
}
export interface INotificationEventData {
    type: string;
    call?: IWebRTCCall;
    error?: Error;
    errorName?: string;
    errorMessage?: string;
    displayName?: string;
    displayNumber?: string;
    displayDirection?: string;
}
export interface IRequestRPC {
    id: any;
    method?: any;
    params?: any;
}
export interface IResponseRPC {
    id: any;
    result?: {
        params: any;
    };
}
export interface IMessageRPC extends IRequestRPC, IResponseRPC {
}
