using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;

namespace Decal.Interop.Net;

[ComImport]
[Guid("07F65937-387A-4539-8745-5603A2E029B1")]
[SuppressUnmanagedCodeSecurity]
[InterfaceType(1)]
public interface INetworkFilter2
{
	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void DispatchServer([MarshalAs(UnmanagedType.Interface)] IMessage2 Message);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void DispatchClient([MarshalAs(UnmanagedType.Interface)] IMessage2 Message);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void Initialize([MarshalAs(UnmanagedType.Interface)] NetService pService);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void Terminate();
}
