import type { _SCNPhysicsBehavior } from "./SCNPhysicsBehavior.js";
import type { _SCNPhysicsBody } from "./SCNPhysicsBody.js";
import type { SCNVector3 } from "../structs/SCNVector3.js";
export declare class _SCNPhysicsBallSocketJoint extends _SCNPhysicsBehavior {
    static alloc(): _SCNPhysicsBallSocketJoint;
    static new(): _SCNPhysicsBallSocketJoint;
    init(): _SCNPhysicsBallSocketJoint;
    /**
     * Initializes and returns a physics ball-and-socket joint. The joint attaches bodyA and bodyB on anchorA and anchorB respectively.
     */
    static jointWithBodyA$anchorA$bodyB$anchorB$(bodyA: _SCNPhysicsBody, anchorA: SCNVector3, bodyB: _SCNPhysicsBody, anchorB: SCNVector3): _SCNPhysicsBallSocketJoint;
    /**
     * Initializes and returns a physics ball-and-socket joint. The joint attaches "body" to the 3d location specified by "anchor" and relative to the node that owns the body.
     */
    static jointWithBody$anchor$(body: _SCNPhysicsBody, anchor: SCNVector3): _SCNPhysicsBallSocketJoint;
    /** the first body attached to the ball-and-socket joint */
    bodyA(): _SCNPhysicsBody;
    /** the attach point of bodyA */
    anchorA(): SCNVector3;
    setAnchorA$(value: SCNVector3): void;
    /** the second body attached to the ball-and-socket joint */
    bodyB(): _SCNPhysicsBody | null;
    /** the attach point of bodyB */
    anchorB(): SCNVector3;
    setAnchorB$(value: SCNVector3): void;
}
