import { Injector, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { ValidationAlerts } from '../../validation-alert/validation-alert';
import { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';
import * as i0 from "@angular/core";
export interface DayBlock {
    date: Date;
    isCurrentMonth: boolean;
    isToday: boolean;
    timestamp: number;
}
/**
 * Calendar Form Field Component
 */
export declare class CalendarFormFieldComponent extends DateLikeFormFieldComponent implements OnInit {
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * Internal selected date value
     */
    selectedDate: Date;
    /**
     * Gets the selected year
     */
    private get selectedYear();
    /**
     * Gets the selected month
     */
    private get selectedMonth();
    /**
     * Gets the text for the currently viewed month
     */
    get headerText(): string;
    /**
     * Gets a value indicating if the current view contains today's date
     */
    get isTodayInView(): boolean;
    /**
     * Gets a value indicating if the current view contains today's date
     */
    get isSelectionInView(): boolean;
    /**
     * A workaround to have Screen reader know this is a required "input" field.
     */
    get ariaLabel(): string;
    /**
     * The currently viewed year
     */
    currentYear: number;
    /**
     * The currently viewed month
     */
    currentMonth: number;
    /**
     * A localized list of date column headings
     */
    dayHeadings: string[];
    /**
     * A matrix of visible days acording to the week they appear in.
     */
    dayBlocks: DayBlock[][];
    /**
    * A Localized list of days of week.
    */
    daysOfWeek: string[];
    /**
     * Initializes a new instance of the @see CalendarFormFieldComponent class.
     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class
     */
    constructor(injector: Injector);
    /**
     * Implementation of angular OnInit interface
     */
    ngOnInit(): void;
    /**
     * Occurs when the previous month button has been clicked
     */
    onPreviousClicked(event: Event): void;
    /**
     * Occurs when the next month button has been clicked
     */
    onNextClicked(event: Event): void;
    /**
     * Occurs when the go to today button has been clicked
     */
    onGoToTodayClicked(event: Event): void;
    /**
     * Changes the current view to include the previous month
     */
    goToPreviousMonth(): void;
    /**
     * Changes the current view to include the previous month
     */
    goToNextMonth(): void;
    /**
     * Selects a day in the calander
     */
    selectDay(day: Date): void;
    /**
     * Indicates if a given day is selected
     */
    isDaySelected(day: Date): boolean;
    /**
     * Applies the focus to the current element
     */
    focus(): void;
    private yieldFocus;
    /**
     * Brings today into view
     */
    goToToday(): void;
    /**
     * Brings selected date into view
     */
    goToSelection(): void;
    /**
     * Brings a month and year into view
     */
    goTo(year: number, month: number): void;
    /**
     * Handles keydown events on dat blocks
     */
    onDayBlockKeyDown(event: KeyboardEvent, day: DayBlock): void;
    /**
     * Occurs every time the value of the control changes, in the UI or programmatically.
     * @param value the value of the form control
     */
    protected onValueChanged(value: any): void;
    /**
     * Performs validation that is internal to this control
     * @param c The form control attached to this instance
     */
    protected validate(c: FormControl): ValidationAlerts;
    /**
     * Generates the current view of day blocks
     */
    private generateDayBlocks;
    /**
     * attempts to find a day button via its timestamp
     */
    private findDayButton;
    /**
     * Brings focus to a given date
     */
    private focusOnDate;
    convertDateToScreenReaderFormat(day: Date): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarFormFieldComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarFormFieldComponent, "sme-form-field[type=\"calendar\"]", never, {}, {}, never, never, false, never>;
}
