importonly abstract class AttachmentSlotEvent extends Event
{
	public import function GetSlotID() : TweakDBID;
	public import function SetSlotID( slotId : TweakDBID );
}

importonly final class UnequipStart extends AttachmentSlotEvent
{
}

importonly final class UnequipEnd extends AttachmentSlotEvent
{
}

importonly final class EquipStart extends AttachmentSlotEvent
{
	public import function GetItemID() : ItemID;
	public import function SetItemID( itemId : ItemID );
	public import function GetStartingRenderingPlane() : ERenderingPlane;
	public import function SetStartingRenderingPlane( renderingPlane : ERenderingPlane );
	public import function GetFirstEquip() : Bool;
	public import function SetFirstEquip( firstEquip : Bool );
	public import function SetHighPriority( highPriority : Bool );
}

importonly final class EquipEnd extends AttachmentSlotEvent
{
	public import function GetItemID() : ItemID;
	public import function SetItemID( itemId : ItemID );
}

importonly class ItemAddedToSlotBase extends Event
{
	public import function GetSlotID() : TweakDBID;
	public import function GetPrevItemID() : ItemID;
	public import function GetItemID() : ItemID;
}

importonly final class ItemAddedToSlot extends ItemAddedToSlotBase
{
	public import function ShouldCache() : Bool;
}

importonly final class ItemVisualsAddedToSlot extends ItemAddedToSlotBase
{
}

importonly final class ItemRemovedFromSlot extends Event
{
	public import function GetSlotID() : TweakDBID;
	public import function GetItemID() : ItemID;
}

importonly final class PartAddedToSlotEvent extends Event
{
	import var itemID : ItemID;
	import var partID : ItemID;
}

importonly final class PartRemovedFromSlotEvent extends Event
{
	import var itemID : ItemID;
	import var removedPartID : ItemID;
}

import class AttachmentSlotsScriptCallback extends IScriptable
{
	import var slotID : TweakDBID;
	import var itemID : ItemID;

	public virtual function OnItemEquipped( slot : TweakDBID, item : ItemID );
	public virtual function OnItemEquippedVisual( slot : TweakDBID, item : ItemID );
	public virtual function OnItemUnequipped( slot : TweakDBID, item : ItemID );
	public virtual function OnItemUnequippedComplete( slot : TweakDBID, item : ItemID );
	public export virtual function OnAttachmentRefreshed( slot : TweakDBID, item : ItemID );
}

import abstract class AttachmentSlotsListener extends IScriptable
{
}

import class AttachmentSlotsScriptListener extends AttachmentSlotsListener
{
}

