import { EventEmitter, QueryList, InjectionToken } from "@angular/core";
import { ControlValueAccessor } from "@angular/forms";
import { IgxCalendarMonthDirective, IgxCalendarYearDirective } from "../calendar.directives";
import { DayInterval } from "../common/model";
import * as i0 from "@angular/core";
export declare enum Direction {
    NEXT = 1,
    PREV = -1
}
export declare const DAY_INTERVAL_TOKEN: InjectionToken<DayInterval>;
export declare abstract class IgxCalendarViewDirective implements ControlValueAccessor {
    protected dayInterval?: DayInterval;
    role: string;
    tabIndex: number;
    protected get activeDescendant(): number;
    /**
     * Gets/sets whether the view should be rendered
     * according to the locale and format, if any.
     */
    formatView: boolean;
    /**
     * Applies styles to the active item on view focus.
     */
    showActive: boolean;
    /**
     * Emits an event when a selection is made in the view.
     * Provides reference the `date` property in the component.
     * @memberof IgxCalendarViewDirective
     */
    selected: EventEmitter<Date>;
    /**
     * Emits an event when a page changes in the view.
     * Provides reference the `date` property in the component.
     * @memberof IgxCalendarViewDirective
     * @hidden @internal
     */
    pageChanged: EventEmitter<Date>;
    /**
     * Emits an event when the active date has changed.
     * @memberof IgxCalendarViewDirective
     * @hidden @internal
     */
    activeDateChanged: EventEmitter<Date>;
    /**
     * @hidden
     * @internal
     */
    viewItems: QueryList<IgxCalendarMonthDirective | IgxCalendarYearDirective>;
    /**
     * @hidden
     */
    protected _formatter: Intl.DateTimeFormat;
    /**
     * @hidden
     */
    protected _locale: string;
    /**
     * @hidden
     * @internal
     */
    private _date;
    /**
     * @hidden
     */
    protected _onTouchedCallback: () => void;
    /**
     * @hidden
     */
    protected _onChangeCallback: (_: Date) => void;
    /**
     * Gets/sets the selected date of the view.
     * By default it's the current date.
     * ```typescript
     * let date = this.view.date;
     * ```
     *
     * @memberof IgxYearsViewComponent
     */
    set date(value: Date);
    get date(): Date;
    /**
     * Gets the `locale` of the view.
     * Default value is `"en"`.
     * ```typescript
     * let locale = this.view.locale;
     * ```
     *
     * @memberof IgxCalendarViewDirective
     */
    get locale(): string;
    /**
     * Sets the `locale` of the view.
     * Expects a valid BCP 47 language tag.
     * Default value is `"en"`.
     *
     * @memberof IgxCalendarViewDirective
     */
    set locale(value: string);
    constructor(dayInterval?: DayInterval);
    /**
     * @hidden
     */
    onKeydownArrowDown(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownArrowUp(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownArrowRight(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownArrowLeft(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownHome(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownEnd(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    onKeydownEnter(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected handleFocus(): void;
    /**
     * @hidden
     */
    protected handleBlur(): void;
    /**
     * @hidden
     */
    selectDate(value: Date): void;
    /**
     * @hidden
     */
    registerOnChange(fn: (v: Date) => void): void;
    /**
     * @hidden
     */
    registerOnTouched(fn: () => void): void;
    /**
     * @hidden
     */
    writeValue(value: Date): void;
    /**
     * @hidden
     */
    protected navigateTo(event: KeyboardEvent, direction: Direction, delta: number): void;
    /**
     * @hidden
     */
    protected abstract initFormatter(): void;
    /**
     * @hidden
     */
    protected abstract get range(): Date[];
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxCalendarViewDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxCalendarViewDirective, never, never, { "role": { "alias": "role"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "formatView": { "alias": "formatView"; "required": false; }; "showActive": { "alias": "showActive"; "required": false; }; "date": { "alias": "date"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; }, { "selected": "selected"; "pageChanged": "pageChanged"; "activeDateChanged": "activeDateChanged"; }, never, never, true, never>;
    static ngAcceptInputType_formatView: unknown;
    static ngAcceptInputType_showActive: unknown;
}
