import { InjectionKey, Ref } from 'vue'; import { GameEngine, GameManager, GameSimulationView } from '@skewedaspect/sage'; /** * What sage-vue reads of a simulation: its two entity lookups. GameSimulation is invariant in its registry * type parameter, so naming only the members whose signature does not mention the registry is what lets a * simulation built from any registry satisfy this (design/ui.md#reaching-the-engine). */ export type ObservedSimulation = Pick; /** * What sage-vue reads of an engine and nothing more: enough to hear the bus, run timers, look entities up, and * refresh views once a frame. Nothing in it needs Babylon, so a host with no render engine provides one; an engine * typed by any entity registry is one of these (design/ui.md#reaching-the-engine). */ export type ObservedEngine = Pick & { readonly simulation: ObservedSimulation | null; readonly managers: { readonly gameManager: Pick; }; }; export declare const SAGE_ENGINE_KEY: InjectionKey>>;