/**
 * View-renderer registry — the contract for `view.<type>` capabilities.
 *
 * A `view.<type>` capability (view.timeline, and in future view.chart /
 * view.kanban / view.board / …) is rendered by a swappable RENDERER, not by an
 * independently-resolved instance factory. Each registered view type declares:
 *
 *   - `default`  — the renderer used when the manifest doesn't override it. BY
 *     CONTRACT this is always an **app-demo-compatible runtime React component**
 *     with no external dependency, so the dynamic interpreter renders the view
 *     out of the box (no codegen, no library install) and a generated app pulls
 *     no extra package for the default. The richer, library-backed renderers
 *     are opt-in (chosen explicitly in the manifest).
 *   - `renderers` — every renderer name valid for this capability (the `default`
 *     plus any opt-in alternatives, e.g. the vis-timeline-backed `VisTimeline`).
 *
 * Realize's pre-flight gate validates a `view.<type>` mapping against this
 * registry (`validateViewRendererMappings`), replacing the 6.96.13 blanket skip:
 * a renderer that isn't valid for its declared capability now fails loud with a
 * precise message, while an UNregistered view type is left to the runtime's
 * graceful list-degradation (pattern-walker fallback) rather than blocking
 * realize. New view types graduate out of that fallback by being registered
 * here with an app-demo-compatible default renderer. (#view-component-factories)
 */
export interface ViewRenderer {
    /**
     * The app-demo-compatible (zero-dependency runtime React) renderer name used
     * when the manifest doesn't pick one. The runtime resolves the view's generic
     * slot to this component by default; the generated frontend factory only pulls
     * a library dependency when a library-backed renderer is explicitly chosen.
     */
    default: string;
    /** Every renderer name valid for this capability (includes `default`). */
    renderers: readonly string[];
}
export declare const VIEW_RENDERER_REGISTRY: Readonly<Record<string, ViewRenderer>>;
/** True if `capability` is a `view.<type>` capability. */
export declare function isViewCapability(capability: unknown): capability is string;
/** The registry entry for a view capability, or undefined if unregistered. */
export declare function getViewRenderer(capability: string): ViewRenderer | undefined;
/**
 * Validate a `view.<type>` → renderer mapping against the registry.
 *   - `ok`           — registered capability, renderer is valid for it
 *   - `bad-renderer` — registered capability, renderer is NOT one of its valid
 *                      renderers (typo / wrong renderer) → realize fails loud
 *   - `unregistered` — not a registered view capability → the runtime degrades
 *                      it gracefully to a list (pattern-walker fallback); not a
 *                      realize error
 */
export declare function validateViewRenderer(capability: string, renderer: string | undefined): {
    status: 'ok' | 'bad-renderer' | 'unregistered';
    entry?: ViewRenderer;
};
//# sourceMappingURL=view-renderers.d.ts.map