import { HMSTrack } from './HMSTrack';
import { HMSTrackType } from './HMSTrackType';
import { VideoElementManager } from './VideoElementManager';
import { HMSMediaStream } from '../streams';
export declare class HMSVideoTrack extends HMSTrack {
    readonly type: HMSTrackType;
    private sinkCount;
    videoHandler: VideoElementManager;
    constructor(stream: HMSMediaStream, track: MediaStreamTrack, source?: string);
    setVideoHandler(videoHandler: VideoElementManager): void;
    /**
     * sink=video element rendering the video
     */
    hasSinks(): boolean;
    getSinks(): HTMLVideoElement[];
    attach(videoElement: HTMLVideoElement): void;
    detach(videoElement: HTMLVideoElement): void;
    /**
     * attaches the track to the passed in video element
     * @param videoElement
     */
    addSink(videoElement: HTMLVideoElement): void;
    /**
     * removes the track from the passed in video element
     * @param videoElement
     */
    removeSink(videoElement: HTMLVideoElement): void;
    cleanup(): void;
    protected addSinkInternal(videoElement: HTMLVideoElement, track: MediaStreamTrack): void;
    handleTrackUnmute: () => void;
    private reTriggerPlay;
    private reduceSinkCount;
    private addPropertiesToElement;
}
