import * as i0 from "@angular/core";
export interface DateAdapter<D> {
    today(): D;
    parse(value: any, formatString: string): D | null;
    format(date: D, formatString: string): string;
    addDays(date: D, amount: number): D;
    addMonths(date: D, amount: number): D;
    addYears(date: D, amount: number): D;
    addHours(date: D, amount: number): D;
    getYear(date: D): number | null;
    getMonth(date: D): number | null;
    getDate(date: D): number | null;
    getDayOfWeek(date: D): number;
    getMonthNames(style: 'long' | 'short' | 'narrow'): string[];
    getDateNames(): string[];
    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];
    getFirstDayOfWeek(): number;
    getNumDaysInMonth(date: D): number;
    clone(date: D): D;
    createDate(year: number, month: number, date: number): D;
    isSameDay(date1: D, date2: D): boolean;
    isSameMonth(date1: D, date2: D): boolean;
    isSameYear(date1: D, date2: D): boolean;
    isAfter(date1: D, date2: D): boolean;
    isBefore(date1: D, date2: D): boolean;
    isEqual(date1: D, date2: D): boolean;
    startOfMonth(date: D): D;
    endOfMonth(date: D): D;
    startOfWeek(date: D): D;
    isValidFormat(dateString: string, formatString: string): boolean;
    max(dates: D[]): D;
    setYear(date: D, year: number): D;
    startOfDay(date: D): D;
    getHours(date: D): number | null;
    getMinutes(date: D): number | null;
    getSeconds(date: D): number | null;
    setHours(date: D, hours: number): D;
    setMinutes(date: D, minutes: number): D;
    setSeconds(date: D, seconds: number): D;
    getDaysInMonth(date: D): number;
    addMinutes(date: D, amount: number): D;
}
export declare class JalaliDateAdapter implements DateAdapter<Date> {
    today(): Date;
    parse(value: any, formatString: string): Date | null;
    format(date: Date, formatString: string): string;
    addDays(date: Date, amount: number): Date;
    addMonths(date: Date, amount: number): Date;
    addYears(date: Date, amount: number): Date;
    addHours(date: Date, amount: number): Date;
    getYear(date: Date): number | null;
    getMonth(date: Date): number | null;
    getDate(date: Date): number | null;
    getDayOfWeek(date: Date): number;
    getMonthNames(style: 'long' | 'short' | 'narrow'): string[];
    getDateNames(): string[];
    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];
    getFirstDayOfWeek(): number;
    getNumDaysInMonth(date: Date): number;
    clone(date: Date): Date;
    createDate(year: number, month: number, date: number): Date;
    isSameDay(date1: Date, date2: Date): boolean;
    isSameMonth(date1: Date, date2: Date): boolean;
    isSameYear(date1: Date, date2: Date): boolean;
    isAfter(date1: Date, date2: Date): boolean;
    isBefore(date1: Date, date2: Date): boolean;
    isEqual(date1: Date, date2: Date): boolean;
    startOfMonth(date: Date): Date;
    endOfMonth(date: Date): Date;
    startOfWeek(date: Date): Date;
    isValidFormat(dateString: string, formatString: string): boolean;
    max(dates: Date[]): Date;
    setYear(date: Date, year: number): Date;
    startOfDay(date: Date): Date;
    getHours(date: Date): number | null;
    getMinutes(date: Date): number | null;
    getSeconds(date: Date): number | null;
    setHours(date: Date, hours: number): Date;
    setMinutes(date: Date, minutes: number): Date;
    setSeconds(date: Date, seconds: number): Date;
    getDaysInMonth(date: Date): number;
    addMinutes(date: Date, amount: number): Date;
    static ɵfac: i0.ɵɵFactoryDeclaration<JalaliDateAdapter, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<JalaliDateAdapter>;
}
export declare class GregorianDateAdapter implements DateAdapter<Date> {
    today(): Date;
    parse(value: any, formatString: string): Date | null;
    format(date: Date, formatString: string): string;
    addDays(date: Date, amount: number): Date;
    addMonths(date: Date, amount: number): Date;
    addYears(date: Date, amount: number): Date;
    addHours(date: Date, amount: number): Date;
    getYear(date: Date): number;
    getMonth(date: Date): number;
    getDate(date: Date): number;
    getDayOfWeek(date: Date): number;
    getMonthNames(style: 'long' | 'short' | 'narrow'): string[];
    getDateNames(): string[];
    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];
    getFirstDayOfWeek(): number;
    getNumDaysInMonth(date: Date): number;
    clone(date: Date): Date;
    createDate(year: number, month: number, date: number): Date;
    isSameDay(date1: Date, date2: Date): boolean;
    isSameMonth(date1: Date, date2: Date): boolean;
    isSameYear(date1: Date, date2: Date): boolean;
    isAfter(date1: Date, date2: Date): boolean;
    isBefore(date1: Date, date2: Date): boolean;
    isEqual(date1: Date, date2: Date): boolean;
    startOfMonth(date: Date): Date;
    endOfMonth(date: Date): Date;
    startOfWeek(date: Date): Date;
    isValidFormat(dateString: string, formatString: string): boolean;
    max(dates: Date[]): Date;
    setYear(date: Date, year: number): Date;
    startOfDay(date: Date): Date;
    getHours(date: Date): number | null;
    getMinutes(date: Date): number | null;
    getSeconds(date: Date): number | null;
    setHours(date: Date, hours: number): Date;
    setMinutes(date: Date, minutes: number): Date;
    setSeconds(date: Date, seconds: number): Date;
    getDaysInMonth(date: Date): number;
    addMinutes(date: Date, amount: number): Date;
    static ɵfac: i0.ɵɵFactoryDeclaration<GregorianDateAdapter, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<GregorianDateAdapter>;
}
