import * as _angular_core from '@angular/core';
import { SdFormControl } from '@sdcorejs/angular/forms/models';
/** Visual / `data-state` of the inline input. `'auto'` derives from focus + value. */
type SdInlineTextState = 'auto' | 'pending' | 'active' | 'focus' | 'error';
/** `'standalone'` draws its own affordance (hover bg + focus ring); `'seamless'` defers all chrome to the host. */
type SdInlineTextChrome = 'standalone' | 'seamless';
/**
* Borderless, content-hugging text input — the seamless primitive shared by
* `sd-input` / `sd-input-number` (`viewed='inline'`) and the query-bar / query-builder chips.
*
* why: a native `` inside `mat-form-field` cannot hug its content, so inline-edit
* looked like a full-width input rather than text. This primitive renders a raw ``
* sized via the native `size` attribute (clamped) so the click/hover target tracks the value.
*
* It is intentionally unopinionated about commit/parse/format: it forwards the raw DOM events
* (focus / blur / keydown / paste / composition / Enter / Escape) so each consumer keeps its own
* logic (e.g. sd-input-number's vi-VN formatting). Two binding modes:
* - **uncontrolled** via `[(value)]` — used by the chips' signal drafts;
* - **controlled** via `[control]` (an external `SdFormControl`) — used by the form controls.
*/
declare class SdInlineText {
/** Uncontrolled value (two-way). Ignored when `[control]` is provided. */
readonly value: _angular_core.ModelSignal;
/** Optional external FormControl (controlled mode) — used by sd-input / sd-input-number. */
readonly control: _angular_core.InputSignal;
readonly placeholder: _angular_core.InputSignal;
readonly disabled: _angular_core.InputSignalWithTransform;
/** Show a hover/value-gated clear-× (default `true`). */
readonly clearable: _angular_core.InputSignalWithTransform;
/** `'auto'` derives state from focus + value; pass an explicit value (e.g. `'error'`) to override. */
readonly state: _angular_core.InputSignal;
readonly chrome: _angular_core.InputSignal;
readonly autoId: _angular_core.InputSignal;
readonly autofocus: _angular_core.InputSignalWithTransform;
/** Lower bound (chars) so short/empty values keep a clickable target. */
readonly minSize: _angular_core.InputSignal;
readonly cleared: _angular_core.OutputEmitterRef;
readonly keyupEnter: _angular_core.OutputEmitterRef;
readonly keydownEscape: _angular_core.OutputEmitterRef;
readonly sdFocus: _angular_core.OutputEmitterRef;
readonly sdBlur: _angular_core.OutputEmitterRef;
readonly sdKeydown: _angular_core.OutputEmitterRef;
readonly sdPaste: _angular_core.OutputEmitterRef;
readonly sdCompositionStart: _angular_core.OutputEmitterRef;
readonly sdCompositionEnd: _angular_core.OutputEmitterRef;
private readonly inputRef;
/** Bumped on input/blur/composition + bound-control changes so size/state methods re-eval under OnPush. */
protected readonly tick: _angular_core.WritableSignal;
protected readonly focused: _angular_core.WritableSignal;
constructor();
/**
* Current text — from the bound control in controlled mode, else the value model.
* why: `tick` is a tracked dependency so the computed re-runs when a bound control's
* value changes programmatically (control.value itself is not a signal).
*/
protected readonly currentText: _angular_core.Signal;
protected readonly hasValue: _angular_core.Signal;
protected readonly sizeOf: _angular_core.Signal;
protected readonly showClear: _angular_core.Signal;
protected readonly effectiveState: _angular_core.Signal;
protected onInput(ev: Event): void;
protected onFocus(ev: FocusEvent): void;
protected onBlur(ev: FocusEvent): void;
protected onKeyup(ev: KeyboardEvent): void;
protected onKeydown(ev: KeyboardEvent): void;
protected onPaste(ev: ClipboardEvent): void;
protected onCompositionStart(ev: CompositionEvent): void;
protected onCompositionEnd(ev: CompositionEvent): void;
protected clear(ev: Event): void;
/** Focus the native input. */
focus(): void;
/** Blur the native input. */
blur(): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration;
static ɵcmp: _angular_core.ɵɵComponentDeclaration;
}
export { SdInlineText };
export type { SdInlineTextChrome, SdInlineTextState };