import type { Vector2 } from "three/src/Three";
import type { ReadonlyVector2 } from "../../math/ReadonlyVector2";
import type { CollisionLayerMaskConverter } from "../CollisionLayerMaskConverter";
import type { ContactFilter2D } from "./ContactFilter2D";
import type { PhysicsMaterial2D } from "./PhysicsMaterial2D";
import type { RaycastHit2D } from "./RaycastHit2D";
export interface IPhysics2D {
    get gravity(): Vector2;
    set gravity(value: Vector2);
    get defaultMaterial(): PhysicsMaterial2D | null;
    get velocityIterations(): number;
    set velocityIterations(value: number);
    get positionIterations(): number;
    set positionIterations(value: number);
    get maxLinearCorrection(): number;
    get maxAngularCorrection(): number;
    get maxTranslationSpeed(): number;
    get maxRotationSpeed(): number;
    get baumgarteScale(): number;
    get baumgarteTimeOfImpactScale(): number;
    get timeToSleep(): number;
    get linearSleepTolerance(): number;
    get angularSleepTolerance(): number;
    get queriesHitTriggers(): boolean;
    set queriesHitTriggers(value: boolean);
    get reuseCollisionCallbacks(): boolean;
    set reuseCollisionCallbacks(value: boolean);
    get collisionLayerMask(): CollisionLayerMaskConverter;
    raycastOne(origin: ReadonlyVector2, direction: ReadonlyVector2, out?: RaycastHit2D, distance?: number, layerMask?: number, minDepth?: number, maxDepth?: number): RaycastHit2D | null;
    raycast(origin: ReadonlyVector2, direction: ReadonlyVector2, contactFilter: ContactFilter2D, results: RaycastHit2D[], distance?: number): number;
}
