/**
 * CollisionEditor — Shape-based collision mask editor for GameAsset2dEditor
 *
 * Features:
 * - Multiple collision shape types: box, circle, polygon, capsule
 * - Visual editing with drag handles
 * - Collision layer assignment
 * - Per-frame collision shapes for animations
 * - Collision body types: static, dynamic, kinematic
 * - Physics material properties
 */
export type CollisionShapeType = 'box' | 'circle' | 'polygon' | 'capsule' | 'edge';
export type CollisionBodyType = 'static' | 'dynamic' | 'kinematic' | 'trigger';
export interface CollisionShape {
    id: string;
    /** Display name */
    name?: string;
    type: CollisionShapeType;
    enabled: boolean;
    x: number;
    y: number;
    width: number;
    height: number;
    rotation: number;
    radius?: number;
    vertices?: {
        x: number;
        y: number;
    }[];
    capsuleDirection?: 'horizontal' | 'vertical';
    layer: number;
    mask: number[];
    isTrigger: boolean;
    /** Frame index for animation (optional) */
    frameIndex?: number;
}
export interface CollisionBody {
    id: string;
    name: string;
    bodyType: CollisionBodyType;
    shapes: CollisionShape[];
    density: number;
    friction: number;
    restitution: number;
    linearDamping: number;
    angularDamping: number;
    fixedRotation: boolean;
    gravityScale: number;
}
export interface CollisionEditorProps {
    /** Collision body being edited */
    body: CollisionBody | null;
    /** Preview image (sprite/tile) */
    previewImage: HTMLCanvasElement | HTMLImageElement | null;
    /** Called when body changes */
    onChange: (body: CollisionBody) => void;
    /** Width of the preview area */
    width?: number;
    /** Height of the preview area */
    height?: number;
    /** Grid size for snapping */
    gridSize?: number;
    className?: string;
}
export declare function createDefaultShape(type: CollisionShapeType): CollisionShape;
export declare function createDefaultBody(): CollisionBody;
export declare const COLLISION_LAYERS: readonly [{
    readonly id: 0;
    readonly name: "Default";
    readonly color: "#4a9fff";
}, {
    readonly id: 1;
    readonly name: "Player";
    readonly color: "#4ade80";
}, {
    readonly id: 2;
    readonly name: "Enemy";
    readonly color: "#ef4444";
}, {
    readonly id: 3;
    readonly name: "Ground";
    readonly color: "#a16207";
}, {
    readonly id: 4;
    readonly name: "Platform";
    readonly color: "#8b5cf6";
}, {
    readonly id: 5;
    readonly name: "Projectile";
    readonly color: "#f59e0b";
}, {
    readonly id: 6;
    readonly name: "Pickup";
    readonly color: "#22d3d8";
}, {
    readonly id: 7;
    readonly name: "Trigger";
    readonly color: "#ec4899";
}];
export declare function CollisionEditor({ body, previewImage, onChange, width, height, gridSize, className, }: CollisionEditorProps): import("react/jsx-runtime").JSX.Element;
export default CollisionEditor;
