import { BaseRenderable, Renderable, type RenderableOptions } from "../Renderable.js"; import type { CliRenderer } from "../renderer.js"; import type { RenderContext } from "../types.js"; import { SlotRegistry, type SlotRegistryOptions } from "./registry.js"; import type { PluginContext, PluginErrorEvent, SlotMode } from "./types.js"; export type CoreSlotMode = SlotMode; type CoreSlotProps = { [K in TSlotName]: TData; }; export type CoreSlotRegistry> = SlotRegistry, TContext>; export type CoreSlotRenderer> = (ctx: Readonly, data: TData) => BaseRenderable; export interface CoreManagedSlot> { render: CoreSlotRenderer; onActivate?: (ctx: Readonly) => void; onDeactivate?: (ctx: Readonly) => void; onDispose?: (ctx: Readonly) => void; } export type CoreSlotContribution> = CoreSlotRenderer | CoreManagedSlot; export interface CorePlugin> { id: string; order?: number; setup?: (ctx: Readonly, renderer: CliRenderer) => void; dispose?: () => void; slots: Partial>>; } export interface CoreResolvedSlotRenderer> { id: string; renderer: CoreSlotRenderer; } type FallbackNodes = BaseRenderable | BaseRenderable[] | undefined; export type CoreSlotFailurePlaceholder = (failure: PluginErrorEvent, ctx: Readonly) => FallbackNodes; export declare function createCoreSlotRegistry>(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions): CoreSlotRegistry; export declare function registerCorePlugin>(registry: CoreSlotRegistry, plugin: CorePlugin): () => void; export declare function resolveCoreSlot>(registry: CoreSlotRegistry, slot: K): Array>; export interface SlotRenderableOptions> extends RenderableOptions { registry: CoreSlotRegistry; name: K; data?: TData; mode?: CoreSlotMode; fallback?: FallbackNodes | (() => FallbackNodes); pluginFailurePlaceholder?: CoreSlotFailurePlaceholder; } export declare class SlotRenderable> extends Renderable { private _mode; private _slotRegistry; private _slotName; private _data; private _fallbackOption; private _pluginFailurePlaceholder?; private _disposed; private _mountedNodes; private _pluginNodes; private _activePluginIds; private _fallbackNodes; private _unsubscribe; constructor(ctx: RenderContext, options: SlotRenderableOptions); get mode(): CoreSlotMode; set mode(value: CoreSlotMode); get data(): TData; set data(value: TData); refresh(): void; protected destroySelf(): void; private _cleanupAll; private _ensureFallbackNodes; private _callManagedHook; private _detachNodeFromMount; private _cleanupInactivePluginNodes; private _cleanupReplacedPluginNodes; private _resolvePluginFailurePlaceholder; private _reconcileMountedNodes; } export {};