import CustomVideoElement from './CustomVideoElement';
import { MuxMediaProps, StreamTypes, ValueOf, Metadata, MediaError } from '@mux-elements/playback-core';
import type { PlaybackEngine, Autoplay, UpdateAutoplay, ExtensionMimeTypeMap } from '@mux-elements/playback-core';
declare class MuxVideoElement extends CustomVideoElement<HTMLVideoElement> implements Partial<MuxMediaProps> {
    static get observedAttributes(): string[];
    protected __hls?: PlaybackEngine;
    protected __playerInitTime: number;
    protected __metadata: Readonly<Metadata>;
    protected __playerSoftwareVersion?: string;
    protected __playerSoftwareName?: string;
    protected __updateAutoplay?: UpdateAutoplay;
    constructor();
    get playerInitTime(): number;
    get playerSoftwareName(): string | undefined;
    set playerSoftwareName(value: string | undefined);
    get playerSoftwareVersion(): string | undefined;
    set playerSoftwareVersion(value: string | undefined);
    get hls(): import("hls.js").default | undefined;
    get mux(): Readonly<HTMLVideoElement['mux']> | undefined;
    get src(): string;
    set src(val: string);
    get type(): ValueOf<ExtensionMimeTypeMap> | undefined;
    set type(val: ValueOf<ExtensionMimeTypeMap> | undefined);
    get autoplay(): Autoplay;
    set autoplay(val: Autoplay);
    /** @TODO write a generic module for well defined primitive types -> attribute getter/setters/removers (CJP) */
    get debug(): boolean;
    set debug(val: boolean);
    get startTime(): number | undefined;
    set startTime(val: number | undefined);
    get playbackId(): string | undefined;
    set playbackId(val: string | undefined);
    get envKey(): string | undefined;
    set envKey(val: string | undefined);
    get beaconCollectionDomain(): string | undefined;
    set beaconCollectionDomain(val: string | undefined);
    get streamType(): ValueOf<StreamTypes> | undefined;
    set streamType(val: ValueOf<StreamTypes> | undefined);
    /** @TODO Followup: naming convention: all lower (common per HTMLElement props) vs. camel (common per JS convention) (CJP) */
    get preferMse(): boolean;
    set preferMse(val: boolean);
    get metadata(): Readonly<Metadata> | undefined;
    set metadata(val: Readonly<Metadata> | undefined);
    load(): void;
    unload(): void;
    attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void;
    disconnectedCallback(): void;
    /** @TODO Followup - investigate why this is necessary (attributeChanged not invoked on initial load when setting playback-id) (CJP) */
    connectedCallback(): void;
}
declare type MuxVideoElementType = typeof MuxVideoElement;
declare global {
    var MuxVideoElement: MuxVideoElementType;
}
export { PlaybackEngine, PlaybackEngine as Hls, ExtensionMimeTypeMap as MimeTypes, MediaError };
export default MuxVideoElement;
