import { type CompressionAlgorithmValue } from '../../protocol/compression.ts'; import { type MessageToProduce } from '../../protocol/records.ts'; import { type SchemaRegistry } from '../../registries/abstract.ts'; import { type BaseOptions, type TopicWithPartitionAndOffset } from '../base/types.ts'; import { type BeforeSerializationHook, type Serializers } from '../serde.ts'; export interface ProducerInfo { producerId: bigint; producerEpoch: number; transactionalId?: string; } export interface ProduceResult { offsets?: TopicWithPartitionAndOffset[]; unwritableNodes?: number[]; } export type Partitioner = (message: MessageToProduce, key?: Buffer | undefined) => number; export interface ProducerStreamReport { batchId: number; count: number; result: ProduceResult; } export interface ProducerStreamMessageReport { batchId: number; index: number; message: MessageToProduce; } export interface ProduceOptions { producerId?: bigint; producerEpoch?: number; idempotent?: boolean; acks?: number; compression?: CompressionAlgorithmValue; partitioner?: Partitioner; autocreateTopics?: boolean; repeatOnStaleMetadata?: boolean; } export type ProducerOptions = BaseOptions & ProduceOptions & { transactionalId?: string; serializers?: Partial>; beforeSerialization?: BeforeSerializationHook; registry?: SchemaRegistry; }; export type SendOptions = { messages: MessageToProduce[]; } & ProduceOptions; export declare const ProducerStreamReportModes: { readonly NONE: "none"; readonly BATCH: "batch"; readonly MESSAGE: "message"; }; export declare const allowedProducerStreamReportModes: ProducerStreamReportModeValue[]; export type ProducerStreamReportMode = keyof typeof ProducerStreamReportModes; export type ProducerStreamReportModeValue = (typeof ProducerStreamReportModes)[keyof typeof ProducerStreamReportModes]; export type ProducerStreamOptions = Omit, 'messages'> & { highWaterMark?: number; batchSize?: number; batchTime?: number; reportMode?: ProducerStreamReportModeValue; };