/**
 * @author       Yannick Deubel (https://github.com/yandeu)
 * @copyright    Copyright (c) 2020 Yannick Deubel; Project Url: https://github.com/enable3d/enable3d
 * @license      {@link https://github.com/enable3d/enable3d/blob/master/LICENSE|LGPL-3.0}
 */
import PhysicsBody from '@enable3d/common/dist/physicsBody.js';
import { XYZ } from '@enable3d/common/dist/types.js';
export default class Constraints {
    worldTransform: Ammo.btTransform;
    physicsWorld: Ammo.btDiscreteDynamicsWorld;
    tmpBtVector3: Ammo.btVector3;
    constructor(worldTransform: Ammo.btTransform, physicsWorld: Ammo.btDiscreteDynamicsWorld);
    private toAmmoV3;
    get addConstraints(): {
        lock: (bodyA: PhysicsBody, bodyB: PhysicsBody, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btGeneric6DofConstraint;
        fixed: (bodyA: PhysicsBody, bodyB: PhysicsBody, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btFixedConstraint;
        pointToPoint: (bodyA: PhysicsBody, bodyB: PhysicsBody, config: {
            pivotA?: XYZ;
            pivotB?: XYZ;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btPoint2PointConstraint;
        hinge: (bodyA: PhysicsBody, bodyB: PhysicsBody, config: {
            pivotA?: XYZ;
            pivotB?: XYZ;
            axisA?: XYZ;
            axisB?: XYZ;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btHingeConstraint;
        slider: (bodyA: PhysicsBody, bodyB: PhysicsBody, config?: {
            frameA?: XYZ;
            frameB?: XYZ;
            linearLowerLimit?: number;
            linearUpperLimit?: number;
            angularLowerLimit?: number;
            angularUpperLimit?: number;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btSliderConstraint;
        spring: (bodyA: PhysicsBody, bodyB: PhysicsBody, config?: {
            stiffness?: number;
            damping?: number;
            angularLock?: boolean;
            linearLowerLimit?: XYZ;
            linearUpperLimit?: XYZ;
            angularLowerLimit?: XYZ;
            angularUpperLimit?: XYZ;
            center?: boolean;
            offset?: XYZ;
            enableSpring?: boolean;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btGeneric6DofSpringConstraint;
        coneTwist: (bodyA: PhysicsBody, bodyB: PhysicsBody, config?: {
            frameA: XYZ;
            frameB: XYZ;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btConeTwistConstraint;
        dof: (bodyA: PhysicsBody, bodyB: PhysicsBody, config?: {
            linearLowerLimit?: XYZ;
            linearUpperLimit?: XYZ;
            angularLowerLimit?: XYZ;
            angularUpperLimit?: XYZ;
            center?: boolean;
            offset?: XYZ;
        }, disableCollisionsBetweenLinkedBodies?: boolean) => Ammo.btGeneric6DofConstraint;
    };
    private getTransform;
    private lock;
    private fixed;
    private pointToPoint;
    private hinge;
    private slider;
    private spring;
    private coneTwist;
    private dof;
}
//# sourceMappingURL=constraints.d.ts.map