export interface MessageConfig {
  id: string;
  name: string;
  type: MessageType;
  maxSize?: number;
  retentionPeriod?: number;
  description?: string;
}

export interface MessageStatus {
  status: MessageStatusType;
  lastUpdated: Date;
}

export interface MessageQueue {
  id: string;
  name: string;
  type: MessageType;
  maxSize: number;
  retentionPeriod: number;
  created: Date;
  messages: string[];
}

export interface Message {
  id: string;
  queueId: string;
  payload: unknown;
  status: MessageStatusType;
  created: Date;
  updated: Date;
}

export enum MessageType {
  QUEUE = 'QUEUE',
  TOPIC = 'TOPIC',
  STREAM = 'STREAM'
}

export enum MessageStatusType {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  COMPLETED = 'COMPLETED',
  REJECTED = 'REJECTED',
  ERROR = 'ERROR'
}
