import { type IPackageJson } from "../npm.js"; import { type ICollectorNode } from "./collector.js"; interface IDeprecatedInfo { deprecated: boolean; message: string; } export interface IPackage = Record> { parent: IPackage | null; isLoop: boolean; name: string; alias: string | null; version: string; fullName: string; directDependencies: IPackage[]; deprecatedInfo: IDeprecatedInfo; addDependency: (dependency: IPackage) => void; visit: (callback: (dependency: IPackage) => void, includeSelf?: boolean) => void; getPackagesBy: (filter: (pkg: IPackage) => boolean) => IPackage[]; getPackagesByName: (name: string, version?: string) => IPackage[]; getPackageByName: (name: string, version?: string) => IPackage | null; getData(): Readonly; getData(key: string): unknown; getAttachmentData(): Partial; getAttachmentData(key: K): T[K]; setAttachmentData(key: K, data: T[K]): void; } export declare class Package> implements IPackage { private readonly _data; parent: IPackage | null; isLoop: boolean; private _attachmentData; private readonly _dependencies; constructor(_data: Readonly); get name(): string; get alias(): string | null; get version(): string; get fullName(): string; get directDependencies(): IPackage[]; get deprecatedInfo(): IDeprecatedInfo; addDependency(dependency: IPackage): void; visit(callback: (dependency: IPackage) => void, includeSelf?: boolean): void; getPackagesBy(filter: (pkg: IPackage) => boolean): IPackage[]; getPackagesByName(name: string, version?: string): IPackage[]; getPackageByName(name: string, version?: string): IPackage | null; getData(key: string): unknown; getData(): Readonly; getAttachmentData(): Partial; getAttachmentData(key: K): T[K]; setAttachmentData(key: K, data: T[K]): void; collect(dataFn: (pkg: IPackage) => D): ICollectorNode>; } export {};