/**
 * Plugin Manager
 *
 * Manages the plugin registry, providing CRUD operations
 * and lookup functionality for configured plugins.
 */
import type { Plugin, PluginSourceType } from './types/index.js';
/**
 * Plugin Manager class
 */
export declare class PluginManager {
    private plugins;
    private pluginsPath;
    private loaded;
    constructor(pluginsPath?: string);
    /**
     * Load plugins from configuration file
     */
    load(): Promise<void>;
    /**
     * Save plugins to configuration file
     */
    save(): Promise<void>;
    /**
     * Get all plugins
     */
    getAll(): Plugin[];
    /**
     * Get plugins filtered by source type
     */
    getByType(type: PluginSourceType): Plugin[];
    /**
     * Get enabled plugins only
     */
    getEnabled(): Plugin[];
    /**
     * Find a plugin by name (case-insensitive)
     */
    findByName(name: string): Plugin | undefined;
    /**
     * Find a plugin by resource ID (Spigot)
     */
    findByResourceId(resourceId: string): Plugin | undefined;
    /**
     * Find a plugin by project slug (Modrinth)
     */
    findByProjectSlug(slug: string): Plugin | undefined;
    /**
     * Find a plugin by repo slug (GitHub)
     */
    findByRepoSlug(slug: string): Plugin | undefined;
    /**
     * Add a new plugin
     */
    add(plugin: Plugin): void;
    /**
     * Update an existing plugin
     */
    update(name: string, updates: Partial<Plugin>): boolean;
    /**
     * Remove a plugin by name
     */
    remove(name: string): boolean;
    /**
     * Get plugins that should be disabled on test server
     */
    getDisableOnTest(): Plugin[];
    /**
     * Get count of plugins
     */
    get count(): number;
    /**
     * Check if manager is loaded
     */
    get isLoaded(): boolean;
    /**
     * Get plugin source identifier for API queries
     * Returns the appropriate identifier based on source type
     */
    getSourceIdentifier(plugin: Plugin): string | null;
    /**
     * Create a new PluginManager and load plugins
     */
    static create(pluginsPath?: string): Promise<PluginManager>;
}
/**
 * Create a new plugin with minimal required fields
 */
export declare function createPlugin(name: string, type: PluginSourceType, options?: Partial<Plugin>): Plugin;
/**
 * Validate a plugin configuration
 */
export declare function validatePlugin(plugin: Plugin): string[];
//# sourceMappingURL=plugin-manager.d.ts.map