import ComponentConfig from '../config';
import { Dist, License, SourceFile } from '../component/sources';
import Consumer from '../consumer';
import BitId from '../../bit-id/bit-id';
import Scope from '../../scope/scope';
import BitIds from '../../bit-id/bit-ids';
import { Doclet } from '../../jsdoc/types';
import SpecsResults from '../specs-results';
import { EjectConfResult, EjectConfData } from '../component-ops/eject-conf';
import IsolatedEnvironment from '../../environment/environment';
import { Log } from '../../scope/models/version';
import { ScopeListItem } from '../../scope/models/model-component';
import BitMap from '../bit-map';
import ComponentMap from '../bit-map/component-map';
import { ComponentOrigin } from '../bit-map/component-map';
import CompilerExtension from '../../legacy-extensions/compiler-extension';
import TesterExtension from '../../legacy-extensions/tester-extension';
import { EnvType } from '../../legacy-extensions/env-extension-types';
import ComponentWithDependencies from '../../scope/component-dependencies';
import { Dependency, Dependencies } from './dependencies';
import Dists from './sources/dists';
import { PathLinux, PathOsBased, PathOsBasedAbsolute, PathOsBasedRelative } from '../../utils/path';
import Version from '../../version';
import { ManipulateDirItem } from '../component-ops/manipulate-dir';
import DataToPersist from './sources/data-to-persist';
import { ManuallyChangedDependencies } from './dependencies/dependency-resolver/overrides-dependencies';
import ComponentOverrides from '../config/component-overrides';
import PackageJsonFile from './package-json-file';
import { IsolateOptions } from '../../environment/isolator';
import { Issues } from './dependencies/dependency-resolver/dependencies-resolver';
import { ExtensionDataList } from '../config/extension-data';
export declare type CustomResolvedPath = {
    destinationPath: PathLinux;
    importSource: string;
};
export declare type InvalidComponent = {
    id: BitId;
    error: Error;
    component: Component | undefined;
};
export declare type ComponentProps = {
    name: string;
    version?: string;
    scope?: string | null;
    lang?: string;
    bindingPrefix?: string;
    mainFile: PathOsBased;
    compiler?: CompilerExtension;
    tester: TesterExtension;
    bitJson?: ComponentConfig;
    dependencies?: Dependency[];
    devDependencies?: Dependency[];
    flattenedDependencies?: BitIds;
    flattenedDevDependencies?: BitIds;
    packageDependencies?: Record<string, any>;
    devPackageDependencies?: Record<string, any>;
    peerPackageDependencies?: Record<string, any>;
    compilerPackageDependencies?: Record<string, any>;
    testerPackageDependencies?: Record<string, any>;
    customResolvedPaths?: CustomResolvedPath[];
    overrides: ComponentOverrides;
    defaultScope: string | null;
    packageJsonFile?: PackageJsonFile;
    packageJsonChangedProps?: {
        [key: string]: any;
    };
    files: SourceFile[];
    docs?: Doclet[];
    dists?: Dist[];
    mainDistFile?: PathLinux;
    specsResults?: SpecsResults;
    license?: License;
    deprecated?: boolean;
    origin: ComponentOrigin;
    log?: Log;
    scopesList?: ScopeListItem[];
    extensions: ExtensionDataList;
    extensionsAddedConfig: any;
    componentFromModel?: Component;
};
export default class Component {
    static registerAddConfigAction(extId: any, func: (extensions: ExtensionDataList) => any): void;
    static registerOnComponentConfigLoading(extId: any, func: (id: any, config: any) => any): void;
    static registerOnComponentOverridesLoading(extId: any, func: (id: any, config: any) => any): void;
    name: string;
    version: string | undefined;
    scope: string | null | undefined;
    lang: string;
    bindingPrefix: string;
    mainFile: PathOsBased;
    compiler: CompilerExtension | undefined;
    tester: TesterExtension | undefined;
    bitJson: ComponentConfig | undefined;
    dependencies: Dependencies;
    devDependencies: Dependencies;
    flattenedDependencies: BitIds;
    flattenedDevDependencies: BitIds;
    packageDependencies: any;
    devPackageDependencies: any;
    peerPackageDependencies: any;
    compilerPackageDependencies: Record<string, any>;
    testerPackageDependencies: Record<string, any>;
    manuallyRemovedDependencies: ManuallyChangedDependencies;
    manuallyAddedDependencies: ManuallyChangedDependencies;
    overrides: ComponentOverrides;
    docs: Doclet[] | undefined;
    files: SourceFile[];
    dists: Dists;
    specsResults: SpecsResults[] | undefined;
    license: License | undefined;
    log: Log | undefined;
    writtenPath?: PathOsBasedRelative;
    dependenciesSavedAsComponents: boolean | undefined;
    originallySharedDir: PathLinux | undefined;
    _wasOriginallySharedDirStripped: boolean | undefined;
    wrapDir: PathLinux | undefined;
    loadedFromFileSystem: boolean;
    componentMap: ComponentMap | undefined;
    componentFromModel: Component | undefined;
    isolatedEnvironment: IsolatedEnvironment;
    issues?: Issues;
    deprecated: boolean;
    defaultScope: string | null;
    origin: ComponentOrigin;
    customResolvedPaths: CustomResolvedPath[];
    _isModified: boolean;
    packageJsonFile: PackageJsonFile | undefined;
    packageJsonChangedProps: Record<string, any> | undefined;
    _currentlyUsedVersion: BitId;
    pendingVersion: Version;
    dataToPersist: DataToPersist;
    scopesList: ScopeListItem[] | undefined;
    extensions: ExtensionDataList;
    extensionsAddedConfig: any;
    _capsuleDir?: string;
    get id(): BitId;
    constructor({ name, version, scope, files, lang, bindingPrefix, mainFile, compiler, tester, bitJson, dependencies, devDependencies, flattenedDependencies, flattenedDevDependencies, packageDependencies, devPackageDependencies, peerPackageDependencies, compilerPackageDependencies, testerPackageDependencies, componentFromModel, overrides, defaultScope, packageJsonFile, packageJsonChangedProps, docs, dists, mainDistFile, specsResults, license, log, deprecated, origin, customResolvedPaths, scopesList, extensions, extensionsAddedConfig }: ComponentProps);
    validateComponent(): void;
    clone(): Component;
    getTmpFolder(workspacePrefix?: PathOsBased): PathOsBased;
    setDependencies(dependencies?: Dependency[]): void;
    setDevDependencies(devDependencies?: Dependency[]): void;
    setDists(dists: Dist[] | undefined, mainDistFile?: PathOsBased | undefined): void;
    getFileExtension(): string;
    getDetachedCompiler(consumer: Consumer | undefined): Promise<boolean>;
    getDetachedTester(consumer: Consumer | undefined): Promise<boolean>;
    _isEnvDetach(consumer: Consumer | undefined, envType: EnvType): Promise<boolean>;
    _getHomepage(): string | undefined;
    writeConfig(consumer: Consumer): Promise<EjectConfResult>;
    getConfigToWrite(consumer: Consumer, bitMap: BitMap): Promise<EjectConfData>;
    injectConfig(consumerPath: PathOsBased, bitMap: BitMap, force?: boolean | undefined): Promise<EjectConfResult>;
    get extensionDependencies(): Dependencies;
    getAllDependencies(): Dependency[];
    getAllDependenciesCloned(): Dependencies;
    getAllNonEnvsDependencies(): Dependency[];
    getAllDependenciesIds(): BitIds;
    get depsIdsGroupedByType(): {
        dependencies: BitIds;
        devDependencies: BitIds;
        extensionDependencies: BitIds;
    };
    hasDependencies(): boolean;
    getAllFlattenedDependencies(): BitId[];
    getAllNonEnvsFlattenedDependencies(): BitId[];
    stripOriginallySharedDir(manipulateDirData: ManipulateDirItem[]): void;
    get ignoreSharedDir(): boolean;
    addWrapperDir(manipulateDirData: ManipulateDirItem[]): void;
    addSharedDir(pathStr: string): PathLinux;
    cloneFilesWithSharedDir(): SourceFile[];
    build({ scope, save, consumer, noCache, verbose, dontPrintEnvMsg, directory, keep }: {
        scope: Scope;
        save?: boolean;
        consumer?: Consumer;
        noCache?: boolean;
        directory?: string;
        verbose?: boolean;
        dontPrintEnvMsg?: boolean;
        keep?: boolean;
    }): Promise<Dists | undefined>;
    runSpecs({ scope, rejectOnFailure, consumer, save, verbose, dontPrintEnvMsg, isolated, directory, keep }: {
        scope: Scope;
        rejectOnFailure?: boolean;
        consumer?: Consumer;
        save?: boolean;
        verbose?: boolean;
        dontPrintEnvMsg?: boolean;
        isolated?: boolean;
        directory?: string;
        keep?: boolean;
    }): Promise<SpecsResults | undefined>;
    isolate(scope: Scope, opts: IsolateOptions): Promise<string>;
    toObject(): Record<string, any>;
    toString(): string;
    copyFilesIntoDists(): void;
    setOriginallySharedDir(manipulateDirData: ManipulateDirItem[]): void;
    static isComponentInvalidByErrorType(err: Error): boolean;
    toComponentWithDependencies(consumer: Consumer): Promise<ComponentWithDependencies>;
    recalculateDocs(): Promise<void>;
    copyAllDependenciesFromModel(): void;
    static fromObject(object: Record<string, any>): Component;
    static fromString(str: string): Component;
    static loadFromFileSystem({ bitDir, componentMap, id, consumer }: {
        bitDir: PathOsBasedAbsolute;
        componentMap: ComponentMap;
        id: BitId;
        consumer: Consumer;
    }): Promise<Component>;
}
