import type { IMatrixContext } from '../engine/core/IMatrixContext';
import type { IDomStrategy } from './IDomStrategy';
import { ShellElementRegistry } from './ComponentRegistry';
import type { IRuntimeHost } from './IRuntimeHost';
/**
 * Configuration for BrowserDomStrategy.
 */
export interface IBrowserDomStrategyConfig {
    /** Optional runtime host (defaults to HeadlessHost which auto-detects DOM). */
    host?: IRuntimeHost;
    /** Enable logging. */
    logging?: boolean;
}
/**
 * BrowserDomStrategy — IDomStrategy implementation for browser environments.
 *
 * Encapsulates all DOM concerns:
 * - Custom element registration via ShellElementRegistry
 * - Element creation (prefers constructor over document.createElement)
 * - Element mounting (duck-types mount/setContext/fallback)
 * - Element unmounting (DOM removal)
 *
 * The MatrixRuntime delegates to this when domStrategy is provided.
 * When domStrategy is null/undefined, runtime operates headless.
 */
export declare class BrowserDomStrategy implements IDomStrategy {
    private readonly host;
    private readonly registry;
    private readonly logger;
    constructor(config?: IBrowserDomStrategyConfig);
    registerElement(tag: string, constructor: CustomElementConstructor): void;
    isElementRegistered(tag: string): boolean;
    createElement(tag: string, attributes?: Record<string, string>): HTMLElement;
    mountElement(element: HTMLElement, context: IMatrixContext): Promise<void>;
    unmountElement(element: HTMLElement): Promise<void>;
    /** Get the underlying host (for shutdown cleanup). */
    getHost(): IRuntimeHost;
    /** Get the element registry (for stats, tracking, etc.). */
    getRegistry(): ShellElementRegistry;
    /** Dispose the host. */
    dispose(): void;
}
//# sourceMappingURL=BrowserDomStrategy.d.ts.map