import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
import { BalCalendarCell, BalPointerDate } from './bal-datepicker.type';
import { BalConfigObserver, BalLanguage, BalConfigState, BalRegion } from '../../utils/config';
import { FormInput } from '../../utils/form-input';
import { Loggable, LogInstance } from '../../utils/log';
import { BalBreakpointObserver, BalBreakpoints } from '../../utils/breakpoints';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
export declare class Datepicker implements ComponentInterface, BalConfigObserver, FormInput<string | undefined>, Loggable, BalBreakpointObserver, BalAriaFormLinking {
  private inputId;
  private inheritedAttributes;
  private popoverElement;
  nativeInput: HTMLInputElement;
  inputValue: string | undefined;
  initialValue?: string;
  el: HTMLElement;
  language: BalLanguage;
  region: BalRegion;
  isMobile: boolean;
  focused: boolean;
  isPopoverOpen: boolean;
  selectedDate?: string;
  pointerDate: BalPointerDate;
  ariaForm: BalAriaForm;
  log: LogInstance;
  createLogger(log: LogInstance): void;
  name: string;
  invalid: boolean;
  required: boolean;
  disabled: boolean;
  readonly: boolean;
  loading: boolean;
  placeholder?: string;
  min?: string;
  max?: string;
  closeOnSelect: boolean;
  triggerIcon: boolean;
  minYearProp?: number;
  maxYearProp?: number;
  debounce: number;
  protected debounceChanged(): void;
  defaultDate?: string;
  value?: string;
  protected valueChanged(): void;
  allowedDates: BalProps.BalDatepickerCallback | undefined;
  balChange: EventEmitter<BalEvents.BalDatepickerChangeDetail>;
  balInput: EventEmitter<BalEvents.BalDatepickerInputDetail>;
  balBlur: EventEmitter<BalEvents.BalDatepickerBlurDetail>;
  balFocus: EventEmitter<BalEvents.BalDatepickerFocusDetail>;
  balInputClick: EventEmitter<BalEvents.BalDatepickerInputClickDetail>;
  balIconClick: EventEmitter<BalEvents.BalDatepickerIconClickDetail>;
  listenOnClick(ev: UIEvent): void;
  private resetHandlerTimer?;
  resetHandler(ev: UIEvent): void;
  breakpointListener(breakpoints: BalBreakpoints): void;
  connectedCallback(): void;
  componentDidLoad(): void;
  componentWillLoad(): void;
  configChanged(state: BalConfigState): Promise<void>;
  open(): Promise<void>;
  close(): Promise<void>;
  select(dateString: string): Promise<void>;
  setFocus(): Promise<void>;
  setBlur(): Promise<void>;
  getInputElement(): Promise<HTMLInputElement>;
  setAriaForm(ariaForm: BalAriaForm): Promise<void>;
  private updatePointerDates;
  private updateValue;
  get minYear(): number;
  get maxYear(): number;
  get years(): number[];
  get months(): {
    name: string;
    index: number;
  }[];
  get weekDays(): string[];
  get firstDateOfBox(): Date;
  getLocale(): string;
  get calendarGrid(): BalCalendarCell[][];
  private getAllowedDates;
  private onIconClick;
  private onInputClick;
  private onPopoverChange;
  private formatDate;
  private onInput;
  private onInputChange;
  private onClickDateCell;
  private onInputKeyUp;
  private onInputKeyDown;
  private onMonthSelect;
  private onYearSelect;
  private onInputFocus;
  private onInputBlur;
  private fireBlur;
  private handleClick;
  render(): any;
  renderInput(): any;
  renderGrid(): any;
  renderWeekDayHeader(): any;
  renderHeader(): any;
  private previousMonth;
  private nextMonth;
  private calcPreviousMonth;
  private calcNextMonth;
  private lastDayOfMonth;
  private get isPreviousMonthDisabled();
  private get isNextMonthDisabled();
  private isDateInRange;
}
