import { ComponentID, AspectList, ResolveComponentIdFunc } from '@teambit/component';
import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
import { PathOsBasedAbsolute } from '@teambit/legacy.utils';
import { JsonVinyl } from '@teambit/component.sources';
interface ComponentConfigFileOptions {
    indent: string;
    newLine: '\r\n' | '\n' | undefined;
}
interface WriteConfigFileOptions {
    override?: boolean;
}
interface ComponentConfigFileJson {
    componentId: any;
    extensions: any;
    propagate: boolean;
    defaultScope?: string;
}
export declare class ComponentConfigFile {
    componentId: ComponentID;
    aspects: AspectList;
    private componentDir;
    propagate: boolean;
    private options;
    defaultScope?: string | undefined;
    constructor(componentId: ComponentID, aspects: AspectList, componentDir: PathOsBasedAbsolute, propagate?: boolean, options?: ComponentConfigFileOptions, defaultScope?: string | undefined);
    static load(componentDir: PathOsBasedAbsolute, aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>, outsideDefaultScope?: string): Promise<ComponentConfigFile | undefined>;
    static composePath(componentRootFolder: string): string;
    toVinylFile(options?: WriteConfigFileOptions): Promise<JsonVinyl>;
    write(options?: WriteConfigFileOptions): Promise<void>;
    addAspect(aspectId: string, config: any, resolveComponentId: ResolveComponentIdFunc, shouldMergeConfig?: boolean): Promise<void>;
    removeAspect(aspectId: string, markWithMinusIfNotExist: boolean, resolveComponentId: ResolveComponentIdFunc): Promise<void>;
    private aspectEntryFromConfigObject;
    toJson(): ComponentConfigFileJson;
}
export {};
