import { SlotRegistry } from '@teambit/harmony';
import { DependenciesPolicy, DependencyResolverWorkspaceConfig, installOpts } from './types';
import { ExtensionDataList } from '../../consumer/config/extension-data';
import { Environments } from '../environments';
import { Logger } from '../logger';
import PackageManager from './package-manager';
import { Capsule } from '../isolator';
export declare type PoliciesRegistry = SlotRegistry<DependenciesPolicy>;
export declare class DependencyResolverExtension {
    readonly config: DependencyResolverWorkspaceConfig;
    private packageManager;
    private policiesRegistry;
    private envs;
    static id: string;
    static dependencies: (typeof Environments | typeof Logger)[];
    static slots: ((registerFn: () => string) => SlotRegistry<DependenciesPolicy>)[];
    static defaultConfig: DependencyResolverWorkspaceConfig;
    static provider([envs, logger]: [Environments, Logger], config: DependencyResolverWorkspaceConfig, [policiesRegistry]: [PoliciesRegistry]): Promise<DependencyResolverExtension>;
    constructor(config: DependencyResolverWorkspaceConfig, packageManager: PackageManager, policiesRegistry: PoliciesRegistry, envs: Environments);
    get packageManagerName(): string;
    registerDependenciesPolicies(policy: DependenciesPolicy): void;
    capsulesInstall(capsules: Capsule[], opts?: installOpts): Promise<null>;
    folderInstall(folder: string, opts?: installOpts): Promise<null>;
    mergeDependencies(configuredExtensions: ExtensionDataList): Promise<DependenciesPolicy>;
}
