import * as _angular_core from '@angular/core';
import { OnDestroy, OnInit, AfterViewInit, ElementRef, TemplateRef, EventEmitter } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { MatFormFieldAppearance, FloatLabelType } from '@angular/material/form-field';
import { SdInlineText } from '@sdcorejs/angular/forms/inline-text';
import { SdSuffixDefDirective, SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
import { SdViewed, SdViewedInput, SdCustomValidator, SdFormControl } from '@sdcorejs/angular/forms/models';
import { Size } from '@sdcorejs/utils/models';

declare class SdInput implements OnDestroy, OnInit, AfterViewInit {
    #private;
    id: string;
    control: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
    /** The inline primitive — only present when `viewed='inline'`; drives focus/blur in that mode. */
    inlineRef: _angular_core.Signal<SdInlineText | undefined>;
    sdLabelTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
    sdValueTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
    sdSuffixDef: _angular_core.Signal<SdSuffixDefDirective | undefined>;
    sdViewDef: _angular_core.Signal<SdViewDefDirective<any, any> | undefined>;
    autoIdInput: _angular_core.InputSignal<string | null | undefined>;
    autoId: _angular_core.Signal<string | undefined>;
    readonly dataDisabled: _angular_core.Signal<"true" | "false">;
    readonly dataInvalid: _angular_core.Signal<"true" | "false">;
    readonly dataEmpty: _angular_core.Signal<"true" | "false">;
    readonly dataValue: _angular_core.Signal<string | null>;
    readonly dataRequired: _angular_core.Signal<"true" | "false">;
    readonly dataMaxLength: _angular_core.Signal<string | null>;
    readonly dataMinLength: _angular_core.Signal<string | null>;
    readonly dataPattern: _angular_core.Signal<string | null>;
    readonly dataErrorMessage: _angular_core.Signal<string | null>;
    name: _angular_core.InputSignal<string>;
    appearanceInput: _angular_core.InputSignal<MatFormFieldAppearance | undefined>;
    appearance: _angular_core.Signal<MatFormFieldAppearance>;
    floatLabel: _angular_core.InputSignal<FloatLabelType>;
    size: _angular_core.InputSignal<Size>;
    form: _angular_core.InputSignalWithTransform<FormGroup<any> | undefined, any>;
    label: _angular_core.InputSignal<string | undefined>;
    helperText: _angular_core.InputSignal<string | undefined>;
    placeholder: _angular_core.InputSignal<string | undefined>;
    type: _angular_core.InputSignal<"number" | "text" | "password" | "email">;
    hideInlineError: _angular_core.InputSignalWithTransform<boolean, unknown>;
    blurOnEnter: _angular_core.InputSignalWithTransform<boolean, unknown>;
    required: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Display mode: `false` edit · `true` static view · `'inline'` borderless inline-edit (no panel — the input IS the face). */
    viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
    /** `true` when `viewed === 'inline'`. */
    readonly isInline: _angular_core.Signal<boolean>;
    /** `true` when `viewed === true` (static view, no input). */
    readonly isViewed: _angular_core.Signal<boolean>;
    /** Focus the inline input. No-op unless `viewed='inline'`. */
    enterInlineEdit: () => void;
    /** View display template: `sdViewDef` overrides the projected `#sdValue` for the static view (unified). */
    readonly viewTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
    minlength: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    maxlength: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    pattern: _angular_core.InputSignal<string | null | undefined>;
    patternErrorMessage: _angular_core.InputSignal<string | null | undefined>;
    resolvedPattern: _angular_core.Signal<string | undefined>;
    resolvedPatternErrorMsg: _angular_core.Signal<string | undefined>;
    /**
     * First active error message for tooltip display when `hideInlineError = true`.
     * Re-runs only when `#state` ticks (value / status / touched change) — no longer
     * invoked on every change-detection cycle as a getter would be.
     */
    readonly errorMessage: _angular_core.Signal<string | undefined>;
    validator: _angular_core.InputSignal<SdCustomValidator | undefined>;
    inlineError: _angular_core.InputSignal<string | undefined>;
    hyperlink: _angular_core.InputSignal<string | null | undefined>;
    valueModel: _angular_core.ModelSignal<any>;
    sdChange: _angular_core.OutputEmitterRef<any>;
    sdFocus: _angular_core.OutputEmitterRef<void>;
    sdBlur: _angular_core.OutputEmitterRef<any>;
    keyupEnter: _angular_core.OutputEmitterRef<any>;
    cleared: _angular_core.OutputEmitterRef<void>;
    sdFocusForceBlur: EventEmitter<void>;
    formControl: SdFormControl;
    isFocused: boolean;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reValidate: () => void;
    getCurrentLength: () => number;
    isMaxlengthExceeded: () => boolean;
    showClear: () => boolean;
    clear: ($event?: Event) => void;
    onKeyupEnter: () => void;
    onFocus: () => void;
    onBlur: () => void;
    onClick: () => void;
    blur: () => void;
    focus: () => void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdInput, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdInput, "sd-input", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "blurOnEnter": { "alias": "blurOnEnter"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "patternErrorMessage": { "alias": "patternErrorMessage"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; "sdBlur": "sdBlur"; "keyupEnter": "keyupEnter"; "cleared": "cleared"; "sdFocusForceBlur": "sdFocusForceBlur"; }, ["sdLabelTemplate", "sdValueTemplate", "sdSuffixDef", "sdViewDef"], ["[sdLabel]"], true, never>;
}

export { SdInput };
