/**
 * Sentinel for {@link Collider#_bvhNode} prior to insertion. Matches the BVH's
 * own NULL_NODE convention without taking a direct import dependency on it.
 *
 * @type {number}
 */
export const COLLIDER_UNBOUND: number;
/**
 * Collider component.
 *
 * Pairs a shared, immutable {@link AbstractShape3D} with a body-specific surface
 * material. World pose comes from the entity's own {@link Transform}; for compound
 * bodies the child collider entities are linked to the body via the existing
 * `ParentEntity` component.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class Collider {
    /**
     * Surface geometry. Shared between colliders; never mutated.
     * @type {AbstractShape3D}
     */
    shape: AbstractShape3D;
    /**
     * Coulomb friction coefficient. Combined with the other side's friction via
     * the system-wide combine rule (default: geometric mean).
     * @type {number}
     */
    friction: number;
    /**
     * Coefficient of restitution. 0 = perfectly inelastic, 1 = perfectly elastic.
     * Combined via the system-wide combine rule.
     * @type {number}
     */
    restitution: number;
    /**
     * Mass-per-unit-volume. Used by inertia-tensor helpers if the user opts in
     * to automatic mass computation; otherwise informational.
     * @type {number}
     */
    density: number;
    /**
     * @type {ColliderFlags|number}
     */
    flags: ColliderFlags | number;
    /**
     * BVH node identifier assigned by {@link PhysicsSystem#link}. System-private.
     * @type {number}
     */
    _bvhNode: number;
    /**
     * Packed body id of the owning body, copied from the parent's
     * {@link RigidBody#_bodyId} at link time. System-private.
     * @type {number}
     */
    _bodyId: number;
    /**
     *
     * @param {number|ColliderFlags} flag
     */
    setFlag(flag: number | ColliderFlags): void;
    /**
     *
     * @param {number|ColliderFlags} flag
     */
    clearFlag(flag: number | ColliderFlags): void;
    /**
     *
     * @param {number|ColliderFlags} flag
     * @returns {boolean}
     */
    getFlag(flag: number | ColliderFlags): boolean;
    /**
     *
     * @param {number|ColliderFlags} flag
     * @param {boolean} value
     */
    writeFlag(flag: number | ColliderFlags, value: boolean): void;
    toJSON(): {
        friction: number;
        restitution: number;
        density: number;
        flags: number;
    };
    fromJSON(json: any): void;
    /**
     * Value equality over the shape and the surface material. System-private
     * fields (`_bvhNode`, `_bodyId`) are excluded. Shapes are compared by value
     * (`shape.equals`), so two colliders sharing one shape instance or holding
     * equal shapes both compare equal.
     *
     * @param {Collider} other
     * @returns {boolean}
     */
    equals(other: Collider): boolean;
    /**
     * Hash over the same state as {@link equals}. Equal colliders hash equal.
     * @returns {number}
     */
    hash(): number;
    /**
     * @readonly
     * @type {boolean}
     */
    readonly isCollider: boolean;
}
export namespace Collider {
    let typeName: string;
}
import { AbstractShape3D } from "../../../core/geom/3d/shape/AbstractShape3D.js";
import { ColliderFlags } from "./ColliderFlags.js";
//# sourceMappingURL=Collider.d.ts.map