import * as _angular_core from '@angular/core'; /** * Event payload for input mask value changes. */ type AXInputMaskEvent = { masked: string; unmasked: string; completed: boolean; }; /** * Available input mask modes for different data types. */ type AXInputMaskModes = 'hijriDate' | 'digits' | 'thousandsSeparator' | 'decimal' | 'mask'; /** * Token definitions for custom mask patterns. * - `#`: Digit (0-9) * - `^`: Letter (a-z, A-Z) * - `@`: Alphanumeric (0-9, a-z, A-Z) */ type AXMaskTokens = { [key: string]: { pattern: RegExp; optional?: boolean; transform?: (char: string) => string; repeated?: boolean; multiple?: boolean; }; }; /** * Directive that provides input masking functionality for various data types including * Hijri dates, digits, decimal numbers, and thousands-separated numbers. * Built on top of the Maska.js library for robust input validation and formatting. */ declare class AXInputMaskDirective { #private; private elm; private maskaJs; /** * The mode of input masking to apply. * @default 'digits' */ maskMode: _angular_core.InputSignal; /** * The separator character used in the mask (e.g., '/' for dates, ',' for thousands). * @default '/' */ separator: _angular_core.InputSignal; /** * Whether to apply the mask eagerly (as user types) or on blur. * @default false */ eager: _angular_core.InputSignal; /** * Event emitted when the masked value changes. */ onMaskChanged: _angular_core.OutputEmitterRef; /** * Minimum allowed value for numeric inputs. * @default null */ minValue: _angular_core.InputSignal; /** * Maximum allowed value for numeric inputs. * @default null */ maxValue: _angular_core.InputSignal; /** * Number of decimal places allowed for decimal inputs. * @default 0 */ decimal: _angular_core.InputSignal; /** * Custom mask pattern for 'mask' mode. * Use the following tokens: * - `#`: Required digit (0-9) * - `^`: Required letter (a-z, A-Z) * - `@`: Required alphanumeric (0-9, a-z, A-Z) * * Use ! before token to escape symbol. For example !# will render # instead of a digit. * Any other character is treated as a literal separator. * @example '(###) ###-####' for phone numbers * @example 'AA-####' for license plates * @example '##/##/####' for dates */ maskPattern: _angular_core.InputSignal; /** * Custom token definitions to extend or override default mask tokens. * Each token maps to a pattern regex and optional transformation. * @example { 'P': { pattern: /[1-9]/, transform: (c) => c.toUpperCase() } } */ customTokens: _angular_core.InputSignal; private initializeMask; private thousandsSeparatorHandler; private hijriMaskHandler; private rangeValueLimit; private convertToEnglishDigits; private decimalMaskHandler; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } export { AXInputMaskDirective }; export type { AXInputMaskEvent, AXInputMaskModes, AXMaskTokens };