import type { SpawnSyncOptionsWithStringEncoding, SpawnSyncReturns } from 'node:child_process';
type PackageManagerName = 'bun' | 'npm' | 'pnpm' | 'yarn';
export type SupportedPlatform = 'darwin' | 'linux' | 'unknown' | 'win32';
export interface PackageManagerInstallPlan {
    command?: string;
    manualInstructions: string[];
    packageManager: PackageManagerName;
    platform: SupportedPlatform;
    supported: boolean;
}
export interface PackageManagerInstallContext {
    cwd?: string;
    operation: string;
    platform?: SupportedPlatform;
}
export declare function isPackageManagerInstalled(pm: PackageManagerName): boolean;
export declare function getPackageManagerInstallPlan(pm: PackageManagerName, platform?: SupportedPlatform): PackageManagerInstallPlan;
export declare function didEnsurePackageManagerInstalled(pm: PackageManagerName, context: PackageManagerInstallContext): boolean;
export interface PackageManagerStringSpawnOptions extends Omit<SpawnSyncOptionsWithStringEncoding, 'encoding'> {
    context: PackageManagerInstallContext;
    encoding?: BufferEncoding;
}
export declare function spawnPackageManagerSync(pm: PackageManagerName, args: string[], options: PackageManagerStringSpawnOptions): SpawnSyncReturns<string>;
export {};
//# sourceMappingURL=packageManagerRuntime.d.ts.map