import { ComponentInterface, EventEmitter } from '../../../stencil-public-runtime';
import { HTMLStencilElement } from '../../../stencil-public-runtime';
import { BalConfigObserver, BalConfigState, BalLanguage } from '../../../utils/config';
import { LogInstance, Loggable } from '../../../utils/log';
import { BalSwipeInfo, BalSwipeObserver } from '../../../utils/swipe';
import { DayCell, ListItem, WeekdayCell } from '../utils/calendar';
export declare class DateCalendar implements ComponentInterface, Loggable, BalConfigObserver, BalSwipeObserver {
    private yearListEl;
    private gridEl;
    private oldMin?;
    private oldMax?;
    el: HTMLStencilElement;
    selectedDate: string;
    monthFullNames: string[];
    weekdays: WeekdayCell[];
    months: ListItem[];
    years: ListItem[];
    calendarGrid: DayCell[];
    firstDayOfWeek: number;
    month: number;
    year: number;
    language: BalLanguage;
    isCalendarVisible: boolean;
    isYearListVisible: boolean;
    isMonthListVisible: boolean;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * The value of selected date, which accepts ISO 8601 date strings (YYYY-MM-DD).
     */
    value?: string;
    valueChanged(newValue?: string, oldValue?: string): void;
    /**
     * The date to defines where the calendar starts. The prop accepts ISO 8601 date strings (YYYY-MM-DD). Default is today.
     */
    defaultDate?: string;
    /**
     * Callback to determine which date in the datepicker should be selectable.
     */
    allowedDates: BalProps.BalDateCalendarAllowedDatesCallback | undefined;
    /**
     * The minimum datetime allowed. Value must be a date string
     * following the
     * [ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),
     * such as `1996-12-19`. The format does not have to be specific to an exact
     * datetime. For example, the minimum could just be the year, such as `1994`.
     * Defaults to the beginning of the year, 100 years ago from today.
     */
    min?: string;
    /**
     * The maximum datetime allowed. Value must be a date string
     * following the
     * [ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),
     * `1996-12-19`. The format does not have to be specific to an exact
     * datetime. For example, the maximum could just be the year, such as `1994`.
     * Defaults to the end of this year.
     */
    max?: string;
    rangePropChanged(): void;
    /**
     * Earliest year available for selection
     */
    minYearProp?: number;
    /**
     * Latest year available for selection
     */
    maxYearProp?: number;
    yearRangePropChanged(): void;
    /**
     * Emitted when a option got selected.
     */
    balChange: EventEmitter<BalEvents.BalDateCalendarChangeDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    swipeListener({ left, right }: BalSwipeInfo): void;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private get minYear();
    private get maxYear();
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private updateSelections;
    private generateGrid;
    private generateGridByDate;
    private generateGridByDefaultDate;
    private generateGridByMonthAndYear;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onSelectDay;
    private onClickNextMonth;
    private onClickPreviousMonth;
    private onClickSelectMonthAndYear;
    private onClickYear;
    private onClickMonth;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
