import { System } from "./system"; export interface Manifest { hooks: HookT & EventHook; functions: { [key: string]: FunctionDef; }; } export interface FunctionDef { path?: string; code?: string; env?: RuntimeEnvironment; } export type RuntimeEnvironment = "client" | "server"; export type EventHook = { events?: { [key: string]: string[] }; }; export interface Feature { validateManifest(manifest: Manifest): string[]; apply(system: System): void; }