import React, { createContext, ReactNode, useContext } from 'react';
import type { WebRTCConfig } from '../types';

interface WebRTCContextType {
    config: WebRTCConfig;
}

const WebRTCContext = createContext<WebRTCContextType | null>(null);

interface WebRTCProviderProps {
    children: ReactNode;
    config?: WebRTCConfig;
}

const defaultConfig: WebRTCConfig = {
    iceServers: [
        { urls: 'stun:stun.l.google.com:19302' }
    ],
    signaling: {
        url: 'ws://localhost:3001'
    }
};

/**
 * WebRTC Provider component
 * 
 * @example
 * ```tsx
 * <WebRTCProvider config={config}>
 *   <App />
 * </WebRTCProvider>
 * ```
 */
export function WebRTCProvider({ children, config = defaultConfig }: WebRTCProviderProps) {
    return (
        <WebRTCContext.Provider value={{ config }}>
            {children}
        </WebRTCContext.Provider>
    );
}

export function useWebRTCContext() {
    const context = useContext(WebRTCContext);
    if (!context) {
        throw new Error('useWebRTCContext must be used within WebRTCProvider');
    }
    return context;
} 