import type { Node } from "@babylonjs/core/node.js"; import type { SceneDocumentData, SceneAnimationCancellationReason, TransformUpdate } from "@skenora/contracts"; import { AnimationPropertyOwners } from "./animation-property-owners.js"; export interface RuntimeTransformWriteLease { readonly entityId: string; readonly ownerId: string; readonly generation: number; readonly active: boolean; setTransform(update: TransformUpdate): void; release(): void; } export interface RuntimeTransformLeaseOptions { readonly entityId: string; readonly ownerId: string; readonly includeCamera?: boolean; /** Native physics owns raw synchronization; register the entire claimed domain. */ readonly nativeWrites?: boolean; readonly onRevoked?: (reason: SceneAnimationCancellationReason) => void; } interface Ports { owners: AnimationPropertyOwners; resolve(id: string): Node | null; generation(): number; assertWritable(requirePreview: boolean): void; authoring(): boolean; restoreCamera(document: Readonly): void; } /** Uses the same property owners as tracks/clips; only document-local transforms. */ export declare class RuntimeTransformLeases { #private; readonly ports: Ports; constructor(ports: Ports); acquire(options: RuntimeTransformLeaseOptions, requirePreview?: boolean, legacyWrites?: boolean): RuntimeTransformWriteLease; restore(document: Readonly | null): void; clear(): void; } export {}; //# sourceMappingURL=runtime-transform-leases.d.ts.map