import { EventEmitter } from '../../stencil-public-runtime';
import type { InputChangeDetail, InputSize, InputType, InputVariant } from './mud-input.types';
/**
* Input — single-line text-entry control.
*
* Pattern B (atom-interactive, form-associated): renders its own ``
* inside shadow DOM. Form participation works via `formAssociated` +
* `ElementInternals`. The component is the canonical text-input primitive;
* specialised inputs (date, search, phone, etc.) compose around it.
*
* @element mud-input
*
* @slot label - Rich label content, replaces the `label` prop when present.
* @slot helper - Rich helper / hint content, replaces the `helper-text` prop. Hidden when invalid + error-text is shown.
* @slot icon-start - Leading `mud-icon` rendered inside the input control.
* @slot icon-end - Trailing `mud-icon` rendered inside the input control.
*/
export declare class MudInput {
/**
* Color treatment. `destructive` is forced when `invalid` is set.
* @default 'default'
*/
variant: InputVariant;
/**
* Loading state. When true the control becomes uninteractive and a
* trailing spinner replaces the `icon-end` slot. The host carries
* `aria-busy="true"` for assistive technologies.
* @default false
*/
loading: boolean;
/**
* Visual size rung.
* @default 'md'
*/
size: InputSize;
/**
* Native input `type`.
* @default 'text'
*/
type: InputType;
/**
* Disables interactivity. The internal control receives `aria-disabled` and
* the native `disabled` attribute.
* @default false
*/
disabled: boolean;
/**
* Marks the field as mandatory. Adds a red asterisk to the label and sets
* `aria-required` on the internal control.
* @default false
*/
required: boolean;
/**
* Renders the field read-only. The control remains focusable and copyable.
* @default false
*/
readonly: boolean;
/**
* Shows a trailing clear (×) button while the control holds a value. Clearing
* empties the field, emits `mudInput` + `mudChange`, and returns focus to the
* input. Suppressed when disabled, read-only, or loading.
* @default false
*/
clearable: boolean;
/**
* Forces destructive visuals regardless of `variant`. Sets `aria-invalid`.
* Use together with `errorText` to surface the message.
* @default false
*/
invalid: boolean;
/**
* Current value of the control. Reflects to the host attribute.
* @default ''
*/
value: string;
/** Form-control `name`. Used during form submission. */
name?: string;
/** Placeholder shown when the control is empty. */
placeholder?: string;
/** Accessible label for the clear (×) button. Only used when `clearable` is set. */
clearLabel: string;
/** Plain-text label. Use the `label` slot for richer content. */
label?: string;
/** Plain-text helper / hint shown below the control. */
helperText?: string;
/**
* Plain-text error message shown below the control when `invalid` is set.
* When present it replaces `helperText` and pairs with the error icon.
*/
errorText?: string;
/** Native `autocomplete` attribute forwarded to the internal control. */
autocomplete?: string;
/** Native `maxlength` constraint. */
maxLength?: number;
/** Native `minlength` constraint. */
minLength?: number;
/** Native `inputmode` hint forwarded to the internal control. */
inputmode?: string;
/** Native `pattern` regex forwarded to the internal control. */
pattern?: string;
/**
* Accessible name. Mirrors to the internal control's `aria-label` when no
* visible label is present. Setting `aria-label` directly on the host also
* works — captured on connect into `resolvedAriaLabel` and stripped to
* avoid Stencil's attribute-observer / render-loop antipattern.
*/
ariaLabel?: string;
private hasLabelSlot;
private hasHelperSlot;
private hasIconStart;
private hasIconEnd;
private isFocused;
private fieldsetDisabled;
private resolvedAriaLabel?;
host: HTMLMudInputElement;
internals: ElementInternals;
/** Fires on every keystroke. `detail.value` is the current control value. */
mudInput: EventEmitter;
/** Fires when the value is committed (typically on `blur` or `Enter`). `detail.value` is the committed value. */
mudChange: EventEmitter;
/** Fires when the internal control gains focus. The native `FocusEvent` is forwarded as-is. */
mudFocus: EventEmitter;
/** Fires when the internal control loses focus. The native `FocusEvent` is forwarded as-is. */
mudBlur: EventEmitter;
private readonly instanceId;
private readonly labelId;
private readonly helperId;
private readonly errorId;
private nativeInput?;
private initialValue;
componentWillLoad(): void;
private captureAriaLabel;
syncAriaLabelProp(next?: string): void;
onRequiredChange(): void;
private syncValidity;
validateVariant(next: InputVariant): void;
validateSize(next: InputSize): void;
handleValueChange(next: string): void;
/** Mirrors `disabled` from an ancestor `