/**
 * Plugin Registry — discovers, loads, and manages plugins.
 *
 * Core stays plugin-agnostic: it knows about the *interface*, not specific plugins.
 * Plugins are discovered from (highest priority first):
 *   1. Local dev: $FRANKLIN_PLUGINS_DIR/* (or legacy $RUNCODE_PLUGINS_DIR/*)
 *   2. User: ~/.blockrun/plugins/*
 *   3. Bundled: <franklin>/dist/plugins-bundled/* (reserved for plugins
 *      shipped inside the npm tarball — none today; social/trading/content
 *      are native subsystems, not plugins)
 */
import type { Plugin, PluginManifest } from '../plugin-sdk/plugin.js';
export declare function getBundledPluginsDir(): string;
export declare function getUserPluginsDir(): string;
interface LoadedPlugin {
    manifest: PluginManifest;
    pluginDir: string;
    plugin: Plugin;
}
/** Find all plugin manifests across discovery paths */
export declare function discoverPluginManifests(): Array<{
    manifest: PluginManifest;
    dir: string;
}>;
/** Load a single plugin from its directory */
export declare function loadPlugin(manifest: PluginManifest, pluginDir: string): Promise<Plugin | null>;
/** Discover and load all plugins. Returns the loaded registry. */
export declare function loadAllPlugins(): Promise<Map<string, LoadedPlugin>>;
export declare function getPlugin(id: string): LoadedPlugin | undefined;
export declare function listPlugins(): LoadedPlugin[];
/** Get all plugins that provide workflows */
export declare function listWorkflowPlugins(): LoadedPlugin[];
/** Get all plugins that provide channels */
export declare function listChannelPlugins(): LoadedPlugin[];
export {};
