/**
 * 信令适配器接口定义
 * 用于定义不同信令实现的统一接口
 */
/**
 * 信令消息类型
 */
export declare enum SignalingMessageType {
    JOIN = "join",
    LEAVE = "leave",
    OFFER = "offer",
    ANSWER = "answer",
    CANDIDATE = "candidate",
    KEEPALIVE = "keepalive",
    ERROR = "error"
}
/**
 * 信令消息接口
 */
export interface SignalingMessage {
    type: SignalingMessageType;
    payload: any;
    from?: string | number;
    to?: string | number | 'all';
    roomId?: string;
    timestamp?: number;
}
/**
 * 信令配置接口
 */
export interface SignalingConfig {
    url: string;
    autoReconnect?: boolean;
    reconnectInterval?: number;
    reconnectAttempts?: number;
}
/**
 * 信令适配器接口
 */
export interface SignalingInterface {
    /**
     * 连接到信令服务器
     * @returns Promise<void>
     */
    connect(): Promise<void>;
    /**
     * 断开与信令服务器的连接
     */
    disconnect(): void;
    /**
     * 发送消息到信令服务器
     * @param type 消息类型
     * @param payload 消息内容
     * @param to 接收者ID
     * @returns boolean 是否发送成功
     */
    sendMessage(type: SignalingMessageType, payload: any, to?: string | number | 'all'): boolean;
    /**
     * 加入房间
     * @param roomId 房间ID
     * @param userId 用户ID
     * @param userData 用户数据
     * @returns Promise<void>
     */
    joinRoom(roomId: string, userId: string | number, userData?: any): Promise<void>;
    /**
     * 离开房间
     */
    leaveRoom(): void;
    /**
     * 发送SDP offer
     * @param offer SDP offer
     * @param targetUserId 目标用户ID
     */
    sendOffer(offer: RTCSessionDescriptionInit, targetUserId: string | number): boolean;
    /**
     * 发送SDP answer
     * @param answer SDP answer
     * @param targetUserId 目标用户ID
     */
    sendAnswer(answer: RTCSessionDescriptionInit, targetUserId: string | number): boolean;
    /**
     * 发送ICE candidate
     * @param candidate ICE candidate
     * @param targetUserId 目标用户ID
     */
    sendCandidate(candidate: RTCIceCandidateInit, targetUserId: string | number): boolean;
    /**
     * 添加消息监听器
     * @param event 事件名称
     * @param callback 回调函数
     */
    on(event: string, callback: Function): void;
    /**
     * 移除消息监听器
     * @param event 事件名称
     * @param callback 回调函数
     */
    off(event: string, callback: Function): void;
    /**
     * 添加一次性消息监听器
     * @param event 事件名称
     * @param callback 回调函数
     */
    once(event: string, callback: Function): void;
}
