/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ServerNode } from "./ServerNode.js";
/**
 * Manages plugin loading and application for a {@link ServerNode}.
 *
 * Plugins are comma-separated module specifiers configured via the `plugins` variable, either globally
 * (`MATTER_PLUGINS`) or per-node (`MATTER_NODES_<id>_PLUGINS`).  Both sources are merged with deduplication.
 *
 * String specifiers are resolved via the platform module loader (ESM `import()` or CJS `require()`).
 *
 * Module exports are classified by precedence:
 *   - Named `install` function: called with the node
 *   - `*Server` {@link Behavior} exports: installed on the root endpoint
 *   - Single {@link EndpointType}: added as a child endpoint
 *   - None of the above: side-effect only (no-op)
 *   - Multiple server behaviors or device types without `install`: error
 *
 * Only exports whose name ends with "Server" are considered as behavior plugins.  This matches the matter.js
 * convention where `*Server` is the implementation behavior, while `*Behavior` is the base class and `*Client`
 * is the client-side proxy.  This allows standard behavior module paths (e.g. `@matter/node/behaviors/on-off`)
 * to work directly as plugin specifiers.
 */
export declare class Plugins {
    #private;
    constructor(node: ServerNode);
    /**
     * Load and apply all plugins.  Called once during node initialization.
     */
    load(): Promise<void>;
}
export declare namespace Plugins {
    /**
     * The `install` export signature for plugin modules.
     */
    type Installer = (node: ServerNode) => void;
}
//# sourceMappingURL=Plugins.d.ts.map