import { pino } from "pino";
import type { KTHandler } from "../kafka/consumer-handler.js";
import type { KafkaBrokerConfig, KafkaLogger } from "../kafka/kafka-broker.js";
import type { KTKafkaConsumerConfig } from "../kafka/kafka-consumer.js";
import { KTKafkaConsumer } from "../kafka/kafka-consumer.js";
import { KTKafkaProducer } from "../kafka/kafka-producer.js";
import type { KTTopicPayloadWithMeta, KTTopicEvent } from "../kafka/topic.js";
import { KafkaTopicName } from "../libs/branded-types/kafka/index.js";
declare class KTMessageQueue<Ctx extends object> {
    #private;
    constructor(params?: {
        ctx: () => Ctx & {
            logger?: pino.Logger;
        };
    });
    getConsumer(): KTKafkaConsumer;
    getProducer(): KTKafkaProducer;
    initProducer(params: KafkaBrokerConfig): Promise<void>;
    initConsumer(params: KTKafkaConsumerConfig): Promise<void>;
    destroyAll(): Promise<void>;
    destroyProducer(): Promise<void>;
    destroyConsumer(): Promise<void>;
    initTopics<T extends object>(topicEvents: KTTopicEvent<T>[]): Promise<void>;
    getRegisteredHandler(topic: KafkaTopicName): KTHandler<any, Ctx & KafkaLogger> | undefined;
    registerHandlers<T extends object>(mqHandlers: KTHandler<T, Ctx & KafkaLogger>[]): void;
    publishSingleMessage(topic: KTTopicPayloadWithMeta): Promise<void>;
}
export { KTMessageQueue };
