import { StringFormatStrategy } from './string-format-strategy.abstract';
import { Nullable } from '../../../types/general';
export declare type CustomStringFormatter = (rawValue: string) => string;
/**
 * Used to format a string using a custom formatter.
 */
export declare class CustomFormatterStrategy extends StringFormatStrategy {
  private readonly formatter;
  private resetCaretPositionFlag;
  /**
   * The constructor function takes a CustomStringFormatter parameter and assigns it to the formatter
   * property of the class.
   *
   * @param {CustomStringFormatter} formatter - The `formatter` parameter is an instance of a custom
   * string formatter class that you are passing to the constructor of the class. This custom string
   * formatter class likely contains methods or properties related to formatting strings in a specific
   * way according to your requirements.
   * @param {boolean} resetCaretPosition - The caret position should update to the last or keep the current position after format
   * @param {boolean} overrideValue - Whether to override the value after blur, default is false
   */
  constructor(formatter: CustomStringFormatter, resetCaretPosition?: boolean, overrideValue?: boolean);
  /**
   * The format function in TypeScript takes a string input and returns the formatted output using a
   * formatter method.
   *
   * @param {string} input - The `format` function takes a string input and passes it to the `formatter`
   * function to format it.
   * @returns {string} The `format` function is returning the result of calling the `formatter` function with the
   * `input` string as its argument.
   */
  format(input: string): string;
  /**
   * The function calculates the caret position in a formatted input string.
   *
   * @param {string} input - The `input` parameter in the `calculateCaretPosition` function is a string
   * that represents the text input where you want to calculate the caret position.
   * @param {number} caretPosition - The current position of caret
   * @returns {Nullable<number>} The `calculateCaretPosition` function is returning the length of the formatted input
   * string.
   */
  calculateCaretPosition(input: string, caretPosition: Nullable<number>): Nullable<number>;
  /**
   * Trigger the formatter at init
   *
   * @returns {boolean} true or false
   */
  protected shouldTriggerAtInit(): boolean;
}
