import * as i0 from '@angular/core'; import { OnInit, OnChanges, EventEmitter, TrackByFunction, ChangeDetectorRef, SimpleChanges } from '@angular/core'; import { FormBuilder, FormGroup, FormControl } from '@angular/forms'; interface DayInfo { gD: string; uD: string; dN: string; uC: number; selected?: boolean; isRangeStart?: boolean; isRangeEnd?: boolean; isInRange?: boolean; } interface TodayDate { gregorian?: string; umAlQura?: string; } declare class DateUtilitiesService { private monthDataCache; private readonly MAX_CACHE_SIZE; constructor(); parseDate(dateStr: string): Date | null; formatDate(date: Date): string; private getDayShortHand; private generateDatesForHijriMonth; private generateDatesForGregorianMonth; convertDate(dateStr: string, isGregorian: boolean): DayInfo | null; private convertGregorianDate; private convertHijriDate; private setCachedMonthData; getMonthData(inputDate: string, type: string): DayInfo[] | null; checkPastOrFuture(inputDate: string, targetDate: Date): 'Past' | 'Today' | 'Future' | null; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface StylesConfig { backgroundColor?: string; primaryColor?: string; secondaryColor?: string; todaysDateTextColor?: string; confirmBtnTextColor?: string; disabledDayColor?: string; dayNameColor?: string; fontFamily?: string; borderRadius?: string; sliderToggleBackground?: string; rangeStartColor?: string; rangeEndColor?: string; rangeBetweenColor?: string; } interface MonthData { labelAr: string; labelEn: string; value: number; } declare const umAlQura_MONTHS: MonthData[]; declare const GREGORIAN_MONTHS: MonthData[]; declare const WEEKDAYS_EN: string[]; declare const WEEKDAYS_AR: string[]; declare const CALENDAR_CONSTANTS: { readonly DAYS_IN_WEEK: 7; readonly MAX_MONTH_VALUE: 12; readonly MIN_MONTH_VALUE: 1; readonly DATE_PART_COUNT: 3; readonly ARABIC_ZERO_UNICODE: 1632; }; declare const CALENDAR_MODES: { readonly GREGORIAN: "greg"; readonly umAlQura: "umAlQura"; }; type CalendarMode = typeof CALENDAR_MODES[keyof typeof CALENDAR_MODES]; declare class HijriGregorianDatepickerComponent implements OnInit, OnChanges { formBuilder: FormBuilder; private _dateUtilsService; private cdr; canChangeMode: boolean; futureValidation: boolean; pastDateValidation: boolean; hideYearPicker: boolean; hideMonthPicker: boolean; disableDayPicker: boolean; showNavigationArrows: boolean; enableAnimations: boolean; multiple: boolean; isRequired: boolean; showConfirmButton: boolean; mode: CalendarMode; dir: string; locale: string; submitTextButton: string; futureValidationMessageEn: string; futureValidationMessageAr: string; pastDateValidationMessageEn: string; pastDateValidationMessageAr: string; theme?: string; pastYearsLimit: number; futureYearsLimit: number; minDate?: string; maxDate?: string; disabledDates?: string[]; rangeSelection: boolean; initialDate?: string; styles?: StylesConfig; onSubmit: EventEmitter; onDaySelect: EventEmitter; onMonthChange: EventEmitter; onYearChange: EventEmitter; readonly umAlQuraMonths: MonthData[]; readonly gregMonths: MonthData[]; years: number[]; weeks: (DayInfo | null)[][]; months: MonthData[]; selectedRange: { start: DayInfo | null; end: DayInfo | null; }; readonly weekdaysEn: string[]; readonly weekdaysAr: string[]; todaysDate: TodayDate; selectedDay: DayInfo | undefined; periodForm: FormGroup<{ year: FormControl; month: FormControl; }>; multipleSelectedDates: DayInfo[]; themes: { default: Array<{ name: string; stylesConfig: StylesConfig; }>; } | null; currentView: 'years' | 'months' | 'days'; private futureValidationActive; private pastDateValidationActive; trackByYear: TrackByFunction; trackByMonth: TrackByFunction; trackByWeekday: TrackByFunction; trackByWeek: TrackByFunction<(DayInfo | null)[]>; trackByDay: TrackByFunction; constructor(formBuilder: FormBuilder, _dateUtilsService: DateUtilitiesService, cdr: ChangeDetectorRef); showFutureValidationMessage(): boolean; showPastDateValidationMessage(): boolean; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; initTheme(): void; initializeForm(): void; initializeYearsAndMonths(): void; private initializeGregorianYearsAndMonths; private initializeumAlQuraYearsAndMonths; private getCurrentYear; private getEffectiveDate; private isValidInitialDate; private generateYearsArray; private setCurrentYearInForm; private setCurrentMonthInForm; onPeriodChange(type: 'year' | 'month'): void; private emitPeriodChangeEvent; private updateCalendarWeeks; private markInitialDateAsSelected; private buildDateString; getTodaysDateInfo(): void; generateMonthData(date: string): void; generateWeeksArray(daysArray: DayInfo[]): (DayInfo | null)[][]; changeCalendarMode(): void; private toggleCalendarMode; private refreshCalendarData; navigateMonth(direction: 'previous' | 'next'): void; private updateYearsRange; canNavigatePrevious(): boolean; canNavigateNext(): boolean; toggleMonthDropdown(): void; toggleYearDropdown(): void; selectMonth(monthValue: number): void; selectYear(yearValue: number): void; getCurrentMonthLabel(): string; getCurrentYearLabel(): string; onCalendarClick(event: Event): void; onDayClicked(day: DayInfo): void; markDaySelected(dayInfo: DayInfo): void; private deselectDay; private selectDay; private handleSingleSelection; private handleMultipleSelection; private clearAllSelections; private getAllDatesInRange; onConfirmClicked(): void; checkFutureValidation(day: DayInfo): boolean | undefined; checkPastDateValidation(day: DayInfo): boolean | undefined; checkTodaysDate(day: DayInfo): boolean; checkHighlightedDate(day: DayInfo): boolean; checkInitialDate(day: DayInfo): boolean; checkMinDateValidation(day: DayInfo): boolean; checkMaxDateValidation(day: DayInfo): boolean; checkDisabledDate(day: DayInfo): boolean; isDateDisabled(day: DayInfo): boolean; isValidationDisabled(day: DayInfo): boolean; private handleRangeSelection; private clearRangeSelection; private highlightRange; private parseDate; parseEnglish(englishNum: number | string): string; parseArabic(arabicNum: string): string; parseArabicToNumber(arabicNum: string): number; getCurrentDisplayText(): string; private getHijriDaysInMonth; private getCurrentCalendarYear; getYearRangeDisplay(): string; getDisplayYears(): number[]; private initializeView; onTitleClick(): void; navigateYears(direction: 'previous' | 'next'): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class HijriGregorianDatepickerModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { CALENDAR_CONSTANTS, CALENDAR_MODES, DateUtilitiesService, GREGORIAN_MONTHS, HijriGregorianDatepickerComponent, HijriGregorianDatepickerModule, WEEKDAYS_AR, WEEKDAYS_EN, umAlQura_MONTHS }; export type { CalendarMode, DayInfo, MonthData, StylesConfig, TodayDate };