import { Observable, Subject } from 'rxjs'; export declare abstract class DateAdapter { protected locale: L; protected readonly _localeChanges: Subject; readonly localeChanges: Observable; abstract getYear(date: D): number; abstract getMonth(date: D): number; abstract getDate(date: D): number; abstract getDayOfWeek(date: D): number; abstract parse(value: any, parseFormat: any): D | null; abstract format(date: D, displayFormat: any): string; abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[]; abstract getDateNames(): string[]; abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[]; abstract getYearName(date: D): string; abstract getFirstDayOfWeek(): number; abstract getNumDaysInMonth(date: D): number; abstract clone(date: D): D; abstract createDate(year: number, month: number, date: number): D; abstract today(): D; abstract addCalendarYears(date: D, years: number): D; abstract addCalendarMonths(date: D, month: number): D; abstract addCalendarDays(date: D, days: number): D; abstract toIso8601(date: D): string; abstract isDateInstance(obj: any): boolean; abstract isValid(date: D): boolean; abstract invalid(): D; setTime(target: D, hours: number, miutes: number, seconds: number): D; getHours(date: D): number; getMinutes(date: D): number; getSeconds(date: D): number; parseTime(value: any, parseFormat: any): D | null; addSeconds(date: D, amount: number): D; getValidDateOrNull(obj: unknown): D | null; deserialize(value: any): D | null; setLocale(locale: L): void; compareDate(first: D, second: D): number; compareTime(first: D, second: D): number; sameDate(first: D | null, second: D | null): boolean; sameTime(first: D | null, second: D | null): boolean; clampDate(date: D, min?: D | null, max?: D | null): D; }