import * as _angular_core from '@angular/core';
import { OnChanges, QueryList, ElementRef, SimpleChanges, OnInit, ComponentRef, TemplateRef, AfterContentInit, InjectionToken } from '@angular/core';
import { ControlValueAccessor, FormArray, FormControl, NgControl } from '@angular/forms';
import * as ng_zorro_antd_core_types from 'ng-zorro-antd/core/types';
import { NzSizeLDSType, NzStatus, OnTouchedType, NzVariant } from 'ng-zorro-antd/core/types';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import * as rxjs from 'rxjs';
import { NzFormItemFeedbackIconComponent } from 'ng-zorro-antd/core/form';
import { InputFocusOptions } from 'ng-zorro-antd/core/util';
import * as i1 from 'ng-zorro-antd/space';

declare class NzInputAddonBeforeDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputAddonBeforeDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputAddonBeforeDirective, "[nzInputAddonBefore]", never, {}, {}, never, never, true, never>;
}
declare class NzInputAddonAfterDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputAddonAfterDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputAddonAfterDirective, "[nzInputAddonAfter]", never, {}, {}, never, never, true, never>;
}

declare class NzInputPrefixDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputPrefixDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputPrefixDirective, "[nzInputPrefix]", never, {}, {}, never, never, true, never>;
}
declare class NzInputSuffixDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputSuffixDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputSuffixDirective, "[nzInputSuffix]", never, {}, {}, never, never, true, never>;
}

declare class NzInputOtpComponent implements ControlValueAccessor, OnChanges {
    private formBuilder;
    private destroyRef;
    otpInputs: QueryList<ElementRef>;
    nzLength: number;
    nzSize: NzSizeLDSType;
    disabled: boolean;
    nzStatus: NzStatus;
    nzFormatter: (value: string) => string;
    nzMask: string | null;
    protected otpArray: FormArray<FormControl<string>>;
    private internalValue;
    private onChangeCallback?;
    onTouched: OnTouchedType;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    onInput(index: number, event: Event): void;
    onFocus(event: FocusEvent): void;
    onKeyDown(index: number, event: KeyboardEvent): void;
    writeValue(value: string): void;
    registerOnChange(fn: (value: string) => void): void;
    registerOnTouched(fn: () => {}): void;
    setDisabledState(isDisabled: boolean): void;
    onPaste(index: number, event: ClipboardEvent): void;
    private createFormArray;
    private emitValue;
    private selectInputBox;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputOtpComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzInputOtpComponent, "nz-input-otp", ["nzInputOtp"], { "nzLength": { "alias": "nzLength"; "required": false; }; "nzSize": { "alias": "nzSize"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "nzStatus": { "alias": "nzStatus"; "required": false; }; "nzFormatter": { "alias": "nzFormatter"; "required": false; }; "nzMask": { "alias": "nzMask"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_nzLength: unknown;
    static ngAcceptInputType_disabled: unknown;
}

declare class NzInputPasswordDirective {
    readonly nzVisibilityToggle: _angular_core.InputSignal<boolean>;
    readonly nzVisible: _angular_core.ModelSignal<boolean>;
    toggleVisible(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputPasswordDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputPasswordDirective, "nz-input-password", ["nzInputPassword"], { "nzVisibilityToggle": { "alias": "nzVisibilityToggle"; "required": false; "isSignal": true; }; "nzVisible": { "alias": "nzVisible"; "required": false; "isSignal": true; }; }, { "nzVisible": "nzVisibleChange"; }, never, never, true, never>;
}
declare class NzInputPasswordIconDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputPasswordIconDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputPasswordIconDirective, "[nzInputPasswordIcon]", never, {}, {}, never, never, true, never>;
}

declare class NzInputSearchDirective {
    private readonly inputDir;
    private readonly inputRef;
    readonly nzEnterButton: _angular_core.InputSignal<string | boolean>;
    readonly nzLoading: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly nzSearch: _angular_core.OutputEmitterRef<NzInputSearchEvent>;
    readonly size: _angular_core.Signal<ng_zorro_antd_core_types.NzSizeLDSType>;
    search(event: Event, source?: 'input' | 'clear'): void;
    onEnter(event: KeyboardEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputSearchDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputSearchDirective, "nz-input-search", ["nzInputSearch"], { "nzEnterButton": { "alias": "nzEnterButton"; "required": false; "isSignal": true; }; "nzLoading": { "alias": "nzLoading"; "required": false; "isSignal": true; }; }, { "nzSearch": "nzSearch"; }, ["inputDir", "inputRef"], never, true, never>;
}
declare class NzInputSearchEnterButtonDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputSearchEnterButtonDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputSearchEnterButtonDirective, "[nzInputSearchEnterButton]", never, {}, {}, never, never, true, never>;
}
interface NzInputSearchEvent {
    value: string;
    event: Event;
    source: 'clear' | 'input';
}

declare class NzInputDirective implements OnInit {
    private elementRef;
    private compactSize;
    private destroyRef;
    private nzFormStatusService;
    private inputWrapper;
    private focusMonitor;
    private hostView;
    private readonly inputPasswordDir;
    private readonly inputSearchDir;
    private readonly formField;
    readonly ngControl: NgControl | null;
    private readonly nativeValue;
    readonly value: _angular_core.Signal<string>;
    readonly nzVariant: _angular_core.InputSignal<NzVariant | undefined>;
    readonly nzSize: _angular_core.InputSignal<NzSizeLDSType>;
    readonly nzStatus: _angular_core.InputSignal<NzStatus>;
    readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly controlDisabled: _angular_core.WritableSignal<boolean>;
    readonly finalDisabled: _angular_core.Signal<boolean>;
    readonly dir: _angular_core.WritableSignal<_angular_cdk_bidi.Direction>;
    readonly size: _angular_core.WritableSignal<NzSizeLDSType>;
    private readonly formSize;
    private readonly formVariant;
    readonly status: _angular_core.Signal<ng_zorro_antd_core_types.NzValidateStatus>;
    readonly hasFeedback: _angular_core.Signal<boolean>;
    readonly classes: _angular_core.Signal<ng_zorro_antd_core_types.NgClassInterface>;
    readonly type: _angular_core.Signal<string>;
    protected readonly focused: _angular_core.WritableSignal<boolean>;
    protected readonly finalSize: _angular_core.Signal<NzSizeLDSType | undefined>;
    protected readonly finalVariant: _angular_core.Signal<NzVariant>;
    feedbackRef: ComponentRef<NzFormItemFeedbackIconComponent> | null;
    disabled$: rxjs.Observable<boolean>;
    constructor();
    ngOnInit(): void;
    onInput(event: Event): void;
    private renderFeedbackIcon;
    focus(options?: InputFocusOptions): void;
    blur(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NzInputDirective, "input[nz-input],textarea[nz-input]", ["nzInput"], { "nzVariant": { "alias": "nzVariant"; "required": false; "isSignal": true; }; "nzSize": { "alias": "nzSize"; "required": false; "isSignal": true; }; "nzStatus": { "alias": "nzStatus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NzSpaceCompactItemDirective; inputs: {}; outputs: {}; }]>;
}

interface NzCountConfig {
    max?: number;
    strategy?: (value: string) => number;
    exceedFormatter?: (value: string, config: {
        max: number;
    }) => string;
}
declare class NzInputWrapperComponent {
    private readonly focusMonitor;
    protected readonly inputPasswordDir: NzInputPasswordDirective | null;
    protected readonly inputSearchDir: NzInputSearchDirective | null;
    protected readonly inputRef: _angular_core.Signal<ElementRef<any>>;
    protected readonly inputDir: _angular_core.Signal<NzInputDirective>;
    protected readonly prefix: _angular_core.Signal<NzInputPrefixDirective | undefined>;
    protected readonly suffix: _angular_core.Signal<NzInputSuffixDirective | undefined>;
    protected readonly addonBefore: _angular_core.Signal<NzInputAddonBeforeDirective | undefined>;
    protected readonly addonAfter: _angular_core.Signal<NzInputAddonAfterDirective | undefined>;
    protected readonly inputPasswordIconTmpl: _angular_core.Signal<TemplateRef<any> | undefined>;
    protected readonly inputSearchEnterButton: _angular_core.Signal<NzInputSearchEnterButtonDirective | undefined>;
    readonly nzAllowClear: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly nzPrefix: _angular_core.InputSignal<string | undefined>;
    readonly nzSuffix: _angular_core.InputSignal<string | undefined>;
    readonly nzAddonBefore: _angular_core.InputSignal<string | undefined>;
    readonly nzAddonAfter: _angular_core.InputSignal<string | undefined>;
    readonly nzShowCount: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly nzCount: _angular_core.InputSignal<NzCountConfig | undefined>;
    readonly nzClear: _angular_core.OutputEmitterRef<void>;
    readonly size: _angular_core.Signal<ng_zorro_antd_core_types.NzSizeLDSType>;
    readonly variant: _angular_core.Signal<ng_zorro_antd_core_types.NzVariant | undefined>;
    readonly disabled: _angular_core.Signal<boolean>;
    readonly readOnly: _angular_core.Signal<boolean>;
    readonly status: _angular_core.Signal<ng_zorro_antd_core_types.NzValidateStatus>;
    readonly hasFeedback: _angular_core.Signal<boolean>;
    protected readonly hasPrefix: _angular_core.Signal<boolean>;
    protected readonly hasSuffix: _angular_core.Signal<true | NzInputPasswordDirective | null>;
    protected readonly hasAffix: _angular_core.Signal<true | NzInputPasswordDirective | null>;
    protected readonly hasAddonBefore: _angular_core.Signal<boolean>;
    protected readonly hasAddonAfter: _angular_core.Signal<boolean>;
    protected readonly hasAddon: _angular_core.Signal<boolean>;
    private readonly compactSize;
    protected readonly dir: _angular_core.WritableSignal<_angular_cdk_bidi.Direction>;
    protected readonly focused: _angular_core.WritableSignal<boolean>;
    protected readonly isTextarea: _angular_core.Signal<boolean>;
    protected readonly finalSize: _angular_core.Signal<ng_zorro_antd_core_types.NzSizeLDSType>;
    protected readonly class: _angular_core.Signal<{
        'ant-input-group-wrapper': boolean;
        'ant-input-group-wrapper-sm': boolean;
        'ant-input-group-wrapper-lg': boolean;
        'ant-input-group-wrapper-rtl': boolean;
    } | {
        'ant-input-affix-wrapper': boolean;
        'ant-input-affix-wrapper-lg': boolean;
        'ant-input-affix-wrapper-sm': boolean;
        'ant-input-affix-wrapper-disabled': boolean;
        'ant-input-affix-wrapper-readonly': boolean;
        'ant-input-affix-wrapper-focused': boolean;
        'ant-input-affix-wrapper-rtl': boolean;
    } | null>;
    protected readonly affixWrapperClass: _angular_core.Signal<{
        'ant-input-affix-wrapper': boolean;
        'ant-input-affix-wrapper-lg': boolean;
        'ant-input-affix-wrapper-sm': boolean;
        'ant-input-affix-wrapper-disabled': boolean;
        'ant-input-affix-wrapper-readonly': boolean;
        'ant-input-affix-wrapper-focused': boolean;
        'ant-input-affix-wrapper-rtl': boolean;
    }>;
    protected readonly groupWrapperClass: _angular_core.Signal<{
        'ant-input-group-wrapper': boolean;
        'ant-input-group-wrapper-sm': boolean;
        'ant-input-group-wrapper-lg': boolean;
        'ant-input-group-wrapper-rtl': boolean;
    }>;
    protected readonly inputValue: _angular_core.Signal<any>;
    protected readonly formattedValue: _angular_core.Signal<string>;
    protected readonly computedCount: _angular_core.Signal<number>;
    protected readonly dataCount: _angular_core.Signal<string>;
    protected readonly isOutOfRange: _angular_core.Signal<boolean>;
    constructor();
    clear(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputWrapperComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzInputWrapperComponent, "nz-input-wrapper,nz-input-password,nz-input-search", ["nzInputWrapper"], { "nzAllowClear": { "alias": "nzAllowClear"; "required": false; "isSignal": true; }; "nzPrefix": { "alias": "nzPrefix"; "required": false; "isSignal": true; }; "nzSuffix": { "alias": "nzSuffix"; "required": false; "isSignal": true; }; "nzAddonBefore": { "alias": "nzAddonBefore"; "required": false; "isSignal": true; }; "nzAddonAfter": { "alias": "nzAddonAfter"; "required": false; "isSignal": true; }; "nzShowCount": { "alias": "nzShowCount"; "required": false; "isSignal": true; }; "nzCount": { "alias": "nzCount"; "required": false; "isSignal": true; }; }, { "nzClear": "nzClear"; }, ["inputRef", "inputDir", "prefix", "suffix", "addonBefore", "addonAfter", "inputPasswordIconTmpl", "inputSearchEnterButton"], ["[nzInputAddonBefore]", "[nzInputSearchEnterButton]", "[nzInputAddonAfter]", "[nzInputPrefix]", "[nzInputClearIcon]", "[nzInputSuffix]", "[nz-input]"], true, [{ directive: typeof i1.NzSpaceCompactItemDirective; inputs: {}; outputs: {}; }]>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class NzTextareaCountComponent implements AfterContentInit {
    private renderer;
    private injector;
    private elementRef;
    nzInputDirective: NzInputDirective;
    nzMaxCharacterCount: number;
    nzComputeCharacterCount: (v: string) => number;
    nzFormatter: (cur: number, max: number) => string;
    ngAfterContentInit(): void;
    setDataCount(value: string): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzTextareaCountComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzTextareaCountComponent, "nz-textarea-count", never, { "nzMaxCharacterCount": { "alias": "nzMaxCharacterCount"; "required": false; }; "nzComputeCharacterCount": { "alias": "nzComputeCharacterCount"; "required": false; }; "nzFormatter": { "alias": "nzFormatter"; "required": false; }; }, {}, ["nzInputDirective"], ["textarea[nz-input]"], true, never>;
    static ngAcceptInputType_nzMaxCharacterCount: unknown;
}

declare class NzInputModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzInputModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NzInputModule, never, [typeof NzTextareaCountComponent, typeof NzInputDirective, typeof NzInputWrapperComponent, typeof NzInputPasswordDirective, typeof NzInputPasswordIconDirective, typeof NzInputSearchDirective, typeof NzInputSearchEnterButtonDirective, typeof NzInputAddonBeforeDirective, typeof NzInputAddonAfterDirective, typeof NzInputPrefixDirective, typeof NzInputSuffixDirective, typeof NzInputOtpComponent], [typeof NzTextareaCountComponent, typeof NzInputDirective, typeof NzInputWrapperComponent, typeof NzInputPasswordDirective, typeof NzInputPasswordIconDirective, typeof NzInputSearchDirective, typeof NzInputSearchEnterButtonDirective, typeof NzInputAddonBeforeDirective, typeof NzInputAddonAfterDirective, typeof NzInputPrefixDirective, typeof NzInputSuffixDirective, typeof NzInputOtpComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<NzInputModule>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare const NZ_INPUT_WRAPPER: InjectionToken<NzInputWrapperComponent>;
declare const NZ_INPUT_SEARCH: InjectionToken<NzInputSearchDirective>;

export { NZ_INPUT_SEARCH, NZ_INPUT_WRAPPER, NzInputAddonAfterDirective, NzInputAddonBeforeDirective, NzInputDirective, NzInputModule, NzInputOtpComponent, NzInputPasswordDirective, NzInputPasswordIconDirective, NzInputPrefixDirective, NzInputSearchDirective, NzInputSearchEnterButtonDirective, NzInputSuffixDirective, NzInputWrapperComponent, NzTextareaCountComponent };
export type { NzCountConfig, NzInputSearchEvent };
