import { type EasyData } from '../util/EntityUtil.ts';
import { Dist } from './Dist.ts';
import { Entity, type EntityData } from './Entity.ts';
interface PackageData extends EntityData {
    scope: string;
    name: string;
    packageId: string;
    isPrivate: boolean;
    description: string;
    abbreviatedsDist?: Dist;
    manifestsDist?: Dist;
    registryId?: string;
}
export declare enum DIST_NAMES {
    ABBREVIATED = "abbreviated.json",
    MANIFEST = "package.json",
    README = "readme.md",
    FULL_MANIFESTS = "full_manifests.json",
    ABBREVIATED_MANIFESTS = "abbreviated_manifests.json"
}
export declare function isPkgManifest(fileType: DIST_NAMES): fileType is DIST_NAMES.FULL_MANIFESTS | DIST_NAMES.ABBREVIATED_MANIFESTS;
interface FileInfo {
    size: number;
    shasum: string;
    integrity: string;
}
export declare class Package extends Entity {
    readonly scope: string;
    readonly name: string;
    readonly packageId: string;
    readonly isPrivate: boolean;
    description: string;
    abbreviatedsDist?: Dist;
    manifestsDist?: Dist;
    registryId?: string;
    constructor(data: PackageData);
    static create(data: EasyData<PackageData, 'packageId'>): Package;
    get fullname(): string;
    createAbbreviated(version: string, info: FileInfo): Dist;
    createManifest(version: string, info: FileInfo): Dist;
    createReadme(version: string, info: FileInfo): Dist;
    createTar(version: string, info: FileInfo): Dist;
    createFullManifests(info: FileInfo): Dist;
    createAbbreviatedManifests(info: FileInfo): Dist;
    createPackageVersionFile(path: string, version: string, info: FileInfo): Dist;
    private distDir;
    private createDist;
}
export {};
