import { EventEmitter, QueryList, ElementRef, ChangeDetectorRef } from '@angular/core';
import { IgxDayItemComponent } from './day-item.component';
import { IgxCalendarBaseDirective } from '../calendar-base';
import { PlatformUtil } from '../../core/utils';
import { IViewChangingEventArgs } from './days-view.interface';
import { CalendarDay } from '../common/model';
import { IgxIconService } from '../../icon/icon.service';
import * as i0 from "@angular/core";
export declare class IgxDaysViewComponent extends IgxCalendarBaseDirective {
    #private;
    protected el: ElementRef;
    cdr: ChangeDetectorRef;
    protected iconService: IgxIconService;
    /**
     * Sets/gets the `id` of the days view.
     * If not set, the `id` will have value `"igx-days-view-0"`.
     * ```html
     * <igx-days-view id="my-days-view"></igx-days-view>
     * ```
     * ```typescript
     * let daysViewId = this.daysView.id;
     * ```
     */
    id: string;
    tabIndex: number;
    role: string;
    readonly viewClass = true;
    get standalone(): boolean;
    set standalone(value: boolean);
    protected get activeDescendant(): number;
    /**
     * Show/hide week numbers
     *
     * @example
     * ```html
     * <igx-days-view [showWeekNumbers]="true"></igx-days-view>
     * ``
     */
    showWeekNumbers: boolean;
    /**
     * @hidden
     * @internal
     */
    set activeDate(value: Date);
    get activeDate(): Date;
    /**
     * @hidden
     * @internal
     */
    set previewRangeDate(value: Date);
    get previewRangeDate(): Date;
    set hideLeadingDays(value: boolean);
    get hideLeadingDays(): boolean;
    set hideTrailingDays(value: boolean);
    get hideTrailingDays(): boolean;
    set showActiveDay(value: boolean);
    get showActiveDay(): boolean;
    /**
     * @hidden
     */
    dateSelected: EventEmitter<Date>;
    /**
     * @hidden
     */
    pageChanged: EventEmitter<IViewChangingEventArgs>;
    /**
     * @hidden
     */
    activeDateChange: EventEmitter<Date>;
    /**
     * @hidden
     */
    previewRangeDateChange: EventEmitter<any>;
    /**
     * @hidden
     */
    dates: QueryList<IgxDayItemComponent>;
    private _activeDate;
    private _previewRangeDate;
    private _hideLeadingDays;
    private _hideTrailingDays;
    private _showActiveDay;
    /**
     * @hidden
     */
    constructor(platform: PlatformUtil, _localeId: string, el: ElementRef, cdr: ChangeDetectorRef, iconService: IgxIconService);
    /**
     * @hidden
     */
    private handleArrowKeydown;
    /**
     * @hidden
     */
    protected onArrowRight(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onArrowLeft(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onArrowUp(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onArrowDown(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onKeydownEnter(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onKeydownHome(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected onKeydownEnd(event: KeyboardEvent): void;
    /**
     * @hidden
     */
    protected handleFocus(): void;
    /**
     * @hidden
     */
    protected handleBlur(): void;
    /**
     * @hidden
     */
    protected handleDateClick(item: IgxDayItemComponent): void;
    private selectActiveDate;
    protected get calendarMonth(): CalendarDay[];
    protected get monthWeeks(): CalendarDay[][];
    /**
     * Returns the week number by date
     *
     * @hidden
     */
    getWeekNumber(date: CalendarDay): number;
    /**
     * Returns the locale representation of the date in the days view.
     *
     * @hidden
     */
    formattedDate(value: Date): string;
    /**
     * @hidden
     */
    get weekHeaderLabels(): {
        long: string;
        formatted: string;
    }[];
    protected get weekNumberHeader(): {
        short: string;
        long: string;
    };
    /**
     * @hidden
     */
    rowTracker(index: number, item: CalendarDay[]): string;
    /**
     * @hidden
     */
    dateTracker(_: number, item: CalendarDay): string;
    /**
     * @hidden
     */
    isSelected(date: CalendarDay): boolean;
    /**
     * @hidden
     */
    protected isFirstInRange(date: CalendarDay): boolean;
    /**
     * @hidden
     */
    protected isLastInRange(date: CalendarDay): boolean;
    /**
     * @hidden
     */
    protected isActiveDate(day: CalendarDay): boolean;
    /**
     * @hidden
     */
    protected isWithinRange(date: Date, checkForRange: boolean, min?: Date, max?: Date): boolean;
    protected isWithinPreviewRange(date: Date): boolean;
    /**
     * @hidden
     */
    private get isSingleSelection();
    /**
     * @hidden @internal
     */
    changePreviewRange(date: Date): void;
    /**
     * @hidden @internal
     */
    clearPreviewRange(): void;
    private setPreviewRangeDate;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxDaysViewComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxDaysViewComponent, "igx-days-view", never, { "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "role": { "alias": "role"; "required": false; }; "standalone": { "alias": "standalone"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "activeDate": { "alias": "activeDate"; "required": false; }; "previewRangeDate": { "alias": "previewRangeDate"; "required": false; }; "hideLeadingDays": { "alias": "hideLeadingDays"; "required": false; }; "hideTrailingDays": { "alias": "hideTrailingDays"; "required": false; }; "showActiveDay": { "alias": "showActiveDay"; "required": false; }; }, { "dateSelected": "dateSelected"; "pageChanged": "pageChanged"; "activeDateChange": "activeDateChange"; "previewRangeDateChange": "previewRangeDateChange"; }, never, never, true, never>;
    static ngAcceptInputType_showWeekNumbers: unknown;
    static ngAcceptInputType_hideLeadingDays: unknown;
    static ngAcceptInputType_hideTrailingDays: unknown;
    static ngAcceptInputType_showActiveDay: unknown;
}
