import type { JsonValue } from "../sync/json-path.js";
import type { StatusProbe } from "./ui-status.js";
/** One plugin entry from a marketplace.json catalog. */
export type MarketplacePlugin = {
    readonly name: string;
    readonly description?: string;
};
/** One plugin row emitted by the enabled-plugins probe. */
export type EnabledPluginRow = {
    readonly [key: string]: JsonValue;
    readonly id: string;
    readonly status: "enabled" | "available";
    readonly description: string;
};
/** Structured value emitted by the enabled-plugins live-status probe. */
export type EnabledPluginsValue = {
    readonly [key: string]: JsonValue;
    /** False when `.claude/settings.json` is absent (empty-state trigger). */
    readonly settingsPresent: boolean;
    /** Enabled and available-not-enabled plugins; never demo data. */
    readonly plugins: EnabledPluginRow[];
};
/** Injectable collaborators for focused tests. */
export type EnabledPluginsProbeDependencies = {
    /** Home directory used to locate `~/.claude/plugins/known_marketplaces.json`. */
    readonly homedir?: () => string;
    /** Override marketplace discovery for unit tests. */
    readonly listMarketplacePlugins?: (cwd: string, home: string) => Promise<ReadonlyMap<string, string>>;
};
/**
 * Collect plugin id → description from known Claude marketplaces on disk.
 * @param cwd - Project root (checked for a local `.claude-plugin/marketplace.json`)
 * @param home - Home directory containing `~/.claude/plugins`
 * @returns Map of `plugin@marketplace` ids to descriptions
 */
export declare function listMarketplacePluginsFromDisk(cwd: string, home: string): Promise<ReadonlyMap<string, string>>;
/**
 * Build the probe value from settings + marketplace catalog.
 * @param settingsPresent - Whether settings.json existed
 * @param enabledPlugins - Parsed enabledPlugins map (true = enabled)
 * @param marketplace - Plugin id → description catalog
 * @returns Structured probe value
 */
export declare function buildEnabledPluginsValue(settingsPresent: boolean, enabledPlugins: Readonly<Record<string, boolean>>, marketplace: ReadonlyMap<string, string>): EnabledPluginsValue;
/**
 * Create the probe that reports project plugin enablement vs marketplace availability.
 * @param cwd - Project root containing `.claude/settings.json`
 * @param dependencies - Injectable collaborators for focused tests
 * @returns Probe emitting enabled / available-not-enabled rows, or unknown
 */
export declare function createEnabledPluginsProbe(cwd: string, dependencies?: EnabledPluginsProbeDependencies): StatusProbe<EnabledPluginsValue>;
//# sourceMappingURL=ui-enabled-plugins.d.ts.map