import type { PickingInfo } from "@babylonjs/core/Collisions/pickingInfo.js"; import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js"; import type { Scene } from "@babylonjs/core/scene.js"; import { type AssetReference, type TransformValue } from "@skenora/contracts"; import type { ResourceResolver } from "@skenora/resources"; export type DropPreviewState = "idle" | "loading" | "ready"; export interface DropPreviewOptions { opacity?: number; onStateChange?: (state: DropPreviewState) => void; } /** Local model placement preview. Committing returns data; it never edits a store. */ export declare class DropPreviewController { #private; readonly scene: Scene; readonly resources: ResourceResolver; constructor(scene: Scene, resources: ResourceResolver, options?: DropPreviewOptions); get state(): DropPreviewState; get asset(): AssetReference | null; show(asset: AssetReference): Promise; pick(x: number, y: number, predicate?: (mesh: AbstractMesh) => boolean): PickingInfo | null; moveFromPointer(x: number, y: number, predicate?: (mesh: AbstractMesh) => boolean): boolean; setPosition(position: { x: number; y: number; z: number; }): void; commit(): { asset: AssetReference; transform: TransformValue; } | null; clear(): void; dispose(): void; } //# sourceMappingURL=drop-preview-controller.d.ts.map