import { ModelMesh } from "../../mesh/ModelMesh";
import { Vector3 } from "@galacean/engine-math";
import { MeshColliderShapeCookingFlag } from "../enums/MeshColliderShapeCookingFlag";
import { ColliderShape } from "./ColliderShape";
/**
 * Collider shape based on mesh geometry, supporting both convex hull and triangle mesh modes.
 */
export declare class MeshColliderShape extends ColliderShape {
    private _mesh;
    private _isConvex;
    private _positions;
    private _indices;
    private _cookingFlags;
    private _isShapeAttached;
    /**
     * `true` if a native shape creation was attempted but failed (mesh data not yet
     * accessible, PhysX cooking transient failure, etc.). The `_onPhysicsUpdate` hook
     * will keep retrying every frame until creation succeeds.
     */
    private _pendingNativeShapeCreation;
    /**
     * Cooking flags for this mesh collider shape.
     */
    get cookingFlags(): MeshColliderShapeCookingFlag;
    set cookingFlags(value: MeshColliderShapeCookingFlag);
    /**
     * Whether to use convex mesh mode.
     * @remarks
     * - When true, generates a convex hull from the mesh vertices. Works with all collider types.
     * - When false, uses the original triangle mesh. Only works with StaticCollider or kinematic DynamicCollider, and the mesh must have indices.
     */
    get isConvex(): boolean;
    set isConvex(value: boolean);
    /**
     * The mesh used for collision detection.
     * @remarks The mesh must have accessible data (not released after upload).
     */
    get mesh(): ModelMesh;
    set mesh(value: ModelMesh);
    /**
     * {@inheritDoc ColliderShape.getClosestPoint}
     */
    getClosestPoint(point: Vector3, outClosestPoint: Vector3): number;
    private _clearMeshData;
    private _destroyNativeShape;
    private _extractMeshData;
    private _updateNativeShapeData;
    private _detachFromCollider;
    private _attachToCollider;
    private _createNativeShape;
}
