import { type NpmIntegrityDrift, type NpmSpecResolution } from "../infra/install-source-utils.js";
type PluginInstallLogger = {
    info?: (message: string) => void;
    warn?: (message: string) => void;
};
export type PluginInstallPackageReview = {
    pluginId: string;
    packageName?: string;
    version?: string;
    extensions: string[];
    kind?: string;
    channels: string[];
    providers: string[];
    skills: string[];
    tools: string[];
    dependencyCount: number;
    dependencyKinds: string[];
    scriptNames: string[];
    dependencyWarnings: string[];
    scriptWarnings: string[];
    runtimeWarnings?: string[];
};
export type InstallPluginResult = {
    ok: true;
    pluginId: string;
    targetDir: string;
    manifestName?: string;
    version?: string;
    extensions: string[];
    review?: PluginInstallPackageReview;
    npmResolution?: NpmSpecResolution;
    integrityDrift?: NpmIntegrityDrift;
} | {
    ok: false;
    error: string;
};
export type PluginNpmIntegrityDriftParams = {
    spec: string;
    expectedIntegrity: string;
    actualIntegrity: string;
    resolution: NpmSpecResolution;
};
export declare function resolvePluginInstallDir(pluginId: string, extensionsDir?: string): string;
export declare function installPluginFromArchive(params: {
    archivePath: string;
    extensionsDir?: string;
    timeoutMs?: number;
    logger?: PluginInstallLogger;
    mode?: "install" | "update";
    dryRun?: boolean;
    expectedPluginId?: string;
    expectedPluginIds?: string[];
}): Promise<InstallPluginResult>;
export declare function installPluginFromDir(params: {
    dirPath: string;
    extensionsDir?: string;
    timeoutMs?: number;
    logger?: PluginInstallLogger;
    mode?: "install" | "update";
    dryRun?: boolean;
    expectedPluginId?: string;
    expectedPluginIds?: string[];
}): Promise<InstallPluginResult>;
export declare function installPluginFromFile(params: {
    filePath: string;
    extensionsDir?: string;
    logger?: PluginInstallLogger;
    mode?: "install" | "update";
    dryRun?: boolean;
}): Promise<InstallPluginResult>;
export declare function installPluginFromNpmSpec(params: {
    spec: string;
    extensionsDir?: string;
    timeoutMs?: number;
    logger?: PluginInstallLogger;
    mode?: "install" | "update";
    dryRun?: boolean;
    expectedPluginId?: string;
    expectedPluginIds?: string[];
    expectedIntegrity?: string;
    onIntegrityDrift?: (params: PluginNpmIntegrityDriftParams) => boolean | Promise<boolean>;
}): Promise<InstallPluginResult>;
export declare function installPluginFromPath(params: {
    path: string;
    extensionsDir?: string;
    timeoutMs?: number;
    logger?: PluginInstallLogger;
    mode?: "install" | "update";
    dryRun?: boolean;
    expectedPluginId?: string;
    expectedPluginIds?: string[];
}): Promise<InstallPluginResult>;
export {};
