/** * PhysicsPlausibilityContract.ts * * Five-category physics plausibility checker for AI-generated motion clips. * Used as the core contract in Paper-9 "Verifiable Motion" benchmark suite. * * Categories: * 1. locomotion — foot-sliding / ZMP (zero moment point) checks * 2. gesture — joint-limit burst detection * 3. interaction — bone penetration / proximity checks * 4. acrobatics — impulse-limit enforcement * 5. micro-gesture — jitter threshold / sub-limit noise checks * * @module animation/paper */ export type MotionCategory = 'locomotion' | 'gesture' | 'interaction' | 'acrobatics' | 'micro-gesture'; /** A single bone pose in one frame, using plain arrays for determinism. */ export interface MotionBonePose { boneId: string; /** World-space position [x, y, z] — units: metres */ position: readonly [number, number, number]; /** Unit quaternion [x, y, z, w] */ rotation: readonly [number, number, number, number]; } /** One motion clip to validate. */ export interface MotionClip { id: string; category: MotionCategory; /** Ordered list of frames; each frame is a list of bone poses. */ frames: MotionBonePose[][]; /** Time-step between frames (seconds). */ dt: number; } /** Result returned by `checkPlausibility`. */ export interface PlausibilityResult { pass: boolean; category: MotionCategory; clipId: string; violatedConstraint?: string; frameIndex?: number; boneId?: string; } /** Check a motion clip against the physics plausibility contract. */ export declare function checkPlausibility(clip: MotionClip): PlausibilityResult; /** * Batch-check an array of clips and return aggregate statistics. * Returns pass count, fail count, and per-violation breakdowns. */ export interface PlausibilityBatchResult { total: number; passed: number; failed: number; passRate: number; violations: Record; checkTimeMs: number; } export declare function batchCheckPlausibility(clips: MotionClip[]): PlausibilityBatchResult; /** Export constants for use in benchmark harness. */ export declare const CONTRACT_CONSTANTS: { readonly FOOT_FLOOR_THRESHOLD: -0.05; readonly ZMP_HALF_SUPPORT: 0.35; readonly JOINT_ANGLE_LIMIT_RAD: 2.094; readonly COLLISION_RADIUS: 0.1; readonly MAX_IMPULSE_MPS: 5; readonly MICRO_MAX_METRES: 0.05; readonly MICRO_MIN_METRES: 0.0001; }; //# sourceMappingURL=PhysicsPlausibilityContract.d.ts.map