import { InstallOptions } from "./commands";
import { JsrPackage } from "./utils";
export interface PackageManager {
    cwd: string;
    install(packages: JsrPackage[], options: InstallOptions): Promise<void>;
    remove(packages: JsrPackage[]): Promise<void>;
    runScript(script: string): Promise<void>;
    setConfigValue?(key: string, value: string): Promise<void>;
}
declare class Yarn implements PackageManager {
    cwd: string;
    constructor(cwd: string);
    install(packages: JsrPackage[], options: InstallOptions): Promise<void>;
    remove(packages: JsrPackage[]): Promise<void>;
    runScript(script: string): Promise<void>;
}
export declare class YarnBerry extends Yarn {
    install(packages: JsrPackage[], options: InstallOptions): Promise<void>;
    /**
     * Calls the `yarn config set` command, https://yarnpkg.com/cli/config/set.
     */
    setConfigValue(key: string, value: string): Promise<void>;
    private toPackageArgs;
}
export declare class Bun implements PackageManager {
    cwd: string;
    constructor(cwd: string);
    install(packages: JsrPackage[], options: InstallOptions): Promise<void>;
    remove(packages: JsrPackage[]): Promise<void>;
    runScript(script: string): Promise<void>;
    isNpmrcSupported(): Promise<boolean>;
}
export type PkgManagerName = "npm" | "yarn" | "pnpm" | "bun";
export declare function getPkgManager(cwd: string, pkgManagerName: PkgManagerName | null): Promise<{
    root: string;
    pkgManager: PackageManager;
}>;
export {};
