import { CommandRegistrar } from './command'; import { PrescanUsage } from '../plugins/prescan'; import { MetadataBearing } from '../models/entity'; import { BadgeRegistration } from '../webapp/views/registrar/badges'; import { ModeRegistration } from '../webapp/views/registrar/modes'; import { SessionInitializer } from '../session/registrar'; export type KuiPlugin = void | Promise; export type PluginRegistration = (commandTree: CommandRegistrar, options?: { usage: PrescanUsage; }) => KuiPlugin; export interface PreloadRegistrar extends CommandRegistrar { /** sidecar modes */ registerMode(registration: ModeRegistration): void; registerModes(...registrations: ModeRegistration[]): void; /** sidecar badges */ registerBadge(registration: BadgeRegistration): void; registerBadges(...registrations: BadgeRegistration[]): void; /** session initializers */ registerSessionInitializer(init: SessionInitializer): void; } export type PreloadRegistration = (registrar: PreloadRegistrar) => Promise; export type CapabilityRegistration = (registrar: PreloadRegistrar) => void | Promise;