/**
 * TraitFrame — renders the current frame of a referenced trait.
 *
 * Resolves the `@trait.X[.slot]` binding at render time by looking up the
 * referenced trait's last `render-ui` payload from the orbital's
 * `UISlotManager`. Re-renders automatically when that trait transitions
 * via the per-trait subscription channel (`subscribeTrait`).
 *
 * This is the single rendering primitive both runtime paths converge on:
 *
 * - **Interpreted path** — the trait-binding resolver in
 *   `renderer/trait-binding-resolver.ts` walks pattern trees at render
 *   time, substituting `"@trait.X"` string children with this component.
 * - **Compiled path** — the TypeScript shell codegen in
 *   `orbital-shell-typescript/src/backend.rs::pattern_to_jsx_with_data`
 *   emits this component directly into generated JSX wherever a
 *   `@trait.*` string appears in a pattern tree.
 *
 * Embedding is passive: the referenced trait's state machine runs
 * unchanged; TraitFrame is only a read-only lens on its current frame.
 * Event propagation happens over the shared event bus, not through this
 * component.
 *
 * @see docs/Almadar_Std_Gaps.md §3.8 for the full language design.
 */
import React from "react";
export interface TraitFrameProps {
    /**
     * Name of the trait whose current frame to embed. Must match a trait
     * declared in the current orbital. Compiler validates that the name
     * exists at build time (see `ORB_BINDING_TRAIT_UNKNOWN`).
     */
    traitName: string;
    /**
     * Rendered when the referenced trait has not (yet) emitted any
     * render-ui. Use a skeleton, spinner, or message. Defaults to `null`
     * (renders nothing), so an unfulfilled reference drops cleanly out of
     * a parent `children:` array.
     */
    fallback?: React.ReactNode;
}
/**
 * Render the embedded trait's current frame via the registered pattern
 * component for its `SlotContent.pattern` + `props`. Falls back when the
 * referenced trait has no content in the target slot.
 *
 * The import path for pattern rendering matches what `SlotContentRenderer`
 * uses, so both the top-level slot render path and this embedded path go
 * through the same resolver (`getComponentForPattern` + prop handling).
 */
export declare function TraitFrame({ traitName, fallback, }: TraitFrameProps): React.ReactElement | null;
export declare namespace TraitFrame {
    var displayName: string;
}
