/** * 断路器(Circuit Breaker) * * 三态状态机,零外部依赖,约 80 行。 * 对连续失败自动熔断,保护下游视觉 API 服务。 * * 状态转移: * CLOSED ──连续失败 ≥ failureThreshold──→ OPEN * OPEN ──recoveryTimeMs 后────────→ HALF_OPEN * HALF_OPEN ──试探成功──────────────→ CLOSED * HALF_OPEN ──试探失败──────────────→ OPEN */ export interface CircuitBreakerOptions { /** 连续失败 N 次后熔断,默认 5 */ failureThreshold: number; /** 熔断恢复时间(毫秒),默认 30_000 */ recoveryTimeMs: number; /** 半开状态最大试探调用数,默认 1 */ halfOpenMaxCalls: number; /** 判断错误是否计入失败计数,默认只计 5xx / 网络 / 超时 */ shouldCountAsFailure?: (error: Error) => boolean; } type BreakerState = 'CLOSED' | 'OPEN' | 'HALF_OPEN'; /** 断路器熔断时抛出的错误 */ export declare class CircuitBreakerOpenError extends Error { constructor(breakerKey: string, retryAfterMs: number); } export declare class CircuitBreaker { private state; private failureCount; private openedAt; private halfOpenCalls; private readonly key; private readonly options; constructor(key: string, options?: Partial); /** * 在断路器保护下执行异步函数 * * @param fn 需要被保护的异步函数 * @returns fn 的返回值 * @throws CircuitBreakerOpenError 断路器打开时 * @throws 原错误 fn 执行失败时 */ execute(fn: () => Promise): Promise; /** 获取当前状态(仅供测试和指标收集) */ getState(): BreakerState; /** 重置到 CLOSED 状态(仅供测试) */ reset(): void; private onSuccess; private onFailure; private transitionTo; } export {}; //# sourceMappingURL=circuit-breaker.d.ts.map