/**
 * Options for registering an external adapter.
 *
 * External adapters attach Matrix actor semantics to hierarchies whose
 * lifecycles we don't control (browser DOM, filesystem, object instances, etc.).
 *
 * This is the actor-layer abstraction. Environment-specific runtimes may
 * support different subsets of these options. Options not supported by a
 * runtime are silently ignored.
 *
 * Pattern References:
 * - Erlang Ports: Wrapping external resources in process semantics
 * - Channel Adapter (EIP): Connecting external systems to messaging
 * - Anti-Corruption Layer (DDD): Isolating foreign domains
 * - Object-Capability Membranes (Miller): Capability-controlled wrappers
 *
 * @see Vision/33-EXTERNAL-ADAPTER-PATTERN.md
 */
export interface IExternalAdapterOptions {
    /**
     * Template for visual representation.
     * Used by visual runtimes to create presentation layer content.
     */
    template?: string;
    /**
     * Styles for visual representation.
     * Scoped to the adapter element.
     */
    styles?: string;
    /**
     * Tag/identifier for the adapter.
     * If not provided, runtime generates one.
     * @example 'my-counter', 'data-viewer'
     */
    tag?: string;
    /**
     * Path to watch for file system adapters.
     * @example '/data/config.json', './state/'
     */
    watchPath?: string;
    /**
     * File system watch options.
     */
    watchOptions?: {
        /** Watch recursively (for directories) */
        recursive?: boolean;
        /** Debounce interval in ms */
        debounceMs?: number;
        /** File patterns to include */
        include?: string[];
        /** File patterns to exclude */
        exclude?: string[];
    };
    /**
     * Existing object instance to wrap.
     * The adapter provides a Matrix interface to an existing object.
     */
    wrapInstance?: object;
    /**
     * Method names to expose as accepts.
     * If not provided, all public methods are exposed.
     */
    exposeMethods?: string[];
    /**
     * Property names to expose as state.
     * Changes emit events.
     */
    exposeProperties?: string[];
    /**
     * Command to spawn for process adapters.
     * @example 'node worker.js', 'python processor.py'
     */
    spawnCommand?: string;
    /**
     * Arguments for spawned process.
     */
    spawnArgs?: string[];
    /**
     * Environment variables for spawned process.
     */
    spawnEnv?: Record<string, string>;
    /**
     * URL for network resource.
     * @example 'ws://server:8080', 'https://api.example.com'
     */
    url?: string;
    /**
     * Protocol for network adapter.
     */
    protocol?: 'websocket' | 'http' | 'grpc' | 'nats';
    /**
     * Metadata passed to the adapter.
     * Interpretation is environment-specific.
     */
    metadata?: Record<string, unknown>;
    /**
     * Supervision strategy when adapter detects external failure.
     * - 'crash': Crash the component (let supervisor handle)
     * - 'reconnect': Attempt reconnection
     * - 'ignore': Ignore failures
     */
    onExternalFailure?: 'crash' | 'reconnect' | 'ignore';
    /**
     * Maximum reconnection attempts (if onExternalFailure is 'reconnect').
     */
    maxReconnectAttempts?: number;
    /**
     * Reconnection delay in ms.
     */
    reconnectDelayMs?: number;
}
//# sourceMappingURL=IExternalAdapterOptions.d.ts.map