export interface Sight { friends: Array; friends_beamable: Array; enemies: Array; enemies_beamable: Array; structures: Array; } export declare type Position = [number, number]; export interface Entity { id: string; position: Position; size: number; energy_capacity: number; energy: number; hp: number; sight: Sight; } export interface Structure { id: string; position: Position; structure_type: string; } export interface Base extends Entity, Structure { } export interface Outpost extends Entity, Structure { range: number; control: string; } export interface Energy extends Structure { energy: number; } export declare type EnergyEntity = Spirit | Base | Outpost; export declare type Intractable = EnergyEntity | Energy; export interface Spirit extends Entity { mark: string; last_energized: string; move: (position: Position) => void; energize: (target: Intractable) => void; merge: (target: Spirit) => void; divide: () => void; jump: (position: Position) => void; shout: (message: string) => void; set_mark: (label: string) => void; }