/**
 * Plugin Registration wrapper for managing plugin metadata and settings
 *
 * Encapsulates:
 * - Plugin instance with its metadata
 * - Runtime settings (enabled state, priority, configuration)
 * - Registration timestamp for audit purposes
 * - Convenience methods for accessing plugin properties
 */
import type { IPlugin } from '../core/interfaces';
import type { PluginSettings } from '../core/types';
/**
 * Represents a registered plugin with its associated settings and metadata
 * Provides immutable access to plugin information and settings management
 */
export declare class PluginRegistration<TPlugin extends IPlugin = IPlugin> {
    readonly plugin: TPlugin;
    readonly settings: PluginSettings;
    readonly registeredAt: number;
    constructor(plugin: TPlugin, settings: PluginSettings, registeredAt?: number);
    /** Plugin name from metadata */
    get name(): string;
    /** Current enabled state from settings */
    get isEnabled(): boolean;
    /** Execution priority from settings */
    get priority(): number;
    /** Plugin dependencies from metadata */
    get dependencies(): readonly string[] | undefined;
    /** Plugin version from metadata */
    get version(): string;
    /** Plugin description from metadata */
    get description(): string | undefined;
    /** Plugin tags from metadata */
    get tags(): readonly string[];
    /**
     * Creates a new registration with updated settings
     * Maintains immutability by returning a new instance
     *
     * @param settings - Partial settings to merge with current settings
     * @returns New registration instance with updated settings
     */
    withSettings(settings: Partial<PluginSettings>): PluginRegistration<TPlugin>;
    /**
     * Checks if plugin version is compatible with required version
     * Currently performs exact version matching - can be enhanced for semver ranges
     *
     * @param requiredVersion - Version requirement to check against
     * @returns True if versions are compatible
     */
    isCompatibleWith(requiredVersion: string): boolean;
}
//# sourceMappingURL=plugin-registration.d.ts.map