import * as Kafka from 'node-rdkafka';
import * as winston from 'winston';
import { Options } from './types';
export declare abstract class KafkaBasicProducer {
    client: Kafka.Producer;
    protected logger: winston.Logger;
    protected debug: boolean;
    protected dying: boolean;
    protected dead: boolean;
    protected flushing: boolean;
    constructor(conf: any, topicConf?: any, options?: Options);
    disconnect(): Promise<unknown>;
    flush(timeout?: number): Promise<unknown>;
    connect(metadataOptions?: any): Promise<unknown>;
    die(): Promise<void>;
}
export declare class KafkaProducer extends KafkaBasicProducer {
    gracefulDead(): Promise<boolean>;
    produce(topic: string, partition: number | null, message: string, key?: string, timestamp?: number, opaque?: string): Promise<unknown>;
}
