import { BitId } from '../bit-id';
import Component from '../consumer/component/consumer-component';
import ComponentMap from '../consumer/bit-map/component-map';
import Consumer from '../consumer/consumer';
import { PathOsBasedRelative } from '../utils/path';
import BitMap from '../consumer/bit-map/bit-map';
import Symlink from './symlink';
import DataToPersist from '../consumer/component/sources/data-to-persist';
declare type LinkDetail = {
    from: string;
    to: string;
};
export declare type LinksResult = {
    id: BitId;
    bound: LinkDetail[];
};
export default class NodeModuleLinker {
    components: Component[];
    consumer: Consumer | null | undefined;
    bitMap: BitMap;
    dataToPersist: DataToPersist;
    constructor(components: Component[], consumer: Consumer | null | undefined, bitMap: BitMap);
    link(): Promise<LinksResult[]>;
    getLinks(): Promise<DataToPersist>;
    getLinksResults(): LinksResult[];
    _populateImportedComponentsLinks(component: Component): Promise<void>;
    _populateNestedComponentsLinks(component: Component): Promise<void>;
    _getDefaultScope(component?: Component): string | undefined | null;
    _populateImportedNonLegacyComponentsLinks(component: Component): Promise<void>;
    _populateAuthoredComponentsLinks(component: Component): void;
    _deleteOldLinksOfIdWithoutScope(component: Component): void;
    _populateDependenciesAndMissingLinks(component: Component): Promise<void>;
    _getSymlinkPackages(from: string, to: string, component: Component): Symlink[];
    _getDependenciesLinks(component: Component, componentMap: ComponentMap): Promise<Symlink[]>;
    _getDependencyLink(parentRootDir: PathOsBasedRelative, bitId: BitId, rootDir: PathOsBasedRelative, bindingPrefix: string): Symlink;
    _createPackageJsonForAuthor(component: Component): void;
    _populateShouldDependenciesSavedAsComponentsData(): Promise<void>;
}
export {};
