--[=[
	@class MerchBooth
]=]

local module = {
	-- Server APIs
	addItemAsync = addItemAsync(serverStore),
	removeItem = removeItem(serverStore),
	addProximityButton = addProximityButton(serverStore),
	removeProximityButton = removeProximityButton(serverStore),

	-- Client APIs
	configure = configure(clientStore),
	resetConfiguration = resetConfiguration(clientStore),
	setCatalogSort = setCatalogSort(clientStore),
	setEnabled = setEnabled(clientStore),
	setControlKeyCodes = setControlKeyCodes(clientStore),

	-- UI states functions (client only)
	openMerchBooth = uiStatesFunctions.openMerchBooth(clientStore),
	openItemView = uiStatesFunctions.openItemView(clientStore),
	closeMerchBooth = uiStatesFunctions.closeMerchBooth(clientStore),
	toggleCatalogButton = uiStatesFunctions.toggleCatalogButton(clientStore),
	isMerchBoothOpen = uiStatesFunctions.isMerchBoothOpen(clientStore),
	isMerchBoothEnabled = uiStatesFunctions.isMerchBoothEnabled(clientStore),

	-- UI states events (client only)
	merchBoothOpened = uiStatesEvents.merchBoothOpened.Event,
	merchBoothClosed = uiStatesEvents.merchBoothClosed.Event,
	catalogViewOpened = uiStatesEvents.catalogViewOpened.Event,
	catalogViewClosed = uiStatesEvents.catalogViewClosed.Event,
	itemViewOpened = uiStatesEvents.itemViewOpened.Event,
	itemViewClosed = uiStatesEvents.itemViewClosed.Event,

	-- Server and client APIs
	getItems = getItems(serverStore, clientStore),
	itemAdded = itemEvents.itemAdded.Event,
	itemRemoved = itemEvents.itemRemoved.Event,

	-- Enums
	Controls = enums.Controls,
}
