import * as i0 from '@angular/core';
import { OnDestroy, ElementRef } from '@angular/core';
import * as i5 from '@angular/cdk/a11y';
import { FocusMonitor } from '@angular/cdk/a11y';
import * as i4 from '@angular/forms';
import { ControlValueAccessor, UntypedFormArray, UntypedFormGroup, NgControl, NgForm, FormGroupDirective, AbstractControl } from '@angular/forms';
import { ErrorStateMatcher } from '@angular/material/core';
import * as i3 from '@angular/material/form-field';
import { MatFormFieldControl, MatFormField } from '@angular/material/form-field';
import { Subject } from 'rxjs';
import * as i2 from '@angular/common';
/**
* Custom `MatFormFieldControl` with an individual input box for each character, suitable for fixed-length fields,
* such as secondary PIN inputs, TFNs, or BSB code etc.
*
* Accessibility features are not yet fully implemented.
*
* Example:
*
* ```html
*
*
*
* ```
*
*/
declare class DiscreteInputComponent implements MatFormFieldControl, ControlValueAccessor, OnDestroy {
private _focusMonitor;
private _elementRef;
/** @ignore */
static nextId: number;
/** @ignore */
static ngAcceptInputType_disabled: boolean | string | null | undefined;
/** @ignore */
static ngAcceptInputType_required: boolean | string | null | undefined;
/** @ignore */ parts: UntypedFormArray;
/** @ignore */ group: UntypedFormGroup;
/** Emits whenever the component state changes. */
stateChanges: Subject;
/** Whether the control is focused. */
focused: boolean;
/** The type of input boxes */
type: 'text' | 'number' | 'password';
/** Input boxes are separated in groups. This specifies the characters displayed between two groups. */
separator: string;
/**
* A list of characters accepted in the inputs, for example `0-9`, `a-zA-Z0-9`
* @example '0-9'
*/
accept?: string;
/** @ignore */ id: string;
/** Value of aria-describedby that should be merged with the described-by ids which are set by the form-field. */
userAriaDescribedBy?: string;
private inputParts;
/**@ignore */
_formField: MatFormField;
/**@ignore */
ngControl: NgControl;
autocomplete?: string;
private _sizeSpec;
private _required;
private _placeholder?;
private _disabled;
private _separatorPos;
/** @ignore */ onChange: (_: any) => void;
/** @ignore */ onTouched: () => void;
/** @ignore */
get shouldLabelFloat(): boolean;
/** @ignore */
get empty(): boolean;
/**
* Defines the length and grouping of the input.
* @default [2, 2, 2]
*/
get sizeSpec(): number[];
set sizeSpec(spec: number[]);
/** The placeholder for this control. */
get placeholder(): string;
set placeholder(value: string);
/** Whether the control is required. */
get required(): boolean;
set required(value: boolean);
/** Whether the control is disabled. */
get disabled(): boolean;
set disabled(value: boolean);
/** The value of the control. */
get value(): string;
set value(v: string);
/** @ignore */
get _colorSuffix(): string;
constructor(_focusMonitor: FocusMonitor, _elementRef: ElementRef, formField: MatFormField, control: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _defaultErrorStateMatcher: ErrorStateMatcher);
/** @ignore */ errorState: boolean;
/** @ignore */ controlType?: string | undefined;
/** @ignore */ autofilled?: boolean | undefined;
/** @ignore */
ngOnDestroy(): void;
/** @ignore */
setDescribedByIds(ids: string[]): void;
/** @ignore */
onContainerClick(): void;
/** @ignore */
writeValue(v: string): void;
/** @ignore */
registerOnChange(fn: any): void;
/** @ignore */
registerOnTouched(fn: any): void;
/** @ignore */
setDisabledState(isDisabled: boolean): void;
/** @ignore */
_handleInput(control: AbstractControl, index: number, event: Event): void;
/** @ignore */
_handleBeforeInput(index: number, event: InputEvent): void;
/** @ignore */
_focusPart(elemRef: ElementRef): void;
/** @ignore */
_consumeKey(event: Event): void;
/** @ignore */
_leftArrow(index: number, event: Event): void;
/** @ignore */
_rightArrow(index: number, event: Event): void;
/** @ignore */
_handleBackspace(control: AbstractControl, index: number): void;
/** @ignore */
_onPaste(event: ClipboardEvent): void;
/** @ignore */
_separatorRequired(index: number): boolean;
/** @ignore */
_placeholderAt(index: number): string | undefined;
private _replaceText;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
declare class DiscreteInputModule {
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵmod: i0.ɵɵNgModuleDeclaration;
static ɵinj: i0.ɵɵInjectorDeclaration;
}
export { DiscreteInputComponent, DiscreteInputModule };