import { ConfigDescription } from 'confinode'; import { ModelTypeList } from '../database'; import { ServerApp } from '../server'; /** * A default ĞecoĞvidanto plugin. */ export default interface GecoPlugin { ready(): Promise; } /** * Messages found in the plugin. */ declare type GecoMessages = { en?: { $?: 'English'; } & Partial; } & { [key: string]: Partial; }; /** * The class constructor for the plugin. */ declare type GecoPluginClass = new (serverApp: ServerApp) => GecoPlugin; /** * The static data of the plugin. */ interface GecoPluginData { readonly plugin: 'gecogvidanto-plugin-v1'; readonly description: string; readonly configuration?: ConfigDescription; readonly messages: Readonly; readonly uiMessages: Readonly; readonly models: Readonly>; } /** * The type of the plugin. */ export declare type GecoPluginType = GecoPluginClass & GecoPluginData; /** * Create a plugin based on given class and data. * * @param c - The plugin class. * @param d - The plugin data. * @returns The created plugin. */ export declare function createGecoPlugin(c: GecoPluginClass, d: GecoPluginData): GecoPluginType; /** * Test (type guard) if a given module contains a ĞecoĞvidanto plugin. * * @param mod - The loaded module. * @returns True or false depending on check result. */ export declare function isGecoPluginType(mod: unknown): mod is GecoPluginType; export {};