/**
 * Group Service
 *
 * Manages plugin groups for organization.
 *
 * @since v1.28.0
 */
import { type GroupStatus, type GroupStore, type PluginGroup, type PluginStatusItem } from './group-types.js';
import type { TagColor } from './tag-types.js';
/**
 * Service for managing plugin groups
 */
export declare class GroupService {
    private store;
    private filePath;
    constructor(initialStore?: GroupStore);
    /**
     * Set the file path for persistence
     */
    setFilePath(path: string): void;
    /**
     * Get the current file path
     */
    getFilePath(): string | null;
    /**
     * Create a new group
     */
    createGroup(name: string, color?: TagColor, description?: string, icon?: string): PluginGroup;
    /**
     * Update an existing group
     */
    updateGroup(id: string, updates: Partial<Omit<PluginGroup, 'id' | 'createdAt' | 'plugins'>>): void;
    /**
     * Delete a group
     */
    deleteGroup(id: string): void;
    /**
     * Get all groups
     */
    getGroups(): PluginGroup[];
    /**
     * Get a group by ID
     */
    getGroup(id: string): PluginGroup | null;
    /**
     * Check if a group exists
     */
    hasGroup(id: string): boolean;
    /**
     * Get the number of groups
     */
    getGroupCount(): number;
    /**
     * Add a plugin to a group
     */
    addToGroup(groupId: string, pluginName: string): void;
    /**
     * Remove a plugin from a group
     */
    removeFromGroup(groupId: string, pluginName: string): void;
    /**
     * Check if a plugin is in a group
     */
    isInGroup(groupId: string, pluginName: string): boolean;
    /**
     * Get all groups a plugin belongs to
     */
    getPluginGroups(pluginName: string): PluginGroup[];
    /**
     * Get group IDs for a plugin
     */
    getPluginGroupIds(pluginName: string): string[];
    /**
     * Move a plugin from one group to another
     */
    moveToGroup(pluginName: string, fromGroupId: string, toGroupId: string): void;
    /**
     * Get plugins in a group
     */
    getGroupPlugins(groupId: string): string[];
    /**
     * Get all ungrouped plugins from a list
     */
    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 (update counts, etc.)
     */
    getGroupStatus(groupId: string, plugins: PluginStatusItem[]): GroupStatus;
    /**
     * Reorder a group in the list
     */
    reorderGroup(groupId: string, newIndex: number): void;
    /**
     * Add multiple plugins to a group
     */
    addManyToGroup(groupId: string, pluginNames: string[]): void;
    /**
     * Remove multiple plugins from a group
     */
    removeManyFromGroup(groupId: string, pluginNames: string[]): void;
    /**
     * Set all plugins in a group (replaces existing)
     */
    setGroupPlugins(groupId: string, pluginNames: string[]): void;
    /**
     * Clear all plugins from a group
     */
    clearGroup(groupId: string): void;
    /**
     * Serialize the store for persistence
     */
    serialize(): string;
    /**
     * Load from serialized data
     */
    static fromSerialized(data: string): GroupService;
    /**
     * Get the raw store (for persistence)
     */
    getStore(): GroupStore;
    /**
     * Reset the service (for testing)
     */
    reset(): void;
}
/**
 * Get the singleton group service
 */
export declare function getGroupService(): GroupService;
/**
 * Reset the singleton (for testing)
 */
export declare function resetGroupService(): void;
//# sourceMappingURL=group-service.d.ts.map