import type { IMatrixContext } from '../engine/core/IMatrixContext';
import type { IMatrixComponent, IComponentMetadata, IMatrixComponentOptions } from './IMatrixComponent';
/**
 * Parameters for introspect requests.
 */
export interface IIntrospectRequest {
    depth?: number;
    includePrivate?: boolean;
}
/**
 * MatrixComponentImpl - Implementation of IMatrixComponent interface.
 *
 * This is the concrete class that implements the fluent API.
 * All navigation methods return IMatrixComponent for chaining.
 */
export declare class MatrixComponentImpl implements IMatrixComponent {
    private _context;
    private _metadata;
    constructor(options: IMatrixComponentOptions);
    /**
     * Create an IMatrixComponent by calling introspect on a remote mount.
     * This is the primary way to get an IMatrixComponent.
     */
    static fromMount(context: IMatrixContext, mount: string): Promise<IMatrixComponent>;
    /**
     * Create an IMatrixComponent from existing metadata.
     * Useful when you already have introspect data.
     */
    static fromMetadata(context: IMatrixContext, metadata: IComponentMetadata): IMatrixComponent;
    /**
     * Create an IMatrixComponent from raw introspect result.
     * Wraps any object that has mount/componentClass/accepts.
     */
    static fromIntrospect(context: IMatrixContext, introspect: Record<string, unknown>): IMatrixComponent;
    get mount(): string;
    get componentClass(): string;
    get accepts(): string[];
    get emits(): string[];
    get shellTag(): string | undefined;
    get metadata(): IComponentMetadata;
    get canRender(): boolean;
    /**
     * Get a child component by name.
     * Calls introspect on the child mount and returns IMatrixComponent.
     */
    child(name: string): Promise<IMatrixComponent>;
    /**
     * Get the parent component.
     * Derives parent mount from current mount and calls introspect.
     */
    parent(): Promise<IMatrixComponent | null>;
    /**
     * Refresh metadata by calling introspect again.
     */
    refresh(): Promise<IMatrixComponent>;
    send<TParams = unknown, TResult = unknown>(command: string, params?: TParams): Promise<TResult>;
    publish(command: string, payload?: unknown): void;
    subscribe(event: string, handler: (payload: unknown, meta: {
        topic: string;
        ts: number;
    }) => void): () => void;
    render(container: HTMLElement): Promise<HTMLElement | null>;
    /**
     * Render a clone that syncs with the original component.
     *
     * ═══════════════════════════════════════════════════════════════════════════
     * ✅ UI CONTROL INVERSION: Uses transport for replica binding
     * ═══════════════════════════════════════════════════════════════════════════
     */
    renderClone(container: HTMLElement): Promise<HTMLElement | null>;
    asProxy(): this & Record<string, (...args: unknown[]) => Promise<unknown>>;
    toJSON(): IComponentMetadata;
    toString(): string;
}
/**
 * Factory function to create an IMatrixComponent from introspect result.
 * This is the main entry point for wrapping flow results.
 */
export declare function createComponent(context: IMatrixContext, introspect: unknown): IMatrixComponent;
/**
 * Factory function to get an IMatrixComponent from a mount path.
 */
export declare function getComponent(context: IMatrixContext, mount: string): Promise<IMatrixComponent>;
//# sourceMappingURL=MatrixComponentImpl.d.ts.map