import { AfterContentInit, EventEmitter, QueryList, TemplateRef } from '@angular/core';
import { PrimeTemplate } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import { InputOtpStyle } from './style/inputotpstyle';
import { Nullable } from 'primeng/ts-helpers';
import * as i0 from "@angular/core";
import * as i1 from "primeng/api";
export declare const INPUT_OTP_VALUE_ACCESSOR: any;
/**
 * Input change event.
 * @property {Event} originalEvent - browser event.
 * @property {any}  value - updated value.
 * @group Interface
 */
export interface InputOtpChangeEvent {
    originalEvent: Event;
    value: any;
}
/**
 * Context interface for the input template events.
 * @property {(event: Event, index: number) => void} input - input event.
 * @property {(event: Event)} keydown - keydown event.
 * @property {(event: Event)} focus - focus event.
 * @property {(event: Event)} blur - blur event.
 * @property {(event: Event)} paste - paste event.
 * @group Interface
 */
export interface InputOtpTemplateEvents {
    input: (event: Event, index: number) => void;
    keydown: (event: Event) => void;
    focus: (event: Event) => void;
    blur: (event: Event) => void;
    paste: (event: Event) => void;
}
/**
 * Context of the input template.
 * @property {number | string} $implicit - token value.
 * @property {InputOtpTemplateEvents} events - Browser events of the template.
 * @property {number} index - index of the token.
 * @group Interface
 */
export interface InputOtpInputTemplateContext {
    $implicit: number | string;
    events: InputOtpTemplateEvents;
    index: number;
}
/**
 * Input Otp is used to enter one time passwords.
 * @group Components
 */
export declare class InputOtp extends BaseComponent implements AfterContentInit {
    /**
     * When present, it specifies that the component should have invalid state style.
     * @group Props
     */
    invalid: boolean;
    /**
     * When present, it specifies that the component should be disabled.
     * @group Props
     */
    disabled: boolean;
    /**
     * When present, it specifies that an input field is read-only.
     * @group Props
     */
    readonly: boolean;
    /**
     * Specifies the input variant of the component.
     * @group Props
     */
    variant: 'filled' | 'outlined';
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: number | null;
    /**
     * Number of characters to initiate.
     * @group Props
     */
    length: number;
    /**
     * Style class of the input element.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Mask pattern.
     * @group Props
     */
    mask: boolean;
    /**
     * When present, it specifies that an input field is integer-only.
     * @group Props
     */
    integerOnly: boolean;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: boolean | undefined;
    /**
     * Defines the size of the component.
     * @group Props
     */
    size: 'large' | 'small';
    /**
     * Callback to invoke on value change.
     * @group Emits
     */
    onChange: EventEmitter<InputOtpChangeEvent>;
    /**
     * Callback to invoke when the component receives focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onFocus: EventEmitter<Event>;
    /**
     * Callback to invoke when the component loses focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onBlur: EventEmitter<Event>;
    /**
     * Input template.
     * @param {InputOtpInputTemplateContext} context - Context of the template
     * @see {@link InputOtpInputTemplateContext}
     * @group Templates
     */
    inputTemplate: TemplateRef<any>;
    templates: Nullable<QueryList<PrimeTemplate>>;
    _inputTemplate: TemplateRef<any> | undefined;
    tokens: any;
    onModelChange: Function;
    onModelTouched: Function;
    value: any;
    get inputMode(): string;
    get inputType(): string;
    _componentStyle: InputOtpStyle;
    ngAfterContentInit(): void;
    getToken(index: any): any;
    getTemplateEvents(index: any): {
        input: (event: any) => void;
        keydown: (event: any) => void;
        focus: (event: any) => void;
        blur: (event: any) => void;
        paste: (event: any) => void;
    };
    onInput(event: any, index: any): void;
    updateModel(event: any): void;
    writeValue(value: any): void;
    updateTokens(): void;
    getModelValue(i: number): any;
    getAutofocus(i: number): boolean;
    registerOnChange(fn: Function): void;
    registerOnTouched(fn: Function): void;
    moveToPrev(event: any): void;
    moveToNext(event: any): void;
    findNextInput(element: any): any;
    findPrevInput(element: any): any;
    onInputFocus(event: any): void;
    onInputBlur(event: any): void;
    onKeyDown(event: any): void;
    onPaste(event: any): void;
    handleOnPaste(paste: any, event: any): void;
    getRange(n: number): number[];
    trackByFn(index: number): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputOtp, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InputOtp, "p-inputOtp, p-inputotp, p-input-otp", never, { "invalid": { "alias": "invalid"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "length": { "alias": "length"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "integerOnly": { "alias": "integerOnly"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "onChange": "onChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["inputTemplate", "templates"], never, true, never>;
    static ngAcceptInputType_autofocus: unknown;
}
export declare class InputOtpModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<InputOtpModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<InputOtpModule, never, [typeof InputOtp, typeof i1.SharedModule], [typeof InputOtp, typeof i1.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<InputOtpModule>;
}
