import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _SCNPhysicsBehavior } from "./SCNPhysicsBehavior.js";
import type { _SCNPhysicsBody } from "./SCNPhysicsBody.js";
import type { _SCNPhysicsContactDelegate } from "./SCNPhysicsContactDelegate.js";
import type { _SCNPhysicsShape } from "./SCNPhysicsShape.js";
import type { CATransform3D } from "../structs/CATransform3D.js";
import type { SCNVector3 } from "../structs/SCNVector3.js";
export declare class _SCNPhysicsWorld extends _NSObject {
    static alloc(): _SCNPhysicsWorld;
    static new(): _SCNPhysicsWorld;
    init(): _SCNPhysicsWorld;
    /** Behaviors management */
    addBehavior$(behavior: _SCNPhysicsBehavior): void;
    removeBehavior$(behavior: _SCNPhysicsBehavior): void;
    removeAllBehaviors(): void;
    /** Performs a ray test on the physics bodies and their physics shapes. */
    rayTestWithSegmentFromPoint$toPoint$options$(origin: SCNVector3, dest: SCNVector3, options: _NSDictionary | null): _NSArray;
    /** The methods below perform contact tests. */
    contactTestBetweenBody$andBody$options$(bodyA: _SCNPhysicsBody, bodyB: _SCNPhysicsBody, options: _NSDictionary | null): _NSArray;
    contactTestWithBody$options$(body: _SCNPhysicsBody, options: _NSDictionary | null): _NSArray;
    convexSweepTestWithShape$fromTransform$toTransform$options$(shape: _SCNPhysicsShape, from: CATransform3D, to: CATransform3D, options: _NSDictionary | null): _NSArray;
    /**
     * Force the physics engine to re-evaluate collisions. This needs to be called if kinematic are moved and the contacts are wanted before the next simulation step.
     */
    updateCollisionPairs(): void;
    /**
     * A global 3D vector specifying the field force acceleration due to gravity. The unit is meter per second. Default is {0, -9.8, 0}.
     */
    gravity(): SCNVector3;
    setGravity$(value: SCNVector3): void;
    /**
     * A speed multiplier applied to the physics simulation. Default is 1.0. The speed can be reduced to slowdown the simulation, but beware that increasing the speed factor will decrease the accuracy of the simulation.
     */
    speed(): number;
    setSpeed$(value: number): void;
    /** The time step of the physics simulation. Default is 1/60s (60 Hz). */
    timeStep(): number;
    setTimeStep$(value: number): void;
    /**
     * A delegate that is called when two physic bodies come in contact with each other. On iOS 11 or lower the property is unsafe_unretained and it's the responsibility of the client to set it to nil before deallocating the delegate. Starting in iOS12, the property is weak
     */
    contactDelegate(): _SCNPhysicsContactDelegate | null;
    setContactDelegate$(value: _SCNPhysicsContactDelegate | null): void;
    allBehaviors(): _NSArray;
}
export interface _SCNPhysicsWorld extends _NSSecureCoding {
}
