import { type ProjectType } from "../core/config.js";
/**
 * Injectable fixed-argv reader for actual project plugin installation.
 * Implementations must honor `signal` and release any owned handles before
 * settling.
 */
export type InstalledPluginReader = (projectRoot: string, timeoutMs: number, signal: AbortSignal) => Promise<readonly string[]>;
/** Structured plugin inspection outcome. */
export type PluginInspection = {
    readonly status: "pass";
    readonly drift: readonly string[];
} | {
    readonly status: "warn";
    readonly drift: readonly string[];
} | {
    readonly status: "fail";
    readonly drift: readonly string[];
};
/**
 * Default fixed-argv Claude installed-plugin reader.
 * @param projectRoot
 * @param timeoutMs
 * @param signal
 */
export declare const readInstalledClaudePlugins: InstalledPluginReader;
/**
 * Inspect settings, marker, and actual installed plugin state.
 * @param projectRoot - Canonical host root
 * @param config - Safe project config
 * @param types - Safely detected project types
 * @param reader - Actual installed-plugin reader
 * @param timeoutMs - Remaining shared deadline
 * @param signal - Shared cancellation signal
 * @returns Pass, fail, or optional-harness warning
 */
export declare function inspectPlugins(projectRoot: string, config: Readonly<Record<string, unknown>>, types: readonly ProjectType[], reader: InstalledPluginReader, timeoutMs: number, signal: AbortSignal): Promise<PluginInspection>;
//# sourceMappingURL=plugin-inspection.d.ts.map