/**
 * Socket.IO 信令适配器实现
 */
import { EventEmitter } from '../../utils/eventEmitter';
import { SignalingInterface, SignalingConfig, SignalingMessageType } from './interface';
/**
 * Socket.IO 信令适配器
 * 实现基于 Socket.IO 的信令通信
 */
export declare class SocketIOSignaling extends EventEmitter implements SignalingInterface {
    private socket;
    private reconnectTimer;
    private reconnectAttempts;
    private connected;
    private roomId;
    private userId;
    private config;
    private logger;
    private socketOptions;
    private heartbeatTimer;
    private heartbeatInterval;
    private heartbeatTimeout;
    private missedHeartbeats;
    private maxMissedHeartbeats;
    /**
     * 构造函数
     * @param config 信令配置
     */
    constructor(config: SignalingConfig);
    /**
     * 连接到信令服务器
     * @returns Promise<void>
     */
    connect(): Promise<void>;
    /**
     * 断开与信令服务器的连接
     */
    disconnect(): void;
    /**
     * 停止心跳检测
     */
    private stopHeartbeat;
    /**
     * 启动心跳检测
     */
    private startHeartbeat;
    /**
     * 发送心跳包
     */
    private sendHeartbeat;
    /**
     * 处理心跳响应
     */
    private handleHeartbeatResponse;
    /**
     * 处理连接丢失
     */
    private handleConnectionLost;
    /**
     * 发送消息到信令服务器
     * @param type 消息类型
     * @param payload 消息内容
     * @param to 接收者ID
     * @returns boolean 是否发送成功
     */
    sendMessage(type: SignalingMessageType, payload: any, to?: string): boolean;
    /**
     * 处理接收到的消息
     * @param message 消息对象
     */
    private handleMessage;
    /**
     * 加入房间
     * @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;
}
