/**
 * RenderManager - Central rendering orchestrator
 *
 * Routes data to the appropriate specialized renderer based on data type.
 * Falls back to generic JSON/text rendering if no specialized renderer matches.
 */
import { Renderer, RenderContext, DisplayMode } from './types.js';
/**
 * Get the singleton RenderManager instance
 */
export declare function getRenderManager(): RenderManager;
/**
 * Reset the singleton (for testing)
 */
export declare function resetRenderManager(): void;
/**
 * Central manager for rendering structured data to terminal output
 */
export declare class RenderManager {
    private renderers;
    private context;
    constructor(context?: Partial<RenderContext>);
    /**
     * Register a renderer
     * @param renderer - Renderer to register
     */
    register<T>(renderer: Renderer<T>): this;
    /**
     * Unregister a renderer by ID
     * @param id - Renderer ID to remove
     */
    unregister(id: string): this;
    /**
     * Get all registered renderers
     */
    getRenderers(): Renderer[];
    /**
     * Get a renderer by ID
     */
    getRenderer(id: string): Renderer | undefined;
    /**
     * Update render context
     * @param updates - Partial context updates
     */
    setContext(updates: Partial<RenderContext>): this;
    /**
     * Get current render context
     */
    getContext(): RenderContext;
    /**
     * Set display mode
     */
    setMode(mode: DisplayMode): this;
    /**
     * Enable/disable colors
     */
    setColor(enabled: boolean): this;
    /**
     * Enable/disable emojis
     */
    setEmoji(enabled: boolean): this;
    /**
     * Find a renderer that can handle the given data
     * @param data - Data to find renderer for
     * @returns The matching renderer or undefined
     */
    findRenderer(data: unknown): Renderer | undefined;
    /**
     * Render data using the appropriate renderer
     * @param data - Data to render
     * @param contextOverrides - Optional context overrides for this render
     * @returns Rendered string
     */
    render(data: unknown, contextOverrides?: Partial<RenderContext>): string;
    /**
     * Render multiple items
     * @param items - Array of data items to render
     * @param separator - Separator between items (default: newline)
     * @returns Combined rendered string
     */
    renderAll(items: unknown[], separator?: string): string;
    /**
     * Check if any registered renderer can handle the data
     */
    canRender(data: unknown): boolean;
    /**
     * Generic fallback renderer for unknown data types
     */
    private renderGeneric;
    /**
     * Render an array
     */
    private renderArray;
    /**
     * Render an object
     */
    private renderObject;
    /**
     * Format a single value for display
     */
    private formatValue;
}
/**
 * Render data using the global RenderManager
 * @param data - Data to render
 * @param ctx - Optional context overrides
 */
export declare function renderResponse(data: unknown, ctx?: Partial<RenderContext>): string;
/**
 * Register a renderer with the global RenderManager
 * @param renderer - Renderer to register
 */
export declare function registerRenderer<T>(renderer: Renderer<T>): void;
/**
 * Configure global render context from CLI options
 */
export declare function configureRenderContext(options: {
    plain?: boolean;
    noColor?: boolean;
    noEmoji?: boolean;
    width?: number;
}): void;
