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

namespace Decal.Interop.Inject;

[ComImport]
[Guid("5014E0B2-9156-412C-946D-9D4BAA9F4C51")]
[SuppressUnmanagedCodeSecurity]
[InterfaceType(1)]
public interface ILayerMouse
{
	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseEnter(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseExit(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseDown(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseUp(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseMove(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseDblClk(ref MouseState pMouse);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void MouseEvent(int nMsg, int wParam, int lParam);
}
