import { Texture } from 'three';
import { TypedCopNode } from './_Base';
import { BaseParamType } from '../../params/_Base';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { TextureParamsController } from './utils/TextureParamsController';
import { CopType } from '../../poly/registers/nodes/types/Cop';
import { StringParam } from '../../params/String';
export declare enum VideoMode {
    FROM_URLS = "From Urls",
    FROM_HTML_ELEMENT = "From HTML Element"
}
declare const VideoCopParamsConfig_base: {
    new (...args: any[]): {
        checkFileType: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    };
} & {
    new (...args: any[]): {
        tcolorSpace: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        colorSpace: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        tmapping: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        mapping: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        twrap: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        wrapS: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        wrapT: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        tminFilter: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        minFilter: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        tmagFilter: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        magFilter: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        tanisotropy: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        useRendererMaxAnisotropy: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        anisotropy: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        tflipY: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        flipY: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        ttransform: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        offset: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
        repeat: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
        rotation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
        center: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
        tadvanced: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        tformat: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        format: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        ttype: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        type: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & {
    new (...args: any[]): {
        /** @param mode */
        mode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        /** @param number of video files to fetch */
        urlsCount: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        /** @param url to fetch the video from */
        url1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        /** @param url to fetch the video from */
        url2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        /** @param url to fetch the video from */
        url3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        /** @param selector */
        selector: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        /** @param reload the video */
        reload: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
        /** @param play the video */
        play: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        /** @param set the video muted attribute */
        muted: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        /** @param set the video loop attribute */
        loop: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        /** @param set the video time */
        videoTime: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
        /** @param seek the video at the time specified in videoTime */
        setVideoTime: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    };
} & typeof NodeParamsConfig;
declare class VideoCopParamsConfig extends VideoCopParamsConfig_base {
}
export declare class VideoCopNode extends TypedCopNode<VideoCopParamsConfig> {
    paramsConfig: VideoCopParamsConfig;
    static type(): CopType;
    private _video;
    HTMLVideoElement(): HTMLVideoElement | undefined;
    readonly textureParamsController: TextureParamsController;
    initializeNode(): void;
    dispose(): void;
    private _disposeHTMLVideoElement;
    setMode(mode: VideoMode): void;
    mode(): VideoMode;
    cook(input_contents: Texture[]): Promise<void>;
    private _videoBoundEvents;
    private _addVideoEvents;
    private _removeVideoEvents;
    private _onVideoEvent;
    private _onVideoEventPlay;
    private _onVideoEventPause;
    private _onVideoEventTimeUpdate;
    private _onVideoEventVolumeChange;
    videoStatePlaying(): boolean;
    videoStateMuted(): boolean;
    videoDuration(): number;
    videoCurrentTime(): number;
    static PARAM_CALLBACK_videoUpdateTime(node: VideoCopNode): void;
    private videoUpdateTime;
    private _videoUpdateTime;
    static PARAM_CALLBACK_videoUpdatePlay(node: VideoCopNode): void;
    private videoUpdatePlay;
    private _videoUpdatePlay;
    static PARAM_CALLBACK_videoUpdateMuted(node: VideoCopNode): void;
    private videoUpdateMuted;
    private _videoUpdateMuted;
    static PARAM_CALLBACK_videoUpdateLoop(node: VideoCopNode): void;
    private videoUpdateLoop;
    private _videoUpdateLoop;
    private _videoTextureFromSelector;
    urlParams(): StringParam[];
    private _urlsToLoad;
    static PARAM_CALLBACK_reload(node: VideoCopNode, param: BaseParamType): void;
    private paramCallbackReload;
    private _loadTexture;
}
export {};
