import { Options } from 'mux-embed';
import Hls from 'hls.js';
import { HlsConfig } from 'hls.js';
type KeyTypes = string | number | symbol;
type Maybe<T> = T | null | undefined;
export declare const isKeyOf: <T extends {} = any>(k: KeyTypes, o: Maybe<T>) => k is keyof T;
export type ValueOf<T> = T[keyof T];
export type Metadata = Partial<Options['data']>;
export type PlaybackEngine = Hls;
export type PlaybackCore = {
    engine?: PlaybackEngine;
    setAutoplay: (autoplay?: Autoplay) => void;
    setPreload: (preload?: HTMLMediaElement['preload']) => void;
};
export type AutoplayTypes = {
    ANY: 'any';
    MUTED: 'muted';
};
export declare const AutoplayTypes: AutoplayTypes;
export type Autoplay = boolean | ValueOf<AutoplayTypes>;
export type StreamTypes = {
    VOD: 'on-demand';
    ON_DEMAND: 'on-demand';
    LIVE: 'live';
    LL_LIVE: 'll-live';
    DVR: 'live:dvr';
    LL_DVR: 'll-live:dvr';
};
export declare const StreamTypes: StreamTypes;
export type PlaybackTypes = {
    MSE: 'mse';
    NATIVE: 'native';
};
export declare const PlaybackTypes: PlaybackTypes;
export type CmcdTypes = {
    HEADER: 'header';
    QUERY: 'query';
    NONE: 'none';
};
export declare const CmcdTypes: CmcdTypes;
export declare const CmcdTypeValues: ("none" | "header" | "query")[];
export type ExtensionMimeTypeMap = {
    M3U8: 'application/vnd.apple.mpegurl';
    MP4: 'video/mp4';
};
export declare const ExtensionMimeTypeMap: ExtensionMimeTypeMap;
export type MimeTypeShorthandMap = {
    HLS: ExtensionMimeTypeMap['M3U8'];
};
export declare const MimeTypeShorthandMap: MimeTypeShorthandMap;
export declare const shorthandKeys: string[];
export type MediaTypes = ValueOf<ExtensionMimeTypeMap> | keyof MimeTypeShorthandMap
/** @TODO Figure out a way to "downgrade" derived types below to early TS syntax (e.g. 3.4) instead of explicit versions here (CJP) */
 | 'hls';
export declare const allMediaTypes: MediaTypes[];
export type CuePoint<T = any> = {
    time: number;
    value: T;
};
export type MuxMediaPropTypes = {
    envKey: Options['data']['env_key'];
    debug: Options['debug'] & Hls['config']['debug'];
    metadata: Partial<Options['data']>;
    customDomain: string;
    beaconCollectionDomain: Options['beaconCollectionDomain'];
    errorTranslator: Options['errorTranslator'];
    disableCookies: Options['disableCookies'];
    playbackId: string;
    playerInitTime: Options['data']['player_init_time'];
    preferPlayback: ValueOf<PlaybackTypes> | undefined;
    type: MediaTypes;
    streamType: ValueOf<StreamTypes>;
    startTime: HlsConfig['startPosition'];
    autoPlay?: Autoplay;
    autoplay?: Autoplay;
    preferCmcd: ValueOf<CmcdTypes> | undefined;
};
export type HTMLMediaElementProps = Partial<Pick<HTMLMediaElement, 'src' | 'preload'>>;
export type MuxMediaProps = HTMLMediaElementProps & MuxMediaPropTypes;
export type MuxMediaPropsInternal = MuxMediaProps & {
    playerSoftwareName: Options['data']['player_software_name'];
    playerSoftwareVersion: Options['data']['player_software_version'];
};
export {};
