import { Texture, TextureSourceLike } from 'pixi.js';
import { VideoSpriteOptions } from '../../interface/canvas/canvas-options.js';
import ImageSprite from './ImageSprite.js';
import VideoSpriteMemory from '../../interface/canvas/memory/VideoSpriteMemory.js';
import './AdditionalPositions.js';
import './AnchorExtension.js';
import '../../types/ContainerChild.js';
import './CanvasBaseItem.js';
import '../../interface/canvas/memory/CanvasBaseItemMemory.js';
import './Sprite.js';
import '../../types/CanvasEventNamesType.js';
import '../CanvasEvent.js';
import '../../types/EventIdType.js';
import '../../interface/canvas/memory/SpriteMemory.js';
import '../../interface/canvas/TextureMemory.js';
import '../../interface/canvas/memory/ImageSpriteMemory.js';

/**
 * This class is a extension of the {@link ImageSprite} class, it has the same properties and methods,
 * but it has some features that make video management easier.
 * You need to use {@link VideoSprite.load()} to show the video in the canvas.
 * This class is used for functions like {@link addVideo} and {@link showWithDissolve}.
 * @example
 * ```typescript
 * let film = new VideoSprite({
 *     x: 100,
 *     y: 100,
 * }, 'https://pixijs.com/assets/video.mp4')
 * await film.load()
 * canvas.add("film", film)
 * ```
 * @example
 * ```typescript
 * let film = addVideo("film", 'https://pixijs.com/assets/video.mp4')
 * film.currentTime = 2
 * await film.load()
 * ```
 */
declare class VideoSprite extends ImageSprite<VideoSpriteMemory> {
    constructor(options?: VideoSpriteOptions | Texture | undefined, textureAlias?: string);
    pixivnId: string;
    get memory(): VideoSpriteMemory;
    set memory(_value: VideoSpriteMemory);
    setMemory(value: VideoSpriteMemory): Promise<void>;
    static from(source: Texture | TextureSourceLike, skipCache?: boolean): VideoSprite;
    load(): Promise<void>;
    private _looop;
    /**
     * Set to true if you want the video to loop.
     */
    get loop(): boolean;
    set loop(value: boolean);
    private _paused;
    /**
     * Set to true if you want the video to be paused.
     */
    get paused(): boolean;
    set paused(value: boolean);
    /**
     * Pause the video.
     */
    pause(): void;
    /**
     * Play the video.
     */
    play(): void;
    private _currentTime;
    /**
     * The current time of the video.
     */
    get currentTime(): number;
    set currentTime(value: number);
    /**
     * Restart the video.
     */
    restart(): void;
    /**
     * The duration of the video.
     */
    get duration(): number | undefined;
}
declare function setMemoryVideoSprite(element: VideoSprite, memory: VideoSpriteMemory | {}, options?: {
    ignoreTexture?: boolean;
}): Promise<void>;

export { VideoSprite as default, setMemoryVideoSprite };
