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;
}