import { MediaContainer } from './media-container.js';
import { AttributeTokenList } from './utils/attribute-token-list.js';
import { MediaStore } from './media-store/media-store.js';
export declare const Attributes: {
    DEFAULT_SUBTITLES: string;
    DEFAULT_STREAM_TYPE: string;
    DEFAULT_DURATION: string;
    FULLSCREEN_ELEMENT: string;
    HOTKEYS: string;
    KEYBOARD_BACKWARD_SEEK_OFFSET: string;
    KEYBOARD_FORWARD_SEEK_OFFSET: string;
    KEYBOARD_DOWN_VOLUME_STEP: string;
    KEYBOARD_UP_VOLUME_STEP: string;
    KEYS_USED: string;
    LANG: string;
    LOOP: string;
    LIVE_EDGE_OFFSET: string;
    NO_AUTO_SEEK_TO_LIVE: string;
    NO_DEFAULT_STORE: string;
    NO_HOTKEYS: string;
    NO_MUTED_PREF: string;
    NO_SUBTITLES_LANG_PREF: string;
    NO_VOLUME_PREF: string;
    SEEK_TO_LIVE_OFFSET: string;
};
/**
 * Media Controller should not mimic the HTMLMediaElement API.
 * @see https://github.com/muxinc/media-chrome/pull/182#issuecomment-1067370339
 *
 * @attr {boolean} defaultsubtitles
 * @attr {string} defaultstreamtype
 * @attr {string} defaultduration
 * @attr {string} fullscreenelement
 * @attr {boolean} nohotkeys
 * @attr {string} hotkeys
 * @attr {string} keysused
 * @attr {string} liveedgeoffset
 * @attr {string} seektoliveoffset
 * @attr {boolean} noautoseektolive
 * @attr {boolean} novolumepref
 * @attr {boolean} nomutedpref
 * @attr {boolean} nosubtitleslangpref
 * @attr {boolean} nodefaultstore
 * @attr {string} lang
 */
declare class MediaController extends MediaContainer {
    #private;
    static get observedAttributes(): string[];
    mediaStateReceivers: HTMLElement[];
    associatedElementSubscriptions: Map<HTMLElement, () => void>;
    constructor();
    get mediaStore(): MediaStore;
    set mediaStore(value: MediaStore);
    get fullscreenElement(): HTMLElement;
    set fullscreenElement(element: HTMLElement);
    get defaultSubtitles(): boolean | undefined;
    set defaultSubtitles(value: boolean);
    get defaultStreamType(): string | undefined;
    set defaultStreamType(value: string | undefined);
    get defaultDuration(): number | undefined;
    set defaultDuration(value: number | undefined);
    get noHotkeys(): boolean | undefined;
    set noHotkeys(value: boolean | undefined);
    get keysUsed(): string | undefined;
    set keysUsed(value: string | undefined);
    get liveEdgeOffset(): number | undefined;
    set liveEdgeOffset(value: number | undefined);
    get noAutoSeekToLive(): boolean | undefined;
    set noAutoSeekToLive(value: boolean | undefined);
    get noVolumePref(): boolean | undefined;
    set noVolumePref(value: boolean | undefined);
    get noMutedPref(): boolean | undefined;
    set noMutedPref(value: boolean | undefined);
    get noSubtitlesLangPref(): boolean | undefined;
    set noSubtitlesLangPref(value: boolean | undefined);
    get noDefaultStore(): boolean | undefined;
    set noDefaultStore(value: boolean | undefined);
    attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * @override
     * @param {HTMLMediaElement} media
     */
    mediaSetCallback(media: HTMLMediaElement): void;
    /**
     * @override
     * @param {HTMLMediaElement} media
     */
    mediaUnsetCallback(media: HTMLMediaElement): void;
    propagateMediaState(stateName: string, state: any): void;
    associateElement(element: HTMLElement): void;
    unassociateElement(element: HTMLElement): void;
    registerMediaStateReceiver(el: HTMLElement): void;
    unregisterMediaStateReceiver(el: HTMLElement): void;
    enableHotkeys(): void;
    disableHotkeys(): void;
    get hotkeys(): AttributeTokenList | string;
    set hotkeys(value: string | undefined);
    keyboardShortcutHandler(e: KeyboardEvent): void;
}
export { MediaController };
export default MediaController;
