import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime';
import { CalendarService } from '../../calendar.service';
import { AggregatedYear, CalendarAggregatedYear } from '../../models/aggregated-year';
import { CalendarYearGrid } from '../../models/calendar-year-grid';
import { EscapeFocusFunction, FocusableCalendarView } from '../../models/common';
import * as i0 from "@angular/core";
export declare class CalendarAggregatedYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {
    private _eRef;
    private _changeDetectorRef;
    private _calendarService;
    private _dateTimeAdapter;
    private _dateTimeFormats;
    /** Parameter used in id of years used for help with focusing on the correct element during keyboard navigation. */
    id: string;
    /** Function that is called when the focus would escape the element. */
    focusEscapeFunction: EscapeFocusFunction;
    /** Parameter holding the year that is currently selected. */
    yearSelected: number;
    /**
     * Object to customize aggregated year grid
     */
    aggregatedYearsViewGrid: CalendarYearGrid;
    /**
     * Object to customize year grid
     */
    yearViewGrid: CalendarYearGrid;
    /** Event fired when a year is selected. */
    readonly yearsClicked: EventEmitter<AggregatedYear>;
    /**
     * View ID
     */
    get viewId(): string;
    /**
     * @hidden
     * Today cell label ID
     */
    get _todayLabelId(): string;
    /**
     * @hidden
     * Selected date label ID
     */
    get _selectedDateLabelId(): string;
    /**
     * @hidden
     *  This variable is used to define which year from calendarYearList should be focusable by tab key
     */
    _activeYear: AggregatedYear;
    /**
     * @hidden
     *  Parameter that stores the dozen of years that are currently being displayed.
     */
    _calendarYearListGrid: CalendarAggregatedYear[][];
    /**
     * @hidden
     * Current period of years selected
     */
    _yearsSelected: AggregatedYear | null;
    /**
     * @hidden
     * Parameter storing the year of the present day.
     */
    _currentYear: number;
    /**
     * @hidden
     * Parameter storing first shown year on list
     */
    private _firstYearInList;
    /**
     * @hidden
     */
    private readonly _destroyRef;
    /** @hidden */
    private _initiated;
    /** @hidden */
    constructor(_eRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _calendarService: CalendarService, _dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** Method that sends the year to the parent component when it is clicked. */
    selectYear(selectedYear: CalendarAggregatedYear, event?: MouseEvent): void;
    /** Method used to load the previous 12 years to be displayed. */
    loadNextYearsList(): void;
    /** Method used to load the next 12 years to be displayed. */
    loadPreviousYearsList(): void;
    /**
     * Set focus on month cell.
     * It can be a selected cell, current month cell or first cell in the list
     */
    setFocusOnCell(): void;
    /** Method for handling the keyboard navigation. */
    _onKeydownYearHandler(event: KeyboardEvent, index: number): void;
    /**
     * @hidden
     * Method that allows to focus elements inside this component
     */
    _focusElementBySelector(elementSelector: string): void;
    /**
     * @hidden
     * Method returning index of aggregated year index cell
     */
    _getIndex(rowIndex: number, colIndex: number): number;
    /**
     * @hidden
     * Get id of calendar's aggregated year item
     */
    _getId(index: number): string;
    /**
     * @hidden
     * Check if specified year is between start year and end year)
     */
    _isBetween(aggregatedYear: AggregatedYear, yearToCheck: number): boolean;
    /** @hidden */
    private _constructYearsGrid;
    /**
     * @hidden
     * Returns year name as a string.
     */
    private _getYearsName;
    /**
     * @hidden
     * Returns aria year name as a string.
     */
    private _getAriaYearsName;
    /**
     * @hidden
     * Returns year name taking into account yearMapping.
     */
    private _getYearString;
    /**
     * @hidden
     * Amount of years displayed in year view
     */
    private _yearsInOnePeriod;
    /**
     * @hidden
     * Amount of years displayed in aggregated year view
     */
    private _periodsAmount;
    /**
     * @hidden
     * Method that returns active cell, which means:
     * if there is any selected year, return selected year
     * if there is no selected year, but there is current year, return current year
     * if there is no current year, or selected, return first one
     */
    private _getActiveYear;
    /**
     * @hidden
     * Returns transformed 1d array from 2d year grid.
     */
    private _getYearsList;
    /**
     * @hidden
     * Method to put configuration and listeners on calendar keyboard service
     */
    private _setupKeyboardService;
    /** @hidden */
    private _focusOnCellByIndex;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarAggregatedYearViewComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarAggregatedYearViewComponent<any>, "fd-calendar-aggregated-year-view", never, { "id": { "alias": "id"; "required": false; }; "focusEscapeFunction": { "alias": "focusEscapeFunction"; "required": false; }; "yearSelected": { "alias": "yearSelected"; "required": false; }; "aggregatedYearsViewGrid": { "alias": "aggregatedYearsViewGrid"; "required": false; }; "yearViewGrid": { "alias": "yearViewGrid"; "required": false; }; }, { "yearsClicked": "yearsClicked"; }, never, never, true, never>;
}
