import { type SafeHtml } from "./safe-html.js"; export { EMPTY_HTML, sanitizedHtml, type SafeHtml } from "./safe-html.js"; /** Escape HTML entities */ export declare function esc(s: string): string; /** Escape for use in HTML attributes */ export declare function escAttr(s: string): string; /** * Render markdown-ish text to HTML (for assistant messages). * * Returns {@link SafeHtml}: it escapes the WHOLE input first and only ever adds markup written * here, so the result is cleared for `SafeHtmlView`. That claim is the reason `sanitizedHtml` is * called at the exits below rather than anywhere convenient — see safe-html.ts. */ export declare function renderMd(raw: string): SafeHtml; /** Lightweight markdown for co-pilot: bold, code, bullets, linebreaks. Escapes first, like {@link renderMd}. */ export declare function mdLite(raw: string): SafeHtml; /** Relative time label */ export declare function formatTime(iso: string): string; /** * Absolute date + time for a message stamp — e.g. "Jul 8, 9:01 PM", or "Jul 8, 2025, 9:01 PM" * once the year stops being obvious. Unlike {@link formatTime} (relative "5m ago"), this always * shows the calendar date AND clock time, for when you need to know exactly when each message * happened. Same SQLite-UTC normalization as formatTime. * * ── Why the year is conditional (#426) * * This stamp sits at the right-hand end of a chat message header, on a 320px screen, under two * absolutely-positioned action buttons. Measured in WebKit at `700 10px system-ui`, the year * costs 30px of a 116px stamp — real width in the row where width is scarcest (#333). * * It is dropped only when it is the CURRENT year, because that is the only case where it says * nothing: "8 Aug" on a row from this year is unambiguous, and "8 Aug" on a row from last year * is a lie of omission. That distinction is what makes this safe for the callers outside the * transcript — `IndexingTab`'s "Indexed …" and `SystemMessage` — which is why the option is * made conditional rather than deleted. * * Note this reads the clock, so a stamp rendered on 31 Dec and left on screen over midnight * keeps its old rendering until the component re-renders. That is a stale pixel, not a wrong * one: the year it omits is still the year the reader is in. */ export declare function formatDateTime(iso: string): string; export { renderTerminal, terminalTail } from "./terminal-render.js"; export { classifyMessage, isToolCallMessage, messageKey, toolCallSummary, type ChatMessageKind, type ChatMessageLike } from "./chat-message.js"; export { engineBin, engineInvocationMode, isClaudeEngine, missingWriteFlag, type EngineInvocationMode } from "./engine-posture.js"; //# sourceMappingURL=ui.d.ts.map