import { type ProducerConfig } from "./config"; import type { BatchLog, ProducerLogGroup, ProducerLogGroupList, CallBack, Result } from "./types"; /** * 单个日志批次,负责在内存中聚合日志并携带重试/回调等元信息。 */ export declare class Batch { /** 当前批次内日志数据的总字节数(通过 protobuf 编码估算)。 */ totalDataSize: number; /** 实际要发送的日志组。 */ logGroupList: ProducerLogGroupList; logCount: number; /** 已失败的发送次数。 */ attemptCount: number; /** 当前累计的重试退避时间,毫秒。 */ retryBackoffMs: number; /** 首次重试退避时间,毫秒。 */ baseRetryBackoffMs: number; /** 后续重试退避时间的增量基准,毫秒。 */ baseIncreaseRetryBackoffMs: number; /** 下一次重试的计划时间点,毫秒时间戳。 */ nextRetryMs: number; /** 单次重试退避时间的上限,毫秒。 */ maxRetryIntervalInMs: number; /** 该批次关联的回调列表。 */ callBackList: CallBack[]; /** 批次创建时间,用于 LingerTime 判断。 */ createTime: number; /** 允许的最大重试次数。 */ maxRetryTimes: number; /** 目标日志主题。 */ topic: string; /** 固定分区路由键(选填)。 */ shardHash?: string; /** 聚合后的发送结果。 */ result: Result; /** 最多保留的 Attempt 条目数。 */ maxReservedAttempts: number; constructor(params: { topic: string; shardHash?: string; config: ProducerConfig; }); /** * 尝试向当前批次追加一条日志。 * * @param batchLog 日志内容。 * @param callBack 该条日志对应的回调(可选)。 * @returns 是否追加成功;若返回 false,说明需要开启新的批次。 */ tryAddLog(batchLog: BatchLog, callBack?: CallBack): Promise; getOrCreateTailGroup(source: string, filename: string, contextFlow?: string): ProducerLogGroup; createGroup(source: string, filename: string, contextFlow?: string): ProducerLogGroup; /** * 判断按给定 size 与数量追加日志后,是否仍然满足 Batch 大小与条数限制。 */ hasRoomFor(size: number, cnt: number): boolean; /** * 判断当前批次是否已经满足发送条件: * - Batch 内累计大小达到或超过 MaxBatchSize;或 * - Batch 内日志条数达到或超过 MaxBatchCount。 */ meetSendCondition(config: ProducerConfig): boolean; }