import { Type, type Static } from '@eggjs/typebox-validate/typebox';
import { Context } from 'egg';
import type { PackageJson, Simplify } from 'type-fest';
import { AbstractController } from '../AbstractController.ts';
type PackageVersion = Simplify<PackageJson.PackageJsonStandard & {
    name: 'string';
    version: 'string';
    deprecated?: 'string';
    readme?: 'string';
    dist?: {
        shasum: string;
        integrity: string;
        [key: string]: string | number;
    };
}>;
declare const FullPackageRule: Type.TObject<{
    name: Type.TString;
    versions: Type.TOptional<Type.TAny>;
    _attachments: Type.TOptional<Type.TAny>;
    description: Type.TOptional<Type.TString>;
    'dist-tags': Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
    readme: Type.TOptional<Type.TString>;
}>;
type FullPackage = Omit<Static<typeof FullPackageRule>, 'versions' | '_attachments'> & {
    versions: {
        [key: string]: PackageVersion;
    };
} & {
    _attachments: {
        [key: string]: {
            content_type: string;
            data: string;
            length: number;
        };
    };
};
export declare class SavePackageVersionController extends AbstractController {
    private readonly packageManagerService;
    private readonly registryManagerService;
    private readonly cacheAdapter;
    save(ctx: Context, fullname: string, pkg: FullPackage): Promise<{
        ok: boolean;
    } | {
        ok: boolean;
        rev: string;
    }>;
    private saveDeprecatedVersions;
    private validateNpmCommand;
}
export {};
