using MemoryPack;

namespace Insight.Domain.Network;

// AGENT [0 - 99]
[MemoryPackUnion(0, typeof(Agent.Messages.AuthenticationRequest))]
[MemoryPackUnion(1, typeof(Agent.Messages.AuthenticationResponse))]
[MemoryPackUnion(2, typeof(Agent.Messages.InventoryRequest))]
//[MemoryPackUnion(3, typeof(Agent.Messages.ConsoleQueryRequest))]
//[MemoryPackUnion(4, typeof(Agent.Messages.ConsoleQueryResponse))]
//[MemoryPackUnion(5, typeof(Proxy<Agent.Messages.ConsoleQueryResponse>))]
//[MemoryPackUnion(6, typeof(Proxy<Agent.Messages.ConsoleQueryRequest>))]
[MemoryPackUnion(7, typeof(Agent.Messages.Event))]
[MemoryPackUnion(8, typeof(Agent.Messages.Trap))]
[MemoryPackUnion(9, typeof(Agent.Messages.Mainboard))]
[MemoryPackUnion(10, typeof(Agent.Messages.OperationSystem))]
[MemoryPackUnion(11, typeof(Agent.Messages.Status))]
[MemoryPackUnion(12, typeof(Agent.Messages.SystemInfo))]
[MemoryPackUnion(13, typeof(Collection<Agent.Messages.Application>))]
[MemoryPackUnion(14, typeof(Collection<Agent.Messages.Drive>))]
[MemoryPackUnion(15, typeof(Collection<Agent.Messages.Interface>))]
[MemoryPackUnion(16, typeof(Collection<Agent.Messages.Memory>))]
[MemoryPackUnion(17, typeof(Collection<Agent.Messages.Printer>))]
[MemoryPackUnion(18, typeof(Collection<Agent.Messages.Processor>))]
[MemoryPackUnion(19, typeof(Collection<Agent.Messages.Service>))]
[MemoryPackUnion(20, typeof(Collection<Agent.Messages.Session>))]
[MemoryPackUnion(21, typeof(Collection<Agent.Messages.StoragePool>))]
[MemoryPackUnion(22, typeof(Agent.Messages.UpdateCollection))]
[MemoryPackUnion(23, typeof(Collection<Agent.Messages.User>))]
[MemoryPackUnion(24, typeof(Collection<Agent.Messages.Videocard>))]
[MemoryPackUnion(25, typeof(Collection<Agent.Messages.VirtualMaschine>))]

[MemoryPackUnion(50, typeof(Agent.Messages.Request))]
[MemoryPackUnion(51, typeof(Agent.Messages.Response))]
[MemoryPackUnion(52, typeof(Proxy<Agent.Messages.Request>))]
[MemoryPackUnion(53, typeof(Proxy<Agent.Messages.Response>))]

// REMOTE [100 - 199]
[MemoryPackUnion(102, typeof(Remote.Messages.RemoteSessionRequest))]
[MemoryPackUnion(103, typeof(Remote.Messages.RemoteSessionResponse))]
[MemoryPackUnion(104, typeof(Remote.Messages.CastRequest))]
[MemoryPackUnion(105, typeof(Remote.Messages.CastRequestResponse))]
[MemoryPackUnion(107, typeof(Remote.Messages.CastAbort))]
[MemoryPackUnion(108, typeof(Remote.Messages.CastMetric))]
[MemoryPackUnion(109, typeof(Remote.Messages.CastDisplay))]
[MemoryPackUnion(110, typeof(Remote.Messages.CastScreen))]
[MemoryPackUnion(111, typeof(Remote.Messages.CastScreenReceived))]
[MemoryPackUnion(112, typeof(Remote.Messages.CastCursor))]
[MemoryPackUnion(113, typeof(Remote.Messages.CastCursorReceived))]
[MemoryPackUnion(114, typeof(Remote.Messages.CastClipboardReceived))]
[MemoryPackUnion(115, typeof(Remote.Messages.CastAudio))]

[MemoryPackable]
public partial interface IMessage { }