/** * — the one tree-positional async wrapper. * * Client: the fallback covers lazy CHUNK loading only — a pending `useData` * read renders through its owning component's `match` (value-first), never * through a wrapper. Lazy wrappers register their load promise with the * nearest Defer at SETUP time via DI (deterministic — the parent chain is * linked before child setup runs; no render-order protocol, no thrown * promises). * * SSR streaming: the server renderer special-cases the `__defer` marker — * the fallback streams with the shell and ONE replacement arrives when * everything pending beneath it (chunks AND keyed data) resolves. Blocking * and string modes await inline, so Defer needs no special handling there. * * Render shape is CONSTANT: [fallback-or-comment, …children]. Children stay * mounted while a chunk loads (a pending lazy renders null), so sibling * state survives and the resolved component appears in place. */ import { type Define } from './component.js'; import { type JSXElement } from './jsx-runtime.js'; /** @internal */ export interface DeferCollector { add(p: Promise): void; } /** * The nearest enclosing 's collector, or undefined. Called by lazy * wrappers at SETUP time (setup-time DI registration is deterministic; * render-time registration is the removed protocol). * * @internal */ export declare function getDeferCollector(): DeferCollector | undefined; export type DeferProps = Define.Prop<'fallback', JSXElement | (() => JSXElement)> & Define.Slot<'default'>; export declare const Defer: import("./component-types.js").ComponentFactory JSXElement | JSXElement[] | null) | undefined; }>; //# sourceMappingURL=defer.d.ts.map