import type Kafka from "kafkajs";
import type { PartitionAssigner } from "kafkajs";
import type { KafkaTopicName } from "../libs/branded-types/kafka/index.js";
import type { KafkaWithLogger, KafkaBrokerConfig } from "./kafka-broker.js";
import { KTKafkaBroker } from "./kafka-broker.js";
export type KTKafkaConsumerConfig = {
    kafkaSettings: {
        consumerGroupId: string;
        subscribeRetries?: number;
        subscribeRetryInterval?: number;
        heartbeatInterval?: number;
        partitionsConsumedConcurrently?: number;
        heartbeatEarlyFactor?: number;
        sessionTimeout?: number;
        maxWaitTimeInMs?: number;
        maxBytesPerPartition?: number;
        maxInFlightRequests?: number;
        batchConsuming?: boolean;
        rebalanceTimeout?: number;
        maxBytes?: number;
        partitionAssignerFn?: PartitionAssigner;
    };
} & KafkaBrokerConfig;
declare class KTKafkaConsumer extends KTKafkaBroker {
    #private;
    heartBeatInterval: number;
    consumer: Kafka.Consumer;
    heartbeatEarlyFactor: number;
    constructor(params: KafkaWithLogger<KTKafkaConsumerConfig>);
    isConnected(): boolean;
    init(): Promise<boolean>;
    destroy(): Promise<void>;
    subscribeTopic(topics: KafkaTopicName[]): Promise<void>;
}
export { KTKafkaConsumer };
