interface SlotContextProps { context?: Record; registerSlot: (name: SlotNames, contents: React.ReactNode) => void; unregisterSlot: (name: SlotNames) => void; } type SlotNames = 'ActionsContainer' | 'Description'; interface SlotProps { children: ((context: SlotContextProps['context']) => React.ReactNode) | React.ReactNode; name: SlotNames; } type Slots = { [key in SlotNames]?: React.ReactNode; }; interface UseSlotsProps { slotNames: SlotNames[]; } interface UseSlotsPropsReturn { contextValue: SlotContextProps; slots: Slots; } export type { SlotContextProps, SlotNames, SlotProps, Slots, UseSlotsProps, UseSlotsPropsReturn };