import { BitIds, BitId } from '../../bit-id';
import { ExtensionOptions } from '../../legacy-extensions/extension';
import { EnvExtensionOptions, EnvType } from '../../legacy-extensions/env-extension-types';
import { PathOsBased, PathLinux, PathOsBasedAbsolute, PathOsBasedRelative } from '../../utils/path';
import { AbstractVinyl } from '../component/sources';
import { ExtensionDataList } from './extension-data';
export declare type RegularExtensionObject = {
    rawConfig: Record<string, any>;
    options: ExtensionOptions;
};
export declare type EnvFile = {
    [key: string]: PathLinux;
};
export declare type EnvExtensionObject = {
    rawConfig: Record<string, any>;
    options: EnvExtensionOptions;
    files: string[];
};
export declare type TesterExtensionObject = EnvExtensionObject;
export declare type CompilerExtensionObject = EnvExtensionObject;
export declare type Envs = {
    [envName: string]: EnvExtensionObject;
};
export declare type Compilers = {
    [compilerName: string]: CompilerExtensionObject;
};
export declare type Testers = {
    [testerName: string]: TesterExtensionObject;
};
export declare type AbstractConfigProps = {
    compiler?: string | Compilers;
    tester?: string | Testers;
    dependencies?: Record<string, any>;
    devDependencies?: Record<string, any>;
    compilerDependencies?: Record<string, any>;
    testerDependencies?: Record<string, any>;
    lang?: string;
    bindingPrefix?: string;
    extensions?: ExtensionDataList;
};
export default class AbstractConfig {
    path: string;
    _compiler: Compilers | string;
    _tester: Testers | string;
    dependencies: {
        [key: string]: string;
    };
    devDependencies: {
        [key: string]: string;
    };
    compilerDependencies: {
        [key: string]: string;
    };
    testerDependencies: {
        [key: string]: string;
    };
    lang: string;
    bindingPrefix: string;
    extensions: ExtensionDataList;
    writeToPackageJson: boolean;
    writeToBitJson: boolean;
    constructor(props: AbstractConfigProps);
    get compiler(): Compilers | undefined;
    setCompiler(compiler: string | Compilers): void;
    get tester(): Testers | undefined;
    setTester(tester: string | Testers): void;
    addDependencies(bitIds: BitId[]): this;
    addDependency(bitId: BitId): this;
    hasCompiler(): boolean;
    hasTester(): boolean;
    getEnvsByType(type: EnvType): Compilers | null | undefined | Testers;
    static convertEnvToStringIfPossible(envObj: Envs | null | undefined): string | null | undefined | Envs;
    getDependencies(): BitIds;
    toPlainObject(): Record<string, any>;
    write({ workspaceDir, componentDir }: {
        workspaceDir: PathOsBasedAbsolute;
        componentDir?: PathOsBasedRelative;
    }): Promise<string[]>;
    prepareToWrite({ workspaceDir, componentDir }: {
        workspaceDir: PathOsBasedAbsolute;
        componentDir?: PathOsBasedRelative;
    }): Promise<AbstractVinyl[]>;
    toVinyl({ workspaceDir, componentDir }: {
        workspaceDir: PathOsBasedAbsolute;
        componentDir?: PathOsBasedRelative;
    }): Promise<AbstractVinyl[]>;
    static composeBitJsonPath(bitPath: PathOsBased): PathOsBased;
    static composePackageJsonPath(bitPath: PathOsBased): PathOsBased;
    static pathHasBitJson(bitPath: string): Promise<boolean>;
    static pathHasPackageJson(bitPath: string): Promise<boolean>;
    static loadJsonFileIfExist(jsonFilePath: string): Promise<Record<string, any> | null | undefined>;
    static removeIfExist(bitPath: string): Promise<boolean>;
    static transformEnvToObject(env: string | Record<string, any>): Envs;
}
