import type Database from "better-sqlite3"; import type { TransportClient } from "./transport/types.js"; import { type UpgradeSafenessSource } from "./core/auto-update.js"; import type { EngineLifecycle } from "./engine-lifecycle.js"; export interface EngineAutoUpdateParticipant { getUpgradeSafenessSources(): UpgradeSafenessSource[]; } export interface EngineAutoUpdateNotificationTarget { id: string; db: Database.Database; dbPath: string; transport: Pick; platform: string; } export interface EngineAutoUpdateOptions { lifecycle: EngineLifecycle; participants: EngineAutoUpdateParticipant[]; notificationTarget: EngineAutoUpdateNotificationTarget; } /** * Engine 级自动升级协调器。 * * 它是检查、空闲判定、预下载和重启触发的唯一所有者。Bot 只提供: * 1. 当前运行状态的只读空闲判定 Source;2. 第一个 Bot 的通知出口。 */ export declare class EngineAutoUpdateCoordinator { private readonly log; private readonly lifecycle; private readonly participants; private readonly notificationTarget; private running; private updateCheckTimer; private updateCheckGeneration; private autoUpgradeTimer; private autoUpgradeGeneration; private autoUpgradeFetchedWindow; private autoUpgradeFetchRetryWindow; private autoUpgradeLatestCache; private autoUpgradeCheckInFlight; private upgradeResultReported; constructor(options: EngineAutoUpdateOptions); start(): void; stop(): void; /** 任意 Bot 修改共享配置后调用;按最新开关重排窗口定时器。 */ configChanged(): void; private readServiceAutoUpdateConfig; private isAutoUpdateEnabled; private effectiveAutoUpdateConfig; private getNextUpdateCheckDelayMs; private scheduleNextUpdateCheck; private resetAutoUpgradeSchedule; /** * 正常调度只对齐到下一次窗口起点,不在窗口内补查;窗口起点执行后, * 才允许每 30 分钟重试查询失败或忙碌状态。 * npm 查询是否已经成功完成,由 autoUpgradeFetchedWindow 单独控制。 */ private scheduleAutoUpgradeCheck; private shouldRetryCurrentWindow; private requestAutoUpgradeCheck; runAutoUpgradeCheck(generation?: number): Promise; runDailyCheck(): Promise; private maybeRunAutoUpgrade; private isAutoUpgradeGenerationActive; private buildSafenessSources; private fetchLatestVersion; private triggerRestart; private getAdminPrivatePlatformChatIds; private notifyUpdateAvailable; private maybeReportUpgradeResult; private migrateLegacyAutoUpdateSetting; private deleteLegacyAutoUpdateSetting; }