import type { Entity, World } from 'koota';
import type { Snapshot } from './buf/draw/v1/snapshot_pb';
import type { Settings } from './hooks/useSettings.svelte';
import { type SceneMetadata } from './buf/draw/v1/scene_pb';
import type { Relationship } from './metadata';
export type SnapshotEntity = {
    entity: Entity;
    relationships: Relationship[] | undefined;
};
/**
 * Merges scene-level metadata (grid, camera, point/line settings) into the
 * current viewer settings. Millimeter values from the proto are converted
 * to meters.
 */
export declare const applySceneMetadata: (settings: Settings, metadata: SceneMetadata) => Settings;
/**
 * Spawns ECS entities for every transform and drawing in a {@link Snapshot}.
 *
 * Each transform produces one entity with Name, Pose, Parent, Geometry, and
 * optional Color/Opacity traits. Each drawing produces one or more entities
 * depending on the geometry type (arrows, points, line, nurbs, model, or
 * simple shapes like box/sphere/capsule).
 *
 * @returns The spawned entities
 */
export declare const spawnSnapshotEntities: (world: World, snapshot: Snapshot) => SnapshotEntity[];
export interface ReconcileResult {
    current: Map<string, SnapshotEntity>;
    unkeyed: SnapshotEntity[];
    spawned: SnapshotEntity[];
    updated: SnapshotEntity[];
}
export declare const reconcileSnapshotEntities: (world: World, snapshot: Snapshot, prev: Map<string, SnapshotEntity>) => ReconcileResult;
