import { BitIds, BitId } from '../../bit-id';
import { Consumer } from '..';
import PackageJsonFile from '../component/package-json-file';
import Component from '../component/consumer-component';
export declare type EjectResults = {
    ejectedComponents: BitIds;
    failedComponents: FailedComponents;
};
declare type FailedComponents = {
    modifiedComponents: BitIds;
    stagedComponents: BitIds;
    notExportedComponents: BitIds;
    selfHostedExportedComponents: BitIds;
};
export default class EjectComponents {
    consumer: Consumer;
    componentsIds: BitId[];
    force: boolean;
    componentsToEject: BitIds;
    notEjectedDependents: Array<{
        dependent: Component;
        ejectedDependencies: Component[];
    }>;
    failedComponents: FailedComponents;
    packageJsonFilesBeforeChanges: PackageJsonFile[];
    constructor(consumer: Consumer, componentsIds: BitId[], force?: boolean);
    eject(): Promise<EjectResults>;
    findNonEjectedDependents(): Promise<void>;
    loadPackageJsonFilesForPotentialRollBack(): Promise<void>;
    decideWhichComponentsToEject(): Promise<void>;
    removeComponentsFromPackageJsonAndNodeModules(): Promise<void>;
    addComponentsAsPackagesToPackageJsonFiles(): Promise<void>;
    installPackagesUsingNPMClient(): Promise<void>;
    rollBack(action: string): Promise<void>;
    _buildExceptionMessageWithRollbackData(action: string): string;
    removeComponents(): Promise<void>;
    removeLocalComponents(): Promise<void>;
    throwEjectError(message: string, originalError: Error): void;
    _validateIdsHaveScopesAndVersions(): void;
}
export {};
