import type { LogEntry } from './types.js';
/**
 * Parses a relative time string (e.g., "5m", "1h", "2d") into milliseconds.
 * Returns null if the string is not a valid relative time format.
 */
export declare function parseRelativeTime(timeStr: string): null | number;
/**
 * Parses a `since` value into a Date object.
 * Supports:
 * - Relative times: "5m", "1h", "2d"
 * - ISO 8601: "2026-01-25T10:00:00"
 *
 * @param sinceStr - The value to parse
 * @param now - Reference time for relative values (defaults to the current time).
 *   Injectable so callers that resolve several bounds together, or that need
 *   deterministic behavior in tests, can pin a single "now".
 */
export declare function parseSinceTime(sinceStr: string, now?: Date): Date;
/**
 * Parses a B2C log timestamp into a Date object.
 * Expected format: "2025-01-25 10:30:45.123 GMT"
 */
export declare function parseLogTimestamp(timestamp: string): Date | null;
/**
 * Filters entries by timestamp.
 */
export declare function filterBySince(entries: LogEntry[], since: Date): LogEntry[];
/**
 * Filters entries by log level.
 */
export declare function filterByLevel(entries: LogEntry[], levels: string[]): LogEntry[];
/**
 * Filters entries by text search (case-insensitive substring match).
 */
export declare function filterBySearch(entries: LogEntry[], search: string): LogEntry[];
/**
 * Checks if a single entry matches the specified log levels.
 * Used for streaming/tail scenarios where we filter one entry at a time.
 */
export declare function matchesLevel(entry: LogEntry, levels: string[]): boolean;
/**
 * Checks if a single entry matches the search text (case-insensitive).
 * Used for streaming/tail scenarios where we filter one entry at a time.
 */
export declare function matchesSearch(entry: LogEntry, search: string): boolean;
