import { socketioRPC } from "./RPC"; import { TableDefiniton, AdminBase } from './Admin'; export declare abstract class ConfigLoader implements RPCExporter { name: string; private db; constructor(name: string, prefix?: string); exportRPCs(): socketioRPC[]; resetConfig(): ConfType; setConfig(conf: ConfType): ConfType; setConfigKey(key: string, value: any): ConfType; getConfigKey(key: string): any; deleteConfigKey(key: string): ConfType; getConfig(): ConfType; abstract getDefaultConfig(): ConfType; } export interface RPCExporter { name: string; exportRPCs(): socketioRPC[]; } export interface ConfigExporter { getDefaultConfig(): ConfType; } export interface TableDefinitionExporter { getTableDefinitions(): TableDefiniton[]; } export declare abstract class Plugin implements ConfigExporter, RPCExporter, TableDefinitionExporter { protected admin: AdminBase; name: string; constructor(admin: AdminBase, name: string); setConfig: (conf: ConfType) => any; getConfig: () => any; abstract getTableDefinitions(): TableDefiniton[]; abstract getDefaultConfig(): ConfType; abstract exportRPCs(): socketioRPC[]; } export declare type SidebarEntries = { icon: string; text: string; parentRoute: string; links: { text: string; route: string; }[]; }; export declare type SidebarEntry = { icon: string; text: string; route: string; }; export interface FrontendPlugin { getSidebarEntry?(): SidebarEntry | SidebarEntries; getSettingsComponent?(): SettingsComponentType; getWidgetComponent?(): WidgetType; }