import { MessageEnvelope } from '../../../message/message-envelope.js';
import { ICallback, ILogger, Runnable } from 'redis-smq-common';
import { IQueueParsedParams } from '../../../queue-manager/index.js';
import { IConsumerParsedOptions } from '../../types/index.js';
export type TMessageAcknowledgerEvent = {
    'messageAcknowledger.error': (error: unknown) => void;
    'messageAcknowledger.messageAcknowledged': (message: MessageEnvelope) => void;
};
export declare class MessageAcknowledger extends Runnable<TMessageAcknowledgerEvent> {
    private pending;
    private timer;
    private pendingCallbacks;
    protected readonly consumerId: string;
    protected readonly queue: IQueueParsedParams;
    protected readonly logger: ILogger;
    protected readonly useBatchAcks: boolean;
    protected readonly batchSize: number;
    protected readonly batchTimeoutMs: number;
    constructor(queue: IQueueParsedParams, consumerId: string, logger: ILogger, consumerOptions: IConsumerParsedOptions);
    add(message: MessageEnvelope): void;
    flush(cb?: ICallback<void>): void;
    protected goingDown(): Array<(cb: ICallback<void>) => void>;
    private handleAcknowledgementResult;
}
//# sourceMappingURL=message-acknowledger.d.ts.map