import { Component, type ComponentType, type ErrorInfo, type ReactNode } from "react"; import type { Json, ToolOutcome } from "../../core/index.js"; import type { OpenSurface } from "../../core/apps/index.js"; import { type ParkedPress } from "./renderer.js"; export interface AppFrameProps { surface: OpenSurface; /** * Which app this surface belongs to. A frame that can show a DIFFERENT app in * the same position passes it, and the tree surface's `$state` then belongs to * that app alone (renderer.tsx's TreeView documents why the tree cannot say). */ appId?: string; components?: Record; data?: Record; onAction?(req: { nodeId: string; action: string; payload?: Json; }): Promise; /** A press parked on an approval (tree surfaces only) — renderer.tsx's * TreeViewProps documents what a surface does with it. */ onParked?: (parked: ParkedPress) => void; } /** 08-ui §5; 06-apps §1 — render every app execution plane fail-soft. */ export declare function AppFrame({ surface, appId, components, data, onAction, onParked }: AppFrameProps): import("react").JSX.Element; interface PinBoundaryProps { children: ReactNode; fallback: ComponentType; slot: string; } interface PinBoundaryState { failed: boolean; } /** 06-apps §8 — an approved pin may degrade; the original product remains. */ export declare class PinMount extends Component { state: PinBoundaryState; static getDerivedStateFromError(): PinBoundaryState; componentDidCatch(_error: Error, _info: ErrorInfo): void; componentDidUpdate(previous: PinBoundaryProps): void; render(): string | number | bigint | boolean | Iterable | Promise> | Iterable | null | undefined> | import("react").JSX.Element | null | undefined; } export {};