import type { _SCNPhysicsBehavior } from "./SCNPhysicsBehavior.js";
import type { _SCNPhysicsBody } from "./SCNPhysicsBody.js";
import type { SCNVector3 } from "../structs/SCNVector3.js";
export declare class _SCNPhysicsHingeJoint extends _SCNPhysicsBehavior {
    static alloc(): _SCNPhysicsHingeJoint;
    static new(): _SCNPhysicsHingeJoint;
    init(): _SCNPhysicsHingeJoint;
    /**
     * Initializes and returns a physics hinge joint. The hinge attaches bodyA and bodyB on anchorA and anchorB respectively. "axisA" and "axisB" specify the axis of rotation for bodyA and bodyB.
     */
    static jointWithBodyA$axisA$anchorA$bodyB$axisB$anchorB$(bodyA: _SCNPhysicsBody, axisA: SCNVector3, anchorA: SCNVector3, bodyB: _SCNPhysicsBody, axisB: SCNVector3, anchorB: SCNVector3): _SCNPhysicsHingeJoint;
    /**
     * Initializes and returns a physics hinge joint. The hinge attaches body to a specific location in 3d space specified by "anchor" and relative to the node that owns the body. "axis" specifies the axis of rotation for "body".
     */
    static jointWithBody$axis$anchor$(body: _SCNPhysicsBody, axis: SCNVector3, anchor: SCNVector3): _SCNPhysicsHingeJoint;
    /** the first body constrained by the hinge */
    bodyA(): _SCNPhysicsBody;
    /** the axis of rotation of bodyA */
    axisA(): SCNVector3;
    setAxisA$(value: SCNVector3): void;
    /** the anchor point on which bodyA is attached */
    anchorA(): SCNVector3;
    setAnchorA$(value: SCNVector3): void;
    /** the second body attached to the hinge. */
    bodyB(): _SCNPhysicsBody | null;
    /** the axis of rotation of bodyB */
    axisB(): SCNVector3;
    setAxisB$(value: SCNVector3): void;
    /** the anchor point on which bodyB is attached */
    anchorB(): SCNVector3;
    setAnchorB$(value: SCNVector3): void;
}
