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

namespace Decal.Interop.Filters;

[ComImport]
[ComSourceInterfaces("Decal.Interop.Filters.IWorldEvents\0\0")]
[Guid("53092D1B-F0B0-46FF-BF11-8F031EC9B137")]
[TypeLibType(2)]
[SuppressUnmanagedCodeSecurity]
[ClassInterface(ClassInterfaceType.None)]
public class WorldClass : IWorld, World, IWorldEvents_Event
{
	[DispId(0)]
	public virtual extern WorldObject this[[In] int GUID]
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[TypeLibFunc(256)]
		[DispId(0)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(2)]
	public virtual extern WorldIterator ByName
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(2)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(3)]
	public virtual extern WorldIterator All
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(3)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(4)]
	public virtual extern WorldIterator ByObjectClass
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(4)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(5)]
	public virtual extern WorldIterator ByNameSubstring
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(5)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(6)]
	public virtual extern WorldIterator ByContainer
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(6)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(7)]
	public virtual extern WorldIterator Inventory
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(7)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(9)]
	public virtual extern WorldIterator ByOwner
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(9)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(10)]
	public virtual extern WorldIterator Landscape
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(10)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(11)]
	public virtual extern int NumObjectClasses
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(11)]
		get;
	}

	[DispId(12)]
	public virtual extern WorldIterator ByCategory
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(12)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	[DispId(14)]
	public virtual extern Vendor Vendor
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(14)]
		[return: MarshalAs(UnmanagedType.Interface)]
		get;
	}

	public virtual extern event IWorldEvents_CreateObjectEventHandler CreateObject;

	public virtual extern event IWorldEvents_ReleaseObjectEventHandler ReleaseObject;

	public virtual extern event IWorldEvents_ChangeObjectEventHandler ChangeObject;

	public virtual extern event IWorldEvents_MoveObjectEventHandler MoveObject;

	public virtual extern event IWorldEvents_ReleaseDoneEventHandler ReleaseDone;

	public virtual extern event IWorldEvents_EnterTradeEventHandler EnterTrade;

	public virtual extern event IWorldEvents_EndTradeEventHandler EndTrade;

	public virtual extern event IWorldEvents_AddTradeItemEventHandler AddTradeItem;

	public virtual extern event IWorldEvents_AcceptTradeEventHandler AcceptTrade;

	public virtual extern event IWorldEvents_DeclineTradeEventHandler DeclineTrade;

	public virtual extern event IWorldEvents_ResetTradeEventHandler ResetTrade;

	public virtual extern event IWorldEvents_FailToAddTradeItemEventHandler FailToAddTradeItem;

	public virtual extern event IWorldEvents_FailToCompleteTradeEventHandler FailToCompleteTrade;

	public virtual extern event IWorldEvents_ApproachVendorEventHandler ApproachVendor;

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(8)]
	public virtual extern double Distance2D(int GUID1, int GUID2);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(13)]
	public virtual extern double Distance3D(int GUID1, int GUID2);
}
