import { z } from 'zod'; import { type RabbitmqPublishOptions } from './rabbitmq'; import { RabbitmqExchange } from './rabbitmq-exchange'; import { Jsonifiable } from 'type-fest'; export type RabbitmqMessageType = 'raw' | 'json'; export type RabbitmqMessageTemplate = { type: RabbitmqMessageType; exchange: RabbitmqExchange; durable: boolean; routingKey: string; schema?: z.ZodTypeAny; ttlMs?: number; }; type InputData = T extends { schema: z.ZodTypeAny; } ? z.input : T['type'] extends 'json' ? Jsonifiable : any; export declare class RabbitmqMessage { private readonly _template; /** * @return {T["schema"]} */ get schema(): T['schema']; /** * @param {T} template * @return {RabbitmqMessageTemplate} */ static template(template: T): RabbitmqMessage; /** * @template {RabbitmqMessageTemplate} T * @param {T} template * @protected */ protected constructor(template: T); /** * @param {InputData} data * @return {RabbitmqPublishOptions} */ make(data: InputData): RabbitmqPublishOptions; } export {};