/**
 * pid-file.ts — PID 文件读写模块
 *
 * Master 进程启动时将自身 PID 写入文件，
 * CLI 命令（vext stop / vext reload / vext status）通过读取 PID 文件
 * 定位 Master 进程并发送信号。
 *
 * PID 文件生命周期：
 *   1. Master 启动 → writePidFile()  写入 PID
 *   2. CLI 操作   → readPidFile()   读取 PID → 发送信号
 *   3. Master 退出 → removePidFile() 删除文件
 *
 * 文件格式：
 *   - 纯文本，内容仅为 PID 数字 + 换行符
 *   - 默认路径：项目根目录下 `.vext.pid`
 *   - 可通过 config.cluster.pidFile 或 VEXT_CLUSTER_PID 环境变量自定义
 *
 * 安全性考虑：
 *   - writePidFile 检测是否已有同名文件，若对应进程仍存活则拒绝写入（防止多实例冲突）
 *   - removePidFile 验证文件内容与当前 PID 一致后才删除（防止误删其他实例的 PID 文件）
 *   - 所有操作使用同步 API（启动/关闭阶段，无需异步）
 *
 * @module lib/cluster/pid-file
 * @see 12a-master.md §3（PID 文件）
 * @see 12d-deploy.md §2（PID 文件路径与多项目隔离）
 */
/** 默认 PID 文件路径（相对于项目根目录） */
export declare const DEFAULT_PID_FILE = ".vext.pid";
/**
 * PID 文件操作结果
 */
export interface PidFileResult {
    /** 操作是否成功 */
    ok: boolean;
    /** PID 值（读取时返回） */
    pid?: number;
    /** 错误信息（失败时返回） */
    error?: string;
    /** PID 文件的绝对路径 */
    path: string;
}
/**
 * writePidFile — 写入 PID 文件
 *
 * Master 启动时调用，将当前进程 PID 写入文件。
 *
 * 冲突检测：
 *   - 如果 PID 文件已存在，读取其中的 PID
 *   - 检测该 PID 对应的进程是否仍存活（process.kill(pid, 0)）
 *   - 存活 → 拒绝写入，返回错误（防止多实例冲突）
 *   - 不存活 → 覆盖写入（上次异常退出残留的 stale PID 文件）
 *
 * @param pidFilePath PID 文件路径（绝对路径或相对于 cwd 的路径）
 * @param pid 要写入的 PID（默认 process.pid）
 * @returns 操作结果
 */
export declare function writePidFile(pidFilePath?: string, pid?: number): PidFileResult;
/**
 * readPidFile — 读取 PID 文件
 *
 * CLI 命令（vext stop / reload / status）调用，获取 Master 进程 PID。
 *
 * 额外验证：
 *   - 检查文件是否存在
 *   - 解析内容为数字
 *   - 可选：验证对应进程是否存活
 *
 * @param pidFilePath PID 文件路径
 * @param checkAlive 是否验证进程存活（默认 true）
 * @returns 操作结果（包含 pid）
 */
export declare function readPidFile(pidFilePath?: string, checkAlive?: boolean): PidFileResult;
/**
 * removePidFile — 删除 PID 文件
 *
 * Master 优雅关闭时调用。
 *
 * 安全措施：
 *   - 验证文件内容与当前进程 PID 一致后才删除
 *   - 不一致时跳过删除（可能被其他实例覆盖）
 *   - 删除失败不抛出异常（关闭流程不应因 PID 文件失败而中断）
 *
 * @param pidFilePath PID 文件路径
 * @param expectedPid 期望的 PID（默认 process.pid），用于安全校验
 * @returns 操作结果
 */
export declare function removePidFile(pidFilePath?: string, expectedPid?: number): PidFileResult;
/**
 * isProcessAlive — 检测指定 PID 的进程是否仍然存活
 *
 * 使用 process.kill(pid, 0) 检测：
 *   - 不发送任何信号（signal = 0 是探测信号）
 *   - 成功 → 进程存在且当前用户有权限
 *   - ESRCH → 进程不存在
 *   - EPERM → 进程存在但无权限（仍视为存活）
 *
 * @param pid 要检测的进程 PID
 * @returns 进程是否存活
 */
export declare function isProcessAlive(pid: number): boolean;
