import LegacyWorkspaceConfig, { WorkspaceConfigProps as LegacyWorkspaceConfigProps } from '../../consumer/config/workspace-config';
import ConsumerOverrides, { ConsumerOverridesOfComponent } from '../../consumer/config/consumer-overrides';
import { PathOsBased, PathOsBasedAbsolute } from '../../utils/path';
import { AbstractVinyl } from '../../consumer/component/sources';
import { ILegacyWorkspaceConfig, ExtensionConfigList } from '../../consumer/config';
import { ResolveModulesConfig } from '../../consumer/component/dependencies/files-dependency-builder/types/dependency-tree-type';
import { HostConfig } from './types';
import { BitId } from '../../bit-id';
export declare type ComponentsConfigFn = () => ConsumerOverrides;
export declare type ComponentConfigFn = (componentId: BitId) => ConsumerOverridesOfComponent | undefined;
export declare type LegacyInitProps = {
    standAlone?: boolean;
};
export declare type WorkspaceConfigFileProps = {
    $schema?: string;
    $schemaVersion?: string;
} & ExtensionsDefs;
export declare type ComponentScopeDirMapEntry = {
    defaultScope?: string;
    directory: string;
};
export declare type ComponentScopeDirMap = Array<ComponentScopeDirMapEntry>;
export declare type WorkspaceExtensionProps = {
    defaultOwner?: string;
    defaultScope?: string;
    defaultDirectory?: string;
    components?: ComponentScopeDirMap;
};
export declare type PackageManagerClients = 'npm' | 'yarn' | undefined;
export interface DependencyResolverExtensionProps {
    packageManager: PackageManagerClients;
    strictPeerDependencies?: boolean;
    extraArgs?: string[];
    packageManagerProcessOptions?: any;
    useWorkspaces?: boolean;
    manageWorkspaces?: boolean;
}
export declare type WorkspaceSettingsNewProps = {
    '@teambit/workspace': WorkspaceExtensionProps;
    '@teambit/dependency-resolver': DependencyResolverExtensionProps;
};
export declare type WorkspaceLegacyProps = {
    dependenciesDirectory?: string;
    bindingPrefix?: string;
    resolveModules?: ResolveModulesConfig;
    saveDependenciesAsComponents?: boolean;
    distEntry?: string;
    distTarget?: string;
};
export declare type ExtensionsDefs = WorkspaceSettingsNewProps;
export declare class WorkspaceConfig implements HostConfig {
    private data?;
    private legacyConfig?;
    _path?: string;
    _extensions: ExtensionsDefs;
    _legacyProps?: WorkspaceLegacyProps;
    _getVariantsConfig?: ComponentsConfigFn;
    _getVariantConfig?: ComponentConfigFn;
    isLegacy: boolean;
    constructor(data?: WorkspaceConfigFileProps | undefined, legacyConfig?: LegacyWorkspaceConfig | undefined);
    get path(): PathOsBased;
    set path(configPath: PathOsBased);
    get extensions(): ExtensionConfigList;
    extension(extensionId: string, ignoreVersion: boolean): any;
    registerGetVariantsConfig(fn: ComponentsConfigFn): void;
    registerGetVariantConfig(fn: ComponentConfigFn): void;
    getVariantsConfig(): ConsumerOverrides | undefined;
    getVariantConfig(componentId: BitId): ConsumerOverridesOfComponent | undefined;
    static fromLegacyConfig(legacyConfig: any): WorkspaceConfig;
    static fromObject(data: WorkspaceConfigFileProps): WorkspaceConfig;
    static create(props: WorkspaceConfigFileProps, dirPath?: PathOsBasedAbsolute, legacyInitProps?: LegacyInitProps): Promise<WorkspaceConfig>;
    static ensure(dirPath: PathOsBasedAbsolute, workspaceConfigProps?: WorkspaceConfigFileProps, legacyInitProps?: LegacyInitProps): Promise<WorkspaceConfig>;
    static onLegacyEnsure(dirPath: PathOsBasedAbsolute, standAlone: boolean, legacyWorkspaceConfigProps?: LegacyWorkspaceConfigProps): Promise<WorkspaceConfig>;
    static reset(dirPath: PathOsBasedAbsolute, resetHard: boolean): Promise<void>;
    static composeWorkspaceJsoncPath(dirPath: PathOsBased): PathOsBased;
    static pathHasWorkspaceJsonc(dirPath: PathOsBased): Promise<boolean>;
    static isExist(dirPath: PathOsBased): Promise<boolean | undefined>;
    static loadIfExist(dirPath: PathOsBased): Promise<WorkspaceConfig | undefined>;
    static _loadFromWorkspaceJsonc(workspaceJsoncPath: PathOsBased): Promise<WorkspaceConfig>;
    write({ workspaceDir }: {
        workspaceDir: PathOsBasedAbsolute;
    }): Promise<void>;
    toVinyl(workspaceDir: PathOsBasedAbsolute): Promise<AbstractVinyl[] | undefined>;
    _legacyPlainObject(): {
        [prop: string]: any;
    } | undefined;
    toLegacy(): ILegacyWorkspaceConfig;
}
export declare function transformLegacyPropsToExtensions(legacyConfig: LegacyWorkspaceConfig | LegacyWorkspaceConfigProps): ExtensionsDefs;
