/**
 * CallSocket - WebSocket signaling management for PeersCaller
 * Handles all WebSocket communication for call signaling
 */
import type { SignalingEvents, SignalingIncomingEvents } from "../types";
export declare class CallSocket {
    private socket;
    private serverUrl;
    private socketPath;
    private token;
    private connected;
    private reconnectAttempts;
    private maxReconnectAttempts;
    constructor(serverUrl: string, token: string, socketPath?: string);
    /**
     * Connect to the WebSocket server
     */
    connect(): Promise<void>;
    /**
     * Disconnect from the WebSocket server
     */
    disconnect(): void;
    /**
     * Check if socket is connected
     */
    isConnected(): boolean;
    /**
     * Emit a signaling event - fire and forget (no response expected)
     */
    emit<K extends keyof SignalingEvents>(event: K, data: Parameters<SignalingEvents[K]>[0]): void;
    /**
     * Emit a signaling event and wait for response
     */
    emitWithResponse<K extends keyof SignalingEvents>(event: K, data: Parameters<SignalingEvents[K]>[0], timeoutMs?: number): Promise<any>;
    /**
     * Listen for an incoming signaling event (from server)
     */
    on<K extends keyof SignalingIncomingEvents>(event: K, listener: SignalingIncomingEvents[K]): void;
    /**
     * Remove an incoming signaling event listener
     */
    off<K extends keyof SignalingIncomingEvents>(event: K, listener?: SignalingIncomingEvents[K]): void;
    /**
     * Start a new call
     */
    startCall(conversationId: string, userId: string): Promise<{
        success: boolean;
        participants: string[];
        conversationId: string;
        userId: string;
    }>;
    /**
     * Join a call room for signaling
     */
    joinRoom(conversationId: string, userId: string): Promise<{
        participants: string[];
        conversationId: string;
    }>;
    /**
     * Leave a call
     */
    leaveCall(conversationId: string, userId: string): Promise<{
        conversationId: string;
        success: boolean;
    }>;
    /**
     * Send WebRTC offer
     */
    sendOffer(to: string, from: string, offer: RTCSessionDescriptionInit, conversationId: string): void;
    /**
     * Send WebRTC answer
     */
    sendAnswer(to: string, from: string, answer: RTCSessionDescriptionInit, conversationId: string): void;
    /**
     * Send ICE candidate
     */
    sendCandidate(to: string, from: string, candidate: RTCIceCandidateInit, conversationId: string): void;
    /**
     * Send participant state update
     */
    sendStateUpdate(to: string, from: string, state: any, conversationId: string): void;
    /**
     * End call for specific participant (legacy method)
     */
    endCall(to: string, _from: string, conversationId: string): void;
    /**
     * End call for all participants
     */
    endCallForAll(conversationId: string): Promise<void>;
    /**
     * Start recording
     */
    startRecording(conversationId: string, recordingId: string): Promise<{
        recordingId: string;
        conversationId: string;
    }>;
    /**
     * Send recording chunk
     */
    sendRecordingChunk(conversationId: string, recordingId: string, chunk: Blob): void;
    /**
     * End recording
     */
    endRecording(conversationId: string, recordingId: string): Promise<{
        recordingId: string;
        conversationId: string;
        success: boolean;
    }>;
    /**
     * Send transcript
     */
    sendTranscript(conversationId: string, userId: string, transcript: string): void;
    /**
     * Check call status
     */
    checkCallStatus(conversationId: string, userId: string): Promise<any>;
    /**
     * Handle disconnection scenarios
     */
    private handleDisconnection;
    /**
     * Get connection health info
     */
    getConnectionInfo(): {
        connected: boolean;
        socketId: string | undefined;
        transport: string | undefined;
        reconnectAttempts: number;
    };
}
//# sourceMappingURL=CallSocket.d.ts.map