export type LogEntryKind = 'default' | 'error' | 'warning' | 'success';
export interface LogLineMeta {
    color: string;
    entryKind: LogEntryKind;
    entryStartIndex: number;
}
/**
 * Find the first index in `lines` belonging to the current wizard session.
 *
 * Rationale: `~/.amplitude/wizard/runs/<install-hash>/log.txt` is
 * append-only across runs (5 MB rotation), so a fresh wizard launch sees
 * the previous session's tail above its own startup banner. The TUI Logs
 * tab passes `sessionStartMs` from `getSessionStartMs()`; lines whose
 * timestamp predates that get hidden by default. Multi-line JSON
 * payloads (no leading `[ts]`) inherit their parent entry's classification,
 * so they're never split mid-block.
 *
 * Returns `0` when `sessionStartMs` is null (no scoping requested) or
 * when no line is recent enough — in the latter case the caller renders
 * an empty viewport, which is correct behavior (file exists but pre-dates
 * the session).
 *
 * Exported for unit tests.
 */
export declare function findSessionStartIndex(lines: string[], sessionStartMs: number | null): number;
export declare function classifyLogLine(line: string): LogEntryKind;
export declare function getLogEntryColor(kind: LogEntryKind): string;
export declare function buildLogLineMeta(lines: string[]): LogLineMeta[];
export declare function findErrorEntryIndexes(meta: LogLineMeta[]): number[];
export declare function clamp(value: number, min: number, max: number): number;
export declare function clampViewportTop(requestedTop: number, totalLines: number, viewportHeight: number): number;
export declare function sliceViewportText(line: string, horizontalOffset: number, width: number): string;
