/**
 * Ambient module declaration for `needle-bindings`.
 *
 * `SceneData` is keyed by GLB friendly name, then by the node hierarchy:
 *   ctx.sceneData.Minimal.Camera.$object          // → THREE.Camera
 *   ctx.sceneData.Minimal.Camera.$components.OrbitControls.autoRotate = true;
 *   ctx.sceneData.Minimal.UI.Button.$components.Button
 *
 * Each node entry has:
 *   $object      — the Three.js Object3D (typed precisely, e.g. Mesh, Camera, Light)
 *   $components  — Needle components attached to this node
 *   [childName]  — child nodes, recursively typed
 *
 * When the `needle:dts-generator` Vite plugin is active it writes
 * `.needle/generated/needle-bindings.gen.d.ts` next to the installed package,
 * which augments this interface with the actual bindings extracted from
 * the project's GLB files at build time.
 */

// Pull in the project-local generated augmentation (written by needle:dts-generator).
/// <reference path="../../.needle/generated/needle-bindings.gen.d.ts" />

declare module "needle-bindings" {
    /**
     * Scene data keyed by GLB friendly name, then by node hierarchy.
     * Fallback index signature allows unknown names without crashing.
     */
    // eslint-disable-next-line @typescript-eslint/no-empty-interface
    interface SceneData {}
}
