/**
 * Renderer abstraction interface
 *
 * Renderers are pluggable and can be implemented for different platforms
 * (DOM, Canvas, Native, etc.)
 */
import type { Patch } from "./types.js";
/**
 * Renderer interface that all platform renderers must implement
 */
export interface Renderer {
    /**
     * Apply a batch of patches to the render tree
     */
    applyPatches(patches: Patch[]): void;
    /**
     * Get a node by its ID (optional, for debugging)
     */
    getNode?(id: string): any;
    /**
     * Clear the entire render tree
     */
    clear?(): void;
}
/**
 * Base renderer class with common utilities
 */
export declare abstract class BaseRenderer implements Renderer {
    protected nodes: Map<string, any>;
    abstract applyPatches(patches: Patch[]): void;
    getNode(id: string): any;
    clear(): void;
    /**
     * Apply a single patch
     */
    protected applyPatch(patch: Patch): void;
    /**
     * Platform-specific patch handlers
     */
    protected abstract onCreate(id: string, elementType: string, props: Record<string, any>): void;
    protected abstract onSetProp(id: string, name: string, value: any): void;
    protected abstract onSetText(id: string, text: string): void;
    protected abstract onInsert(parentId: string, id: string, beforeId?: string): void;
    protected abstract onMove(parentId: string, id: string, beforeId?: string): void;
    protected abstract onRemove(id: string): void;
    protected abstract onAttachEvent(id: string, eventName: string): void;
    protected abstract onDetachEvent(id: string, eventName: string): void;
}
/**
 * Console/Debug renderer that logs patches
 */
export declare class ConsoleRenderer implements Renderer {
    applyPatches(patches: Patch[]): void;
}
