import * as React from 'react'; export declare type TMediaEvent = (event: any, media?: M, state?: IMediaState) => void; export declare type TMediaRenderProp = (media: IMedia, state: IMediaState) => React.ReactElement; export interface IMedia { [s: string]: any; play(): any; pause(): any; seek(time: number): any; volume(volume: number): any; mute(): any; unmute(): any; } export interface IMediaProps extends React.AllHTMLAttributes { src: string; tag?: 'audio' | 'video'; children?: TMediaRenderProp; render?: TMediaRenderProp; autoPlay?: boolean; loop?: boolean; muted?: boolean; preload?: 'none' | 'metadata' | 'auto'; volume?: number; noJs?: React.ReactElement; onMount?: TMediaEvent; onUnmount?: TMediaEvent; onChange?: TMediaEvent; onAbort?: TMediaEvent; onCanPlay?: TMediaEvent; onCanPlayThrough?: TMediaEvent; onDurationChange?: TMediaEvent; onEmptied?: TMediaEvent; onEncrypted?: TMediaEvent; onEnded?: TMediaEvent; onError?: TMediaEvent; onLoadedData?: TMediaEvent; onLoadedMetadata?: TMediaEvent; onLoadStart?: TMediaEvent; onPause?: TMediaEvent; onPlay?: TMediaEvent; onPlaying?: TMediaEvent; onProgress?: TMediaEvent; onRateChange?: TMediaEvent; onSeeked?: TMediaEvent; onSeeking?: TMediaEvent; onStalled?: TMediaEvent; onSuspend?: TMediaEvent; onTimeUpdate?: TMediaEvent; onVolumeChange?: TMediaEvent; onWaiting?: TMediaEvent; } export interface IMediaState { buffered?: any[]; duration?: number; isPlaying?: boolean; muted?: boolean; time?: number; volume?: number; canPlay?: boolean; } export declare class Media

, S extends IMediaState, M extends IMedia> extends React.Component implements IMedia { tag: 'video' | 'audio'; props: P; el: HTMLMediaElement; state: S; ref: (el: any) => void; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(prevProps: any): void; lockPlay: boolean; play: () => void; pause: () => void; seek: (time: number) => void; volume: (volume: any) => void; mute: () => void; unmute: () => void; event: (name: string) => (event: any) => void; change(nextState: any): void; onPlay: (event: any) => void; onPause: (event: any) => void; onVolumeChange: (event: any) => void; onDurationChange: (event: any) => void; onTimeUpdate: (event: any) => void; onProgress: (event: any) => void; onCanPlay: (event: any) => void; render(): React.DetailedReactHTMLElement, HTMLInputElement>; }