import type { ProxyConfig } from '../types.js'; export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun'; export interface LatestInfo { version: string; enginesNode?: string; } export interface UpdateNotice { current: string; latest: string; /** 当新版本要求的 Node 版本高于当前运行版本时,给出最低要求版本(如 "18.0.0")。 */ requiredNode?: string; } /** ab → 1,相等 → 0。忽略预发布后缀(取 '-'/'+' 之前的核心部分)。 */ export declare function compareSemver(a: string, b: string): number; /** 从 engines.node(如 ">=16.0.0"、"^18 || >=20")解析出最低要求版本号。 */ export declare function parseMinNode(engines?: string): string | null; /** 当前 Node 是否满足最低要求版本。 */ export declare function nodeSatisfies(current: string, required: string): boolean; /** 依据可执行文件所在路径推断全局安装来源的包管理器;无法判断时回退 npm。 */ export declare function detectPackageManager(modulePath: string): PackageManager; /** 返回某包管理器的全局升级命令(argv 形式)。 */ export declare function upgradeCommand(pm: PackageManager): string[]; /** 跨平台探测某命令是否存在于 PATH。 */ export declare function commandExists(cmd: string): boolean; /** 查询 npm registry 最新版本与其 Node 引擎要求。任何错误都返回 null(绝不抛)。 */ export declare function fetchLatest(proxy?: ProxyConfig, timeoutMs?: number): Promise; export interface CheckOptions { current: string; proxy?: ProxyConfig; timeout?: number; intervalMs?: number; } /** * 节流式检查更新:距上次检查不足 interval 时仅用本地缓存判断、不发网络请求; * 否则查询 registry 并写回状态。无更新或出错返回 null。 */ export declare function checkForUpdate(opts: CheckOptions): Promise; export interface RunUpdateOptions { current: string; proxy?: ProxyConfig; timeout?: number; /** 仅打印将执行的命令、不真正运行(便于自测/CI)。 */ dryRun?: boolean; /** 用于检测包管理器的路径;默认取被执行脚本路径(全局 bin 路径含 PM 标记)。 */ modulePath?: string; } export interface RunUpdateResult { status: 'latest' | 'upgraded' | 'node-too-old' | 'pm-missing' | 'failed' | 'check-failed'; current: string; latest?: string; requiredNode?: string; packageManager?: PackageManager; command?: string; } /** * `dict -u` 主流程:查询最新版 → 已最新则返回 latest;否则检测包管理器、 * 校验 Node 版本与包管理器可用性,最后执行(或 dryRun 打印)全局升级命令。 * 返回结构化结果,由 CLI 负责呈现,便于测试。 */ export declare function runUpdate(opts: RunUpdateOptions): Promise;