export type PluginFactory = (this: Host, art: Host) => Result export type PluginRegistration = unknown extends Result ? Registry | Promise : Result extends Promise ? Promise : Registry /** The same registry is returned immediately or after its Promise factory settles. */ export interface Plugins { art: Host id: number add: (plugin: PluginFactory) => PluginRegistration next: (plugin: PluginFactory, result: unknown) => this }