import type { EntityPosition } from "../scene/entityStore.js"; export type HiddenStateValue = number | string | boolean; export interface HiddenStateSource { id: string; position: EntityPosition; variables: Readonly>; } export interface SensorProbeOptions { range: number; variableId: string; /** How reading `strength` falls off with distance. Default "linear". */ falloff?: "linear" | "none"; } export interface SensorReading { sourceId: string; variableId: string; value: HiddenStateValue; /** 1 at the source, 0 at the edge of `range` ("none" falloff always reads 1 in range). */ strength: number; distance: number; } /** * A sensor verb: probe a hidden zone/entity state variable in range and surface * a reading (EMF reader, spirit box, thermometer, geiger counter). Unlike * `proximityPrompt` (a UI affordance), this reads world state the player has no * other way to see — the strongest in-range reading wins, mirroring how a real * handheld sensor needle settles on the loudest nearby source. * @internal */ export declare function probeHiddenState(origin: EntityPosition, sources: readonly HiddenStateSource[], options: SensorProbeOptions): SensorReading | null; /** All in-range readings for `variableId`, strongest first. * @internal */ export declare function probeHiddenStateAll(origin: EntityPosition, sources: readonly HiddenStateSource[], options: SensorProbeOptions): SensorReading[];