/**
 * PluginLoader — discovery, installation, and runtime activation of plugins.
 *
 * This service is the entry point for the plugin system's I/O boundary:
 *
 * 1. **Discovery** — Scans the local plugin directory
 *    (`~/.rudder/plugins/`) and `node_modules` for packages matching
 *    the `rudder-plugin-*` naming convention. Aggregates results with
 *    path-based deduplication.
 *
 * 2. **Installation** — `installPlugin()` downloads from npm (or reads a
 *    local path), validates the manifest, checks capability consistency,
 *    and persists the install record.
 *
 * 3. **Runtime activation** — `activatePlugin()` wires up a loaded plugin
 *    with all runtime services: resolves its entrypoint, builds
 *    capability-gated host handlers, spawns a worker process, syncs job
 *    declarations, registers event subscriptions, and discovers tools.
 *
 * 4. **Shutdown** — `shutdownAll()` gracefully stops all active workers
 *    and unregisters runtime hooks.
 *
 * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Plugin Discovery
 * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
 * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Process Model
 */
import type { Db } from "@rudderhq/db";
import { PluginLoader, PluginLoaderOptions, PluginRuntimeServices } from "./plugin-loader.helpers.js";
export declare function pluginLoader(db: Db, options?: PluginLoaderOptions, runtimeServices?: PluginRuntimeServices): PluginLoader;
/**
 * Resolve the absolute path to a plugin's worker entrypoint from its manifest
 * and known install locations.
 *
 * The manifest `entrypoints.worker` field is relative to the package root.
 * We check the local plugin directory (where the package was installed) and
 * also the package directory if it was a local-path install.
 *
 * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
 */
//# sourceMappingURL=plugin-loader.core.d.ts.map