import BaseExtension from './base-extension';
import Scope from '../scope/scope';
import { EnvType, EnvLoadArgsProps, EnvExtensionProps, EnvExtensionModel, EnvExtensionSerializedModel } from './env-extension-types';
import { EnvExtensionObject } from '../consumer/config/abstract-config';
import { ComponentWithDependencies } from '../scope';
import { ComponentOrigin } from '../consumer/bit-map/component-map';
import ConsumerComponent from '../consumer/component';
import ComponentConfig, { ILegacyWorkspaceConfig } from '../consumer/config';
import DataToPersist from '../consumer/component/sources/data-to-persist';
import ComponentOverrides from '../consumer/config/component-overrides';
export declare type EnvPackages = {
    dependencies?: Record<string, any>;
    devDependencies?: Record<string, any>;
    peerDependencies?: Record<string, any>;
};
export default class EnvExtension extends BaseExtension {
    envType: EnvType;
    dynamicPackageDependencies: Record<string, any> | undefined;
    dataToPersist: DataToPersist;
    get action(): Function | undefined;
    get oldAction(): Function | null | undefined;
    constructor(extensionProps: EnvExtensionProps);
    install(scope: Scope, opts: {
        verbose: boolean;
        dontPrintEnvMsg?: boolean;
    }, context?: Record<string, any>): Promise<ComponentWithDependencies[] | null | undefined>;
    toModelObject(): EnvExtensionModel;
    toObject(): Record<string, any>;
    toBitJsonObject(): {
        [key: string]: EnvExtensionObject;
    };
    reload(scopePath: string, context?: Record<string, any>): Promise<void>;
    static load(props: EnvLoadArgsProps): Promise<EnvExtensionProps>;
    static loadDynamicPackageDependencies(envExtensionProps: EnvExtensionProps): EnvPackages | undefined;
    static loadDynamicConfig(envExtensionProps: EnvExtensionProps): Record<string, any> | null | undefined;
    static loadFromModelObject(modelObject: EnvExtensionModel & {
        envType: EnvType;
    }): Promise<EnvExtensionProps>;
    static loadFromSerializedModelObject(modelObject: EnvExtensionSerializedModel & {
        envType: EnvType;
    }): Promise<EnvExtensionProps>;
    static loadFromCorrectSource({ consumerPath, scopePath, componentOrigin, componentFromModel, componentConfig, overrides, workspaceConfig, envType, context }: {
        consumerPath: string;
        scopePath: string;
        componentOrigin: ComponentOrigin;
        componentFromModel: ConsumerComponent;
        componentConfig: ComponentConfig | undefined;
        overrides: ComponentOverrides;
        workspaceConfig: ILegacyWorkspaceConfig;
        envType: EnvType;
        context?: Record<string, any>;
    }): Promise<EnvExtension | null | undefined>;
    static areEnvsDifferent(envModelA: EnvExtensionModel | null | undefined, envModelB: EnvExtensionModel | null | undefined): boolean;
}
