/**
 * BaseProducer class to handle Kafka producer operations such as connecting,
 * producing messages, and disconnecting.
 * This class uses the Singleton pattern to ensure only one instance of the producer exists.
 */
export declare class BaseProducer {
    protected static instance: BaseProducer | null;
    private kafka;
    private producer;
    private clientId;
    /**
     * Constructs a new producer instance with the given client ID and Kafka brokers.
     *
     * @param clientId - The client ID to uniquely identify the producer instance.
     * @param brokers - An array of Kafka broker addresses to connect to.
     */
    constructor(clientId: string, brokers: string[]);
    /**
     * Public method to get the single instance of BaseProducer (Singleton pattern).
     * If no instance exists, it creates a new one. If an instance already exists, it returns the existing one.
     *
     * @param clientId - The client ID used to identify the producer instance.
     * @param brokers - An array of Kafka brokers to connect to.
     * @returns The single instance of the BaseProducer.
     */
    static getInstance(clientId: string, brokers: string[]): BaseProducer;
    /**
     * Connects the producer to the Kafka cluster.
     * This method establishes the connection between the producer and the Kafka brokers.
     */
    connect(): Promise<void>;
    /**
     * Sends a message to a Kafka topic.
     *
     * @param topic - The Kafka topic to which the message will be sent.
     * @param message - The message content to send to the topic.
     */
    produceMessage(topic: string, message: string): Promise<void>;
    /**
     * Disconnects the producer from the Kafka cluster.
     * This method gracefully shuts down the producer connection.
     */
    disconnect(): Promise<void>;
}
//# sourceMappingURL=BaseProducer.d.ts.map