export type MovementPose = "standing" | "crouch" | "prone" | "running"; export type AimMode = "hip" | "ads"; export interface PoseHitbox { height: number; eyeHeight: number; speedMultiplier: number; } export declare const POSE_HITBOX: Record; export interface PoseAllowedStates { poses?: readonly MovementPose[]; aim?: readonly AimMode[]; } export interface PoseRejection { reason: string; } export interface PoseSnapshot { poses: Record; aims: Record; } export interface PoseState { getPose(instanceId: string): MovementPose; setPose(instanceId: string, pose: MovementPose): PoseRejection | null; getAim(instanceId: string): AimMode; setAim(instanceId: string, mode: AimMode): PoseRejection | null; clear(instanceId: string): void; /** Snapshot every entity's pose and aim for a whole-world save. */ snapshotAll(): PoseSnapshot; /** Restore every entity's pose and aim from a {@link snapshotAll} payload. */ hydrateAll(state: PoseSnapshot): void; } /** Restore one owned pose on synchronous failure; external implementations retain their semantic setter policy. @internal */ export declare function withPoseRollback(state: PoseState, instanceId: string, operation: () => T): T; /** * Stance/pose transitions — stand, crouch, prone — that change the hitbox and movement. * * @capability crouch-prone stance/pose transitions that change the hitbox */ export declare function createPoseState(resolveAllowed: (instanceId: string) => PoseAllowedStates | null | undefined): PoseState;