/// <reference types="node" />
import EventEmitter from 'events';
import { Producer, ProducerBatch, ProducerRecord } from 'kafkajs';
import { BatchConfig } from './types';
export declare const isProducerBatch: (record: ProducerRecord | ProducerBatch) => record is ProducerBatch;
export interface BatchProducerInterface {
    on(event: 'error', listener: (error: Error) => void): this;
    on(event: 'batch.start', listener: (event: ProducerBatch) => void): this;
}
export declare class BatchProducer extends EventEmitter implements BatchProducerInterface {
    private readonly producer;
    private topicMessages;
    private timer;
    private hrTime;
    private isSending;
    private readonly batchSize;
    private batchRequest;
    private readonly lingerMs;
    private readonly config?;
    constructor(producer: Producer, batchConfig: BatchConfig);
    get length(): number;
    private elapsedMs;
    private sendIfNecessary;
    private startAutoSendIfNecessary;
    private stopAutoSendIfNecessary;
    push(record: ProducerRecord | ProducerBatch): void;
    private createBatch;
    private sendBatch;
    private sendOneBatch;
    private sendAllBatch;
    flush(): Promise<void>;
}
//# sourceMappingURL=BatchProducer.d.ts.map