import { MaskFn, MaskType } from "./types";
/**
 * Format a value as a phone number in the format (###) ###-####
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskPhone("1234567890") -> "(123) 456-7890"
 */
export declare const maskPhone: MaskFn;
/**
 * Format a value as a decimal number in the format 0.00
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskMoney("123456") -> "1,234.56"
 */
export declare const maskMoney: MaskFn;
/**
 * Format a value as a credit card number in the format XXXX XXXX XXXX XXXX
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskCard("1234567890123456") -> "1234 5678 9012 3456"
 */
export declare const maskCard: MaskFn;
/**
 * Format a value as a zip code in the format 12345-6789
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskZip("123456789") -> "12345-6789"
 */
export declare const maskZip: MaskFn;
/**
 * Format a value as a date in the format MM/DD/YYYY
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskDate("12345678") -> "01/23/4567"
 */
export declare const maskDate: MaskFn;
/**
 * Format a value as a month/day in the format MM/DD
 * @param {string} value the value to format
 * @returns {string} the formatted value
 * @example
 * maskMonthDay("1231") -> "12/31"
 */
export declare const maskMonthDay: MaskFn;
export declare const defaultMask: MaskFn;
/**
 * Given a mask type and a raw value, clamps the raw value to a suitable
 * length for the given mask type. This is useful for limiting the length
 * of input values when the user is typing, so that the formatting doesn't
 * get out of hand.
 *
 * For example, for a phone number, the raw value will be clamped to 10
 * digits. For a date, it will be clamped to 8 digits (MMDDYYYY).
 *
 * Note that this function does not remove any characters from the raw
 * value - it simply truncates it to the desired length. This means that
 * if the user enters a non-digit character, it will still be included
 * in the final output.
 *
 * @param {MaskType} type the mask type to use for clamping
 * @param {string} raw the raw value to clamp
 * @returns {string} the clamped raw value
 * @example
 * clampRawValueByMaskType("phone", "1234567890333") -> "1234567890"
 */
export declare function clampRawValueByMaskType(type: MaskType, raw: string): string;
