/**
 * DateTime - Immutable Date/Time Utilities
 * Provides chainable, type-safe date/time operations with multiple format support
 */
/**
 * DateTime interface defining all available operations
 */
export interface IDateTime {
    /**
     * Get the underlying Date object
     */
    toDate(): Date;
    /**
     * Format the date using pattern tokens
     * Supported tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D, HH, H, mm, ss, SSS
     */
    format(pattern: string): string;
    /**
     * Convert to ISO 8601 string (YYYY-MM-DDTHH:mm:ss.sssZ)
     */
    toISO(): string;
    /**
     * Convert to RFC 3339 string (same as ISO 8601)
     */
    toRFC3339(): string;
    /**
     * Get human-readable relative time (e.g., "2 hours ago", "in 3 days")
     */
    ago(): string;
    /**
     * Get relative time from a specific date
     */
    relative(other: Date | IDateTime): string;
    /**
     * Add days to the date (returns new IDateTime)
     */
    addDays(days: number): IDateTime;
    /**
     * Add hours to the date (returns new IDateTime)
     */
    addHours(hours: number): IDateTime;
    /**
     * Add minutes to the date (returns new IDateTime)
     */
    addMinutes(minutes: number): IDateTime;
    /**
     * Add seconds to the date (returns new IDateTime)
     */
    addSeconds(seconds: number): IDateTime;
    /**
     * Add months to the date (returns new IDateTime)
     */
    addMonths(months: number): IDateTime;
    /**
     * Add years to the date (returns new IDateTime)
     */
    addYears(years: number): IDateTime;
    /**
     * Check if this date is before another date
     */
    isBefore(other: Date | IDateTime): boolean;
    /**
     * Check if this date is after another date
     */
    isAfter(other: Date | IDateTime): boolean;
    /**
     * Check if this date is the same as another date (ignoring time)
     */
    isSame(other: Date | IDateTime): boolean;
    /**
     * Check if this date is between two dates (inclusive)
     */
    isBetween(start: Date | IDateTime, end: Date | IDateTime): boolean;
    /**
     * Get difference in milliseconds from another date
     */
    diffMs(other: Date | IDateTime): number;
    /**
     * Get difference in seconds from another date
     */
    diffSeconds(other: Date | IDateTime): number;
    /**
     * Get difference in minutes from another date
     */
    diffMinutes(other: Date | IDateTime): number;
    /**
     * Get difference in hours from another date
     */
    diffHours(other: Date | IDateTime): number;
    /**
     * Get difference in days from another date
     */
    diffDays(other: Date | IDateTime): number;
    /**
     * Start of day (00:00:00)
     */
    startOfDay(): IDateTime;
    /**
     * End of day (23:59:59)
     */
    endOfDay(): IDateTime;
    /**
     * Start of month
     */
    startOfMonth(): IDateTime;
    /**
     * End of month
     */
    endOfMonth(): IDateTime;
    /**
     * Clone this datetime
     */
    clone(): IDateTime;
    /**
     * Get Unix timestamp (milliseconds since epoch)
     */
    getTime(): number;
    /**
     * Get year
     */
    getYear(): number;
    /**
     * Get month (0-11)
     */
    getMonth(): number;
    /**
     * Get day of month (1-31)
     */
    getDate(): number;
    /**
     * Get hours (0-23)
     */
    getHours(): number;
    /**
     * Get minutes (0-59)
     */
    getMinutes(): number;
    /**
     * Get seconds (0-59)
     */
    getSeconds(): number;
    /**
     * Get milliseconds (0-999)
     */
    getMilliseconds(): number;
    /**
     * Get day of week (0=Sunday, 6=Saturday)
     */
    getDayOfWeek(): number;
    /**
     * Get day of year (1-366)
     */
    getDayOfYear(): number;
}
/**
 * DateTime namespace - sealed namespace object grouping all DateTime operations
 * Immutable by design - all operations return new IDateTime instances
 */
export declare const DateTime: Readonly<{
    /**
     * Create a DateTime from a Date object
     */
    create(date?: Date): IDateTime;
    /**
     * Get current DateTime
     */
    now(): IDateTime;
    /**
     * Parse a date string
     */
    parse(dateString: string): IDateTime;
    /**
     * Create DateTime from timestamp (milliseconds since epoch)
     */
    fromTimestamp(timestamp: number): IDateTime;
    /**
     * Create DateTime from components
     */
    fromComponents(year: number, month: number, day?: number, hours?: number, minutes?: number, seconds?: number): IDateTime;
}>;
//# sourceMappingURL=DateTime.d.ts.map