/**
 * PhysicsObject3D Component
 *
 * Three.js component that syncs a 3D object's position with physics state.
 * Use this to render physics-enabled entities in GameCanvas3D.
 *
 * @example
 * ```tsx
 * <PhysicsObject3D
 *   entityId="player-1"
 *   modelUrl="https://trait-wars-assets.web.app/3d/medieval/props/barrels.glb"
 *   initialPosition={[0, 10, 0]}
 *   mass={1}
 * />
 * ```
 *
 * @packageDocumentation
 */
import React from 'react';
export interface Physics3DState {
    id: string;
    x: number;
    y: number;
    z: number;
    vx: number;
    vy: number;
    vz: number;
    rx: number;
    ry: number;
    rz: number;
    isGrounded: boolean;
    gravity: number;
    friction: number;
    mass: number;
    state: 'Active' | 'Frozen';
}
export interface PhysicsObject3DProps {
    /** Unique entity ID */
    entityId: string;
    /** GLB model URL */
    modelUrl: string;
    /** Initial position [x, y, z] */
    initialPosition?: [number, number, number];
    /** Initial velocity [vx, vy, vz] */
    initialVelocity?: [number, number, number];
    /** Mass for collision response */
    mass?: number;
    /** Gravity force (default: 9.8) */
    gravity?: number;
    /** Ground plane Y position (default: 0) */
    groundY?: number;
    /** Model scale */
    scale?: number | [number, number, number];
    /** Called when physics state updates */
    onPhysicsUpdate?: (state: Physics3DState) => void;
    /** Called when object hits ground */
    onGroundHit?: () => void;
    /** Called when collision occurs */
    onCollision?: (otherEntityId: string) => void;
}
/**
 * 3D Physics-enabled object for GameCanvas3D
 */
export declare function PhysicsObject3D({ entityId, modelUrl, initialPosition, initialVelocity, mass, gravity, groundY, scale, onPhysicsUpdate, onGroundHit, onCollision, }: PhysicsObject3DProps): React.JSX.Element;
/**
 * Hook for controlling a PhysicsObject3D from parent component
 */
export declare function usePhysics3DController(entityId: string): {
    applyForce: (fx: number, fy: number, fz: number) => void;
    setVelocity: (vx: number, vy: number, vz: number) => void;
    setPosition: (x: number, y: number, z: number) => void;
    jump: (force?: number) => void;
};
export default PhysicsObject3D;
