import type { KTMessageQueue } from "../message-queue/index.js";
import type { KafkaLogger } from "./kafka-broker.js";
import type { KTTopicBatchEvent } from "./topic-batch.js";
import type { KTTopicEvent } from "./topic.js";
export type KTRun<Payload extends object, Ctx extends object> = (payload: Payload[], ctx: Ctx, publisher: Pick<KTMessageQueue<Ctx>, 'publishSingleMessage'>, kafkaTopicParams: {
    heartBeat: () => void;
    partition: number;
    lastOffset: string | undefined;
    resolveOffset?: (offset: string) => void;
}) => Promise<void>;
export type KTHandler<Payload extends object, Ctx extends object> = {
    topic: KTTopicEvent<Payload> | KTTopicBatchEvent<Payload>;
    run: KTRun<Payload, Ctx>;
};
export type CtxWithKafka<T> = T & KafkaLogger;
export declare const KTHandler: <Payload extends object, Ctx extends object>(params: KTHandler<Payload, KafkaLogger & Ctx>) => KTHandler<Payload, KafkaLogger & Ctx>;
