import { ReactElement, ReactNode, ComponentType } from 'react';
declare const SlotKey = "__slot__";
interface SlotableType {
[SlotKey]?: string;
}
declare function slotDecorator
(slotName: string, ElementType: P): P;
declare function getSlotKey(element: ReactElement): any;
type SlotElements = Record;
declare function getRawSlots(children: ReactNode, slots: string[]): Record;
declare function useRawSlots(children: ReactNode, slots: string[]): Record;
interface SlotOptions {
_: {
defaultWrapper?: ComponentType;
required?: string[] | ((slotElements: SlotElements) => string[]);
};
}
type GetSlotsReturn = Partial, ReactElement>>;
declare function getSlots(children: ReactNode, { _, ...slots }: T): GetSlotsReturn;
type UseSlotsReturn = GetSlotsReturn;
declare function useSlots(children: ReactNode, slots: T): UseSlotsReturn;
export { type SlotElements, type SlotOptions, type SlotableType, getRawSlots, getSlotKey, getSlots, slotDecorator as slot, useRawSlots, useSlots };