import type { CLIMain } from '@teambit/cli';
import type { Logger, LoggerMain } from '@teambit/logger';
import type { Workspace } from '@teambit/workspace';
import type { RemoveMain } from '@teambit/remove';
import type { ApplyVersionResults, MergeStrategy } from '@teambit/component.modules.merge-helper';
import type { ImporterMain } from '@teambit/importer';
import type { ListerMain } from '@teambit/lister';
import type { ComponentWriterMain } from '@teambit/component-writer';
import { ComponentID } from '@teambit/component-id';
import type { Lane } from '@teambit/objects';
import { ModelComponent } from '@teambit/objects';
import type { ComponentStatusBase } from './checkout-version';
import type { ComponentMap } from '@teambit/legacy.bit-map';
export type CheckoutProps = {
    version?: string;
    ids?: ComponentID[];
    head?: boolean;
    ancestor?: number;
    latest?: boolean;
    main?: boolean;
    promptMergeOptions?: boolean;
    mergeStrategy?: MergeStrategy;
    forceOurs?: boolean;
    forceTheirs?: boolean;
    verbose?: boolean;
    skipNpmInstall?: boolean;
    reset?: boolean;
    revert?: boolean;
    all?: boolean;
    isLane?: boolean;
    lane?: Lane;
    workspaceOnly?: boolean;
    versionPerId?: ComponentID[];
    skipUpdatingBitmap?: boolean;
    loadStash?: boolean;
    stashedBitmapEntries?: Array<Partial<ComponentMap>>;
    restoreMissingComponents?: boolean;
    allowAddingComponentsFromScope?: boolean;
    includeLocallyDeleted?: boolean;
    includeNewFromScope?: boolean;
};
export type ComponentStatusBeforeMergeAttempt = ComponentStatusBase & {
    propsForMerge?: {
        currentlyUsedVersion: string;
        componentModel: ModelComponent;
    };
};
export declare class CheckoutMain {
    private workspace;
    private logger;
    private componentWriter;
    private importer;
    private remove;
    private lister;
    constructor(workspace: Workspace, logger: Logger, componentWriter: ComponentWriterMain, importer: ImporterMain, remove: RemoveMain, lister: ListerMain);
    checkout(checkoutProps: CheckoutProps): Promise<ApplyVersionResults>;
    /**
     * if .bitmap entry exists but the rootDir is missing from the filesystem, find the component in the scope and restore it.
     * returns the restored component ids.
     */
    restoreMissingComponents(checkoutProps: CheckoutProps): Promise<ComponentID[] | undefined>;
    addNewComponents(checkoutProps: CheckoutProps): Promise<undefined | ComponentID[]>;
    checkoutByCLIValues(componentPattern: string, checkoutProps: CheckoutProps): Promise<ApplyVersionResults>;
    private syncNewComponents;
    private makeLaneComponentsAvailableOnMain;
    private ensureCheckoutConfiguration;
    private parseValues;
    private getNewComponentsFromLane;
    private getNewComponentsFromScope;
    private getComponentStatusBeforeMergeAttempt;
    private getMergeStatus;
    static slots: never[];
    static dependencies: import("@teambit/harmony").Aspect[];
    static runtime: import("@teambit/harmony").RuntimeDefinition;
    static provider([cli, workspace, loggerMain, compWriter, importer, remove, lister]: [
        CLIMain,
        Workspace,
        LoggerMain,
        ComponentWriterMain,
        ImporterMain,
        RemoveMain,
        ListerMain
    ]): Promise<CheckoutMain>;
}
export default CheckoutMain;
