import type { QueueConsumerDependencies } from '@message-queue-toolkit/core';
import { type ConsumeOptions, type ConsumerOptions } from '@platformatic/kafka';
import { AbstractKafkaService, type BaseKafkaOptions } from './AbstractKafkaService.ts';
import type { KafkaHandlerRouting } from './handler-container/KafkaHandlerRoutingBuilder.ts';
import type { KafkaConfig, KafkaDependencies, TopicConfig } from './types.ts';
export type KafkaConsumerDependencies = KafkaDependencies & Pick<QueueConsumerDependencies, 'transactionObservabilityManager'>;
export type KafkaConsumerOptions<TopicsConfig extends TopicConfig[], ExecutionContext> = BaseKafkaOptions & Omit<ConsumerOptions<string, object, string, string>, 'deserializers' | 'autocommit' | keyof KafkaConfig> & Omit<ConsumeOptions<string, object, string, string>, 'topics'> & {
    handlers: KafkaHandlerRouting<TopicsConfig, ExecutionContext>;
};
export declare abstract class AbstractKafkaConsumer<TopicsConfig extends TopicConfig[], ExecutionContext> extends AbstractKafkaService<TopicsConfig, KafkaConsumerOptions<TopicsConfig, ExecutionContext>> {
    private readonly consumer;
    private consumerStream?;
    private readonly transactionObservabilityManager;
    private readonly handlerContainer;
    private readonly executionContext;
    constructor(dependencies: KafkaConsumerDependencies, options: KafkaConsumerOptions<TopicsConfig, ExecutionContext>, executionContext: ExecutionContext);
    init(): Promise<void>;
    close(): Promise<void>;
    private consume;
    private tryToConsume;
    private buildTransactionName;
    private getRequestContext;
}
