import { TrackType } from './value';
import { ReportStats } from './stats';
import { BloudStream } from './stream';
export interface Server {
    /**
     * server 名称
     */
    name: string;
    /**
     * server 区域
     */
    area?: string;
}
export interface PromiseHold {
    resolve: (value?: any) => void;
    reject: (value?: any) => void;
}
export declare type FunctionWithThis<This> = ((this: This) => any) | ((this: This, a: any) => any) | ((this: This, a: any, b: any) => any) | ((this: This, a: any, b: any, c: any) => any) | ((this: This, a: any, b: any, c: any, d: any) => any) | ((this: This, a: any, b: any, c: any, d: any, e: any) => any);
/**
 * @internal
 */
export declare type BJYStreamProps = {
    video: boolean;
    audio: boolean;
};
export declare type PlayerStateChangedEvent = {
    /**
     * 类型
     */
    type: TrackType;
    /**
     * 状态
     */
    state: 'STOPPED' | 'PLAYING' | 'PAUSED';
    /**
     * 原因
     */
    reason: string;
};
/**
 * @internal
 */
export declare type RawDevice = {
    label: string;
    groupId: string;
    deviceId: string;
    kind: MediaDeviceKind;
};
export declare type UserInfo = {
    /**
     * 用户其他信息
     */
    name: string;
};
/**
 * @internal
 */
export declare type VloudRoomOptions = {
    /**
     * 房间 id
     */
    room: string;
    /**
     * user id
     */
    user: string;
    /**
     * 房间 name
     */
    name?: string;
    /**
     * 用户名
     */
    nickname?: string;
    /**
     * 是否上报音视频数据
     */
    enableCollection?: boolean;
    /**
     * 是否强制使用 WebSocket 作为信令通道
     */
    forceWS?: boolean;
    /**
     * roomServer 列表
     */
    proxies?: Proxies[];
};
export declare type VloudParticipant = {
    constructor(room: string, local: boolean, userId: string, params: any): VloudParticipant;
    setID(id: string): void;
    getID(): string;
    getStreams(): BloudStream;
};
export declare type Collection = {
    constructor(roomId: string, sessionId: string, userId: string, url: string): Collection;
    setSessionId(id: string): void;
    handshake(url: string): void;
    close(): void;
    setCallId(id: string): void;
    collect(streamId: string, stats: ReportStats, isLocal: boolean, remoteId?: string, extra?: Object): void;
    action(type: string, error: number, sendTs: number, receiveTs: number, options?: Record<string, any>, vErrorCode?: number): void;
    heartbeat(): void;
};
export declare type Proxies = {
    /**
     * datachannel url 用于交换 sdp
     */
    dcurl: string;
    delay: string;
    /**
     * 节点地区
     */
    location: string;
    /**
     * ws url
     */
    url: string;
};
export declare type MsaterRes = {
    /**
     * stream stats 上报地址，datachannel 类型
     */
    collection: string;
    /**
     * 本地公网 ip
     */
    ip: string;
    /**
     *  signal 节点
     */
    proxies: Proxies[];
    /**
     * 服务器时间戳，用于同步本地时间
     */
    timestamp: number;
};
export declare type ProbeServerRes = {
    code: number;
    msg: string;
    data: {
        sniffers: string[];
    };
};
export declare type ReportThreshold = {
    /**
     * 音频帧间隔阈值
     */
    audio_frame_render_interval_threshold: number;
    /**
     * 上行音频丢包率阈值
     */
    audio_loss_rate_threshold: number;
    /**
     * 下行音频丢包率阈值
     */
    down_audio_loss_rate_threshold: number;
    /**
     * 发送帧率阈值
     */
    send_frame_rate_threshold: number;
    /**
     * 视频帧间隔阈值
     */
    video_frame_render_interval_threshold: number;
    /**
     * 上行视频丢包率阈值
     */
    video_loss_rate_threshold: number;
    /**
     * 下行视频丢包率阈值
     */
    down_video_loss_rate_threshold: number;
    /**
     * 数据上报间隔
     */
    meet_call_quality_upload_rate_interval: number;
    /**
     * 重试间隔
     */
    brtc_flow_retry_interval: number;
    /**
     * 重试次数
     */
    brtc_flow_retry_times: number;
};
export declare type SigRes = {
    code: number;
    data: {
        /**
         * 卡顿上报阈值
         */
        report: {
            rtc: ReportThreshold;
        };
        /**
         * token
         */
        ut: string;
        /**
         * 媒体服务器 master
         */
        services: MsaterRes;
    };
    /**
     * 错误提示
     */
    msg: string;
};
export declare type StreamType = 'main' | 'assist';
