import type { IMatrixContext } from '../engine/core/IMatrixContext';
import type { IMatrixRuntime } from '../engine/core/IMatrixRuntime';
import type { IComponentDescriptor } from '../engine/core/IComponentDescriptor';
import type { IChildDescriptor } from '../engine/core/IChildDescriptor';
import type { IExternalAdapterOptions } from './composite/IExternalAdapterOptions';
import { MatrixActor } from './MatrixActor';
import type { IMailbox } from '../engine/mailbox/IMailbox';
/**
 * Component tracking info (matches MatrixRuntime structure).
 */
interface ComponentInfo {
    id: string;
    component: MatrixActor;
    mount: string;
}
/**
 * MockRuntime - Minimal runtime for testing.
 *
 * Implements IMatrixRuntime with minimal functionality for unit tests
 * that don't need full runtime features.
 *
 * Uses same internal structure as MatrixRuntime (_components Map)
 * so MatrixActor can access tracked components.
 *
 * Usage in tests:
 * ```typescript
 * const runtime = new MockRuntime();
 * const context = MatrixContext.create('test', transport, runtime);
 * ```
 */
export declare class MockRuntime implements IMatrixRuntime {
    readonly type: 'headless' | 'browser';
    readonly supportsDom: boolean;
    readonly _components: Map<string, ComponentInfo>;
    private readonly _mailboxes;
    createChild(parentContext: IMatrixContext, id: string, descriptor: IComponentDescriptor): Promise<string>;
    parseTemplate(_html: string): Promise<IChildDescriptor[]>;
    /**
     * Create an exclusive mailbox for a component (IMatrixRuntime interface).
     */
    createMailbox(mount: string): IMailbox;
    /**
     * Get a component by mount path.
     * @deprecated This is a CHEAT - actors should use transport for communication.
     * Use RequestReply.execute() or sendTo() instead of getting direct references.
     * This method exists only for framework/testing infrastructure.
     */
    getComponent<T extends MatrixActor>(mount: string): T | undefined;
    /**
     * Check if a component exists by mount path.
     * This is the PROPER way to check existence without getting a reference.
     */
    hasComponent(mount: string): boolean;
    /**
     * Remove and dispose a component.
     */
    remove(mount: string): Promise<void>;
    /**
     * Register an external adapter (no-op for mock).
     *
     * Mock runtime doesn't support DOM or visual adapters.
     * Returns undefined to indicate no adapter was created.
     */
    registerExternalAdapter(_id: string, _ComponentClass: new () => MatrixActor, _options?: IExternalAdapterOptions): string | undefined;
    /**
     * Unregister an external adapter (no-op for mock).
     */
    unregisterExternalAdapter(_tag: string): void;
    /**
     * Check if an external adapter is registered (always false for mock).
     */
    hasExternalAdapter(_tag: string): boolean;
    /**
     * Check if dynamic component compilation is allowed.
     *
     * MockRuntime is for testing, so always allows dynamic compilation.
     *
     * @returns true (always for mock/testing)
     */
    isDynamicCompilationAllowed(): boolean;
    /**
     * Clear all tracked components.
     */
    clear(): void;
}
export {};
//# sourceMappingURL=MockRuntime.d.ts.map