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