/**
 * Plugin Manifest System
 *
 * Extended manifest format with components, marketplace sources,
 * namespaced skill resolution, and marketplace restrictions.
 */
export type PluginSourceType = 'github' | 'git' | 'url' | 'npm' | 'file' | 'directory' | 'host-pattern';
export interface PluginManifest {
    name: string;
    version: string;
    author?: string;
    license?: string;
    description?: string;
    schema?: number;
    components: {
        skills?: string[];
        agents?: string[];
        hooks?: string;
        mcpServers?: string[];
        lspServers?: string[];
    };
    dependencies?: Record<string, string>;
    marketplace?: {
        source: PluginSourceType;
        url?: string;
        registry?: string;
    };
}
export interface InstalledPlugin {
    manifest: PluginManifest;
    path: string;
    enabled: boolean;
    installedAt: number;
    namespace: string;
}
export declare class PluginManifestManager {
    private plugins;
    private pluginDirs;
    private strictKnownMarketplaces;
    private extraKnownMarketplaces;
    constructor(pluginDirs?: string[]);
    /**
     * Load plugin from manifest at a given path
     */
    loadPlugin(pluginPath: string): InstalledPlugin;
    /**
     * Read manifest from plugin path (stub - returns parsed JSON-like object)
     */
    private readManifest;
    /**
     * Load a plugin directly from a manifest object (for programmatic use)
     */
    loadPluginDirect(manifest: PluginManifest, pluginPath: string): InstalledPlugin;
    /**
     * Validate a plugin manifest
     */
    validateManifest(manifest: PluginManifest): {
        valid: boolean;
        errors: string[];
    };
    /**
     * Install from various sources (stub implementation)
     */
    installFromSource(source: PluginSourceType, location: string): Promise<InstalledPlugin>;
    /**
     * Extract a plugin name from source type and location
     */
    private extractPluginName;
    /**
     * Resolve namespaced skill: "plugin-name:skill-name"
     */
    resolveSkill(namespacedName: string): {
        pluginName: string;
        skillName: string;
    } | null;
    /**
     * List all plugins
     */
    listPlugins(): InstalledPlugin[];
    /**
     * Get a specific plugin by name
     */
    getPlugin(name: string): InstalledPlugin | null;
    /**
     * Enable a plugin
     */
    enablePlugin(name: string): boolean;
    /**
     * Disable a plugin
     */
    disablePlugin(name: string): boolean;
    /**
     * Uninstall a plugin
     */
    uninstallPlugin(name: string): boolean;
    /**
     * Check if a marketplace URL is allowed
     */
    isMarketplaceAllowed(url: string): boolean;
    /**
     * Set strict marketplace mode
     */
    setStrictMarketplaces(strict: boolean): void;
    /**
     * Add a known marketplace URL
     */
    addKnownMarketplace(url: string): void;
    /**
     * Get total plugin count
     */
    getPluginCount(): number;
    /**
     * Get enabled plugin count
     */
    getEnabledCount(): number;
}
