/**
 * Tags Hook
 *
 * React hook for plugin tags state management.
 *
 * @since v1.28.0
 */
import { type Tag, type TagColor } from '../../core/tags/index.js';
/**
 * Hook return type
 */
interface UseTagsResult {
    /** All defined tags */
    tags: Tag[];
    /** System tags only */
    systemTags: Tag[];
    /** Custom (user-created) tags */
    customTags: Tag[];
    /** Number of tags */
    tagCount: number;
    /** Get a tag by ID */
    getTag: (id: string) => Tag | null;
    /** Check if tag exists */
    hasTag: (id: string) => boolean;
    /** Create a new tag */
    createTag: (name: string, color: TagColor, description?: string) => Tag;
    /** Update a tag */
    updateTag: (id: string, updates: Partial<Omit<Tag, 'id' | 'isSystem' | 'createdAt'>>) => void;
    /** Delete a tag */
    deleteTag: (id: string) => void;
    /** Assign tag to plugin */
    assignTag: (pluginName: string, tagId: string) => void;
    /** Remove tag from plugin */
    removeTag: (pluginName: string, tagId: string) => void;
    /** Toggle tag on plugin */
    toggleTag: (pluginName: string, tagId: string) => boolean;
    /** Check if plugin has tag */
    hasPluginTag: (pluginName: string, tagId: string) => boolean;
    /** Get tags for a plugin */
    getPluginTags: (pluginName: string) => Tag[];
    /** Get tag IDs for a plugin */
    getPluginTagIds: (pluginName: string) => string[];
    /** Get plugins with a tag */
    getPluginsByTag: (tagId: string) => string[];
    /** Set all tags for a plugin */
    setPluginTags: (pluginName: string, tagIds: string[]) => void;
    /** Clear all tags from a plugin */
    clearPluginTags: (pluginName: string) => void;
    /** Get tag counts */
    getTagCounts: () => Map<string, number>;
    /** Serialize for persistence */
    serialize: () => string;
}
/**
 * Hook options
 */
interface UseTagsOptions {
    /** Initial serialized data to load */
    initialData?: string;
}
/**
 * React hook for managing plugin tags
 */
export declare function useTags(options?: UseTagsOptions): UseTagsResult;
export {};
//# sourceMappingURL=useTags.d.ts.map