import { ReactNode } from 'react'; import { UseModuleBoundaryReturn } from '../types'; /** * Hook for accessing module boundary information and slot management. * Provides boundary element reference, slot operations, and visibility tracking. * * @returns Module boundary information and utilities * @throws Error if used outside a ModuleBoundary * * @example * ```tsx * function ModuleContent() { * const { * boundaryRef, * slots, * getSlot, * fillSlot, * dimensions, * isVisible, * } = useModuleBoundary(); * * useEffect(() => { * // Fill a slot programmatically * fillSlot('actions', ); * * return () => clearSlot('actions'); * }, [fillSlot, clearSlot]); * * return ( *
*

Module is {isVisible ? 'visible' : 'hidden'}

* {dimensions && ( *

Size: {dimensions.width}x{dimensions.height}

* )} *
* ); * } * ``` */ export declare function useModuleBoundary(): UseModuleBoundaryReturn; /** * Hook to get the boundary element dimensions. * @returns Current dimensions or null if not measured * * @example * ```tsx * const dimensions = useBoundaryDimensions(); * * if (dimensions && dimensions.width < 600) { * return ; * } * return ; * ``` */ export declare function useBoundaryDimensions(): DOMRect | null; /** * Hook to check if the module boundary is visible in viewport. * @returns Whether boundary is visible */ export declare function useBoundaryVisibility(): boolean; /** * Hook to get the module hierarchy depth. * @returns Nesting depth (0 for root modules) */ export declare function useModuleDepth(): number; /** * Hook to get the full module path from root. * @returns Array of module IDs from root to current */ export declare function useModulePath(): string[]; /** * Hook to check if current module is nested within another. * @returns Whether module has a parent */ export declare function useIsNestedModule(): boolean; /** * Hook to get the parent module ID. * @returns Parent module ID or null if root */ export declare function useParentModuleId(): string | null; /** * Hook for slot-specific operations. * @param slotName - Name of the slot * @returns Slot content and operations * * @example * ```tsx * const { content, fill, clear, isFilled } = useSlot('sidebar'); * * if (!isFilled) { * return ; * } * return content; * ``` */ export declare function useSlot(slotName: string): { content: ReactNode | null; fill: (content: ReactNode) => void; clear: () => void; isFilled: boolean; }; /** * Hook to manage multiple slots at once. * @param slotNames - Array of slot names * @returns Map of slot operations by name */ export declare function useSlots(slotNames: string[]): Map void; clear: () => void; isFilled: boolean; }>;