import { IImperativeConfig } from "../../../doc/IImperativeConfig";
import { IProfileTypeConfiguration } from "../../../../../profiles";
import { IExtendersJsonOpts } from "../../../../../config/src/doc/IExtenderOpts";
import { INpmRegistryInfo } from "../../doc/INpmRegistryInfo";
export declare const updateExtendersJson: (extendersJson: IExtendersJsonOpts, packageInfo: {
    name: string;
    version: string;
}, profile: IProfileTypeConfiguration) => boolean;
/**
 * Common function that abstracts the install process. This function should be called for each
 * package that needs to be installed. (ex: `sample-cli plugin install a b c d` -> calls install 4
 * times)
 *
 * @TODO work needs to be done to support proper sharing of the plugins.json. As of now local plugins can only be reinstalled on the same machine.
 * (due to how the conversion to an absolute URI happens)
 *
 * @param {string} packageLocation A package name or location. This value can be a valid npm package
 *                                 name or the location of an npm tar file or project folder. Also,
 *                                 git URLs are also acceptable here (basically anything that `npm
 *                                 install` supports). If this parameter is a relative path, it will
 *                                 be converted to an absolute path prior to being passed to the
 *                                 `npm install` command.
 *
 * @param {INpmRegistryInfo} registryInfo The npm registry to use.
 *
 * @param {boolean} [installFromFile=false] If installing from a file, the package location is
 *                                          automatically interpreted as an absolute location.
 *                                          It is assumed that the plugin.json file was previously
 *                                          generated by this function which always ensures an
 *                                          absolute path. Also, if this is true, we will not update
 *                                          the plugins.json file since we are not adding/modifying
 *                                          it.
 * @returns {string} The name of the plugin.
 */
export declare function install(packageLocation: string, registryInfo: INpmRegistryInfo, installFromFile?: boolean, verbose?: boolean): Promise<string>;
/**
 * Call a plugin's lifecycle hook to enable a plugin to take some action
 * after the plugin has been installed.
 *
 * @param pluginPackageNm The package name of the plugin being installed.
 * @param pluginImpConfig The imperative configuration for this plugin.
 *
 * @throws ImperativeError.
 */
declare function callPluginPostInstall(pluginPackageNm: string, pluginImpConfig: IImperativeConfig): Promise<void>;
export declare const onlyForTesting: {
    callPluginPostInstall: typeof callPluginPostInstall;
};
export {};
//# sourceMappingURL=install.d.ts.map