The data class GuiSlot actually defines what should happen where. Generally they can be defined as a pair of Item and Slot.
You give the generator the slot to place an item. Simple right?
Well it is a bit more customizable. There are multiple GuiSlot types that do different actions within the gui.
With this type you can literally do everything. In its core it is just an clickable item in your Gui. You can optionally specify a set of Widgets(actions) that should run when the item has been clicked. Additionally you can also give it a countScore that modifies the count of the item(Great for option gui, sliders, displaying data, etc). The Item is required here.
This is a simple item that blocks the corresponding slot, can't be taken out and has no major actions. The placed item is the one specified as placeholder by the Module or the current Page. You can override it though by specifying an optional item.