/**
 * A2UI Tool
 *
 * Tool interface for AI agents to interact with the A2UI system.
 * Provides actions to create surfaces, add components, update data, and render.
 */
import type { A2UIStyles, ComponentType } from './a2ui-types.js';
import { A2UIManager } from './a2ui-manager.js';
import { A2UIServer } from './a2ui-server.js';
export type A2UIAction = 'create_surface' | 'delete_surface' | 'add_component' | 'add_components' | 'update_data' | 'begin_rendering' | 'render_terminal' | 'render_html' | 'get_surface' | 'list_surfaces' | 'start_server' | 'stop_server' | 'server_status';
export interface A2UIToolInput {
    /** Action to perform */
    action: A2UIAction;
    /** Surface ID (for most actions) */
    surfaceId?: string;
    /** Component to add */
    component?: {
        id: string;
        type: ComponentType;
        props?: Record<string, unknown>;
    };
    /** Multiple components to add */
    components?: Array<{
        id: string;
        type: ComponentType;
        props?: Record<string, unknown>;
    }>;
    /** Data to update */
    data?: Record<string, unknown>;
    /** Data path for nested updates */
    dataPath?: string;
    /** Root component ID for rendering */
    root?: string;
    /** Surface styles */
    styles?: A2UIStyles;
    /** Server port */
    port?: number;
    /** Server host */
    host?: string;
}
export interface A2UIToolResult {
    success: boolean;
    output?: string;
    error?: string;
    data?: unknown;
}
export declare class A2UITool {
    private manager;
    private server;
    constructor(manager?: A2UIManager);
    /**
     * Execute an A2UI action
     */
    execute(input: A2UIToolInput): Promise<A2UIToolResult>;
    /**
     * Create a new surface
     */
    private createSurface;
    /**
     * Delete a surface
     */
    private deleteSurface;
    /**
     * Add a single component to a surface
     */
    private addComponent;
    /**
     * Add multiple components to a surface
     */
    private addComponents;
    /**
     * Build A2UIComponent from input
     */
    private buildComponent;
    /**
     * Update data model
     */
    private updateData;
    /**
     * Begin rendering a surface
     */
    private beginRendering;
    /**
     * Render surface to terminal
     */
    private renderTerminal;
    /**
     * Render surface to HTML
     */
    private renderHTML;
    /**
     * Get surface details
     */
    private getSurface;
    /**
     * List all surfaces
     */
    private listSurfaces;
    /**
     * Start A2UI server
     */
    private startServer;
    /**
     * Stop A2UI server
     */
    private stopServer;
    /**
     * Get server status
     */
    private serverStatus;
    /**
     * Get the A2UI Manager
     */
    getManager(): A2UIManager;
    /**
     * Get the A2UI Server (if running)
     */
    getServer(): A2UIServer | null;
}
/**
 * Get singleton A2UI Tool instance
 */
export declare function getA2UITool(): A2UITool;
/**
 * Reset A2UI Tool (for testing)
 */
export declare function resetA2UITool(): void;
export default A2UITool;
