/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { CalendarDirection, CalendarMenuAnimationType } from './calendar-menu-constants';
import { ICalendarMenuAdapter } from './calendar-menu-adapter';
import { ICalendarMenuOption } from './calendar-menu-constants';
export interface ICalendarMenuFoundation extends ICustomElementFoundation {
    animationType: CalendarMenuAnimationType;
    preventFocus: boolean;
    animateIn(options: ICalendarMenuOption[], direction: CalendarDirection, setFocus: boolean): void;
    close(): void;
    moveFocusBackward(): boolean;
    moveFocusDown(): void;
    moveFocusForward(): boolean;
    moveFocusUp(): void;
    openAsGrid(options: ICalendarMenuOption[], setFocus: boolean): void;
    openAsList(options: ICalendarMenuOption[], setFocus: boolean): void;
    selectFocusedItem(): void;
}
export declare class CalendarMenuFoundation implements ICalendarMenuFoundation {
    private _adapter;
    private _animationType;
    private _columnCount;
    private _focusedIndex;
    private _focusedIndexAfterAnimation;
    private _list;
    private _open;
    private _options;
    private _preventFocus;
    private _sliceEnd;
    private _sliceStart;
    private _clickListener;
    private _intersectionObserverCallback;
    constructor(_adapter: ICalendarMenuAdapter);
    initialize(): void;
    disconnect(): void;
    openAsGrid(options: ICalendarMenuOption[], setFocus: boolean): void;
    openAsList(options: ICalendarMenuOption[], setFocus: boolean): void;
    close(): void;
    animateIn(options: ICalendarMenuOption[], direction: CalendarDirection, setFocus: boolean): void;
    selectFocusedItem(): void;
    moveFocusBackward(): boolean;
    moveFocusDown(): void;
    moveFocusForward(): boolean;
    moveFocusUp(): void;
    private _tryMoveFocus;
    private _setFocusFromStoredIndex;
    private _onClick;
    private _onIntersection;
    private _setColumnCount;
    private _emitFocusChangeEvent;
    private _setGridListeners;
    private _setListListeners;
    private _getOptionSliceIncludingSelected;
    private _getNextOptionsSlice;
    private _getPreviousOptionsSlice;
    private _applyAnimationType;
    private _applyPreventFocus;
    get animationType(): CalendarMenuAnimationType;
    set animationType(value: CalendarMenuAnimationType);
    get preventFocus(): boolean;
    set preventFocus(value: boolean);
}
