/**
 * Groups Hook
 *
 * React hook for plugin groups state management.
 *
 * @since v1.28.0
 */
import { type GroupStatus, type PluginGroup, type PluginStatusItem, type TagColor } from '../../core/tags/index.js';
/**
 * Hook return type
 */
interface UseGroupsResult {
    /** All defined groups */
    groups: PluginGroup[];
    /** Number of groups */
    groupCount: number;
    /** Get a group by ID */
    getGroup: (id: string) => PluginGroup | null;
    /** Check if group exists */
    hasGroup: (id: string) => boolean;
    /** Create a new group */
    createGroup: (name: string, color?: TagColor, description?: string, icon?: string) => PluginGroup;
    /** Update a group */
    updateGroup: (id: string, updates: Partial<Omit<PluginGroup, 'id' | 'createdAt' | 'plugins'>>) => void;
    /** Delete a group */
    deleteGroup: (id: string) => void;
    /** Add plugin to group */
    addToGroup: (groupId: string, pluginName: string) => void;
    /** Remove plugin from group */
    removeFromGroup: (groupId: string, pluginName: string) => void;
    /** Move plugin between groups */
    moveToGroup: (pluginName: string, fromGroupId: string, toGroupId: string) => void;
    /** Check if plugin is in group */
    isInGroup: (groupId: string, pluginName: string) => boolean;
    /** Get groups for a plugin */
    getPluginGroups: (pluginName: string) => PluginGroup[];
    /** Get group IDs for a plugin */
    getPluginGroupIds: (pluginName: string) => string[];
    /** Get plugins in a group */
    getGroupPlugins: (groupId: string) => string[];
    /** Get ungrouped plugins */
    getUngroupedPlugins: (allPlugins: string[]) => string[];
    /** Toggle group expanded state */
    toggleExpanded: (groupId: string) => boolean;
    /** Set group expanded state */
    setExpanded: (groupId: string, expanded: boolean) => void;
    /** Expand all groups */
    expandAll: () => void;
    /** Collapse all groups */
    collapseAll: () => void;
    /** Get group status */
    getGroupStatus: (groupId: string, plugins: PluginStatusItem[]) => GroupStatus;
    /** Reorder group in list */
    reorderGroup: (groupId: string, newIndex: number) => void;
    /** Set plugins in group */
    setGroupPlugins: (groupId: string, pluginNames: string[]) => void;
    /** Clear group plugins */
    clearGroup: (groupId: string) => void;
    /** Serialize for persistence */
    serialize: () => string;
}
/**
 * Hook options
 */
interface UseGroupsOptions {
    /** Initial serialized data to load */
    initialData?: string;
}
/**
 * React hook for managing plugin groups
 */
export declare function useGroups(options?: UseGroupsOptions): UseGroupsResult;
export {};
//# sourceMappingURL=useGroups.d.ts.map