/** * Standardized formatting utilities for consistent output across all CLI and Tool interfaces. * These functions should be used by all formatters to ensure consistent formatting. */ import { ResponsePagination } from '../types/common.types.js'; /** * Format a date in a standardized way: YYYY-MM-DD HH:MM:SS UTC * @param dateString - ISO date string or Date object * @returns Formatted date string */ export declare function formatDate(dateString?: string | Date): string; /** * Format a URL as a markdown link * @param url - URL to format * @param title - Link title * @returns Formatted markdown link */ export declare function formatUrl(url?: string, title?: string): string; /** * Format pagination information in a standardized way for CLI output. * Includes separator, item counts, availability message, next page instructions, and timestamp. * @param pagination - The ResponsePagination object containing pagination details. * @returns Formatted pagination footer string for CLI. */ export declare function formatPagination(pagination: ResponsePagination): string; /** * Format a heading with consistent style * @param text - Heading text * @param level - Heading level (1-6) * @returns Formatted heading */ export declare function formatHeading(text: string, level?: number): string; /** * Format a list of key-value pairs as a bullet list * @param items - Object with key-value pairs * @param keyFormatter - Optional function to format keys * @returns Formatted bullet list */ export declare function formatBulletList(items: Record, keyFormatter?: (key: string) => string): string; /** * Format a separator line * @returns Separator line */ export declare function formatSeparator(): string; /** * Format a numbered list of items * @param items - Array of items to format * @param formatter - Function to format each item * @returns Formatted numbered list */ export declare function formatNumberedList(items: T[], formatter: (item: T, index: number) => string): string; /** * Format a raw diff output for display * * Parses and formats a raw unified diff string into a Markdown * formatted display with proper code block syntax highlighting. * * @param {string} rawDiff - The raw diff content from the API * @param {number} maxFiles - Maximum number of files to display in detail (optional, default: 5) * @param {number} maxLinesPerFile - Maximum number of lines to display per file (optional, default: 100) * @returns {string} Markdown formatted diff content */ export declare function formatDiff(rawDiff: string, maxFiles?: number, maxLinesPerFile?: number): string; /** * Optimizes markdown content to address Bitbucket Cloud's rendering quirks * * IMPORTANT: This function does NOT convert between formats (unlike Jira's ADF conversion). * Bitbucket Cloud API natively accepts and returns markdown format. This function specifically * addresses documented rendering issues in Bitbucket's markdown renderer by applying targeted * formatting adjustments for better display in the Bitbucket UI. * * Known Bitbucket rendering issues this function fixes: * - List spacing and indentation (prevents items from concatenating on a single line) * - Code block formatting (addresses BCLOUD-20503 and similar bugs) * - Nested list indentation (ensures proper hierarchy display) * - Inline code formatting (adds proper spacing around backticks) * - Diff syntax preservation (maintains +/- at line starts) * - Excessive line break normalization * - Heading spacing consistency * * Use this function for both: * - Content received FROM the Bitbucket API (to properly display in CLI/tools) * - Content being sent TO the Bitbucket API (to ensure proper rendering in Bitbucket UI) * * @param {string} markdown - The original markdown content * @returns {string} Optimized markdown with workarounds for Bitbucket rendering issues */ export declare function optimizeBitbucketMarkdown(markdown: string): string; /** * Truncate content for AI consumption and add guidance if truncated * * When responses exceed the token limit, this function truncates the content * and appends guidance for the AI to either access the full response from * the raw log file or refine the request with better filtering. * * @param content - The formatted response content * @param rawResponsePath - Optional path to the raw response file in /tmp/mcp/ * @returns Truncated content with guidance if needed, or original content if within limits */ export declare function truncateForAI(content: string, rawResponsePath?: string | null): string;