import type { Shape } from "../../../../box2d.ts/build/index";
import { Component } from "../../../hierarchy_object/Component";
import type { ReadonlyVector2 } from "../../../math/ReadonlyVector2";
import { ContactPoint2D } from "../../../physics/2d/ContactPoint2D";
import { PhysicsMaterial2D } from "../../../physics/2d/PhysicsMaterial2D";
import type { CollisionLayer, CollisionLayerParm } from "../../../physics/CollisionLayer";
/**
 * collider2d base component
 *
 * you can't create collider2d component directly. use drived class. e.g. BoxCollider2D
 */
export declare class Collider2D extends Component {
    private _fixtureGroup;
    private _density;
    private _material;
    private _isTrigger;
    private readonly _offset;
    private _collisionLayer;
    onEnable(): void;
    onDisable(): void;
    onDestroy(): void;
    private createFixture;
    private destroyFixture;
    protected updateFixture(): void;
    private static readonly _filterBuffer;
    protected createShapes(): Shape[];
    /**
     * The density of the collider used to calculate its mass (when auto mass is enabled). (default: 1)
     */
    get density(): number;
    /**
     * The density of the collider used to calculate its mass (when auto mass is enabled). (default: 1)
     */
    set density(value: number);
    /**
     * The PhysicsMaterial2D that is applied to this collider. (default: null)
     */
    get material(): PhysicsMaterial2D | null;
    /**
     * The PhysicsMaterial2D that is applied to this collider. (default: null)
     */
    set material(value: PhysicsMaterial2D | null);
    /**
     * Is this collider configured as a trigger? (default: false)
     */
    get isTrigger(): boolean;
    /**
     * Is this collider configured as a trigger? (default: false)
     */
    set isTrigger(value: boolean);
    /**
     * The local offset of the collider geometry. (default: (0, 0))
     */
    get offset(): ReadonlyVector2;
    /**
     * The local offset of the collider geometry. (default: (0, 0))
     */
    set offset(value: ReadonlyVector2);
    /**
     * get collision layer of this collider as string.
     * @returns layer name
     */
    getLayerToName<T extends CollisionLayer>(): CollisionLayerParm<T> | null;
    /**
     * set collision layer of this collider from string.
     * @param value layer name
     */
    setLayerFromName<T extends CollisionLayer>(value: CollisionLayerParm<T> | null): void;
    /**
     * collision layer of this collider. (default: null)
     */
    get layer(): number | null;
    /**
     * collision layer of this collider. (default: null)
     */
    set layer(value: number | null);
    /**
     * get collision layer as string. if collider collision layer is not set, it will return the rigidbody collision layer.
     * @returns layer name
     */
    getThisOrRigidBodyLayerToName<T extends CollisionLayer>(): CollisionLayerParm<T>;
    /**
     * get collision layer. if collider collision layer is not set, it will return the rigidbody collision layer.
     * @returns layer
     */
    getThisOrRigidBodyLayer(): number;
    private readonly _worldManifold;
    /**
     * Retrieves all contact points for this Collider.
     * @param out The array to store the contact points in.
     * @returns The number of contact points retrieved.
     */
    getContacts(out: ContactPoint2D[]): number;
}
