import { ICancellation } from "../interfaces"; /** interface for message consumers, used to recieve messages from a single endpoint. */ export interface IConsumer { /** Reads the next message from the destination for which the consumer was created. * @param options A provider specific options. * @param ct The cancellation token for this operation. * @returns A recieved message or a promise. If message is prefetched it will * be returned immediately, otherwise a promise is returned. */ read(options?: object, ct?: ICancellation): T | Promise; } /** Interface for message produsers, used to send messages to the endpoints. * The producer can be bound to the particular destination or a destination * can be specified as an additional option during post if supported. */ export interface IProducer { /** Sends a message * @param msg The message to send. * @param options A provider specific options * @param ct The cancellation token for this operation */ post(msg: T, options?: object, ct?: ICancellation): void | Promise; } export interface ISession { start(ct: ICancellation): void; createConsumer(destination: string, options?: object): IConsumer; createProducer(destination: string, options?: object): IProducer; }