import { ComponentPropsWithoutRef, ComponentType } from 'react';
import { StreamVideoParticipant, VideoTrackType } from '@stream-io/video-client';
import { VideoPlaceholderProps } from './DefaultVideoPlaceholder';
import { PictureInPicturePlaceholderProps } from './DefaultPictureInPicturePlaceholder';
export type VideoProps = ComponentPropsWithoutRef<'video'> & {
    /**
     * Pass false to disable rendering video and render fallback
     * even if the participant has published video.
     * @default true
     */
    enabled?: boolean;
    /**
     * Forces the video to be mirrored or unmirrored. By default, video track
     * from the local participant is mirrored, and all other videos are not mirrored.
     */
    mirror?: boolean;
    /**
     * The track type to display.
     */
    trackType: VideoTrackType | 'none';
    /**
     * The participant represented by this video element.
     */
    participant: StreamVideoParticipant;
    /**
     * Override the default UI that's visible when a participant turned off their video.
     * Set it to `null` if you wish to disable the video placeholder.
     *
     * @default DefaultVideoPlaceholder
     */
    VideoPlaceholder?: ComponentType<VideoPlaceholderProps> | null;
    /**
     * Override the default UI that's dispayed in place of the video when it's playing
     * in picture-in-picture. Set it to `null` if you wish to display the browser's default
     * placeholder.
     *
     * @default DefaultPictureInPicturePlaceholder
     */
    PictureInPicturePlaceholder?: ComponentType<PictureInPicturePlaceholderProps> | null;
    /**
    /**
     * An object with setRef functions
     * meant for exposing some of the internal elements of this component.
     */
    refs?: {
        /**
         * The video element that's used to play the video stream.
         * @param element the video element.
         */
        setVideoElement?: (element: HTMLVideoElement | null) => void;
        /**
         * The video placeholder element that's used when the video stream is not playing.
         * @param element the video placeholder element.
         */
        setVideoPlaceholderElement?: (element: HTMLDivElement | null) => void;
        setPictureInPicturePlaceholderElement?: (element: HTMLDivElement | null) => void;
    };
};
export declare const Video: {
    ({ enabled, mirror, trackType, participant, className, VideoPlaceholder, PictureInPicturePlaceholder, refs, ...rest }: VideoProps): import("react/jsx-runtime").JSX.Element | null;
    displayName: string;
};
