import type { RequiresAddon } from './types'; export type { RequiresAddon }; /** * Reads the addon requirement off an action, tolerating both the camelCase * `requiresAddon` and the snake_case `requires_addon` the host serves. Returns * null when the action is freely executable (no requirement, or a malformed one * without a `key` — degrade to "runs", never to "locked forever"). */ export declare function resolveRequiresAddon(action: any): RequiresAddon | null; type AddonInstallHandler = (key: string) => void; /** * Registers the host's "install this addon" flow (e.g. open the marketplace * install drawer). Pass `null` to unregister. Without a handler the SDK * navigates to `/marketplace/` via the router. */ export declare function setAddonInstallHandler(fn: AddonInstallHandler | null): void; /** Current host install handler, or null when none is registered. */ export declare function getAddonInstallHandler(): AddonInstallHandler | null; /** Display name for a requirement: the host-provided name, else the key. */ export declare function requiresAddonName(req: RequiresAddon): string; /** Tooltip text for a gated action: "Requiere «»". */ export declare function useRequiresAddonLabel(): (req: RequiresAddon) => string; /** Lock marker rendered next to a gated action's label (hover = addon name). */ export declare function RequiresAddonLock({ requirement }: { requirement: RequiresAddon; }): import("react").JSX.Element; export interface RequiresAddonDialogProps { /** The requirement to explain; the dialog renders nothing while null. */ requirement: RequiresAddon | null; onOpenChange: (open: boolean) => void; } /** * Compact "this action requires " dialog. Never touches the backend: * "Instalar" hands the key to the host handler or routes to the marketplace. */ export declare function RequiresAddonDialog({ requirement, onOpenChange }: RequiresAddonDialogProps): import("react").JSX.Element | null; //# sourceMappingURL=requires-addon.d.ts.map