/** * The in-memory registry the shell reads, plus {@link loadPlugin} — the one entry * through which a plugin bundle's `register(context)` contributes to it. This module * is bundled only into the served `@tai42/studio-sdk/host` singleton (external across * the plugin boundary, like react and react-dom), so the module-level registry is * the SAME instance every host caller — the shell and the feature panels — sees. The * plugin surface (`@tai42/studio-sdk`) does not include it, so a plugin cannot reach it. */ import type { PluginContributions, PluginEntry } from './types'; /** * Load one plugin: call its `register` entry with a context bound to `pluginId`, * then commit everything it staged into the global registry. * * `entry` is AWAITED before commit, so a synchronous or an `async` entry is fully * done first: a post-`await` throw skips the commit (atomicity holds for async too) * and a post-`await` registration cannot slip past the batch. The seal is set after * `entry` has SETTLED, so a later registration throws loudly; registrations made * during `entry`'s synchronous body — including a microtask it enqueues then — are * still captured and committed. A `register` that throws commits nothing. */ export declare function loadPlugin(pluginId: string, entry: PluginEntry): Promise; /** The shell reads this after loading every installed plugin bundle. */ export declare function getContributions(): PluginContributions; /** Tests reset the module-level registry between cases. */ export declare function __resetContributions(): void; //# sourceMappingURL=registry.d.ts.map