import { MuxMediaProps, StreamTypes, PlaybackTypes, Metadata, MediaError, CmcdTypes } from '@mux/playback-core';
import type { PlaybackEngine, Autoplay, ExtensionMimeTypeMap, ValueOf } from '@mux/playback-core';
import 'castable-video';
import { Events as VideoEvents } from 'custom-media-element';
declare const CustomVideoElement: import("custom-media-element").CustomMediaElementConstructor<import("custom-media-element").CustomVideoElement>;
/** @TODO make the relationship between name+value smarter and more deriveable (CJP) */
type AttributeNames = {
    BEACON_COLLECTION_DOMAIN: 'beacon-collection-domain';
    CUSTOM_DOMAIN: 'custom-domain';
    DEBUG: 'debug';
    DISABLE_COOKIES: 'disable-cookies';
    ENV_KEY: 'env-key';
    MAX_RESOLUTION: 'max-resolution';
    METADATA_URL: 'metadata-url';
    PLAYBACK_ID: 'playback-id';
    PLAYER_SOFTWARE_NAME: 'player-software-name';
    PLAYER_SOFTWARE_VERSION: 'player-software-version';
    PREFER_CMCD: 'prefer-cmcd';
    PREFER_PLAYBACK: 'prefer-playback';
    START_TIME: 'start-time';
    STREAM_TYPE: 'stream-type';
    TARGET_LIVE_WINDOW: 'target-live-window';
    LIVE_EDGE_OFFSET: 'live-edge-offset';
    TYPE: 'type';
};
export declare const Attributes: AttributeNames;
declare class MuxVideoElement extends CustomVideoElement implements Partial<MuxMediaProps> {
    #private;
    static get observedAttributes(): string[];
    constructor();
    get preferCmcd(): ValueOf<CmcdTypes> | undefined;
    set preferCmcd(value: ValueOf<CmcdTypes> | undefined);
    get playerInitTime(): number;
    get playerSoftwareName(): string | undefined;
    set playerSoftwareName(value: string | undefined);
    get playerSoftwareVersion(): string | undefined;
    set playerSoftwareVersion(value: string | undefined);
    get _hls(): PlaybackEngine | undefined;
    get mux(): Readonly<HTMLVideoElement['mux']> | undefined;
    get error(): globalThis.MediaError | null;
    get errorTranslator(): ((errorEvent: any) => any) | undefined;
    set errorTranslator(value: ((errorEvent: any) => any) | undefined);
    get src(): string;
    set src(val: string);
    get type(): ValueOf<ExtensionMimeTypeMap> | undefined;
    set type(val: ValueOf<ExtensionMimeTypeMap> | undefined);
    /** @ts-ignore */
    get autoplay(): Autoplay;
    /** @ts-ignore */
    set autoplay(val: Autoplay);
    get preload(): "" | "none" | "metadata" | "auto";
    set preload(val: "" | "none" | "metadata" | "auto");
    get debug(): boolean;
    set debug(val: boolean);
    get disableCookies(): boolean;
    set disableCookies(val: boolean);
    get startTime(): number | undefined;
    set startTime(val: number | undefined);
    get playbackId(): string | undefined;
    set playbackId(val: string | undefined);
    get maxResolution(): string | undefined;
    set maxResolution(val: string | undefined);
    get customDomain(): string | undefined;
    set customDomain(val: string | undefined);
    get ended(): boolean;
    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);
    get targetLiveWindow(): number | undefined;
    set targetLiveWindow(val: number | undefined);
    get liveEdgeStart(): number;
    get liveEdgeOffset(): number | undefined;
    set liveEdgeOffset(val: number | undefined);
    get seekable(): TimeRanges;
    addCuePoints<T = any>(cuePoints: {
        time: number;
        value: T;
    }[]): Promise<TextTrack>;
    get activeCuePoint(): {
        time: number;
        value: any;
    } | undefined;
    get cuePoints(): {
        time: number;
        value: any;
    }[];
    getStartDate(): Date;
    get currentPdt(): Date;
    get preferPlayback(): ValueOf<PlaybackTypes> | undefined;
    set preferPlayback(val: ValueOf<PlaybackTypes> | undefined);
    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;
}
type MuxVideoElementType = typeof MuxVideoElement;
declare global {
    var MuxVideoElement: MuxVideoElementType;
}
export { PlaybackEngine, PlaybackEngine as Hls, ExtensionMimeTypeMap as MimeTypes, MediaError, VideoEvents };
export default MuxVideoElement;
