export default TinyHtmlMedia;
export type ClassSetter = import("./TinyHtmlTemplate.mjs").ClassSetter;
/** @typedef {import('./TinyHtmlTemplate.mjs').ClassSetter} ClassSetter */
/**
 * TinyHtmlMedia is a base helper for <audio> and <video> elements.
 * It provides a consistent API to control media playback and access
 * standard {@link HTMLMediaElement} properties and methods.
 *
 * @template {HTMLMediaElement} TinyHtmlT
 * @extends TinyHtmlTemplate<TinyHtmlT>
 */
declare class TinyHtmlMedia<TinyHtmlT extends HTMLMediaElement> extends TinyHtmlTemplate<TinyHtmlT> {
    /**
     * Creates a new TinyHtmlMedia instance.
     * @param {TinyHtmlT} tag - The HTML tag name (e.g., 'audio', 'video').
     * @param {ClassSetter} [tags=[]] - Initial CSS classes to apply.
     * @param {ClassSetter} [mainClass=[]] - Main CSS classes to apply.
     */
    constructor(tag: TinyHtmlT, tags?: ClassSetter, mainClass?: ClassSetter);
    /**
     * Plays all attached media elements.
     * @returns {Promise<void>} Resolves when all play calls complete.
     */
    playMedia(): Promise<void>;
    /**
     * Pauses all attached media elements.
     * @returns {this}
     */
    pauseMedia(): this;
    /**
     * Toggles play/pause state for all attached media elements.
     * @returns {this}
     */
    togglePlayMedia(): this;
    /**
     * Stops all media by pausing and resetting the current time to `0`.
     * @returns {this}
     */
    stopMedia(): this;
    set currentTime(t: number);
    /** @type {number} The current playback position in seconds. */
    get currentTime(): number;
    /**
     * Reloads all attached media elements.
     * @returns {this}
     */
    loadMedia(): this;
    /**
     * Adds a new text track to the first media element.
     * @param {TextTrackKind} kind - A string representing the TextTrack.kind property (subtitles, captions, descriptions, chapters, or metadata).
     * @param {string} [label] - A string representing the TextTrack.label property.
     * @param {string} [language] - A string representing the TextTrack.language property.
     * @returns {TextTrack}
     */
    addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;
    /**
     * Checks if a given MIME type can be played.
     * @param {string} type - MIME type (e.g., 'video/mp4').
     * @returns {CanPlayTypeResult} Either "", "probably", or "maybe".
     */
    canPlayType(type: string): CanPlayTypeResult;
    /**
     * Seeks quickly to a given time if supported.
     * @param {number} time - Target time in seconds.
     * @returns {this}
     */
    fastSeek(time: number): this;
    /**
     * Sets custom MediaKeys on the first media element.
     * @param {MediaKeys|null} keys - Media keys to set.
     * @returns {Promise<void>}
     */
    setMediaKeys(keys: MediaKeys | null): Promise<void>;
    /**
     * Assigns a sink ID (output device) to the first media element.
     * @param {string} id - The sink ID (device ID).
     * @returns {Promise<void>}
     */
    setSinkId(id: string): Promise<void>;
    set autoplay(v: boolean);
    /** @type {boolean} Autoplay state of the media. */
    get autoplay(): boolean;
    /** @returns {TimeRanges} The buffered time ranges. */
    get buffered(): TimeRanges;
    set controls(v: boolean);
    /** @type {boolean} Whether default controls are visible. */
    get controls(): boolean;
    set controlsList(v: string | null);
    /** @type {string|null} The list of controls available. */
    get controlsList(): string | null;
    set crossOrigin(v: string | null);
    /** @type {string|null} CORS setting for the media. */
    get crossOrigin(): string | null;
    /** @returns {string} The resolved source URL currently playing. */
    get currentSrc(): string;
    set defaultMuted(v: boolean);
    /** @type {boolean} Whether media is muted by default. */
    get defaultMuted(): boolean;
    set defaultPlaybackRate(v: number);
    /** @type {number} Default playback rate (1 = normal speed). */
    get defaultPlaybackRate(): number;
    set disableRemotePlayback(v: boolean);
    /** @type {boolean} Whether remote playback is disabled. */
    get disableRemotePlayback(): boolean;
    /** @returns {number} The duration of the media in seconds. */
    get duration(): number;
    /** @returns {boolean} Whether the media has ended. */
    get ended(): boolean;
    /** @returns {MediaError|null} Error state if media failed to load. */
    get error(): MediaError | null;
    set loop(v: boolean);
    /** @type {boolean} Whether the media should loop. */
    get loop(): boolean;
    set mediaGroup(v: string | null);
    /** @type {string|null} Media group name for synchronization. */
    get mediaGroup(): string | null;
    /** @returns {MediaKeys|null} The associated MediaKeys object. */
    get mediaKeys(): MediaKeys | null;
    set muted(state: boolean);
    /** @type {boolean} Whether the media is muted. */
    get muted(): boolean;
    /** @returns {number} Network state (see `HTMLMediaElement.networkState`). */
    get networkState(): number;
    /** @returns {boolean} Whether the media is currently paused. */
    get paused(): boolean;
    set playbackRate(rate: number);
    /** @type {number} Current playback rate (1 = normal speed). */
    get playbackRate(): number;
    /** @returns {TimeRanges} Played time ranges. */
    get played(): TimeRanges;
    set preload(v: "" | "metadata" | "none" | "auto");
    /** @type {"" | "metadata" | "none" | "auto"} Preload strategy ('none', 'metadata', 'auto'). */
    get preload(): "" | "metadata" | "none" | "auto";
    set preservesPitch(v: boolean);
    /** @type {boolean} Whether pitch is preserved when rate changes. */
    get preservesPitch(): boolean;
    /** @returns {number} Ready state of the media. */
    get readyState(): number;
    /** @returns {RemotePlayback|null} Remote playback interface. */
    get remote(): RemotePlayback | null;
    /** @returns {TimeRanges} Seekable time ranges. */
    get seekable(): TimeRanges;
    /** @returns {boolean} Whether the media is currently seeking. */
    get seeking(): boolean;
    /** @returns {string} Current sink ID (output device). */
    get sinkId(): string;
    set src(v: string | null);
    /** @type {string|null} Source URL of the media. */
    get src(): string | null;
    set srcObject(v: MediaProvider | null);
    /** @type {MediaProvider|null} Current `srcObject` (e.g., MediaStream). */
    get srcObject(): MediaProvider | null;
    /** @returns {TextTrackList} Available text tracks. */
    get textTracks(): TextTrackList;
    /**
     * Sets the volume level.
     * @param {number} level - Value between 0.0 and 1.0.
     * @throws {TypeError} If not a number.
     */
    set volume(level: number);
    /**
     * Gets the current volume.
     * @returns {number} Value between 0.0 and 1.0.
     */
    get volume(): number;
}
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
//# sourceMappingURL=TinyHtmlMedia.d.mts.map