import { PeersCaller } from "../../core/PeersCaller";
import type { MediaStreamConfig, CallMetrics, CallStatusResponse, CallParticipant, CallState } from "../../types";
interface TesterConfig {
    socketUrl: string;
    conversationId: string;
    userId: string;
    token: string;
    iceServers?: RTCIceServer[];
}
interface LogEntry {
    id: string;
    timestamp: number;
    level: "info" | "warn" | "error" | "debug";
    message: string;
    data?: any;
}
interface TesterMetrics extends CallMetrics {
    connectTime?: number;
    lastPingTime?: number;
    signalStrength: "strong" | "medium" | "weak" | "disconnected";
}
interface UseTesterReturn {
    peersCaller: PeersCaller | null;
    callState: CallState;
    participants: CallParticipant[];
    localParticipant: CallParticipant | null;
    isConnected: boolean;
    isRecording: boolean;
    error: string | null;
    logs: LogEntry[];
    metrics: TesterMetrics;
    config: TesterConfig;
    callStatusInfo: CallStatusResponse | null;
    isCallActive: boolean;
    canJoinCall: boolean;
    initialize: () => Promise<PeersCaller | undefined>;
    checkCallStatus: (instance?: PeersCaller) => Promise<CallStatusResponse | null>;
    startCall: (mediaConfig?: MediaStreamConfig) => Promise<void>;
    joinCall: (mediaConfig?: MediaStreamConfig) => Promise<void>;
    joinOrStartCall: (mediaConfig?: MediaStreamConfig) => Promise<void>;
    endCall: () => void;
    toggleAudio: (enabled: boolean) => void;
    toggleVideo: (enabled: boolean) => void;
    startScreenShare: () => void;
    stopScreenShare: () => void;
    startRecording: () => void;
    stopRecording: () => void;
    updateConfig: (updates: Partial<TesterConfig>) => void;
    clearLogs: () => void;
    cleanup: () => void;
}
export declare const useTester: () => UseTesterReturn;
export {};
//# sourceMappingURL=useTester.d.ts.map