/**
 * Favorites Service
 *
 * Manages favorite and pinned plugins with persistence.
 *
 * @since v1.27.0
 */
import { type AddFavoriteOptions, type FavoriteEntry, type FavoritesStore, type PinnedEntry, type PluginWithFavoriteStatus } from './favorites-types.js';
/**
 * Service for managing favorite and pinned plugins
 */
export declare class FavoritesService {
    private store;
    private filePath;
    constructor(initialStore?: FavoritesStore);
    /**
     * Set the file path for persistence
     */
    setFilePath(path: string): void;
    /**
     * Get the current file path
     */
    getFilePath(): string | null;
    /**
     * Add a plugin to favorites
     */
    addFavorite(pluginName: string, options?: AddFavoriteOptions): void;
    /**
     * Remove a plugin from favorites
     */
    removeFavorite(pluginName: string): void;
    /**
     * Check if a plugin is a favorite
     */
    isFavorite(pluginName: string): boolean;
    /**
     * Get all favorite plugins
     */
    getFavorites(): FavoriteEntry[];
    /**
     * Toggle favorite status
     * @returns The new favorite status (true = now favorited)
     */
    toggleFavorite(pluginName: string): boolean;
    /**
     * Update notes for a favorite
     */
    updateFavoriteNotes(pluginName: string, notes: string | undefined): void;
    /**
     * Get the number of favorites
     */
    getFavoriteCount(): number;
    /**
     * Pin a plugin to the top of lists
     */
    pin(pluginName: string): void;
    /**
     * Unpin a plugin
     */
    unpin(pluginName: string): void;
    /**
     * Check if a plugin is pinned
     */
    isPinned(pluginName: string): boolean;
    /**
     * Get all pinned plugins (sorted by order)
     */
    getPinned(): PinnedEntry[];
    /**
     * Toggle pinned status
     * @returns The new pinned status (true = now pinned)
     */
    togglePin(pluginName: string): boolean;
    /**
     * Reorder a pinned plugin
     */
    reorderPinned(pluginName: string, newOrder: number): void;
    /**
     * Move a pinned plugin up in the list
     */
    movePinnedUp(pluginName: string): void;
    /**
     * Move a pinned plugin down in the list
     */
    movePinnedDown(pluginName: string): void;
    /**
     * Get the number of pinned plugins
     */
    getPinnedCount(): number;
    /**
     * Reindex pinned items to ensure sequential ordering
     */
    private reindexPinned;
    /**
     * Sort items with pinned plugins at the top
     */
    sortWithPinned<T extends {
        name: string;
    }>(items: T[]): T[];
    /**
     * Get favorite/pinned status for a plugin
     */
    getPluginStatus(pluginName: string): PluginWithFavoriteStatus;
    /**
     * Get status for multiple plugins
     */
    getPluginStatuses(pluginNames: string[]): Map<string, PluginWithFavoriteStatus>;
    /**
     * Add multiple plugins to favorites
     */
    addFavorites(pluginNames: string[]): void;
    /**
     * Remove multiple plugins from favorites
     */
    removeFavorites(pluginNames: string[]): void;
    /**
     * Clear all favorites
     */
    clearFavorites(): void;
    /**
     * Clear all pinned plugins
     */
    clearPinned(): void;
    /**
     * Clear everything
     */
    clearAll(): void;
    /**
     * Serialize the store for persistence
     */
    serialize(): string;
    /**
     * Load from serialized data
     */
    static fromSerialized(data: string): FavoritesService;
    /**
     * Get the raw store (for persistence)
     */
    getStore(): FavoritesStore;
    /**
     * Reset the service (for testing)
     */
    reset(): void;
}
/**
 * Get the singleton favorites service
 */
export declare function getFavoritesService(): FavoritesService;
/**
 * Reset the singleton (for testing)
 */
export declare function resetFavoritesService(): void;
//# sourceMappingURL=favorites-service.d.ts.map