import { type Vector3Value, type QuaternionValue, type JsonValue } from "@skenora/contracts"; import type { RuntimePlugin } from "../core/runtime-session.js"; import type { HavokPhysicsWorld, PhysicsCollision } from "./physics-world.js"; export declare const RUNTIME_PHYSICS_CAPABILITY = "runtime.physics"; export interface RuntimePhysicsCapability { getState(recordId: string): JsonValue | null; setVelocity(bodyId: string, velocity: Vector3Value): void; setAngularVelocity(bodyId: string, velocity: Vector3Value): void; applyImpulse(bodyId: string, impulse: Vector3Value, point?: Vector3Value): void; applyForce(bodyId: string, force: Vector3Value, point?: Vector3Value): void; setTarget(bodyId: string, position: Vector3Value, rotation?: QuaternionValue): void; teleport(bodyId: string, position: Vector3Value, rotation?: QuaternionValue): void; setCharacterVelocity(characterId: string, velocity: Vector3Value): void; teleportCharacter(characterId: string, position: Vector3Value): void; raycast(worldId: string, from: Vector3Value, to: Vector3Value): ReturnType; subscribe(worldId: string, listener: (event: PhysicsCollision) => void): () => void; } declare module "../core/runtime-capability-registry" { interface RuntimeCapabilityMap { [RUNTIME_PHYSICS_CAPABILITY]: RuntimePhysicsCapability; } } declare module "../core/runtime-events" { interface RuntimeEventMap { "runtime.physics.collision": PhysicsCollision; } } export interface HavokPhysicsPluginOptions { /** Trusted, initialized module, or host factory. The library never fetches WASM. */ readonly havok: unknown | ((signal: AbortSignal) => unknown | Promise); readonly maxBodies?: number; readonly maxCharacters?: number; readonly maxEventsPerStep?: number; } /** Optional adapter. Only authored services initialize native physics; no second scene or clock. */ export declare function createHavokPhysicsPlugin(options: HavokPhysicsPluginOptions): RuntimePlugin; //# sourceMappingURL=physics-plugin.d.ts.map