import { DepGraphBuildOptions, PackageJsonBase } from './types';
import { DepGraphBuilder } from '@snyk/dep-graph';
import type { NodeInfo } from '@snyk/dep-graph/dist/core/types';
import { NormalisedPkgs } from './types';
export type Dependencies = Record<string, {
    version: string;
    isDev: boolean;
    isOptional?: boolean;
}>;
export interface PkgNode {
    id: string;
    name: string;
    version: string;
    dependencies: Dependencies;
    isDev: boolean;
    missingLockFileEntry?: boolean;
    inBundle?: boolean;
    key?: string;
    alias?: {
        aliasName: string;
        aliasTargetDepName: string;
        semver: string;
        version: string;
    };
}
export declare const createNodeInfo: (options: DepGraphBuildOptions, scope?: string) => NodeInfo | undefined;
export declare const addPkgNodeToGraph: (depGraphBuilder: DepGraphBuilder, node: PkgNode, options: {
    isCyclic?: boolean;
    isWorkspacePkg?: boolean;
    showNpmScope?: boolean;
}) => DepGraphBuilder;
/**
 * Get top level dependencies from the given package json object which is parsed from a package.json file.
 * This includes both prod dependencies and dev dependencies supposing includeDevDeps is supported.
 */
export declare const getTopLevelDeps: (pkgJson: PackageJsonBase, options: {
    includeDevDeps: boolean;
    includeOptionalDeps?: boolean;
    includePeerDeps?: boolean;
}) => Dependencies;
/**
 * Converts dependencies parsed from the a lock file to a dependencies object required by the graph.
 * For example, { 'mime-db': '~1.12.0' } will be converted to { 'mime-db': { version: '~1.12.0', isDev: true/false } }.
 */
export declare const getGraphDependencies: (dependencies: Record<string, string>, options: {
    isDev: boolean;
    isOptional?: boolean;
}) => Dependencies;
export declare function parsePkgJson(pkgJsonContent: string): PackageJsonBase;
export declare const getChildNode: (name: string, depInfo: {
    version: string;
    isDev: boolean;
    isOptional?: boolean;
    alias?: {
        aliasName: string;
        aliasTargetDepName: string;
        semver: string;
        version: string;
    };
}, pkgs: NormalisedPkgs, strictOutOfSync: boolean, includeOptionalDeps: boolean) => PkgNode;
