/**
 * CallMediaStream - Media stream management for PeersCaller
 * Handles camera, microphone, and screen sharing streams
 */
import type { MediaStreamConfig, ScreenShareConfig } from "../types";
export declare class CallMediaStream {
    private stream;
    private videoElement;
    private constraints;
    private isScreenShare;
    constructor(constraints?: MediaStreamConfig);
    /**
     * Initialize media stream with camera and microphone
     */
    initialize(): Promise<MediaStream>;
    /**
     * Start screen sharing
     */
    startScreenShare(config?: ScreenShareConfig): Promise<MediaStream>;
    /**
     * Stop screen sharing and revert to camera
     */
    stopScreenShare(cameraStream?: MediaStream | null): Promise<MediaStream>;
    /**
     * Toggle audio track
     */
    toggleAudio(enabled: boolean): void;
    /**
     * Toggle video track
     */
    toggleVideo(enabled: boolean): void;
    /**
     * Create and return a video element for displaying the stream
     */
    createVideoElement(): HTMLVideoElement;
    /**
     * Attach stream to an existing video element
     */
    attachToVideoElement(videoElement: HTMLVideoElement): void;
    /**
     * Replace the current stream (useful for switching between camera and screen)
     */
    replaceStream(newStream: MediaStream): void;
    /**
     * Get current stream
     */
    getStream(): MediaStream | null;
    /**
     * Get video element
     */
    getVideoElement(): HTMLVideoElement | null;
    /**
     * Check if current stream is screen share
     */
    getIsScreenShare(): boolean;
    /**
     * Get audio track enabled state
     */
    isAudioEnabled(): boolean;
    /**
     * Get video track enabled state
     */
    isVideoEnabled(): boolean;
    /**
     * Get stream information
     */
    getStreamInfo(): {
        id: string;
        videoTracks: number;
        audioTracks: number;
        isScreenShare: boolean;
        videoEnabled: boolean;
        audioEnabled: boolean;
        videoConstraints: MediaTrackSettings | null;
        audioConstraints: MediaTrackSettings | null;
    } | null;
    /**
     * Stop all tracks and cleanup
     */
    cleanup(): void;
    /**
     * Handle media errors and provide user-friendly messages
     */
    private handleMediaError;
    /**
     * Get available media devices
     */
    static getAvailableDevices(): Promise<{
        videoDevices: MediaDeviceInfo[];
        audioDevices: MediaDeviceInfo[];
    }>;
    /**
     * Check if browser supports required features
     */
    static checkBrowserSupport(): {
        getUserMedia: boolean;
        getDisplayMedia: boolean;
        webRTC: boolean;
    };
}
//# sourceMappingURL=CallMediaStream.d.ts.map