/// <reference types="node" />
import { BitId, BitIds } from '../../bit-id';
import ComponentMap from './component-map';
import { ComponentMapFile, ComponentOrigin, PathChange } from './component-map';
import { PathLinux, PathOsBased, PathOsBasedRelative, PathOsBasedAbsolute, PathRelative } from '../../utils/path';
import { BitIdStr } from '../../bit-id/bit-id';
export declare type PathChangeResult = {
    id: BitId;
    changes: PathChange[];
};
export declare type IgnoreFilesDirs = {
    files: PathLinux[];
    dirs: PathLinux[];
};
export default class BitMap {
    projectRoot: string;
    mapPath: string;
    components: ComponentMap[];
    hasChanged: boolean;
    version: string;
    paths: {
        [path: string]: BitId;
    };
    pathsLowerCase: {
        [path: string]: BitId;
    };
    markAsChangedBinded: Function;
    _cacheIds: {
        [origin: string]: BitIds | undefined;
    };
    allTrackDirs: {
        [trackDir: string]: BitId;
    } | undefined;
    constructor(projectRoot: string, mapPath: string, version: string);
    markAsChanged(): void;
    setComponent(bitId: BitId, componentMap: ComponentMap): void;
    setComponentProp(id: BitId, propName: keyof ComponentMap, val: any): ComponentMap;
    isEmpty(): any;
    removeComponentProp(id: BitId, propName: keyof ComponentMap): ComponentMap;
    static load(dirPath: PathOsBasedAbsolute): BitMap;
    static loadRawSync(dirPath: PathOsBasedAbsolute): Buffer | undefined;
    static getBitMapLocation(dirPath: PathOsBasedAbsolute): {
        currentLocation: string | undefined;
        defaultLocation: string;
    };
    static reset(dirPath: PathOsBasedAbsolute, resetHard: boolean): void;
    loadComponents(componentsJson: Record<string, any>): void;
    getAllComponents(origin?: ComponentOrigin | ComponentOrigin[]): ComponentMap[];
    getAllBitIds(origin?: ComponentOrigin[]): BitIds;
    getBitId(bitId: BitId, { ignoreVersion, ignoreScopeAndVersion }?: {
        ignoreVersion?: boolean;
        ignoreScopeAndVersion?: boolean;
    }): BitId;
    getBitIdIfExist(bitId: BitId, { ignoreVersion, ignoreScopeAndVersion }?: {
        ignoreVersion?: boolean;
        ignoreScopeAndVersion?: boolean;
    }): BitId | undefined;
    getComponent(bitId: BitId, { ignoreVersion, ignoreScopeAndVersion }?: {
        ignoreVersion?: boolean;
        ignoreScopeAndVersion?: boolean;
    }): ComponentMap;
    getComponentIfExist(bitId: BitId, { ignoreVersion, ignoreScopeAndVersion }?: {
        ignoreVersion?: boolean;
        ignoreScopeAndVersion?: boolean;
    }): ComponentMap | undefined;
    getNonNestedComponentIfExist(bitId: BitId): ComponentMap | undefined;
    getComponentPreferNonNested(bitId: BitId): ComponentMap | undefined;
    getAuthoredAndImportedBitIds(): BitIds;
    getAuthoredExportedComponents(): BitId[];
    _makePathRelativeToProjectRoot(pathToChange: PathRelative): PathOsBasedRelative;
    findSimilarIds(id: BitId, compareWithoutScope?: boolean): BitIds;
    deleteOlderVersionsOfComponent(componentId: BitId): void;
    getExistingBitId(id: BitIdStr, shouldThrow?: boolean): BitId | undefined;
    _areFilesArraysEqual(filesA: ComponentMapFile[], filesB: ComponentMapFile[]): boolean;
    mergeFilesArray(filesA: ComponentMapFile[], filesB: ComponentMapFile[]): ComponentMapFile[];
    addComponent({ componentId, files, mainFile, origin, rootDir, trackDir, originallySharedDir, wrapDir }: {
        componentId: BitId;
        files: ComponentMapFile[];
        mainFile: PathLinux;
        origin: ComponentOrigin;
        rootDir?: PathOsBasedAbsolute | PathOsBasedRelative;
        trackDir?: PathOsBased;
        originallySharedDir?: PathLinux;
        wrapDir?: PathLinux;
    }): ComponentMap;
    addFilesToComponent({ componentId, files }: {
        componentId: BitId;
        files: ComponentMapFile[];
    }): ComponentMap;
    sortValidateAndMarkAsChanged(componentMap: ComponentMap): void;
    _invalidateCache: () => void;
    _removeFromComponentsArray(componentId: BitId): void;
    removeComponent(bitId: BitId): BitId | undefined;
    removeComponents(ids: BitIds): (BitId | undefined)[];
    isExistWithSameVersion(id: BitId): boolean;
    updateComponentId(id: BitId, updateScopeOnly?: boolean): BitId;
    getComponentIdByPath(componentPath: PathLinux, caseSensitive?: boolean): BitId;
    _populateAllPaths(): void;
    getAllTrackDirs(): {
        [trackDir: string]: BitId;
    };
    updatePathLocation(from: PathOsBasedRelative, to: PathOsBasedRelative, existingPath: PathOsBasedAbsolute): PathChangeResult[];
    toObjects(): Record<string, any>;
    write(): Promise<any>;
    getContent(): Record<string, any>;
}
