import type { CompressionTypes as KafkaCompressionTypes, KafkaConfig } from "kafkajs";
import KafkaJS from "kafkajs";
import type pino from "pino";
import { lz4Codec } from "../codec/lz4-codec.js";
import type { KafkaClientId } from "../libs/branded-types/kafka/index.js";
type KTKafkaSettings = {
    brokerUrls: string[];
    clientId: KafkaClientId;
    connectionTimeout: number;
    compressionCodec?: {
        codecType: KafkaCompressionTypes.LZ4;
        codecFn?: lz4Codec;
    } | {
        codecType: Exclude<KafkaCompressionTypes, KafkaCompressionTypes.LZ4>;
        codecFn?: never;
    };
};
export type KafkaBrokerConfig = {
    kafkaSettings: KTKafkaSettings;
    pureConfig: Pick<KafkaConfig, "ssl" | "sasl" | "authenticationTimeout" | "reauthenticationThreshold" | "requestTimeout" | "enforceRequestTimeout" | "retry" | "socketFactory" | "logLevel" | "logCreator">;
};
export type KafkaLogger = {
    logger: pino.Logger;
};
export type KafkaWithLogger<T extends KafkaBrokerConfig> = T & KafkaLogger;
declare class KTKafkaBroker {
    _kafka: KafkaJS.Kafka;
    constructor(params: KafkaBrokerConfig);
    encode(message: object): string;
    decode<T>(message: string): T;
}
export { KTKafkaBroker };
