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

namespace Decal.Interop.Core;

[ComImport]
[SuppressUnmanagedCodeSecurity]
[Guid("0F95468D-5071-4E28-A223-D83FDFED99E2")]
[InterfaceType(1)]
public interface IDecalService
{
	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	void Initialize([MarshalAs(UnmanagedType.Interface)] DecalCore pDecal);

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

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

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