import { CallGraphResult, DepGraph, DepTree, ScannedProject, SupportedPackageManagers } from './common'; export interface SingleSubprojectPlugin { inspect(root: string, targetFile?: string, options?: SingleSubprojectInspectOptions): Promise; pluginName?(): string; } export interface Plugin extends SingleSubprojectPlugin { inspect(root: string, targetFile?: string, options?: InspectOptions): Promise; inspect(root: string, targetFile?: string, options?: SingleSubprojectInspectOptions): Promise; inspect(root: string, targetFile: string | undefined, options: MultiSubprojectInspectOptions): Promise; } export declare function adaptSingleProjectPlugin(plugin: SingleSubprojectPlugin): Plugin; export interface BaseInspectOptions { dev?: boolean; skipUnresolved?: boolean; args?: string[]; useDepGraph?: boolean; } export interface SingleSubprojectInspectOptions extends BaseInspectOptions { subProject?: string; } export interface MultiSubprojectInspectOptions extends BaseInspectOptions { allSubProjects: true; } export declare type InspectOptions = SingleSubprojectInspectOptions | MultiSubprojectInspectOptions; export declare type InspectResult = SinglePackageResult | MultiProjectResult; export declare function isMultiSubProject(options: InspectOptions): options is MultiSubprojectInspectOptions; export interface PluginMetadata { name: string; runtime?: string; targetRuntime?: string; targetFile?: string; packageManager?: SupportedPackageManagers; meta?: { allSubProjectNames?: string[]; versionBuildInfo?: VersionBuildInfo; targetFile?: string; }; dockerImageId?: any; imageLayers?: any; packageFormatVersion?: string; } export interface VersionBuildInfo { gradleVersion?: string; metaBuildVersion: { [index: string]: string; }; } export interface SinglePackageResult { plugin: PluginMetadata; package?: DepTree; dependencyGraph?: DepGraph; callGraph?: CallGraphResult; meta?: { gradleProjectName?: string; versionBuildInfo?: VersionBuildInfo; }; } export interface MultiProjectResult { plugin: PluginMetadata; scannedProjects: ScannedProject[]; } export declare function isMultiResult(res: InspectResult): res is MultiProjectResult;