/**
 * Date and time utility functions for consistent formatting across the component library
 */
export type DateInput = Date | string | number;
export interface TimestampOptions {
    /**
     * Show full date and time even for today
     * @default false
     */
    alwaysShowDate?: boolean;
    /**
     * Include seconds in time display
     * @default false
     */
    includeSeconds?: boolean;
    /**
     * Use 12-hour format instead of 24-hour
     * @default false
     */
    use12Hour?: boolean;
    /**
     * Locale for date formatting
     * @default undefined (uses browser default)
     */
    locale?: string;
}
/**
 * Formats a timestamp for display in chat messages, notifications, etc.
 * Shows time only for today, date + time for other days.
 */
export declare const formatTimestamp: (input: DateInput, options?: TimestampOptions) => string;
/**
 * Formats a date for display (date only, no time)
 */
export declare const formatDate: (input: DateInput, options?: Intl.DateTimeFormatOptions, locale?: string) => string;
/**
 * Formats time only (no date)
 */
export declare const formatTime: (input: DateInput, options?: {
    includeSeconds?: boolean;
    use12Hour?: boolean;
}, locale?: string) => string;
/**
 * Returns a relative time string (e.g., "2 minutes ago", "in 3 hours")
 */
export declare const formatRelativeTime: (input: DateInput, locale?: string) => string;
/**
 * Checks if a date is today
 */
export declare const isToday: (input: DateInput) => boolean;
/**
 * Checks if a date is yesterday
 */
export declare const isYesterday: (input: DateInput) => boolean;
/**
 * Checks if a date is within the current week
 */
export declare const isThisWeek: (input: DateInput) => boolean;
/**
 * Formats a date using a custom format string
 * Supports common format tokens for flexible date display
 *
 * @param date - The date to format
 * @param formatString - Format string with tokens (e.g., 'DD MMM YYYY', 'DD/MM/YYYY')
 * @param locale - Optional locale for month names (default: 'en-US')
 *
 * Supported tokens:
 * - DD: Day with leading zero (01, 02, ..., 31)
 * - D: Day without leading zero (1, 2, ..., 31)
 * - MMM: Short month name (Jan, Feb, ..., Dec)
 * - MMMM: Full month name (January, February, ..., December)
 * - MM: Month with leading zero (01, 02, ..., 12)
 * - M: Month without leading zero (1, 2, ..., 12)
 * - YYYY: Full year (2023, 2024, etc.)
 * - YY: Two-digit year (23, 24, etc.)
 *
 * @example
 * formatDateCustom(new Date('2023-09-21'), 'DD MMM YYYY') // "21 Sept 2023"
 * formatDateCustom(new Date('2023-09-21'), 'DD/MM/YYYY') // "21/09/2023"
 * formatDateCustom(new Date('2023-09-21'), 'MM-DD-YYYY') // "09-21-2023"
 * formatDateCustom(new Date('2023-09-21'), 'D MMMM YYYY') // "21 September 2023"
 */
export declare const formatDateCustom: (date: Date, formatString: string, locale?: string) => string;
/**
 * Date range type for utility functions
 */
export interface DateRange {
    start: Date | null;
    end: Date | null;
}
/**
 * Get date range for the last N days
 */
export declare const getLastNDays: (days: number) => DateRange;
/**
 * Get date range for this week (Monday to Sunday)
 */
export declare const getThisWeek: () => DateRange;
/**
 * Get date range for last week (Monday to Sunday)
 */
export declare const getLastWeek: () => DateRange;
/**
 * Get date range for this month
 */
export declare const getThisMonth: () => DateRange;
/**
 * Get date range for last month
 */
export declare const getLastMonth: () => DateRange;
/**
 * Get date range for this year
 */
export declare const getThisYear: () => DateRange;
/**
 * Get date range for last year
 */
export declare const getLastYear: () => DateRange;
/**
 * Normalise a Date | string to a Date at local midnight.
 *
 * ISO date-only strings like "2026-01-15" are parsed as UTC by the native
 * Date constructor, which can shift the day backward in negative-UTC
 * timezones.  We detect the YYYY-MM-DD pattern and construct the Date with
 * local year/month/day to avoid an off-by-one.
 */
export declare function toDate(input: Date | string): Date;
/**
 * Add (or subtract) a number of calendar days to a date.
 */
export declare function addDays(date: Date | string, days: number): Date;
/**
 * Check if two dates are the same calendar day.
 */
export declare function isSameDay(a: Date, b: Date): boolean;
/**
 * Check if a date falls on a weekend (Saturday=6, Sunday=0).
 */
export declare function isWeekend(date: Date): boolean;
/**
 * Number of calendar days between two dates (inclusive).
 * e.g. Jan 1 → Jan 3 = 3 days.
 */
export declare function getDaysBetween(a: Date | string, b: Date | string): number;
/**
 * Get the ISO week number for a date.
 */
export declare function getWeekNumber(date: Date): number;
