import type RAPIER from '@dimforge/rapier3d-compat'; import type { BodyDescriptor, ConstraintDescriptor, ConstraintUpdates, RoomSnapshot, Vec3, ShapeCastRequest, ShapeProximityRequest, PointProximityRequest } from '@rapierphysicsplugin/shared'; import { PhysicsWorld } from './physics-world/index.js'; import type { ClientConnection } from './client-connection.js'; export declare class Room { readonly id: string; readonly physicsWorld: PhysicsWorld; private simulationLoop; private stateManager; private clients; private inputBuffers; private initialBodies; private initialConstraints; private activeConstraints; private activeBodies; private meshBinaryStore; private geometryStore; private meshRefStore; private geometryRefCount; private materialStore; private textureStore; private materialRefCount; /** Maps bodyId → owning clientId for bodies with `ownerId` set. */ private bodyOwner; /** Maps clientId → set of bodyIds owned by that client. */ private clientBodies; private currentTick; private ticksSinceLastBroadcast; private pendingCollisionEvents; constructor(id: string, rapier: typeof RAPIER, gravity?: Vec3); loadInitialState(bodies: BodyDescriptor[], constraints?: ConstraintDescriptor[]): void; addClient(conn: ClientConnection): void; removeClient(conn: ClientConnection): void; addBody(descriptor: BodyDescriptor): string; removeBody(bodyId: string): void; /** Returns the client ID that owns this body, or `undefined` if unowned. */ getBodyOwner(bodyId: string): string | undefined; /** Returns the set of body IDs owned by the given client. */ getClientBodies(clientId: string): ReadonlySet; addConstraint(descriptor: ConstraintDescriptor): string; removeConstraint(constraintId: string): void; updateConstraint(constraintId: string, updates: ConstraintUpdates): void; relayMeshBinary(senderId: string, data: Uint8Array): void; relayTextureDef(senderId: string, data: Uint8Array): void; relayMaterialDef(senderId: string, data: Uint8Array): void; relayGeometryDef(senderId: string, data: Uint8Array): void; relayMeshRef(senderId: string, data: Uint8Array): void; bufferInput(clientId: string, input: import('@rapierphysicsplugin/shared').ClientInput): void; tick(): void; private broadcastState; private broadcast; handleShapeCastQuery(conn: ClientConnection, request: ShapeCastRequest): void; handleShapeProximityQuery(conn: ClientConnection, request: ShapeProximityRequest): void; handlePointProximityQuery(conn: ClientConnection, request: PointProximityRequest): void; getSnapshot(): RoomSnapshot; startSimulation(): void; get isSimulationRunning(): boolean; get clientCount(): number; get tickNumber(): number; destroy(): void; } //# sourceMappingURL=room.d.ts.map