import { SlotRegistry } from '@teambit/harmony';
import { ScopeExtension } from '../scope';
import { Packer, PackResult, PackOptions } from './pack';
import { ExtensionDataList } from '../../consumer/config/extension-data';
import { Environments } from '../environments';
import { CLIExtension } from '../cli';
import { IsolatorExtension } from '../isolator';
export interface PackageJsonProps {
    [key: string]: any;
}
export declare type PackageJsonPropsRegistry = SlotRegistry<PackageJsonProps>;
export declare type PkgExtensionConfig = {};
export declare type ComponentPkgExtensionConfig = {
    packageJson: Record<string, any>;
};
export declare class PkgExtension {
    readonly config: PkgExtensionConfig;
    private packageJsonPropsRegistry;
    private packer;
    private envs;
    static id: string;
    static dependencies: (typeof Environments | typeof CLIExtension | typeof IsolatorExtension | typeof ScopeExtension)[];
    static slots: ((registerFn: () => string) => SlotRegistry<PackageJsonProps>)[];
    static defaultConfig: {};
    static provider([cli, scope, envs, isolator]: [CLIExtension, ScopeExtension, Environments, IsolatorExtension], config: PkgExtensionConfig, [packageJsonPropsRegistry]: [PackageJsonPropsRegistry]): PkgExtension;
    constructor(config: PkgExtensionConfig, packageJsonPropsRegistry: PackageJsonPropsRegistry, packer: Packer, envs: Environments);
    registerPackageJsonNewProps(props: PackageJsonProps): void;
    packComponent(componentId: string, scopePath: string | undefined, options: PackOptions): Promise<PackResult>;
    mergePackageJsonProps(configuredExtensions: ExtensionDataList): Promise<PackageJsonProps>;
}
