import { MessageHeaders, MessageMetadata, MessageName, MessageSource } from './index'; import { ValueObject } from '@/data-helpers/value-object'; import { Exception } from '@/data-helpers/Exception'; import { CustomObject, ValueObjectType } from '@/utils'; export declare enum MessageTypeEnum { EVENT = 0, COMMAND = 1, QUERY = 2 } export interface MessageData

extends CustomObject { type: MessageType; headers: MessageHeaders; payload?: P; metadata?: MessageMetadata; } export declare class InvalidMessageTypeException extends Exception { } export declare class MessageType extends ValueObject { validate(): void; } export declare class MessageHeaderMustContainNameAndSourceException extends Exception { } export declare class Message

extends ValueObject> { static with(type: MessageType, headers: MessageHeaders): Message; static with(type: MessageType, headers: MessageHeaders, payload: T): Message; static with(type: MessageType, headers: MessageHeaders, payload: T, metadata: MessageMetadata): Message; static with(type: MessageType, messageName: MessageName, source: MessageSource): Message; static with(type: MessageType, messageName: MessageName, source: MessageSource, payload: T): Message; static with(type: MessageType, messageName: MessageName, source: MessageSource, payload: T, metadata: MessageMetadata): Message; }