import type { IMinimalMotionControllerObject, MotionControllerHandedness } from "./webXRAbstractMotionController";
import { WebXRAbstractMotionController } from "./webXRAbstractMotionController";
import type { AbstractMesh } from "../../Meshes/abstractMesh";
import type { Scene } from "../../scene";
/**
 * The motion controller class for oculus touch (quest, rift).
 * This class supports legacy mapping as well the standard xr mapping
 */
export declare class WebXROculusTouchMotionController extends WebXRAbstractMotionController {
    private _forceLegacyControllers;
    private _modelRootNode;
    /**
     * The base url used to load the left and right controller models
     */
    static MODEL_BASE_URL: string;
    /**
     * The name of the left controller model file
     */
    static MODEL_LEFT_FILENAME: string;
    /**
     * The name of the right controller model file
     */
    static MODEL_RIGHT_FILENAME: string;
    /**
     * Base Url for the Quest controller model.
     */
    static QUEST_MODEL_BASE_URL: string;
    profileId: string;
    constructor(scene: Scene, gamepadObject: IMinimalMotionControllerObject, handedness: MotionControllerHandedness, _legacyMapping?: boolean, _forceLegacyControllers?: boolean);
    protected _getFilenameAndPath(): {
        filename: string;
        path: string;
    };
    protected _getModelLoadingConstraints(): boolean;
    protected _processLoadedModel(_meshes: AbstractMesh[]): void;
    protected _setRootMesh(meshes: AbstractMesh[]): void;
    protected _updateModel(): void;
    /**
     * Is this the new type of oculus touch. At the moment both have the same profile and it is impossible to differentiate
     * between the touch and touch 2.
     * @returns true if this is the new type of oculus touch controllers.
     */
    private _isQuest;
}
