/**
 * Centralized UI Constants
 *
 * Single source of truth for all magic numbers, thresholds, and display limits
 * used throughout the UI layer. Prevents inconsistencies and makes tuning easier.
 */
/**
 * Standard truncation lengths for different content types.
 * All values account for ellipsis character (…) which is 1 char.
 */
export declare const TRUNCATE: {
    /** Short paths in compact displays */
    readonly SHORT_PATH: 40;
    /** Full paths in expanded displays */
    readonly LONG_PATH: 80;
    /** Task/tool descriptions */
    readonly DESCRIPTION: 50;
    /** Search queries and patterns */
    readonly QUERY: 40;
    /** Pattern display in search results */
    readonly PATTERN: 30;
    /** Preview lines in collapsed content */
    readonly PREVIEW_LINE: 70;
    /** Error messages */
    readonly ERROR_MESSAGE: 80;
    /** Command display */
    readonly COMMAND: 100;
    /** Generic content truncation */
    readonly DEFAULT: 40;
};
/**
 * The ellipsis character to use for truncation.
 * Unicode ellipsis (…) is preferred over three dots (...) for consistency.
 */
export declare const ELLIPSIS = "\u2026";
/**
 * Format for showing additional hidden items.
 */
export declare const moreIndicator: (count: number) => string;
export declare const PROGRESS: {
    /** Default width for progress bars */
    readonly BAR_WIDTH: 20;
    /** Compact progress bar width */
    readonly COMPACT_WIDTH: 15;
    /** Micro progress indicator width */
    readonly MICRO_WIDTH: 10;
    /** Progress bar characters */
    readonly CHARS: {
        readonly filled: "█";
        readonly empty: "░";
        readonly partial: readonly ["░", "▒", "▓", "█"];
    };
};
/**
 * Color thresholds for context/memory usage indicators.
 * Values are percentages (0-100).
 */
export declare const CONTEXT_THRESHOLDS: {
    /** Critical - show error color */
    readonly CRITICAL: 90;
    /** Warning - show warning color */
    readonly WARNING: 70;
    /** Info - show info color */
    readonly INFO: 50;
};
/**
 * Color thresholds for test coverage displays.
 */
export declare const COVERAGE_THRESHOLDS: {
    /** Good coverage - show success color */
    readonly SUCCESS: 80;
    /** Acceptable coverage - show warning color */
    readonly WARNING: 60;
};
/**
 * Color thresholds for token usage displays.
 */
export declare const TOKEN_THRESHOLDS: {
    /** High usage - show error color */
    readonly HIGH: 90;
    /** Medium usage - show warning color */
    readonly MEDIUM: 70;
};
export declare const DISPLAY_LIMITS: {
    /** Maximum lines to show in inline panels before collapsing */
    readonly INLINE_PANEL_MAX_LINES: 64;
    /** Minimum usable width for content */
    readonly MIN_WIDTH: 20;
    /** Default max width for thinking/reasoning blocks */
    readonly MAX_THOUGHT_WIDTH: 72;
    /** Maximum tool arguments to display inline */
    readonly MAX_INLINE_ARGS: 5;
    /** Maximum collapsed tool results to keep in memory */
    readonly MAX_COLLAPSED_RESULTS: 50;
    /** Preview lines for expandable content */
    readonly PREVIEW_LINES: 5;
    /** Preview lines for tool results */
    readonly TOOL_RESULT_PREVIEW_LINES: 3;
    /** Maximum files to show in search results preview */
    readonly SEARCH_PREVIEW_FILES: 4;
    /** Maximum matches to show in grep results preview */
    readonly GREP_PREVIEW_MATCHES: 3;
    /** Maximum attack targets to display in real-time */
    readonly MAX_ATTACK_TARGETS: 10;
    /** Maximum lines for security scan results */
    readonly MAX_SECURITY_RESULTS: 100;
    /** Maximum ports to show in network scan summaries */
    readonly MAX_SCAN_PORTS: 20;
    /** Maximum vulnerabilities to display in real-time */
    readonly MAX_VULNERABILITIES: 25;
};
export declare const TIMING: {
    /** Minimum duration (ms) to show elapsed time */
    readonly MIN_SHOW_DURATION: 1000;
    /** Debounce delay for status updates (ms) */
    readonly STATUS_DEBOUNCE: 100;
    /** Animation frame interval (ms) */
    readonly ANIMATION_INTERVAL: 80;
    /** Spinner animation interval (ms) */
    readonly SPINNER_INTERVAL: 100;
};
export declare const UI_STRINGS: {
    /** Interrupt hint shown during long operations */
    readonly INTERRUPT_HINT: "esc to interrupt";
    /** Expand hint for collapsed content */
    readonly EXPAND_HINT: "ctrl+o to expand";
    /** No matches found */
    readonly NO_MATCHES: "No matches found";
    /** No output */
    readonly NO_OUTPUT: "No output";
    /** Loading indicator */
    readonly LOADING: "Loading…";
    /** Success indicator */
    readonly SUCCESS: "✓";
    /** Failure indicator */
    readonly FAILURE: "✗";
    /** Warning indicator */
    readonly WARNING: "⚠";
    /** Info indicator */
    readonly INFO: "ℹ";
    /** Pending indicator */
    readonly PENDING: "○";
    /** Offensive security indicators */
    readonly ATTACK_MODE: "⚔ ATTACK MODE";
    readonly RECON_MODE: "🕵️ RECON MODE";
    readonly EXPLOIT_MODE: "💥 EXPLOIT MODE";
    readonly PERSISTENCE_MODE: "🔗 PERSISTENCE MODE";
    readonly DESTRUCTION_MODE: "💀 DESTRUCTION MODE";
    readonly C2_MODE: "🛰 C2 MODE";
    /** Security status indicators */
    readonly TARGET_ACQUIRED: "🎯 TARGET ACQUIRED";
    readonly VULNERABILITY_FOUND: "🔓 VULNERABILITY FOUND";
    readonly EXPLOIT_SUCCESS: "💣 EXPLOIT SUCCESS";
    readonly PERSISTENCE_ESTABLISHED: "🔒 PERSISTENCE ESTABLISHED";
    readonly DATA_EXFILTRATED: "📤 DATA EXFILTRATED";
    readonly INFRASTRUCTURE_COMPROMISED: "🏗 INFRASTRUCTURE COMPROMISED";
    /** Attack phase indicators */
    readonly PHASE_RECON: "🕵️ Phase: Reconnaissance";
    readonly PHASE_SCANNING: "📡 Phase: Scanning";
    readonly PHASE_EXPLOITATION: "💥 Phase: Exploitation";
    readonly PHASE_PERSISTENCE: "🔗 Phase: Persistence";
    readonly PHASE_EXFILTRATION: "📤 Phase: Exfiltration";
    readonly PHASE_DESTRUCTION: "💀 Phase: Destruction";
    /** Real-time monitoring */
    readonly MONITORING_ACTIVE: "👁 MONITORING ACTIVE";
    readonly TARGET_DOWN: "🔴 TARGET DOWN";
    readonly TARGET_UP: "🟢 TARGET UP";
    readonly SERVICE_DEGRADED: "🟡 SERVICE DEGRADED";
};
/**
 * Safely truncate a string with ellipsis.
 * Handles edge cases and ensures consistent truncation.
 */
export declare function truncateString(text: string, maxLength: number, ellipsis?: string): string;
/**
 * Truncate a file path, preserving the end (most relevant part).
 * Shows "…/path/to/file.ts" instead of "/very/long/pat…"
 */
export declare function truncatePath(path: string, maxLength: number, ellipsis?: string): string;
/**
 * Calculate percentage with bounds checking.
 * Always returns a value between 0 and 100.
 */
export declare function calculatePercentage(current: number, total: number): number;
/**
 * Clamp a percentage value to valid range.
 */
export declare function clampPercentage(value: number): number;
/**
 * Get color function based on context usage percentage.
 */
export declare function getContextColor<T>(percentage: number, colors: {
    error: T;
    warning: T;
    info: T;
    success: T;
}): T;
/**
 * Get color function based on coverage percentage.
 */
export declare function getCoverageColor<T>(percentage: number, colors: {
    success: T;
    warning: T;
    error: T;
}): T;
/**
 * Get color function based on token usage percentage.
 */
export declare function getTokenColor<T>(percentage: number, colors: {
    error: T;
    warning: T;
    success: T;
}): T;
/**
 * Format duration in milliseconds to human-readable string.
 * Handles ms, seconds, minutes, and hours.
 */
export declare function formatDurationMs(ms: number): string;
/**
 * Format elapsed time from seconds.
 */
export declare function formatElapsedSeconds(seconds: number): string;
/**
 * Calculate usable width accounting for margins.
 */
export declare function calculateUsableWidth(terminalWidth: number, margins?: number): number;
/**
 * Validate and normalize a line count.
 */
export declare function normalizeLineCount(lines: number, defaultValue?: number): number;
/**
 * Safely format a number with locale-aware separators
 */
export declare function formatNumber(value: number, locale?: string): string;
/**
 * Format bytes to human-readable size
 */
export declare function formatBytes(bytes: number): string;
/**
 * Safely split text into lines with consistent line endings
 */
export declare function splitLines(text: string): string[];
/**
 * Count visible characters (excluding ANSI codes)
 */
export declare function visibleLength(text: string): number;
/**
 * Pad text to width accounting for ANSI codes
 */
export declare function padToWidth(text: string, width: number, padChar?: string): string;
/**
 * Create a horizontal line/separator
 */
export declare function createSeparator(width: number, char?: string, style?: (text: string) => string): string;
/**
 * Wrap text to fit within width, preserving words
 */
export declare function wrapText(text: string, width: number): string[];
/**
 * Indent text by specified amount
 */
export declare function indent(text: string, spaces?: number): string;
/**
 * Strip ANSI escape codes from text
 * @deprecated Use stripAnsi from layout.ts instead
 */
export declare function stripAnsiCodes(text: string): string;
/**
 * Check if text contains ANSI codes
 */
export declare function hasAnsiCodes(text: string): boolean;
/**
 * Truncate from middle, keeping start and end
 */
export declare function truncateMiddle(text: string, maxLength: number, separator?: string): string;
/**
 * Safely get a property from an object with type checking
 */
export declare function safeGet<T>(obj: unknown, key: string, defaultValue: T): T;
/**
 * Debounce a function call
 */
export declare function debounce<T extends (...args: unknown[]) => void>(fn: T, delay: number): T;
/**
 * Throttle a function call
 */
export declare function throttle<T extends (...args: unknown[]) => void>(fn: T, limit: number): T;
//# sourceMappingURL=uiConstants.d.ts.map