import { BaseComponent, BaseProps } from './view/base'; import { Component, ComponentProps } from 'preact'; /** * BaseProps for all plugins */ export interface PluginBaseProps { plugin: Plugin; } /** * BaseComponent for all plugins */ export declare abstract class PluginBaseComponent< P extends PluginBaseProps = any, S = {} > extends BaseComponent {} export interface PluginBaseComponentCtor< P extends PluginBaseProps = any, S = {} > { new (props: P, context?: any): Component; } export declare enum PluginPosition { Header = 0, Footer = 1, Cell = 2, } export interface Plugin { id: string; position: PluginPosition; component: T; props?: Partial>; order?: number; } export declare class PluginManager { private readonly plugins; constructor(); get(id: string): Plugin | null; add(plugin: Plugin): this; remove(id: string): this; list( position?: PluginPosition, ): Plugin[]; } export interface PluginRendererProps extends BaseProps { props?: any; pluginId?: string; position?: PluginPosition; } export declare class PluginRenderer extends BaseComponent { render(): import('preact').VNode; }