import { DateAdapter } from '../../date-adapter';
import { YearRange } from '../../utils/models';
import * as i0 from "@angular/core";
export declare class ValidationStrategyService {
    /**
     * Check if a date is disabled based on various criteria
     */
    isDateDisabled(date: Date, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null, disabledDates?: Array<Date | string>, disabledDatesFilter?: (date: Date) => boolean, dateFormat?: string): boolean;
    /**
     * Check if a month is disabled (all days in month are disabled)
     */
    isMonthDisabled(month: number, year: number, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null, disabledDates?: Array<Date | string>, disabledDatesFilter?: (date: Date) => boolean, dateFormat?: string): boolean;
    /**
     * Check if a year is disabled (all months in year are disabled)
     */
    isYearDisabled(year: number, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null, disabledDates?: Array<Date | string>, disabledDatesFilter?: (date: Date) => boolean, dateFormat?: string): boolean;
    /**
     * Check if a year range is disabled
     */
    isYearRangeDisabled(yearRange: YearRange, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null, disabledDates?: Array<Date | string>, disabledDatesFilter?: (date: Date) => boolean, dateFormat?: string): boolean;
    /**
     * Check if previous navigation is disabled
     */
    isPrevNavigationDisabled(currentDate: Date, viewMode: 'days' | 'months' | 'years', dateAdapter: DateAdapter<Date>, minDate?: Date | null, yearList?: number[]): boolean;
    /**
     * Check if next navigation is disabled
     */
    isNextNavigationDisabled(currentDate: Date, viewMode: 'days' | 'months' | 'years', dateAdapter: DateAdapter<Date>, maxDate?: Date | null, yearList?: number[]): boolean;
    /**
     * Parse disabled dates from various formats
     */
    parseDisabledDates(disabledDates: Array<Date | string>, dateAdapter: DateAdapter<Date>, dateFormat?: string): Date[];
    /**
     * Adjust current date to valid range
     */
    adjustDateToValidRange(currentDate: Date, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null): Date;
    /**
     * Check if date is within valid range
     */
    isDateInValidRange(date: Date, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null): boolean;
    /**
     * Validate date range
     */
    validateDateRange(startDate: Date, endDate: Date, dateAdapter: DateAdapter<Date>, minDate?: Date | null, maxDate?: Date | null): {
        isValid: boolean;
        errors: string[];
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<ValidationStrategyService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ValidationStrategyService>;
}
