import * as shelljs from 'shelljs';
import { ShellString } from 'shelljs';
import { AsyncCreatable } from '@salesforce/kit';
export declare type PluginShowResults = {
    versions: string[];
    'dist-tags': {
        [name: string]: string;
    };
    sfdx?: {
        publicKeyUrl: string;
        signatureUrl: string;
    };
    dist?: {
        [name: string]: string;
    };
};
declare type PluginCommandOptions = shelljs.ExecOptions & {
    npmName: string;
    commandBin: string;
    cliRoot: string;
};
declare type PluginRunOptions = shelljs.ExecOptions & {
    command: string;
    parameters: string[];
};
declare type PluginCommandResult = PluginShowResults & {
    [name: string]: string;
};
export declare class PluginCommand extends AsyncCreatable<PluginCommandOptions> {
    private options;
    private pkgPath;
    private nodeExecutable;
    private bin;
    private pkg;
    private logger;
    constructor(options: PluginCommandOptions);
    init(): Promise<void>;
    runPluginCmd(options: PluginRunOptions): PluginCommandResult | ShellString;
    private packagePath;
    /**
     * Returns the path to the defined bin file in this package's node_modules
     *
     * @private
     */
    private getBin;
    /**
     * Locate node executable and return its absolute path
     * First it tries to locate the node executable on the root path passed in
     * If not found then tries to use whatever 'node' resolves to on the user's PATH
     * If found return absolute path to the executable
     * If the node executable cannot be found, an error is thrown
     *
     * @private
     */
    private findNode;
    /**
     * Finds the bin directory in the sfdx installation root path
     *
     * @param sfdxPath
     * @private
     */
    private findSfdxBinDirs;
}
export {};
