/**
 * Creates a PointerLockControls
 *
 * @remarks
 * This allows you to create a First-Person navigation, using the WASD keys.
 *
 */
import { Camera } from 'three';
import { TypedCameraControlsEventNode } from './_BaseCameraControls';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { PointerLockControls } from '../../../modules/core/controls/PointerLockControls';
import { CameraControlsNodeType } from '../../poly/NodeContext';
import { CorePlayer } from '../../../core/player/Player';
import { CollisionController } from './collision/CollisionController';
type PointerLockControlsMap = Map<string, PointerLockControls>;
declare class FirstPersonEventParamsConfig extends NodeParamsConfig {
    main: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param collider object */
    colliderObject: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.NODE_PATH>;
    /** @param click to lock controls */
    lock: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param click to unlock controls */
    unlock: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param collision Capsule Radius */
    capsuleRadius: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param collision Capsule Height */
    capsuleHeight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    physics: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param physics Steps */
    physicsSteps: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param gravity */
    gravity: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
    /** @param translate speed */
    translateSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param rotate speed */
    rotateSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param jump Allowed */
    jumpAllowed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param jump Force */
    jumpStrength: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param run Allowed */
    runAllowed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param run speed mult */
    runSpeedMult: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param recompute colliding geo */
    updateCollider: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    init: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param start Position */
    startPosition: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
    /** @param start Position */
    startRotation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
    /** @param reset */
    reset: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param min rotation angle */
    minPolarAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param max rotation angle */
    maxPolarAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    html: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param specify a custom HTML element */
    customLockCursorElement: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param jump HTML element selector */
    lockCursorElementSelector: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
}
export declare class FirstPersonControlsEventNode extends TypedCameraControlsEventNode<FirstPersonEventParamsConfig> {
    paramsConfig: FirstPersonEventParamsConfig;
    static type(): CameraControlsNodeType;
    endEventName(): string;
    static readonly INPUT_UPDATE_COLLIDER = "updateCollider";
    static readonly INPUT_RESET = "reset";
    private _collisionController;
    collisionController(): CollisionController;
    initializeNode(): void;
    protected _controls_by_element_id: PointerLockControlsMap;
    private _player;
    createControlsInstance(camera: Camera, element: HTMLElement): Promise<PointerLockControls>;
    private _initPlayer;
    private _playerOptions;
    player(): CorePlayer | undefined;
    private _updatePlayerParams;
    private _resetPlayer;
    private _updateCollider;
    protected _bind_listeners_to_controls_instance(controls: PointerLockControls): void;
    updateRequired(): boolean;
    setupControls(controls: PointerLockControls): void;
    disposeControlsForHtmlElementId(htmlElementId: string): void;
    unlockControls(): void;
    private lockControls;
    private _firstControls;
    static PARAM_CALLBACK_lockControls(node: FirstPersonControlsEventNode): void;
    static PARAM_CALLBACK_unlockControls(node: FirstPersonControlsEventNode): void;
    static PARAM_CALLBACK_updateCollider(node: FirstPersonControlsEventNode): void;
    static PARAM_CALLBACK_updatePlayerParams(node: FirstPersonControlsEventNode): void;
    static PARAM_CALLBACK_resetPlayer(node: FirstPersonControlsEventNode): void;
}
export {};
