import { ComponentPluginFC, PluginDeclaration } from '@plitzi/sdk-shared'; export type PluginComponent = ComponentPluginFC & { plugins?: Record; }; /** A plugin this page draws none of: what it declares now, its code and stylesheet when a page draws it. */ export type DeferredPlugin = { load: () => Promise<{ default: PluginComponent; }>; css?: string | null; declaration: PluginDeclaration; }; /** * The plugin registered as `key`, standing in for itself until it is drawn. * * It carries the declaration — the definition, the sub-plugins, each a stand-in of its own — so the space knows its * types from the start. The first one drawn loads the code and the stylesheet, once, before anything of it mounts: the * stylesheet first, or the plugin would paint unstyled for a frame. Its own `Suspense`, so only the element waits and * not the page around it. */ export declare const deferredPlugin: (key: string, { load, css, declaration }: DeferredPlugin) => PluginComponent;