import { type ReactNode, type RefObject } from "react"; export type SessionCapabilityFrameProps = { name: string; subtitle: string; logo: string | null; typeLabel: string; description: string; skill: boolean; expanded: boolean; complete: boolean; /** Completion copy must reflect the provider's actual scope of access. */ completeLabel?: string | undefined; actionLabel: string; /** Direct navigation actions should not announce a dialog on the card. */ opensDialog?: boolean; note: string; onOpen(): void; onClose(): void; busy?: boolean; opener?: RefObject; cardRef?: RefObject; children?: ReactNode; /** A catalogue row can own the opener while reusing the same details dialog. */ dialogOnly?: boolean; /** * Replaces the action when the viewer cannot start setup here (the provider * is not configured, or someone else must connect it). Say why and who can. */ actionUnavailable?: ReactNode; /** Host-owned content inside the card, under its status or actions. */ details?: ReactNode; /** Protected setup can stay in the conversation instead of opening a dialog. */ inlineSetup?: ReactNode; }; /** The same conversation card in the console and embedded clients. Setup * content owns the provider flow; this frame owns identity and protected focus. */ export declare function SessionCapabilityFrame({ name, subtitle, logo, typeLabel, description, skill, expanded, complete, completeLabel, actionLabel, opensDialog, note, onOpen, onClose, busy, opener, cardRef, children, dialogOnly, actionUnavailable, details, inlineSetup, }: SessionCapabilityFrameProps): import("react").JSX.Element;