/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
import { IBatch, type BatchMessage } from "./definitions.js";
export declare function isGroupedBatch(op: ISequencedDocumentMessage): boolean;
export interface OpGroupingManagerConfig {
    readonly groupedBatchingEnabled: boolean;
    readonly opCountThreshold: number;
    readonly reentrantBatchGroupingEnabled: boolean;
}
export declare class OpGroupingManager {
    private readonly config;
    static readonly groupedBatchOp = "groupedBatch";
    private readonly logger;
    constructor(config: OpGroupingManagerConfig, logger: ITelemetryBaseLogger);
    /**
     * Converts the given batch into a "grouped batch" - a batch with a single message of type "groupedBatch",
     * with contents being an array of the original batch's messages.
     *
     * @remarks - Remember that a BatchMessage has its content JSON serialized, so the incoming batch message contents
     * must be parsed first, and then the type and contents mentioned above are hidden in that JSON serialization.
     */
    groupBatch(batch: IBatch): IBatch<[BatchMessage]>;
    ungroupOp(op: ISequencedDocumentMessage): ISequencedDocumentMessage[];
    shouldGroup(batch: IBatch): boolean;
}
//# sourceMappingURL=opGroupingManager.d.ts.map