export declare enum AutoUpdatePackageManager {
    NPM = "npm",
    PNPM = "pnpm",
    YARN = "yarn",
    BUN = "bun",
    NPX = "npx",
    LOCAL = "local",
    UNKNOWN = "unknown"
}
interface AutoUpdateInstallCommand {
    command: string;
    args: string[];
}
interface AutoUpdateInstallationInfo {
    packageManager: AutoUpdatePackageManager;
    npmTag: string;
    updateCommand: AutoUpdateInstallCommand | null;
    updateTiming: "startup" | "shutdown";
}
interface FetchLatestVersionInput {
    packageName: string;
    npmTag: string;
}
export interface AutoUpdateStartupOptions {
    currentVersion: string;
    packageName?: string;
    env?: NodeJS.ProcessEnv;
    argv?: string[];
    cwd?: string;
    resolveRealPath?: (path: string) => string;
    fetchLatestVersion?: (input: FetchLatestVersionInput) => Promise<string | null>;
    spawnUpdate?: (command: string, args: string[]) => void;
    scheduleShutdownUpdate?: (update: PendingShutdownAutoUpdate) => void;
}
interface PendingShutdownAutoUpdate {
    command: string;
    args: string[];
    latestVersion: string;
}
export declare function compareVersions(leftVersion: string, rightVersion: string): number;
export declare function detectAutoUpdateInstallation(options: {
    currentVersion: string;
    packageName: string;
    entrypointPath: string;
    cwd: string;
}): AutoUpdateInstallationInfo;
export declare function runPendingAutoUpdateOnShutdown(options?: {
    spawnUpdate?: (command: string, args: string[]) => void;
    log?: (message: string) => void;
}): void;
export declare function runAutoUpdateCheck(options: AutoUpdateStartupOptions): Promise<void>;
export declare function autoUpdateOnStartup(options: AutoUpdateStartupOptions): void;
export {};
//# sourceMappingURL=auto-update.d.ts.map