import { type ReactNode } from "react";
export type LogLevel = "info" | "warn" | "error" | "debug" | "success";
export interface LogEntry {
    /** Display timestamp (string the consumer chose — we don't format dates). */
    timestamp: string;
    level: LogLevel;
    message: string;
    /** Optional node id — drives the per-node filter dropdown when present. */
    nodeId?: string;
    /** Optional human-readable node label for the filter dropdown. */
    nodeLabel?: string;
    /** Structured payload (e.g. JSON request/response body). When set the
     *  line becomes expandable; the payload pretty-prints inline. */
    detail?: unknown;
    /** Optional ISO timestamp — used for export only; not rendered. */
    iso?: string;
}
export type ExportFormat = "json" | "csv";
export interface ExecutionConsoleProps {
    open?: boolean;
    onToggle?: () => void;
    logs?: LogEntry[];
    running?: boolean;
    /** Handler for the built-in Stop button — only rendered when `running` is true. */
    onStop?: () => void;
    /** Handler for the built-in Clear button. */
    onClear?: () => void;
    /** Custom copy handler — defaults to writing visible logs to the clipboard. */
    onCopy?: () => void;
    /** Custom export handler — receives the chosen format + the visible logs.
     *  Defaults to building a blob and triggering a download. */
    onExport?: (format: ExportFormat, logs: LogEntry[]) => void;
    /** Show the search input. Defaults to true. */
    searchable?: boolean;
    /** Show the level filter chips. Defaults to true. */
    showLevelFilter?: boolean;
    /** Show the node filter (when any log has a nodeId). Defaults to true. */
    showNodeFilter?: boolean;
    /** Show the export menu. Defaults to true. */
    exportable?: boolean;
    /** Initial expanded height. Defaults to 240. Used when `height` is not set. */
    expandedHeight?: number;
    /**
     * Outer height. When supplied, overrides `expandedHeight` and removes the
     * spring open/close animation — the wrapper just takes the given size.
     * Accepts:
     *   - A pixel number (`560`)
     *   - A CSS length string (`"50vh"`, `"320px"`)
     *   - `"100%"` / `"fill"` — stretch to the parent. The wrapper is set to
     *     `flex: 1 1 auto; min-height: 0` so it grows inside a flex column
     *     without spilling its parent.
     *
     * Use this when the console lives inside a flex layout that should drive
     * its size (the editor's bottom panel, full-page log viewers, etc.).
     * `expandedHeight` is preserved for back-compat when the consumer wants
     * the legacy collapsible chrome.
     */
    height?: number | string;
    /** Extra toolbar content rendered at the end of the action row. */
    toolbar?: ReactNode;
    /** Empty-state slot when there are no logs (after filters). */
    emptyState?: ReactNode;
    className?: string;
}
export declare function ExecutionConsole({ open, onToggle, logs, running, onStop, onClear, onCopy, onExport, searchable, showLevelFilter, showNodeFilter, exportable, expandedHeight, height, toolbar, emptyState, className, }: ExecutionConsoleProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=ExecutionConsole.d.ts.map