---@meta
---@class Barotrauma.Items.Components.ItemContainer : Barotrauma.Items.Components.ItemComponent
---`Field Private Instance`
---@field inventoryTopSprite Barotrauma.Sprite
---`Field Private Instance`
---@field inventoryBackSprite Barotrauma.Sprite
---`Field Private Instance`
---@field inventoryBottomSprite Barotrauma.Sprite
---`Field Private Instance`
---@field guiCustomComponent Barotrauma.GUICustomComponent
---`Field Private Instance`
---@field containedSpriteDepths (System.Single-arr)|(System.Single[])
---`Field Private Instance`
---@field slotIcons (Barotrauma.Sprite-arr)|(Barotrauma.Sprite[])
---`Field Public Instance`
---@field OnContainedItemsChanged Barotrauma.NamedEvent*1Barotrauma*Items*Components*ItemContainer
---`Field Private Instance`
---@field alwaysContainedItemsSpawned System.Boolean
---`Field Public Instance`
---@field Inventory Barotrauma.ItemInventory
---`Field Private Instance`
---@field activeContainedItems (System.Collections.Generic.List*1Barotrauma*Items*Components*ItemContainer*ActiveContainedItem)|(Barotrauma.Items.Components.ItemContainer.ActiveContainedItem[])
---`Field Private Instance`
---@field containedItems (System.Collections.Generic.List*1Barotrauma*Items*Components*ItemContainer*ContainedItem)|(Barotrauma.Items.Components.ItemContainer.ContainedItem[])
---`Field Private Instance`
---@field itemIds (System.Collections.Generic.List)|((System.Collections.Generic.List*1System*UInt16)|(System.UInt16[])[])
---`Field Private Instance`
---@field capacity System.Int32
---`Field Private Instance`
---@field maxStackSize System.Int32
---`Field Private Instance`
---@field hideItems System.Boolean
---`Field Private Instance`
---@field autoInteractWithContainedTags (System.Collections.Immutable.ImmutableHashSet*1Barotrauma*Identifier)|(Barotrauma.Identifier[])
---`Field Private Instance`
---@field containableRestrictions (System.Collections.Generic.HashSet*1Barotrauma*Identifier)|(Barotrauma.Identifier[])
---`Field Private Instance`
---@field itemRotation System.Single
---`Field Private Instance`
---@field slotRestrictions (System.Collections.Immutable.ImmutableArray*1Barotrauma*Items*Components*ItemContainer*SlotRestrictions)|(Barotrauma.Items.Components.ItemContainer.SlotRestrictions[])
---`Field Private Instance`
---@field targets (System.Collections.Generic.List*1Barotrauma*ISerializableEntity)|(Barotrauma.ISerializableEntity[])
---`Field Private Instance`
---@field prevContainedItemRefreshRotation System.Single
---`Field Private Instance`
---@field prevContainedItemRefreshPosition Microsoft.Xna.Framework.Vector2
---`Field Private Instance`
---@field autoInjectCooldown System.Single
---`Field Private Instance`
---@field subContainersCanAutoInject System.Boolean
---`Field Private Instance`
---@field containableItemIdentifiers (System.Collections.Immutable.ImmutableHashSet*1Barotrauma*Identifier)|(Barotrauma.Identifier[])
---`Field Public Instance`
---@field HasSubContainers System.Boolean
---`Field Public Instance`
---@field hasSignalConnections System.Boolean
---`Field Private Instance`
---@field totalConditionValueString System.String
---`Field Private Instance`
---@field totalConditionPercentageString System.String
---`Field Private Instance`
---@field totalItemsString System.String
---`Field Private Instance`
---@field prevTotalConditionValue System.Single
---`Field Private Instance`
---@field prevTotalConditionPercentage System.Single
---`Field Private Instance`
---@field prevTotalItems System.Int32
---`Field Private Static`
---@field AutoInjectInterval System.Single
---`Getter Public Instance`
---@field InventoryTopSprite Barotrauma.Sprite
---`Getter Public Instance`
---@field InventoryBackSprite Barotrauma.Sprite
---`Getter Public Instance`
---@field InventoryBottomSprite Barotrauma.Sprite
---`Getter Public Instance`
---<br/>`Setter Private Instance`
---@field ContainedStateIndicator Barotrauma.Sprite
---`Getter Public Instance`
---<br/>`Setter Private Instance`
---@field ContainedStateIndicatorEmpty Barotrauma.Sprite
---`Getter Public Instance Virtual`
---@field RecreateGUIOnResolutionChange System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ContainedSpriteDepth System.Single
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field UILabel System.String
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field IndicatorStyle Barotrauma.GUIComponentStyle
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ContainedStateIndicatorStyle System.String
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ContainedStateIndicatorSlot System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ShowContainedStateIndicator System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ShowConditionInContainedStateIndicator System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ShowTotalStackCapacityInContainedStateIndicator System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field KeepOpenWhenEquipped System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field MovableFrame System.Boolean
---`Getter Public Instance Virtual`
---@field DrawSize Microsoft.Xna.Framework.Vector2
---`Getter Public Instance`
---<br/>`Setter Private Instance`
---@field Capacity System.Int32
---`Getter Public Instance`
---<br/>`Setter Private Instance`
---@field MainContainerCapacity System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field MaxStackSize System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field HideItems System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ItemPos Microsoft.Xna.Framework.Vector2
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ItemInterval Microsoft.Xna.Framework.Vector2
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ItemsPerRow System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field DrawInventory System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AllowDragAndDrop System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AllowSwappingContainedItems System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field QuickUseMovesItemsInside System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AutoInteractWithContained System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AutoInteractWithContainedTags System.String
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AllowAccess System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AccessOnlyWhenBroken System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AllowAccessWhenDropped System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field SlotsPerRow System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ContainableRestrictions System.String
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AutoFill System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ItemRotation System.Single
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field SpawnWithId System.String
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field SpawnWithIdWhenBroken System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AutoInject System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field AutoInjectThreshold System.Single
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field RemoveContainedItemsOnDeconstruct System.Boolean
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field Locked System.Boolean
---`Getter Public Instance`
---@field ContainedItemCount System.Int32
---`Getter Public Instance`
---@field ContainedNonBrokenItemCount System.Int32
---`Getter Public Instance`
---<br/>`Setter Public Instance`
---@field ExtraStackSize System.Int32
---`Getter Public Instance`
---@field ContainableItemIdentifiers (System.Collections.Immutable.ImmutableHashSet*1Barotrauma*Identifier)|(Barotrauma.Identifier[])
---`Getter Public Instance`
---@field ContainableItems (System.Collections.Generic.List*1Barotrauma*RelatedItem)|(Barotrauma.RelatedItem[])
---`Getter Public Instance`
---@field AllSubContainableItems (System.Collections.Generic.List*1Barotrauma*RelatedItem)|(Barotrauma.RelatedItem[])
_G['Components']['ItemContainer'] = {}

---`Method Public Instance`
---@overload fun(identifiersOrTags:(System.String-arr)|(System.String[]), isRestrictionsDefined:System.Boolean-ref):(System.Boolean)
---@param item Barotrauma.Item
---@param isRestrictionsDefined System.Boolean-ref
---@return System.Boolean
_G['Components']['ItemContainer'].ShouldBeContained = function(item, isRestrictionsDefined) end

---`Method Public Instance`
---@param element Barotrauma.ContentXElement
_G['Components']['ItemContainer'].ReloadContainableRestrictions = function(element) end

---`Method Public Instance`
---@param slotIndex System.Int32
---@return System.Int32
_G['Components']['ItemContainer'].GetMaxStackSize = function(slotIndex) end

---`Method Private Instance`
---@param element Barotrauma.ContentXElement
_G['Components']['ItemContainer'].InitProjSpecific = function(element) end

---`Method Public Instance`
---@param containedItem Barotrauma.Item
_G['Components']['ItemContainer'].OnItemContained = function(containedItem) end

---`Method Public Instance Virtual`
---@param amount Microsoft.Xna.Framework.Vector2
---@param ignoreContacts? System.Boolean
_G['Components']['ItemContainer'].Move = function(amount, ignoreContacts) end

---`Method Public Instance`
---@param containedItem Barotrauma.Item
_G['Components']['ItemContainer'].OnItemRemoved = function(containedItem) end

---`Method Public Instance`
---@return System.Boolean
_G['Components']['ItemContainer'].BlameEquipperForDeath = function() end

---`Method Public Instance`
---@overload fun(item:Barotrauma.Item):(System.Boolean)
---@overload fun(item:Barotrauma.Item, index:System.Int32):(System.Boolean)
---@overload fun(itemPrefab:Barotrauma.ItemPrefab):(System.Boolean)
---@param itemPrefab Barotrauma.ItemPrefab
---@param index System.Int32
---@return System.Boolean
_G['Components']['ItemContainer'].CanBeContained = function(itemPrefab, index) end

---`Method Public Instance`
---@param item Barotrauma.Item
---@return System.Boolean
_G['Components']['ItemContainer'].ContainsItemsWithSameIdentifier = function(item) end

---`Method Public Instance Virtual`
---@param relativeToSub System.Boolean
_G['Components']['ItemContainer'].FlipX = function(relativeToSub) end

---`Method Public Instance Virtual`
---@param deltaTime System.Single
---@param cam Barotrauma.Camera
_G['Components']['ItemContainer'].Update = function(deltaTime, cam) end

---`Method Private Instance`
---@param activeContainedItem Barotrauma.Items.Components.ItemContainer.ActiveContainedItem
---@return System.Boolean
_G['Components']['ItemContainer'].ShouldApplyEffects = function(activeContainedItem) end

---`Method Private Instance`
_G['Components']['ItemContainer'].SetContainedItemPositionsIfNeeded = function() end

---`Method Public Instance Virtual`
---@param deltaTime System.Single
---@param cam Barotrauma.Camera
_G['Components']['ItemContainer'].UpdateBroken = function(deltaTime, cam) end

---`Method Public Instance Virtual`
---@param character Barotrauma.Character
---@param addMessage System.Boolean
---@param msg? Barotrauma.LocalizedString
---@return System.Boolean
_G['Components']['ItemContainer'].HasRequiredItems = function(character, addMessage, msg) end

---`Method Public Instance`
---@return System.Boolean
_G['Components']['ItemContainer'].IsAccessible = function() end

---`Method Public Instance Virtual`
---@param character Barotrauma.Character
---@return System.Boolean
_G['Components']['ItemContainer'].Select = function(character) end

---`Method Public Instance Virtual`
---@param picker Barotrauma.Character
---@return System.Boolean
_G['Components']['ItemContainer'].Pick = function(picker) end

---`Method Public Instance Virtual`
---@param item Barotrauma.Item
---@param user Barotrauma.Character
---@return System.Boolean
_G['Components']['ItemContainer'].Combine = function(item, user) end

---`Method Public Instance Virtual`
---@param dropper Barotrauma.Character
---@param setTransform? System.Boolean
_G['Components']['ItemContainer'].Drop = function(dropper, setTransform) end

---`Method Public Instance Virtual`
---@param character Barotrauma.Character
_G['Components']['ItemContainer'].Equip = function(character) end

---`Method Private Instance`
---@param containedItem Barotrauma.Item
---@return System.Boolean
_G['Components']['ItemContainer'].CanAutoInteractWithContained = function(containedItem) end

---`Method Private Instance`
---@param active System.Boolean
_G['Components']['ItemContainer'].SetContainedActive = function(active) end

---`Method Private Instance`
---@param item Barotrauma.Item
---@return Barotrauma.RelatedItem
_G['Components']['ItemContainer'].FindContainableItem = function(item) end

---`Method Public Instance`
---@param itemTagOrIdentifier Barotrauma.Identifier
---@return System.Nullable*1System*Int32
_G['Components']['ItemContainer'].FindSuitableSubContainerIndex = function(itemTagOrIdentifier) end

---`Method Public Instance Virtual`
---@param signal Barotrauma.Items.Components.Signal
---@param connection Barotrauma.Items.Components.Connection
_G['Components']['ItemContainer'].ReceiveSignal = function(signal, connection) end

---`Method Public Instance`
_G['Components']['ItemContainer'].SetContainedItemPositions = function() end

---`Method Private Instance`
---@param drawPosition System.Boolean
---@param transformedItemIntervalHorizontal Microsoft.Xna.Framework.Vector2-ref
---@param transformedItemIntervalVertical Microsoft.Xna.Framework.Vector2-ref
---@param flippedX System.Boolean-ref
---@param flippedY System.Boolean-ref
---@return Microsoft.Xna.Framework.Vector2
_G['Components']['ItemContainer'].GetContainedPosition = function(drawPosition, transformedItemIntervalHorizontal, transformedItemIntervalVertical, flippedX, flippedY) end

---`Method Public Instance Virtual`
_G['Components']['ItemContainer'].OnItemLoaded = function() end

---`Method Public Instance Virtual`
_G['Components']['ItemContainer'].OnMapLoaded = function() end

---`Method Private Instance`
_G['Components']['ItemContainer'].SpawnAlwaysContainedItems = function() end

---`Method NonPublic Instance Virtual`
_G['Components']['ItemContainer'].ShallowRemoveComponentSpecific = function() end

---`Method NonPublic Instance Virtual`
_G['Components']['ItemContainer'].RemoveComponentSpecific = function() end

---`Method Public Instance Virtual`
---@param componentElement Barotrauma.ContentXElement
---@param usePrefabValues System.Boolean
---@param idRemap Barotrauma.IdRemap
---@param isItemSwap System.Boolean
_G['Components']['ItemContainer'].Load = function(componentElement, usePrefabValues, idRemap, isItemSwap) end

---`Method Public Instance Virtual`
---@param parentElement System.Xml.Linq.XElement
---@return System.Xml.Linq.XElement
_G['Components']['ItemContainer'].Save = function(parentElement) end

---`Method NonPublic Instance Virtual`
_G['Components']['ItemContainer'].CreateGUI = function() end

---`Method Private Instance`
_G['Components']['ItemContainer'].SortItems = function() end

---`Method Private Instance`
_G['Components']['ItemContainer'].MergeStacks = function() end

---`Method Public Instance`
---@return Barotrauma.LocalizedString
_G['Components']['ItemContainer'].GetUILabel = function() end

---`Method Public Instance`
---@param slotIndex System.Int32
---@return Barotrauma.Sprite
_G['Components']['ItemContainer'].GetSlotIcon = function(slotIndex) end

---`Method Public Instance`
---@param character Barotrauma.Character
---@return System.Boolean
_G['Components']['ItemContainer'].KeepOpenWhenEquippedBy = function(character) end

---`Method Public Instance`
---@return System.Single
_G['Components']['ItemContainer'].GetContainedIndicatorState = function() end

---`Method Public Instance Virtual`
---@param spriteBatch Microsoft.Xna.Framework.Graphics.SpriteBatch
---@param editing? System.Boolean
---@param itemDepth? System.Single
---@param overrideColor? System.Nullable*1Microsoft*Xna*Framework*Color
_G['Components']['ItemContainer'].Draw = function(spriteBatch, editing, itemDepth, overrideColor) end

---`Method Public Instance`
---@param spriteBatch Microsoft.Xna.Framework.Graphics.SpriteBatch
---@param itemDepth System.Single
---@param overrideColor? System.Nullable*1Microsoft*Xna*Framework*Color
_G['Components']['ItemContainer'].DrawContainedItems = function(spriteBatch, itemDepth, overrideColor) end

---`Method Public Instance Virtual`
---@param character Barotrauma.Character
---@param deltaTime System.Single
---@param cam Barotrauma.Camera
_G['Components']['ItemContainer'].UpdateHUDComponentSpecific = function(character, deltaTime, cam) end

---`Constructor Public Instance`
---@param item Barotrauma.Item
---@param element Barotrauma.ContentXElement
---@return Barotrauma.Items.Components.ItemContainer
_G['Components']['ItemContainer'] = function(item, element) end

---`Constructor Public Instance`
---@param item Barotrauma.Item
---@param element Barotrauma.ContentXElement
---@return Barotrauma.Items.Components.ItemContainer
_G['Components']['ItemContainer'].__new = function(item, element) end

