import * as KafkaJS from 'kafkajs';
import { KafkaClient } from '../KafkaClient';
import { IResponse } from '../types';
/**
 * Consumes and decodes Orchestrate messages
 */
export declare class Consumer extends KafkaClient {
    private readonly consumer;
    private readonly topics;
    /**
     * Creates a new instance of the Consumer
     *
     * @param brokers - List of brokers to connect to
     * @param topics - List of topics to consume
     * @param kafkaConfig - Kafka client configuration
     * @param consumerConfig - Consumer configuration
     */
    constructor(brokers: string[], topics?: string[], kafkaConfig?: Omit<KafkaJS.KafkaConfig, 'brokers'>, consumerConfig?: KafkaJS.ConsumerConfig);
    /**
     * Returns the list of topics
     */
    getTopics(): string[];
    /**
     * Connects to Kafka and subscribes to each topic
     *
     * @returns a Promise that resolves if the connection is successful and rejects otherwise
     */
    connect(): Promise<void>;
    /**
     * Disconnects from the broker and unsubscribes from the topics
     *
     * @returns a Promise that resolves if the connection is disconnected successfully
     */
    disconnect(): Promise<void>;
    /**
     * Starts consuming messages
     */
    consume(): Promise<void>;
    /**
     * Commits the offsets specified by the message
     *
     * @param message - Message from which to get the offset
     */
    commit(message: IResponse): Promise<void>;
    private checkReadiness;
}
