export { InventoryGUI } from './InventoryGUI'
export type { InventoryGUIProps } from './InventoryGUI'

// Contexts & Providers
export { InventoryProvider, useInventoryContext } from './context/InventoryContext'
export { ScaleProvider, useScale } from './context/ScaleContext'
export { TextureProvider, useTextures, defaultTextureConfig } from './context/TextureContext'

// Components
export { InventoryWindow } from './components/InventoryWindow'
export { InventoryBackground } from './components/InventoryWindow'
export { Slot } from './components/Slot'
export { ItemCanvas } from './components/ItemCanvas'
export { Tooltip } from './components/Tooltip'
export { JEI } from './components/JEI'
export type { JEIItem } from './components/JEI'
export { Notes } from './components/Notes'
export type { Note } from './components/Notes'
export { HUD } from './components/HUD'
export { CursorItem } from './components/CursorItem'
export { InventoryOverlay } from './components/InventoryOverlay'
export type { InventoryOverlayProps } from './components/InventoryOverlay'
export { RecipeInventoryView } from './components/RecipeGuide'

// Text components
export { MessageFormattedString } from './components/Text/MessageFormattedString'
export { default as MessageFormatted, MessagePart } from './components/Text/MessageFormatted'

// Programmatic mount (no React needed)
export { mountInventory } from './mount'
export type { MountedInventory } from './mount'

// Hooks
export { useMobile } from './hooks/useMobile'
export { useKeyboardShortcuts } from './hooks/useKeyboardShortcuts'

// Utilities
export { isItemEqual, getMaxStackSize } from './utils/isItemEqual'
export {
  getInventoryDebugApi,
  logInventoryDebug,
  createInventoryDebugSession,
  summarizeAction,
  summarizeItem,
  summarizeSlots,
  summarizeWindowState,
  getActionSlotIndexes,
  sanitizeDebugValue,
} from './debug/inventoryDebug'
export type {
  InventoryDebugApi,
  InventoryDebugLogEntry,
  InventoryDebugSession,
  InventoryDebugState,
} from './debug/inventoryDebug'

// Connector
export { createMineflayerConnector } from './connector/mineflayer'
export { createDemoConnector } from './connector/demo'
export type {
  InventoryConnector,
  ConnectorEvent,
  ConnectorListener,
  MineflayerBot,
} from './connector/types'
export type { ActionLogEntry, DemoConnectorOptions } from './connector/demo'

// Registry
export { registerInventoryType, registerTypeAlias, getInventoryType, getAllInventoryTypes } from './registry'
export type { InventoryTypeDefinition, WindowType } from './registry'

// Types
export type {
  ItemStack,
  SlotState,
  SlotDefinition,
  ProgressBar,
  InventoryWindowState,
  PlayerState,
  TradeOffer,
  InventoryAction,
  MouseButton,
  ClickMode,
  RecipeGuide,
  RecipeNavFrame,
  EntityDisplayArea,
  TextureSlice,
  BlockFaceSlice,
  BlockTextureRender,
} from './types'

// Bundled textures config
export {
  createBundledTexturesConfig,
  localBundledTexturesConfig,
  allTexturePaths,
  allContainerPaths,
} from './bundledTexturesConfig'
export type {
  BundledTexturesConfig,
  BundledTexturesConfigOptions,
} from './bundledTexturesConfig'

// Texture cache (for resetRenderedSlots / manual invalidation)
export { clearTextureCache } from './cache/textureCache'
