import { GlobalBrain } from './global-brain.js'; import { BrainReplay } from './brain-replay.js'; export type LayoutKind = 'force-directed' | 'sphere' | 'helix' | 'galaxy'; export interface SceneNode { id: string; label: string; group: string; position: [number, number, number]; size: number; color: string; importance: number; metadata: Record; } export interface SceneEdge { source: string; target: string; weight: number; kind: 'similarity' | 'causal' | 'temporal' | 'agent-handoff'; } export interface CameraSpec { position: [number, number, number]; lookAt: [number, number, number]; fov: number; near: number; far: number; } export interface LightSpec { type: 'ambient' | 'directional' | 'point'; color: string; intensity: number; position?: [number, number, number]; } export interface ThemeSpec { background: string; backgroundGradient: [string, string]; primary: string; secondary: string; accent: string; edgeColor: string; } export interface SceneData { version: '1.0'; generatedAt: string; layout: LayoutKind; nodes: SceneNode[]; edges: SceneEdge[]; camera: CameraSpec; lights: LightSpec[]; theme: ThemeSpec; meta: { project: string; nodeCount: number; edgeCount: number; empty: boolean; }; } export declare class Brain3d { private brain; private replay; constructor(brain?: GlobalBrain, replay?: BrainReplay); /** Build a scene-data object ready for any Three.js renderer. */ exportScene(project: string, opts?: { layout?: LayoutKind; nodeLimit?: number; }): Promise; /** Self-contained HTML viewer — open in any browser and the brain rotates. */ htmlViewer(scene: SceneData): string; /** Minimal glTF JSON. Embeds node positions inline; no binary buffers. */ glTfExport(scene: SceneData): string; private emptyScene; private safeInit; private resolveProjectId; private buildNodes; private buildEdges; private applyLayout; } export declare function getBrain3d(): Brain3d; export declare function resetBrain3dForTests(): void; //# sourceMappingURL=brain-3d.d.ts.map