import { Plugins, HtmlPluginState, VideoSources, VideoType, VideoPoster, VideoOptions } from '../types';
import { CloudinaryVideo } from "@cloudinary/url-gen";
export declare class HtmlVideoLayer {
videoElement: any;
originalVideo: CloudinaryVideo;
htmlPluginState: HtmlPluginState;
mimeType: string;
mimeSubTypes: {
flv: string;
'3gp': string;
mov: string;
mpg: string;
avi: string;
wmv: string;
ogv: string;
webm: string;
mp4: string;
};
videoOptions: VideoOptions;
constructor(element: HTMLVideoElement | null, userCloudinaryVideo: CloudinaryVideo, sources: VideoSources, plugins?: Plugins, videoAttributes?: object, userCloudinaryPoster?: VideoPoster, videoOptions?: VideoOptions);
/**
* Handles user supplied sources or default sources
* @param userCloudinaryVideo {CloudinaryVideo}
* @param sources
*/
handleSourceToVideo(userCloudinaryVideo: CloudinaryVideo, sources: VideoSources): void;
/**
* Generate sources based on user input
* @param userCloudinaryVideo {CloudinaryVideo}
* @param sources
*/
generateUserSources(userCloudinaryVideo: CloudinaryVideo, sources: VideoSources): void;
/**
* Appends source tag to html video element
* @param userCloudinaryVideo {CloudinaryVideo}
* @param type {string}
* @param mimeType {string}
*/
appendSourceTag(userCloudinaryVideo: CloudinaryVideo, type: string, mimeType?: string): void;
/**
* Determines MIME type of given source type and codecs.
* @param type - format of the video
* @param codecs - optional information about codecs of the video
*/
buildMimeType(type: VideoType, codecs: string[]): string;
/**
* Iterates through the video attributes and sets to true if passed in by the user.
* In case of poster, sets the poster.
* @param videoAttributes {object} Supported attributes: controls, loop, muted, poster, preload, autoplay, playsinline
*/
setVideoAttributes(videoAttributes?: object, userCloudinaryPoster?: VideoPoster): void;
/**
* Called when component is updated. If our video source has changed, a video reload is triggered.
* @param updatedCloudinaryVideo
* @param sources
* @param plugins
* @param videoAttributes
*/
update(updatedCloudinaryVideo: CloudinaryVideo, sources: VideoSources, plugins?: Plugins, videoAttributes?: object, userCloudinaryPoster?: VideoPoster): void;
}