import type { AppType } from "../../types";
/**
 * 全局只读插件注册表（`~/.lpm/plugins.json`，按域名累积）。
 *
 * 目的：让**只读**命令（`lpm perm list`，token-only、无需 pluginSecret）能在插件工程目录之外
 * （例如开发者自己的后端代码仓里）定位到插件，而无需在那个仓里落任何 handle 目录。
 *
 * 安全边界（对齐"不走 workflow 不能改数据"不变量）：
 * - **不存 pluginSecret**。改类命令（local-config set / update / publish）要 secret，secret 只在
 *   工程目录的 plugin.config.json 里 → 它们天然只能在工程目录（=走 workflow）里跑。
 * - 因此本注册表只服务读类定位；读错插件无害，故无需 active 选择 / 防误写护栏。
 */
export interface PluginRegistryEntry {
    pluginId: string;
    /** 插件名（best-effort，可能缺省——plugin.config.json 不带 name）。 */
    name?: string;
    app_type?: AppType;
}
/** origin → 该站点下记录过的插件。 */
export type PluginRegistry = Record<string, PluginRegistryEntry[]>;
export declare function loadPluginRegistry(): PluginRegistry;
/** 列出某站点下记录过的插件（域名按 origin 归一）。 */
export declare function listPlugins(siteDomain: string): PluginRegistryEntry[];
/**
 * 累积记录一个插件（按 origin + pluginId 去重、合并字段）。无 secret。
 * 全程 best-effort——它只是定位用的便利缓存，任何失败都吞掉，绝不让主命令挂掉；
 * 内容无变化时跳过写盘（getLocalPluginConfig 会频繁调用）。
 */
export declare function recordPlugin(siteDomain: string, entry: PluginRegistryEntry): void;
