import AbstractConfig from './abstract-config';
import { Compilers, Testers } from './abstract-config';
import { PathOsBasedRelative, PathOsBasedAbsolute } from '../../utils/path';
import Component from '../component/consumer-component';
import { ComponentOverridesData } from './component-overrides';
import PackageJsonFile from '../component/package-json-file';
import { BitId } from '../../bit-id';
import { Consumer } from '..';
import { ExtensionDataList } from './extension-data';
import { ILegacyWorkspaceConfig } from './legacy-workspace-config-interface';
declare type ConfigProps = {
    lang?: string;
    compiler?: string | Compilers;
    tester?: string | Testers;
    bindingPrefix: string;
    extensions?: ExtensionDataList;
    overrides?: ComponentOverridesData;
};
declare type ConfigLoadRegistry = {
    [extId: string]: Function;
};
declare type AddConfigRegistry = {
    [extId: string]: Function;
};
export default class ComponentConfig extends AbstractConfig {
    overrides: ComponentOverridesData | null | undefined;
    componentHasWrittenConfig: boolean;
    packageJsonFile: PackageJsonFile | null | undefined;
    extensionsAddedConfig: {
        [prop: string]: any;
    } | undefined;
    static componentConfigLoadingRegistry: ConfigLoadRegistry;
    static registerOnComponentConfigLoading(extId: any, func: (id: any, config: any) => any): void;
    static addConfigRegistry: AddConfigRegistry;
    static registerAddConfigAction(extId: any, func: (extensions: ExtensionDataList) => any): void;
    constructor({ compiler, tester, lang, bindingPrefix, extensions, overrides }: ConfigProps);
    toPlainObject(): any;
    validate(bitJsonPath: string): void;
    parseExtensions(): ExtensionDataList;
    static fromPlainObject(object: Record<string, any>): ComponentConfig;
    static fromComponent(component: Component): ComponentConfig;
    mergeWithComponentData(component: Component): void;
    static mergeWithWorkspaceRootConfigs(consumer: Consumer, componentId: BitId, componentConfig: Record<string, any>, workspaceConfig: ILegacyWorkspaceConfig | undefined): ComponentConfig;
    static loadConfigFromFolder({ componentDir, workspaceDir }: {
        componentDir: PathOsBasedAbsolute | undefined;
        workspaceDir: PathOsBasedAbsolute;
    }): Promise<{
        componentHasWrittenConfig: boolean;
        config: any;
        packageJsonFile: any;
        bitJsonPath: string;
    }>;
    static load({ consumer, componentId, componentDir, workspaceDir, workspaceConfig }: {
        consumer: Consumer;
        componentId: BitId;
        componentDir: PathOsBasedRelative | undefined;
        workspaceDir: PathOsBasedRelative;
        workspaceConfig: ILegacyWorkspaceConfig;
    }): Promise<ComponentConfig>;
    static runOnLoadEvent(componentConfigLoadingRegistry: ConfigLoadRegistry, id: BitId, config: any): Promise<void>;
}
export {};
