import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
import { AbstractControl, ControlContainer, ControlValueAccessor, ValidationErrors } from '@angular/forms';
import { QdFormPinCodeConfiguration } from '../model/forms.interface';
import { QdFormsActionEmitterService } from '../shared/services/action-emitter.service';
import { QdPinCodeService } from './pin-code-service/pin-code.service';
import { QdEventBrokerService } from '../../core/services/event-broker.service';
import * as i0 from "@angular/core";
/**
 * **QdPinCode** component provides a FormElement.
 * The **QdPinCode** is a component that provides a form element for entering a PIN code.<br />
 * It allows users to input a PIN code by typing individual digits or letters into separate input fields. It can be used with Quadrel Reactive Forms or with model binding.
 *
 * ####**Usage with Reactive Forms**
 *
 * ```ts
 * form = new QdFormGroup({
 *   pinCode: new QdFormControl()
 * });
 * ```
 * ```html
 * <form [formGroup]="form">
 *   <qd-pin-code [formControlName]="pinCode" [config]="config"></qd-pin-code>
 * </form>
 * ```
 *
 * ####**Usage with Model Binding**
 * ```ts
 * value;
 * ```
 * ```html
 * <qd-pin-code [(value)]="value" [config]="config"></qd-pin-code>
 * ```
 */
export declare class QdPinCodeComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {
    readonly pinCodeService: QdPinCodeService;
    private readonly changeDetectorRef;
    private readonly actionEmitterService;
    private readonly controlContainer;
    private readonly eventBrokerService;
    /**
     * The form control name can be assigned here if you want to use Reactive Forms.
     */
    formControlName: string;
    /**
     * The current form item value, if you are working with Model Binding.
     *
     * @example
     * <qd-pin-code [(value)]="value" [config]="config" (completed)="completed($event)"></qd-pin-code>
     */
    value: any;
    /**
     * The configuration for this form item
     *
     * @example
     * {
     *   label: { i18n: 'label' },
     *   hint: { i18n: 'hint' },
     *   codeLength: 6
     * };
     */
    config: QdFormPinCodeConfiguration;
    /**
     * A static test ID for integration tests can be set. <br />
     * The value for the HTML attribute [data-test-id].
     */
    testId: string;
    /**
     * Emits event when the input was successfully completed. Return value matches the current value.
     */
    readonly completed: EventEmitter<string>;
    /**
     * Emits event when the value has changed. Return value matches the current value.
     */
    readonly valueChange: EventEmitter<string>;
    /**
     * Emits event when the hint is clicked/tapped. `hintAction` must be set to `true` for this.
     */
    readonly clickHint: EventEmitter<any>;
    /**
     * Emits event when the readonly value is clicked/tapped. `readonlyAction ` must be set to `true` for this.
     */
    readonly clickReadonly: EventEmitter<any>;
    /**
     * Emits event when the viewonly value is clicked/tapped. `viewonlyAction ` must be set to `true` for this.
     */
    readonly clickViewonly: EventEmitter<any>;
    inputsList: QueryList<ElementRef>;
    readonly: boolean;
    readonlyAction: boolean;
    viewonly: boolean;
    viewonlyAction: boolean;
    hintAction: boolean;
    disabled: boolean;
    get hasError(): boolean;
    onPaste($event: any): void;
    label: string;
    hint: string;
    digitsOnly: boolean;
    codeLength: number;
    focusOnInit: boolean;
    codeHidden: boolean;
    inputType: string;
    iterable: ArrayConstructor;
    blurCurrent: boolean;
    control: AbstractControl;
    private _actionEmitterServiceSubscription;
    private _inputs;
    private _subs;
    private _onChange;
    private _onTouch;
    get errors(): ValidationErrors;
    get required(): boolean;
    constructor(pinCodeService: QdPinCodeService, changeDetectorRef: ChangeDetectorRef, actionEmitterService: QdFormsActionEmitterService, controlContainer: ControlContainer, eventBrokerService: QdEventBrokerService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    registerOnChange(fn: (_: string) => void): void;
    registerOnTouched(fn: string): void;
    writeValue(values: any): void;
    setDisabledState(disabled: boolean): void;
    handleCLick($event: any): void;
    handleDelete($event: any): void;
    handleInput($event: any): void;
    handleBlur(index: any): void;
    handleComplete(): void;
    private updateConfiguration;
    private hasFocusOnInitChanged;
    private hasCodeLengthChanged;
    private handleCodeLengthChange;
    private getInputs;
    private emptyAll;
    private focusFirst;
    private focusCurrent;
    private focusFirstEmpty;
    private focusFirstOnInit;
    private blurAll;
    private triggerValidation;
    private checkError;
    private handlePaste;
    private matchPastedTextPattern;
    private isInitialTextNumeric;
    private getClipboardText;
    private handleInputsWhenPaste;
    private fillInputs;
    private isNumeric;
    private isNumericOrLatin;
    private isEnter;
    private handlePrevious;
    private handleNext;
    private setErrorDigitsOnly;
    private initOpModeSubscription;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdPinCodeComponent, [null, null, null, { optional: true; host: true; skipSelf: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QdPinCodeComponent, "qd-pin-code", never, { "formControlName": { "alias": "formControlName"; "required": false; }; "value": { "alias": "value"; "required": false; }; "config": { "alias": "config"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, { "completed": "completed"; "valueChange": "valueChange"; "clickHint": "clickHint"; "clickReadonly": "clickReadonly"; "clickViewonly": "clickViewonly"; }, never, never, false, never>;
}
//# sourceMappingURL=pin-code.component.d.ts.map