import ImageSource from './image_source';
import type Map from '../ui/map';
import type Dispatcher from '../util/dispatcher';
import type { Evented } from '../util/evented';
import type { VideoSourceSpecification } from '../style-spec/types';
/**
 * A data source containing video.
 * (See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-video) for detailed documentation of options.)
 *
 * @example
 * // add to map
 * map.addSource('some id', {
 *    type: 'video',
 *    url: [
 *        'https://www.mapbox.com/blog/assets/baltimore-smoke.mp4',
 *        'https://www.mapbox.com/blog/assets/baltimore-smoke.webm'
 *    ],
 *    coordinates: [
 *        [-76.54, 39.18],
 *        [-76.52, 39.18],
 *        [-76.52, 39.17],
 *        [-76.54, 39.17]
 *    ]
 * });
 *
 * // update
 * var mySource = map.getSource('some id');
 * mySource.setCoordinates([
 *     [-76.54335737228394, 39.18579907229748],
 *     [-76.52803659439087, 39.1838364847587],
 *     [-76.5295386314392, 39.17683392507606],
 *     [-76.54520273208618, 39.17876344106642]
 * ]);
 *
 * map.removeSource('some id');  // remove
 * @see [Add a video](https://maplibre.org/maplibre-gl-js-docs/example/video-on-a-map/)
 */
declare class VideoSource extends ImageSource {
    options: VideoSourceSpecification;
    urls: Array<string>;
    video: HTMLVideoElement;
    roundZoom: boolean;
    /**
     * @private
     */
    constructor(id: string, options: VideoSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented);
    load(): void;
    /**
     * Pauses the video.
     */
    pause(): void;
    /**
     * Plays the video.
     */
    play(): void;
    /**
     * Sets playback to a timestamp, in seconds.
     * @private
     */
    seek(seconds: number): void;
    /**
     * Returns the HTML `video` element.
     *
     * @returns {HTMLVideoElement} The HTML `video` element.
     */
    getVideo(): HTMLVideoElement;
    onAdd(map: Map): void;
    /**
     * Sets the video's coordinates and re-renders the map.
     *
     * @method setCoordinates
     * @instance
     * @memberof VideoSource
     * @returns {VideoSource} this
     */
    prepare(): void;
    serialize(): {
        type: string;
        urls: string[];
        coordinates: [[number, number], [number, number], [number, number], [number, number]];
    };
    hasTransition(): boolean;
}
export default VideoSource;
//# sourceMappingURL=video_source.d.ts.map