/**
 * Preferences Service
 *
 * Manages user preferences for plugins including enable/disable state,
 * skip migration flags, pinned plugins, and notes.
 *
 * Data is stored in ~/.pluginator/preferences.json
 *
 * @since v1.50.0
 */
import type { PluginPreferenceState, PluginPreferences, ServerTarget } from '../types/preferences.js';
/**
 * Preferences Service
 * Manages user plugin preferences
 */
export declare class PreferencesService {
    private prefs;
    private path;
    private dirty;
    constructor(path?: string);
    /**
     * Load preferences from disk
     * Creates default preferences if file doesn't exist
     */
    load(): Promise<PluginPreferences>;
    /**
     * Save preferences to disk
     */
    save(): Promise<void>;
    /**
     * Check if there are unsaved changes
     */
    isDirty(): boolean;
    /**
     * Get current preferences object
     */
    getPreferences(): PluginPreferences | null;
    /**
     * Ensure preferences are loaded, returns the loaded prefs for convenience
     */
    private ensureLoaded;
    /**
     * Check if plugin is disabled on production
     */
    isDisabledOnProd(pluginName: string): boolean;
    /**
     * Check if plugin is disabled on test
     */
    isDisabledOnTest(pluginName: string): boolean;
    /**
     * Check if plugin is disabled on a specific server
     */
    isDisabled(pluginName: string, server: ServerTarget): boolean;
    /**
     * Set disabled state on production
     */
    setDisabledOnProd(pluginName: string, disabled: boolean): void;
    /**
     * Set disabled state on test
     */
    setDisabledOnTest(pluginName: string, disabled: boolean): void;
    /**
     * Set disabled state on a specific server or both
     */
    setDisabled(pluginName: string, server: ServerTarget, disabled: boolean): void;
    /**
     * Check if plugin should be skipped during migration
     */
    shouldSkipMigrate(pluginName: string): boolean;
    /**
     * Set skip migration flag
     */
    setSkipMigrate(pluginName: string, skip: boolean): void;
    /**
     * Get all plugins marked to skip migration
     */
    getSkipMigratePlugins(): string[];
    /**
     * Check if plugin is pinned
     */
    isPinned(pluginName: string): boolean;
    /**
     * Set pinned state
     */
    setPinned(pluginName: string, pinned: boolean): void;
    /**
     * Get all pinned plugins
     */
    getPinnedPlugins(): string[];
    /**
     * Check if plugin is a favorite
     */
    isFavorite(pluginName: string): boolean;
    /**
     * Set favorite state
     */
    setFavorite(pluginName: string, favorite: boolean): void;
    /**
     * Toggle favorite state, returns new state
     */
    toggleFavorite(pluginName: string): boolean;
    /**
     * Get all favorite plugins
     */
    getFavoritePlugins(): string[];
    /**
     * Get note for a plugin
     */
    getNote(pluginName: string): string | undefined;
    /**
     * Set note for a plugin (empty string to remove)
     */
    setNote(pluginName: string, note: string): void;
    /**
     * Get all notes
     */
    getAllNotes(): Record<string, string>;
    /**
     * Get full preference state for a plugin
     */
    getPluginState(pluginName: string): PluginPreferenceState;
    /**
     * Get preference states for multiple plugins
     */
    getPluginStates(pluginNames: string[]): Map<string, PluginPreferenceState>;
    /**
     * Remove all preferences for a plugin
     */
    removePlugin(pluginName: string): void;
    /**
     * Get statistics about preferences
     */
    getStats(): {
        disabledOnProdCount: number;
        disabledOnTestCount: number;
        skipMigrateCount: number;
        pinnedCount: number;
        favoritesCount: number;
        notesCount: number;
    };
}
/**
 * Get the singleton preferences service
 */
export declare function getPreferencesService(path?: string): PreferencesService;
/**
 * Create a new preferences service (for testing)
 */
export declare function createPreferencesService(path?: string): PreferencesService;
//# sourceMappingURL=preferences-service.d.ts.map