import { FormFieldStatusMeta } from './form-field-validation-rule';
import { DatePickerModeType, DatePickerValueType } from '../../../components/vega-date-picker/types';
import { EvaluateResult } from './validation-rule';
import { InternalFormFieldValidationRule } from './internal-form-field-validation-rule.abstract';
/**
 * A rule that checks if date is empty or not
 *
 * @augments {InternalFormFieldValidationRule<string | string[]>}
 */
export declare class DateRequiredRule extends InternalFormFieldValidationRule<DatePickerValueType<DatePickerModeType>> {
  private readonly config;
  /**
   * It creates a new instance of the class with the given config.
   *
   * @param {{ mode: 'single' | 'range' }} config - config including the mode for date value
   * @param {'single' | 'range'} config.mode - The mode for date value
   */
  constructor(config: {
    mode: DatePickerModeType;
  });
  /**
   * If the input is not valid for the current mode, throw an error.
   * Otherwise, return an object with a boolean indicating whether the input is valid and a message to display to the user
   *
   * @param {string | string[]} input - The value of the input field.
   * @returns {EvaluateResult} An object with two properties: isValid and message.
   */
  evaluate(input: DatePickerValueType<DatePickerModeType>): EvaluateResult;
  /**
   * If the input is accepted and the status is not disabled and visible, then return true
   *
   * @param {unknown} input - The input to be evaluated.
   * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta
   * @returns {boolean} A boolean value.
   */
  canEvaluate(input: unknown, status?: FormFieldStatusMeta): boolean;
  /**
   * If the field is not disabled, visible, and has been touched or modified, then show the error
   *
   * @param {FormFieldStatusMeta} status - FormFieldStatusMeta
   * @returns {boolean} A boolean value.
   */
  shouldShowError(status: FormFieldStatusMeta): boolean;
  /**
   * If the input is undefined or null, return true. Otherwise, if the mode is 'single', return true if
   * the input is a string. Otherwise, if the mode is 'range', return true if the input is an array. Otherwise, return false.
   *
   * @param {unknown} input - The input value that the user has entered.
   * @returns {boolean} A boolean value.
   */
  private isAcceptedInputType;
}
