import type { Warning } from "@nodesecure/js-x-ray";
import type { PackageModuleType } from "@nodesecure/mama";
export type NpmSpec = `${string}@${string}`;
export interface DependencyJSON {
    id: number;
    type: PackageModuleType;
    name: string;
    version: string;
    usedBy: Record<string, string>;
    isDevDependency: boolean;
    existOnRemoteRegistry: boolean;
    flags: string[];
    warnings: Warning[];
    alias: Record<string, string>;
    dependencyCount: number;
    gitUrl: string | null;
}
export type DependencyOptions = {
    parent?: Dependency;
} & Partial<Omit<DependencyJSON, "id" | "name" | "version">>;
export declare class Dependency {
    #private;
    static currentId: number;
    name: string;
    version: string;
    dev: boolean;
    existOnRemoteRegistry: boolean;
    dependencyCount: number;
    gitUrl: null | string;
    warnings: Warning[];
    alias: Record<string, string>;
    constructor(name: string, version: string, options?: DependencyOptions);
    addChildren(): void;
    get spec(): NpmSpec;
    get flags(): string[];
    get parent(): {
        [x: string]: string;
    };
    addFlag(flagName: string, predicate?: boolean): void;
    isGit(url?: string): this;
    exportAsPlainObject(customId?: number): DependencyJSON;
}
//# sourceMappingURL=Dependency.class.d.ts.map