import type { IHeaders } from "kafkajs";
import type { KafkaTopicName, KafkaMessageKey } from "../libs/branded-types/kafka/index.js";
import { type KTTopicPayloadParser } from "../libs/helpers/default-data-parser.js";
import type { DLQPayload, KTTopicEvent, KTTopicSettings } from "./topic.js";
export type KTTopicBatchRawMessage = Array<Omit<KTTopicBatchMessage, 'value'> & {
    value: object;
}>;
export type KTTopicBatchMessage = {
    value: string;
    key: KafkaMessageKey;
    headers?: IHeaders & {
        traceId?: string;
    };
};
export type KTTopicBatchPayload = {
    topicName: KafkaTopicName;
    messages: KTTopicBatchMessage[];
};
export type KTTopicBatchEvent<Payload extends object> = {
    (payload: Payload): KTTopicBatchPayload;
    topicSettings: KTTopicSettings;
    decode: KTTopicPayloadParser<Payload extends KTTopicBatchRawMessage ? Payload[number]['value'] : object>['decode'];
};
export declare const KTTopicBatch: <Payload extends KTTopicBatchRawMessage>(_settings: KTTopicSettings) => KTTopicBatchEvent<Payload>;
export declare const CreateKTTopicBatch: <Payload extends KTTopicBatchRawMessage>(settings: KTTopicSettings, validatorFn?: KTTopicPayloadParser<Payload[number]["value"]>) => {
    BaseTopic: KTTopicBatchEvent<Payload>;
    DLQTopic: KTTopicEvent<DLQPayload<Payload>> | null;
};
