/**
 * YiRTC SDK 类型定义
 */
export interface ClientConfig {
    appKey: string;
    logLevel?: LogLevel;
    signaling?: {
        type: string;
        url: string;
        options?: any;
    };
    rtc?: {
        iceServers?: RTCIceServer[];
        iceTransportPolicy?: RTCIceTransportPolicy;
    };
}
export interface StreamConfig {
    audio?: boolean;
    video?: boolean;
    screen?: boolean;
    microphoneId?: string;
    cameraId?: string;
    videoProfile?: VideoProfileType;
}
export declare enum VideoProfileType {
    LOW = "120p",
    STANDARD = "360p",
    HIGH = "720p",
    SUPER = "1080p"
}
export declare enum LogLevel {
    DEBUG = "debug",
    INFO = "info",
    WARN = "warn",
    ERROR = "error",
    NONE = "none"
}
export declare enum ConnectionState {
    DISCONNECTED = "DISCONNECTED",
    CONNECTING = "CONNECTING",
    CONNECTED = "CONNECTED",
    RECONNECTING = "RECONNECTING",
    FAILED = "FAILED"
}
export declare enum ClientRole {
    HOST = "host",
    AUDIENCE = "audience"
}
export declare enum ChannelProfile {
    COMMUNICATION = "communication",
    LIVE_BROADCASTING = "live"
}
export type MediaType = 'audio' | 'video' | 'screen' | 'audioSlave';
export declare enum MediaTypeEnum {
    AUDIO = "audio",
    VIDEO = "video",
    SCREEN = "screen",
    AUDIO_SLAVE = "audioSlave"
}
export declare enum ErrorCode {
    SUCCESS = 0,
    UNKNOWN_ERROR = 1,
    INVALID_PARAMS = 2,
    INVALID_OPERATION = 3,
    NOT_SUPPORTED = 4,
    SIGNALING_CONNECT_FAILED = 1000,
    SIGNALING_DISCONNECTED = 1001,
    SIGNALING_JOIN_FAILED = 1002,
    SIGNALING_MESSAGE_TIMEOUT = 1003,
    SIGNALING_CONNECTION_ERROR = 1004,
    RTC_CREATE_OFFER_FAILED = 2000,
    RTC_CREATE_ANSWER_FAILED = 2001,
    RTC_SET_LOCAL_DESC_FAILED = 2002,
    RTC_SET_REMOTE_DESC_FAILED = 2003,
    RTC_ADD_ICE_CANDIDATE_FAILED = 2004,
    RTC_CONNECTION_FAILED = 2005,
    MEDIA_DEVICE_NOT_FOUND = 3000,
    MEDIA_DEVICE_PERMISSION_DENIED = 3001,
    MEDIA_DEVICE_NOT_READABLE = 3002,
    MEDIA_DEVICE_OVERCONSTRAINED = 3003,
    MEDIA_DEVICE_TYPE_ERROR = 3004,
    MEDIA_DEVICE_BUSY = 3005,
    MEDIA_TRACK_ENDED = 3006,
    NETWORK_TIMEOUT = 4000,
    NETWORK_DISCONNECTED = 4001,
    NETWORK_UNSTABLE = 4002,
    AUTH_INVALID_TOKEN = 5000,
    AUTH_TOKEN_EXPIRED = 5001,
    AUTH_INVALID_APPKEY = 5002
}
/**
 * 错误信息接口
 */
export interface ErrorInfo {
    code: ErrorCode;
    message: string;
    detail?: any;
}
export interface DeviceInfo {
    deviceId: string;
    label: string;
}
export interface JoinOptions {
    channelName: string;
    uid: string | number;
    token?: string;
}
export interface RemoteStreamInfo {
    streamId: string;
    userId: string | number;
    hasVideo?: boolean;
    hasAudio?: boolean;
    hasScreen?: boolean;
    mediaType?: MediaType;
}
export interface SubscribeOptions {
    audio?: boolean;
    video?: boolean;
    screen?: boolean;
    mediaType?: MediaType;
}
export interface UnsubscribeOptions {
    audio?: boolean;
    video?: boolean;
    screen?: boolean;
    mediaType?: MediaType;
}
export interface NetworkStats {
    uplinkNetworkQuality: number;
    downlinkNetworkQuality: number;
}
export interface LocalAudioStats {
    sendBitrate: number;
    sendVolume: number;
}
export interface LocalVideoStats {
    sendBitrate: number;
    sendFrameRate: number;
    sendResolution: {
        width: number;
        height: number;
    };
}
export interface RemoteAudioStats {
    uid: string | number;
    receiveBitrate: number;
    receiveVolume: number;
    audioLossRate: number;
}
export interface RemoteVideoStats {
    uid: string | number;
    receiveBitrate: number;
    receiveFrameRate: number;
    receiveResolution: {
        width: number;
        height: number;
    };
}
