import type { VextApp } from "../../types/app.js";
/**
 * cluster-checks.ts — Cluster 模式兼容性检测模块
 *
 * 在 cluster 模式下，每个 Worker 是独立的 V8 实例，内存不共享。
 * 这导致某些基于内存的功能（如 rate limiter）在多 Worker 环境下行为不一致。
 *
 * 本模块在每个 Worker 的 bootstrap 完成后执行检测（步骤⑨ onReady 之前），
 * 对潜在问题打印 WARN 日志。仅警告，不阻止启动——用户可能故意使用内存 store
 * （如测试环境或单 Worker cluster）。
 *
 * 检测项：
 *   1. 内存型 rate limiter 警告（每个 Worker 独立计数，实际限流 = N × max）
 *   2. 后续可扩展：session store、缓存一致性等
 *
 * 触发条件：
 *   - cluster.workers > 1 且框架内置 rate limiter 未被 app.setRateLimiter() 替换
 *   - cluster.workers = 1 或 cluster 未启用 → 不打印
 *   - rateLimit.enabled = false → 不打印
 *   - 已调用 app.setRateLimiter() → 不打印（假设用户已处理）
 *
 * @module lib/cluster/cluster-checks
 * @see 12-cluster.md §4.1（Cluster 模式启动检测与警告）
 */
/**
 * Cluster 兼容性检测结果
 *
 * 每个检测项返回一个 CheckResult。
 * 主要用于测试验证检测逻辑是否正确触发。
 */
export interface ClusterCheckResult {
    /** 检测项名称 */
    name: string;
    /** 是否触发了警告 */
    warned: boolean;
    /** 警告消息（仅 warned=true 时存在） */
    message?: string;
}
/**
 * checkClusterCompatibility — 检测 cluster 模式下的潜在兼容性问题
 *
 * 在 Worker bootstrap 完成后调用（步骤⑨ onReady 之前）。
 * 检查当前配置是否存在多 Worker 下的已知问题，并输出 WARN 日志。
 *
 * 设计要点：
 *   - 仅打印 WARN，不抛出异常，不阻止启动
 *   - 使用 app.logger（结构化日志），而非 console.warn
 *   - 返回检测结果数组，便于测试验证
 *
 * @param app VextApp 实例（从中读取 config 和检测 rate limiter 状态）
 * @param workerCount 实际 Worker 数量（由 Master 传入或从 config 推算）
 * @returns 检测结果数组
 *
 * @example
 * ```typescript
 * // 在 Worker bootstrap 完成后调用
 * const results = checkClusterCompatibility(app, workerCount)
 * // results: [{ name: 'rate-limit-memory-store', warned: true, message: '...' }]
 * ```
 */
export declare function checkClusterCompatibility(app: VextApp, workerCount: number): ClusterCheckResult[];
