import { MutableRefObject } from 'react';
import { VideoPlayer } from '@zoom/videosdk';
import { VideoAttachmentMode } from '../../../providers/VideoAttachmentState';

type VideoAttachmentRefs = {
    selfShareViewRef: MutableRefObject<HTMLVideoElement | null>;
    otherSharedVideoPlayerRef: MutableRefObject<VideoPlayer | null>;
    videoPlayerRef: MutableRefObject<VideoPlayer | null>;
    selfViewVideoPlayerRef: MutableRefObject<VideoPlayer | null>;
};
/**
 * useVideoAttachment coordinates video attach/detach operations.
 *
 * This hook implements the critical pattern:
 * 1. Detach previous attachment (if any)
 * 2. Attach new attachment (based on current mode)
 *
 * This ensures only ONE video is attached at any given time and prevents
 * race conditions or SDK errors from overlapping attachments.
 *
 * @param mode - Current video attachment mode
 * @param userId - User ID to attach (null for NONE mode)
 * @param refs - Refs to all 4 video containers
 */
export declare const useVideoAttachment: (mode: VideoAttachmentMode, userId: number | null, refs: VideoAttachmentRefs) => void;
export {};
