importonly abstract class gameItemData extends IScriptable
{
	public import function GetID() : ItemID;
	public import function GetName() : CName;
	public import function GetNameAsString() : String;
	public import function GetQuantity() : Int32;
	public import function HasAttachmentSlot( slotID : TweakDBID ) : Bool;
	public import function HasPlacementSlot( slotID : TweakDBID ) : Bool;
	public import const function HasTag( tag : CName ) : Bool;
	public import const function HasAnyOfTags( tags : array< CName > ) : Bool;
	public import function SetDynamicTag( tag : CName ) : Bool;
	public import function RemoveDynamicTag( tag : CName ) : Bool;
	public import function GetDynamicTags() : array< CName >;
	public import function GetTimestamp() : GameTime;
	public import function GetStatValueByType( type : gamedataStatType ) : Float;
	public import function GetBareStatValueByType( type : gamedataStatType ) : Float;
	public import function HasStatData( type : gamedataStatType ) : Bool;
	public import function GetStatsObjectID() : StatsObjectID;
	public import function HasPartInSlot( slotID : TweakDBID ) : Bool;
	public import function ReinitializePlayerStats( gameInstance : GameInstance, ownerID : EntityID );
	public import function GetItemPart( out part : InnerItemData, slotId : TweakDBID );
	public import function GetItemParts( out parts : array< InnerItemData > );
	public import function GetTemporaryStatBundle() : StatsBundleHandler;
	public import function GetItemType() : gamedataItemType;
	public import function GetLocalizedItemType() : CName;
	public import function UsesVariants() : Bool;
	public import function GetVariant() : Int32;
	public import function AddStatsOnEquip( objectAttachedTo : GameObject );
	public import function SubtractStatsOnUnequip( objectDetachedFrom : GameObject );
	public import function GetEmptySlotsOnItem( out emptySlots : array< TweakDBID > );
	public import function GetUsedSlotsOnItem( out usedSlots : array< TweakDBID > );
}

importonly struct InnerItemData
{
	public import static function GetItemID( innerItemData : InnerItemData ) : ItemID;
	public import static function GetSlotID( innerItemData : InnerItemData ) : TweakDBID;
	public import static function GetStaticData( innerItemData : InnerItemData ) : Item_Record;
	public import static function HasStatData( innerItemData : InnerItemData, type : gamedataStatType ) : Bool;
	public import static function GetStatValueByType( innerItemData : InnerItemData, type : gamedataStatType ) : Float;
}

importonly struct ItemModParams
{
	import var itemID : ItemID;
	import var quantity : Int32;
	import var customPartsToInstall : array< ItemID >;
}

