import { FlowrAnalyzerPlugin, PluginType } from '../flowr-analyzer-plugin';
import type { PackageSignatureSource } from '../../sigdb/reader';
import type { FlowrConfig } from '../../../config';
/** metadata of a package database a plugin currently has loaded */
export interface SigDbLoadedInfo {
    scope: string;
    version: number;
    date: string;
    hash: string;
    /** the on-disk compression codec of the resolved source(s): `zstd`, `brotli`, `gzip`, `plain`, or `mixed` for a set spanning several */
    readonly format?: string;
}
/**
 * This is the base class for all plugins that identify package and dependency versions used in the project.
 * These plugins interplay with the {@link FlowrAnalyzerDependenciesContext} to gather information about the packages used in the project.
 * See {@link DefaultFlowrAnalyzerPackageVersionsPlugin} for the no-op default implementation.
 */
export declare abstract class FlowrAnalyzerPackageVersionsPlugin extends FlowrAnalyzerPlugin<undefined, void> {
    readonly type = PluginType.DependencyIdentification;
    static defaultPlugin(): FlowrAnalyzerPackageVersionsPlugin;
    /** metadata of the databases this plugin currently has loaded (empty for plugins without any) */
    loadedDatabases(): SigDbLoadedInfo[];
    /** Packages known to this plugin that export `name` (empty for plugins without a database). */
    packagesExporting(_name: string): readonly string[];
    /** The signature sources this plugin currently has loaded (empty for plugins without any). `config` lets a query resolve config-driven sources before any analysis has set the plugin's context. */
    signatureSources(_config?: FlowrConfig): readonly PackageSignatureSource[];
    /** Mount an extra signature source by path (a `.sigs.ndjson`, `.br`, or `*.manifest.json(.br)`); no-op by default. */
    addDatabaseSource(_source: string): Promise<void>;
    /** Eagerly parse and mount this plugin's databases up front (no-op for plugins without any). */
    preloadDatabasesSync(): void;
    /**
     * Whether this plugin can resolve the always-available base-R packages (so their exports can be attached
     * eagerly for bare base calls). `false` for plugins without a versioned base-R signature source.
     */
    providesBaseRPackages(): boolean;
}
