import { AbstractMessageSender, IMessage, IMessageConfirmation, IMessageSender, MessageState, OcppError, OcppRequest, OcppResponse, SystemConfig } from '@citrineos/base';
import { ILogObj, Logger } from 'tslog';
/**
 * Implementation of a {@link IMessageSender} using Kafka as the underlying transport.
 */
export declare class KafkaSender extends AbstractMessageSender implements IMessageSender {
    /**
     * Fields
     */
    private _client;
    private _topicName;
    private _producers;
    /**
     * Constructor
     *
     * @param topicPrefix Custom topic prefix, defaults to "ocpp"
     */
    constructor(config: SystemConfig, logger?: Logger<ILogObj>);
    /**
     * Convenience method to send a request message.
     *
     * @param message The {@link IMessage} to send
     * @param payload The payload to send
     * @returns
     */
    sendRequest(message: IMessage<OcppRequest>, payload?: OcppRequest): Promise<IMessageConfirmation>;
    /**
     * Convenience method to send a confirmation message.
     * @param message The {@link IMessage} to send
     * @param payload The payload to send
     * @returns
     */
    sendResponse(message: IMessage<OcppResponse | OcppError>, payload?: OcppResponse | OcppError): Promise<IMessageConfirmation>;
    /**
     * Publishes the given message to kafka.
     *
     * @param message The {@link IMessage} to publish
     * @param payload The payload to within the {@link IMessage}
     * @param state The {@link MessageState} of the {@link IMessage}
     * @returns
     */
    send(message: IMessage<OcppRequest | OcppResponse | OcppError>, payload?: OcppRequest | OcppResponse | OcppError, state?: MessageState): Promise<IMessageConfirmation>;
    /**
     * Interface implementation
     */
    shutdown(): Promise<void>;
}
