import type { EventEmitter } from "node:events"; export interface RefreshableValueResult { value: T; /** 当前值从加载完成开始可使用的毫秒数。 */ ttlMs: number; } /** * 在关闭、回滚等必须完整尝试全部步骤的流程中收集失败。 * * 单个步骤失败不会阻止后续清理;结束时单个错误保持原样传播,多个错误统一汇总。 */ export declare class FailureCollector { private readonly failures; get size(): number; add(error: unknown): void; capture(operation: () => void | PromiseLike, onFailure?: (error: unknown) => void): Promise; throwIfAny(message: string): void; } /** * 带提前刷新、单航班加载和代次安全失效的异步值缓存。 * * `invalidate(expected)` 只清除调用方实际使用过的值,避免旧请求的迟到错误 * 抹掉并发请求已经刷新的新凭证。 */ export declare class RefreshableValue { private readonly refreshMarginMs; private readonly now; private cached?; private pending?; private generation; constructor(refreshMarginMs?: number, now?: () => number); get(loader: () => Promise>, force?: boolean): Promise; invalidate(expected: T): boolean; clear(): void; } /** * 依照 Node EventEmitter 的注册顺序执行并等待所有监听器。 * * 原生 `emit()` 不会等待异步监听器;Webhook 若直接使用它,可能在业务处理失败前 * 就确认成功。该函数保留 EventEmitter 的顺序和异常语义,同时闭合异步投递。 */ export declare function emitAwaited(emitter: Pick, eventName: string | symbol, ...args: TArgs): Promise; /** * 等待全部监听器,并保证单个失败不会阻止其他监听器获得本次事件。 * * 适用于一个事件对应多个独立投递出口的场景;所有出口尝试完成后,单个错误原样 * 抛出,多个错误使用 AggregateError 汇总。 */ export declare function emitAllAwaited(emitter: Pick, eventName: string | symbol, ...args: TArgs): Promise; /** 按键合并同时进行的相同工作;任务结束后立即释放,不承担结果缓存。 */ export declare class KeyedSingleFlight { private readonly pending; run(key: TKey, task: () => TResult | PromiseLike): Promise; clear(): void; } /** 按输入顺序返回结果,并将同时执行的 mapper 数量限制在明确上限内。 */ export declare function mapConcurrent(values: readonly TInput[], concurrency: number, mapper: (value: TInput, index: number) => TOutput | PromiseLike): Promise;