/**
 * Tool Display Formatter - AGI CLI style
 *
 * Implements the clean, informative tool execution display that AGI CLI uses:
 * - Tool call indicators with inline args
 * - Result summaries with status indicators
 * - Expandable content with previews
 * - Diff formatting with colors
 * - Advanced progress indicators
 * - Compact same-line displays
 */
export interface ToolCallDisplay {
    name: string;
    args: Record<string, unknown>;
    timestamp?: number;
}
export interface ToolResultDisplay {
    summary: string;
    fullOutput?: string;
    linesShown?: number;
    totalLines?: number;
    status: 'success' | 'error' | 'warning';
    duration?: number;
}
export interface DiffLine {
    lineNumber?: number;
    type: 'add' | 'remove' | 'context' | 'info';
    content: string;
}
/**
 * Format tool call display (AGI CLI style)
 *
 * Example output:
 * ⏺ [Read] src/core/agent.ts
 * ⏺ [Search] pattern: "TODO|FIXME", output_mode: "content", head_limit: 15
 */
export declare function formatToolCall(call: ToolCallDisplay, options?: {
    includePrefix?: boolean;
}): string;
/**
 * Format tool result display (AGI CLI style)
 *
 * Example output:
 * ⎿  Read 340 lines
 * ⎿  Found 15 lines
 * ⎿  Completed
 */
export declare function formatToolResult(result: ToolResultDisplay, options?: {
    includePrefix?: boolean;
}): string;
/**
 * Format expandable content preview
 *
 * Example:
 * import { foo } from 'bar';
 * … +312 lines
 */
export declare function formatExpandablePreview(content: string, maxLines?: number): {
    preview: string;
    isExpanded: boolean;
    totalLines: number;
};
/**
 * Format diff output (AGI CLI style)
 *
 * Example:
 * Update(src/core/agent.ts)
 * ⎿  Updated src/core/agent.ts with 2 additions and 1 removal
 *     75    private async processConversation(): Promise<string> {
 *     76      while (true) {
 *     77 -      this.pruneMessagesIfNeeded();
 *     77 +      await this.pruneMessagesIfNeeded();
 *     78
 */
export declare function formatDiff(diff: DiffLine[]): string;
/**
 * Format diff summary
 * Example: "Updated src/core/agent.ts with 2 additions and 1 removal"
 */
export declare function formatDiffSummary(file: string, additions: number, removals: number): string;
/**
 * Format edit result with advanced graphics
 * Creates a visually distinct, easy-to-read display for file edits
 *
 * Example output:
 * ╭──────────────────────────────────────────────────────────╮
 * │  ✏️  EDIT  src/core/agent.ts                              │
 * ├──────────────────────────────────────────────────────────┤
 * │  77 │ -      this.pruneMessagesIfNeeded();               │
 * │  77 │ +      await this.pruneMessagesIfNeeded();         │
 * ├──────────────────────────────────────────────────────────┤
 * │  📊 Summary: +1 line, -1 line                            │
 * ╰──────────────────────────────────────────────────────────╯
 */
export declare function formatAdvancedEdit(filePath: string, oldString: string, newString: string, options?: {
    lineNumber?: number;
    maxWidth?: number;
    replaceAll?: boolean;
}): string;
/**
 * Format a compact inline edit summary
 * For when the full box display is too verbose
 *
 * Example: "✏️ src/file.ts:42 • +3 −2 lines"
 */
export declare function formatCompactEdit(filePath: string, lineNumber: number, additions: number, removals: number): string;
/**
 * Format multiline content with indentation (AGI CLI style)
 *
 * Adds proper indentation and line wrapping
 */
export declare function formatIndentedContent(content: string, indent?: number): string;
/**
 * Format token usage indicator
 * Example: "• Context 5% used (7.2k tokens)"
 */
export declare function formatTokenUsage(percentage: number, tokens?: number): string;
/**
 * Format timing information
 * Example: "(1m 43s)" or "(250ms)"
 */
export declare function formatDuration(ms: number): string;
/**
 * Create a "thinking" indicator
 * Example: "∴ Thinking…" or "∴ Thought for 2s"
 */
export declare function formatThinking(durationMs?: number, _hasContent?: boolean): string;
/**
 * Format status line at bottom
 * Example: "• Ready for prompts (250ms)"
 */
export declare function formatStatusLine(message: string, durationMs?: number, tokenUsage?: {
    percentage: number;
    tokens?: number;
}): string;
/**
 * Smart truncate for shell commands
 * Preserves important parts like command name and key flags
 */
export declare function truncateCommand(command: string, _maxLength?: number): string;
/**
 * Format file size in human-readable format
 */
export declare function formatFileSize(bytes: number): string;
/**
 * Format JSON output with syntax highlighting
 */
export declare function formatJSON(data: unknown, compact?: boolean): string;
/**
 * Format a list of items (AGI CLI style)
 * Example:
 *   • Item 1
 *   • Item 2
 *   • Item 3
 */
export declare function formatList(items: string[], bullet?: string): string;
/**
 * Format a key-value pair (AGI CLI style)
 */
export declare function formatKeyValue(key: string, value: string): string;
export interface ToolResultSummaryInput {
    toolName: string;
    args: Record<string, unknown>;
    output: string;
    success: boolean;
    durationMs?: number;
}
/**
 * Format a tool result summary for display in the terminal.
 * This is the central function for displaying ALL tool results.
 *
 * To add support for a new tool:
 * 1. Add a case in the switch statement below
 * 2. Create a format function for that tool type
 *
 * @returns Formatted string to display, or null if no display needed
 */
export declare function formatToolResultSummary(input: ToolResultSummaryInput): string | null;
/**
 * Format a compact progress bar
 */
export declare function formatCompactProgressBar(current: number, total: number, options?: {
    width?: number;
    style?: 'bar' | 'braille' | 'dots';
}): string;
/**
 * Format a micro progress indicator (fits in status line)
 */
export declare function formatMicroProgress(current: number, total: number): string;
/**
 * Format a spinner with elapsed time
 */
export declare function formatSpinnerWithTime(frame: string, label: string, elapsedMs: number): string;
/**
 * Format multiple tool operations on a single line
 */
export declare function formatCompactToolLine(operations: Array<{
    name: string;
    status: 'success' | 'error' | 'running';
    summary?: string;
}>, options?: {
    separator?: string;
    maxWidth?: number;
}): string;
/**
 * Format a file operation summary with additions/removals
 */
export declare function formatFileOpSummary(path: string, type: 'read' | 'edit' | 'write', stats?: {
    lines?: number;
    additions?: number;
    removals?: number;
}): string;
/**
 * Format a search result summary
 */
export declare function formatSearchOpSummary(pattern: string, matchCount: number, fileCount?: number, durationMs?: number): string;
/**
 * Format a context usage badge
 */
export declare function formatContextBadge(usedPercentage: number): string;
//# sourceMappingURL=toolDisplay.d.ts.map