import { AssetBundle } from "../plugos/asset_bundle_reader.ts"; import { System } from "./system.ts"; export interface Manifest { name: string; requiredPermissions?: string[]; assets?: string[] | AssetBundle; dependencies?: { [key: string]: string; }; functions: { [key: string]: FunctionDef; }; } export type FunctionDef = { path?: string; code?: string; env?: RuntimeEnvironment; } & HookT; export type RuntimeEnvironment = "client" | "server"; export interface Hook { validateManifest(manifest: Manifest): string[]; apply(system: System): void; }