/**
 * @fileoverview Pure formatting/mapping helpers for the Classify (autotagging) sub-app.
 * Extracted from the former monolith so host + tabs share one implementation (DRY).
 * All functions are stateless — no `this`, no DI — so they're safe to import anywhere.
 */
import { RunDetailRow } from './classify.types';
/** Locale-formatted integer (e.g. 12345 → "12,345"). */
export declare function formatNumber(n: number): string;
/**
 * Derive a human-meaningful display name for a content item.
 *
 * Entity-sourced content items now carry a real per-record `Name` (the source
 * entity's name field — e.g. "GPT-4"), so we prefer `Name` directly. Only when a
 * Name is missing (or is a generic source-name placeholder) do we fall back to
 * the first meaningful line of the LLM-generated `Description` to keep rows
 * distinguishable, then to a placeholder.
 *
 * Pure/stateless — safe to call from any render site.
 */
export declare function deriveDisplayName(item: {
    Name?: string | null;
    Description?: string | null;
}): string;
/** Compact token count (e.g. 1500 → "2K", 2_400_000 → "2.4M"). */
export declare function formatTokenCount(tokens: number): string;
/** Weight (0.0–1.0) as a percentage string (e.g. 0.42 → "42%"). */
export declare function formatWeight(weight: number): string;
/** Font size in rem for a tag chip based on weight (0.0–1.0), clamped to 0.7–1.0rem. */
export declare function tagFontSize(weight: number): string;
/** Short date (e.g. "Mar 5"). Returns '' on parse failure. */
export declare function formatShortDate(dateStr: string): string;
/** Date + time (e.g. "Mar 5, 2:05 PM"). Echoes the input on parse failure. */
export declare function formatDate(dateStr: string): string;
/** Human-friendly elapsed duration between two ISO timestamps; open-ended if `end` is null. */
export declare function computeDuration(start: string | null, end: string | null): string;
/** Normalize a raw run status to one of the canonical display labels. */
export declare function displayStatus(status: string): string;
/** Font Awesome icon class for a content source type name. */
export declare function getSourceTypeIcon(typeName: string): string;
/** Map raw `MJ: Content Process Run Details` rows to typed RunDetailRow view models. */
export declare function mapRunDetailRecords(records: Record<string, unknown>[]): RunDetailRow[];
/**
 * Converts a 5-part or 6-part cron expression to a human-readable English string.
 *
 * Handles common patterns:
 *   `0 * * * *`      -> "Every hour"
 *   `0 2 * * *`      -> "Daily at 2:00 AM"
 *   `0 2 * * 1`      -> "Weekly on Monday at 2:00 AM"
 *   `star/15 * * * *` -> "Every 15 minutes"  (where star = asterisk)
 *   `0 0 1 * *`      -> "Monthly on day 1 at 12:00 AM"
 *
 * Falls back to returning the raw cron string for unrecognized patterns.
 *
 * @param cron A cron expression string (5 or 6 parts)
 * @returns A human-readable description or the raw cron if unrecognized
 */
export declare function CronToHumanReadable(cron: string): string;
//# sourceMappingURL=classify.format.d.ts.map