import { VegaDatePicker } from '../../vega-date-picker';
import { Nullable } from '../../../../types/general';
import { StringInputFormatterSlimmer } from '../../../../helpers/slimmers/string-input-formatter-slimmer';
import { StringFormatStrategy } from '../../../../helpers/formatter/string-formatter/string-format-strategy.abstract';
declare type InputType = 'single' | 'rangeStart' | 'rangeEnd';
/** The date picker format controller slimmer */
export declare class VegaDatePickerFormatController extends StringInputFormatterSlimmer {
  format: VegaDatePicker['format'];
  mode: VegaDatePicker['mode'];
  vegaDatePickerCalendarRenderer: VegaDatePicker['vegaDatePickerCalendarRenderer'];
  vegaDatePickerSingleInputRenderer: VegaDatePicker['vegaDatePickerSingleInputRenderer'];
  vegaDatePickerRangeInputRenderer: VegaDatePicker['vegaDatePickerRangeInputRenderer'];
  private inputType;
  private datePickerFormatStrategy;
  /** Set up string formatter when component did load */
  componentDidLoad(): void;
  /**
   * The constructor function initializes an object with a specified input type in TypeScript.
   *
   * @param {InputType} inputType - The `inputType` parameter in the constructor is of type `InputType`.
   * It is being assigned to the `inputType` property of the class instance.
   */
  constructor(inputType: InputType);
  /**
   * It is decorated with the `@MapToComponentMethod` decorator,
   * which indicates that this method should be mapped to a component method called 'format'.
   *
   * @param {string} format - The value of the format.
   */
  watchFormat(format: string): void;
  /**
   * The code below is defining a function called `formatDate` in TypeScript. This function takes a
   *  parameter `date` of type string and returns a string.
   *
   * @param {string} date - The value of the date.
   * @returns {string} The formatted date is being returned.
   */
  formatDate: (date: string) => string;
  /**
   * This function returns a reference to an HTML input element based on the input type specified.
   *
   * @returns {HTMLInputElement|null} The single mode input ref, the start date input ref or end date input ref in range mode
   */
  protected getInputElementRef: () => Nullable<HTMLInputElement>;
  /**
   * Determining the string format strategy to be applied when the input field trigger is set to 'input'.
   *
   * @returns {Nullable<StringFormatStrategy>} the input mode mask strategy
   */
  protected getInputModeStrategy: () => Nullable<StringFormatStrategy>;
  /**
   * Determining the string format strategy to be applied when the input field trigger is set to 'blur'. The date-picker don't need blur strategy, return null
   *
   * @returns {Nullable<StringFormatStrategy>} the blur mode mask strategy
   */
  protected getBlurModeStrategy: () => Nullable<StringFormatStrategy>;
  /**
   * The function `setupStringFormatter` sets up string input formatters based on the provided format for
   * either single date or range mode.
   *
   * @param {string} format - The format parameter is a string that represents the desired format for the
   * date input. It is used to create a date format mask that is passed to the StringInputFormatter
   * constructor.
   */
  private setupStringFormatter;
  /**
   * The code below is defining a private method called `getDateFormatMask` in a TypeScript class. This
   * method takes a `format` parameter of type `string`.
   *
   * @param {string} format - The value of the format.
   * @returns {StringMaskStrategy} - The mask of the date format.
   */
  private getDateFormatMask;
}
export {};
