import * as npmRegistrySDK from "@nodesecure/npm-registry-sdk";
import type { Packument, PackumentVersion, Signature } from "@nodesecure/npm-types";
import type { DateProvider } from "../class/DateProvider.class.ts";
import type { Dependency, DependencyConfusionWarning, TokenStore } from "../types.ts";
import { Logger } from "../class/logger.class.ts";
type PackumentNpmApiOptions = {
    registry: string;
    token?: string;
};
export interface NpmApiClient {
    packument(name: string, options?: PackumentNpmApiOptions): Promise<Packument>;
    packumentVersion(name: string, version: string, options?: PackumentNpmApiOptions): Promise<PackumentVersion>;
    org(namespace: string): Promise<npmRegistrySDK.NpmPackageOrg>;
}
export interface NpmRegistryProviderOptions {
    dateProvider?: DateProvider;
    npmApiClient?: NpmApiClient;
    registry?: string;
    tokenStore?: TokenStore;
}
export declare class NpmRegistryProvider {
    #private;
    name: string;
    version: string;
    constructor(name: string, version: string, options?: NpmRegistryProviderOptions);
    collectPackageVersionData(): Promise<{
        links: {
            npm: string;
            homepage: string | null;
            repository: string | null;
        };
        integrity: string;
        deprecated: string | undefined;
        signatures: Signature[] | undefined;
        attestations: {
            url: string;
            provenance: {
                predicateType: string;
            };
        } | undefined;
    }>;
    collectPackageData(): Promise<{
        metadata: {
            publishedCount: number;
            lastUpdateAt: Date;
            lastVersion: string;
            hasChangedAuthor: boolean;
            hasManyPublishers: boolean;
            hasReceivedUpdateInOneYear: boolean;
            author: import("../types.ts").Maintainer | null;
            homepage: string | null;
            maintainers: import("../types.ts").Maintainer[];
            publishers: import("../types.ts").Publisher[];
            integrity: Record<string, string>;
        };
        flags: string[];
        version: {
            links: {
                npm: string;
                homepage: string | null;
                repository: string | null;
            };
            deprecated: string | undefined;
            attestations: {
                url: string;
                provenance: {
                    predicateType: string;
                };
            } | undefined;
        };
    }>;
    enrichDependency(logger: Logger, dependency: Dependency): Promise<void>;
    enrichDependencyVersion(dependency: Dependency, warnings: DependencyConfusionWarning[], org: string | null | undefined): Promise<void>;
    enrichScopedDependencyConfusionWarnings(warnings: DependencyConfusionWarning[], org: string): Promise<void>;
}
export {};
//# sourceMappingURL=NpmRegistryProvider.d.ts.map