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;
}>;