import type { EntityMovement, SceneEntity } from "./entityStore.js"; export interface FormDef { id: string; movement?: EntityMovement; abilities?: readonly string[]; model?: string; } export interface FormChangedEvent { instanceId: string; formId: string | null; } export interface FormEntities { get(id: string): SceneEntity | null; update(id: string, patch: { movement?: EntityMovement; name?: string; }): boolean; } export interface FormTime { after(seconds: number, callback: () => void): () => void; } export interface FormEvents { emit(name: "form.changed", payload: FormChangedEvent): void; } export interface FormsDeps { entities: FormEntities; time: FormTime; events?: FormEvents; } export interface Forms { register(defs: readonly FormDef[]): void; get(formId: string): FormDef | null; abilities(instanceId: string): readonly string[] | null; active(instanceId: string): string | null; shapeshift(instanceId: string, formId: string, durationSeconds?: number): { reason: string; } | null; revert(instanceId: string): void; } export declare function createForms(deps: FormsDeps): Forms;