/**
 * Imports a video from your webcam
 *
 */
import { Constructor } from '../../../types/GlobalTypes';
import { TypedCopNode } from './_Base';
import { Texture } from 'three';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { TextureParamsController } from './utils/TextureParamsController';
import { CopType } from '../../poly/registers/nodes/types/Cop';
declare enum WebCamFacingMode {
    USER = "user",
    ENVIRONMENT = "environment"
}
export declare function WebCamCopParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param texture resolution */
        res: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
        /** @param facingMode (on a mobile device, 'user' is the front camera, 'environment' is the back one ) */
        facingMode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & TBase;
declare const WebCamCopParamsConfig_base: {
    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>; /**
         * we currently need to check if the resulting video
         * has the expected dimensions, as there are situations
         * on mobile where it does not.
         * When that is the case, we try again to get the stream
         * with swapped dimensions.
         */
        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 texture resolution */
        res: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
        /** @param facingMode (on a mobile device, 'user' is the front camera, 'environment' is the back one ) */
        facingMode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
declare class WebCamCopParamsConfig extends WebCamCopParamsConfig_base {
}
export declare class WebCamCopNode extends TypedCopNode<WebCamCopParamsConfig> {
    paramsConfig: WebCamCopParamsConfig;
    static type(): CopType;
    private _video;
    HTMLVideoElement(): HTMLVideoElement | undefined;
    readonly textureParamsController: TextureParamsController;
    initializeNode(): void;
    dispose(): void;
    setFacingMode(facingMode: WebCamFacingMode): void;
    private _stream;
    private _cancelWebcamRequest;
    private _createHTMLVideoElement;
    cook(inputContents: Texture[]): Promise<void>;
    private _streamToTexture;
}
export {};
