import { ReactNode } from 'react';

/**
 * Video attachment modes representing which container should have video attached.
 * Priority order (highest to lowest):
 * 1. SELF_SHARE - Current user sharing screen
 * 2. OTHER_SHARE - Another user sharing screen
 * 3. PINNED_VIEW - Multi-panelist pinned grid (2-4 users)
 * 4. OTHER_CAMERA - Other user's camera (single pin or active speaker)
 * 5. SELF_CAMERA - Current user's camera
 * 6. NONE - No video attached
 */
export declare enum VideoAttachmentMode {
    SELF_SHARE = "self-share",// Self screen sharing - uses selfShareViewRef
    OTHER_SHARE = "other-share",// Other user sharing - uses otherSharedVideoPlayerRef
    PINNED_VIEW = "pinned-view",// Multi-panelist pinned grid - handled by PinnedView component
    OTHER_CAMERA = "other-camera",// Other user camera - uses videoPlayerRef
    SELF_CAMERA = "self-camera",// Self camera view - uses selfViewVideoPlayerRef
    NONE = "none"
}
/**
 * Current video attachment state
 *
 * @property mode - Current attachment mode (which container should have video)
 * @property userId - User ID whose video should be attached (null when mode is NONE)
 * @property displayUserId - User ID whose tile should render in the active-video area (may differ from userId when camera is blocked)
 */
export type VideoAttachmentState = {
    mode: VideoAttachmentMode;
    userId: number | null;
    displayUserId: number | null;
};
export type VideoAttachmentStateProviderProps = {
    children: ReactNode;
};
