import { CSSResult, nothing, PropertyValueMap } from 'lit';
import FormfieldWrapper from '../formfieldwrapper';
import type { IconNames } from '../icon/icon.types';
import { AssociatedFormControl } from '../../utils/mixins/FormInternalsMixin';
import type { AutoCapitalizeType, AutoCompleteType, InputType } from './input.types';
declare const Input_base: import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/CharacterLimitMixin").CharacterLimitMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/KeyToActionMixin").KeyToActionInterface> & import("../../utils/mixins/index.types").Constructor<import("../../models").Component & import("../../utils/mixins/AutoFocusOnMountMixin").AutoFocusOnMountMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/FormInternalsMixin").FormInternalsMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/DataAriaLabelMixin").DataAriaLabelMixinInterface> & typeof FormfieldWrapper;
/**
 * mdc-input is a component that allows users to input text.
 *  It contains:
 * - label field - describe the input field.
 * - input field - contains the value
 * - help text or validation message - displayed below the input field.
 * - trailing button - it displays a clear the input field.
 * - prefix text - displayed before the input field.
 * - leading icon - displayed before the input field.
 * - clear-aria-label - aria label for the trailing button.
 * - all the attributes of the input field.
 *
 * @tagname mdc-input
 *
 * @event input - (React: onInput) This event is dispatched when the value of the input field changes (every press).
 * @event change - (React: onChange) This event is dispatched when the value of the input field changes (on blur).
 * @event focus - (React: onFocus) This event is dispatched when the input receives focus.
 * @event blur - (React: onBlur) This event is dispatched when the input loses focus.
 * @event clear - (React: onClear) This event is dispatched when the input text is cleared.
 * @event limitexceeded - (React: onLimitExceeded) This event is dispatched once when the character limit
 * exceeds or restored.
 *
 * @dependency mdc-icon
 * @dependency mdc-text
 * @dependency mdc-button
 * @dependency mdc-toggletip
 *
 * @slot label - Slot for the label element. If not provided, the `label` property will be used to render the label.
 * @slot toggletip - Slot for the toggletip info icon button. If not provided, the `toggletip-text` property will be used to render the info icon button and toggletip.
 * @slot help-icon - Slot for the helper/validation icon. If not provided, the icon will be rendered based on the `helpTextType` property.
 * @slot help-text - Slot for the helper/validation text. If not provided, the `helpText` property will be used to render the helper/validation text.
 * @slot input - Slot for the input element. If not provided, the input field will be rendered.
 * @slot input-leading-icon - Slot for the leading icon before the input field. If not provided, the `leadingIcon` property will be used to render the leading icon.
 * @slot input-prefix-text - Slot for the prefix text before the input field. If not provided, the `prefixText` property will be used to render the prefix text.
 * @slot trailing-button - Slot for the trailing button to clear the input field. If not provided, the clear button will be rendered when `trailingButton` property is set to true.
 *
 * @cssproperty --mdc-label-font-size - Font size for the label text.
 * @cssproperty --mdc-label-font-weight - Font weight for the label text.
 * @cssproperty --mdc-label-line-height - Line height for the label text.
 * @cssproperty --mdc-label-color - Color for the label text.
 * @cssproperty --mdc-help-text-font-size - Font size for the help text.
 * @cssproperty --mdc-help-text-font-weight - Font weight for the help text.
 * @cssproperty --mdc-help-text-line-height - Line height for the help text.
 * @cssproperty --mdc-help-text-color - Color for the help text.
 * @cssproperty --mdc-required-indicator-color - Color for the required indicator text.
 * @cssproperty --mdc-input-text-color - Text color for the input field
 * @cssproperty --mdc-input-border-color - Border color for the input container
 * @cssproperty --mdc-input-background-color - Background color for the input field
 * @cssproperty --mdc-input-height - Height for the input container
 * @cssproperty --mdc-input-support-text-color - Text color for the help text
 * @cssproperty --mdc-input-selection-text-color - Text color for the selected text
 * @cssproperty --mdc-input-selection-background-color - Background color for the selected text
 *
 * @csspart label - The label element.
 * @csspart label-text - The container for the label and required indicator elements.
 * @csspart required-indicator - The required indicator element that is displayed next to the label when the `required` property is set to true.
 * @csspart info-icon-btn - The info icon button element that is displayed next to the label when the `toggletip-text` property is set.
 * @csspart label-toggletip - The toggletip element that is displayed when the info icon button is clicked.
 * @csspart help-text - The helper/validation text element.
 * @csspart helper-icon - The helper/validation icon element that is displayed next to the helper/validation text.
 * @csspart help-text-container - The container for the helper/validation icon and text elements.
 * @csspart leading-icon - The leading icon element that is displayed before the input field.
 * @csspart prefix-text - The prefix text element that is displayed before the input field.
 * @csspart input-container - The container for the input field, leading icon, prefix text, and trailing button elements.
 * @csspart input-section - The container for the input field, leading icon, and prefix text elements.
 * @csspart input-text - The input field element.
 * @csspart trailing-button - The trailing button element that is displayed to clear the input field when the `trailingButton` property is set to true.
 * @csspart input-footer - The footer element that contains the helper text and character counter.
 * @csspart character-counter - The character counter element.
 */
declare class Input extends Input_base implements AssociatedFormControl {
    /**
     * The placeholder text that is displayed when the input field is empty.
     */
    placeholder: string;
    /**
     * The prefix text that is displayed before the input field. It has a max length of 10 characters.
     * When the prefix text is set, make sure to set the 'data-aria-label'
     * attribute with the appropriate value for accessibility.
     */
    prefixText?: string;
    /**
     * The leading icon that is displayed before the input field.
     */
    leadingIcon?: IconNames;
    /**
     * The trailing button when set to true, shows a clear button that clears the input field.
     * @default false
     */
    trailingButton: boolean;
    /**
     * The maximum number of characters that the input field can accept.
     */
    maxlength?: number;
    /**
     * The minimum number of characters that the input field can accept.
     */
    minlength?: number;
    /**
     * The autocapitalize attribute of the input field.
     * @default 'off'
     */
    autocapitalize: AutoCapitalizeType;
    /**
     * The autocomplete attribute of the input field.
     * @default 'off'
     */
    autocomplete: AutoCompleteType;
    /**
     * Specifies the name of the directionality of text for submission purposes (e.g., "rtl" for right-to-left).
     */
    dirname?: string;
    /**
     * The pattern attribute of the input field.
     * Specifies a regular expression that the input value must match for validation purposes.
     */
    pattern?: string;
    /**
     * The list attribute of the input field.
     * Identifies a list of pre-defined options to suggest to the user.
     */
    list?: string;
    /**
     * The size attribute of the input field.
     * Specifies the width of the input field.
     * @default undefined
     */
    size?: number | undefined;
    /**
     * Aria label for the trailing button. If trailing button is set to true, this label is used for the clear button.
     * @default ''
     */
    clearAriaLabel: string;
    /**
     * Defines a id pointing to the element which describes the input element.
     * The AriaDescribedby attribute to be set for accessibility.
     * @default null
     */
    dataAriaDescribedby: string | null;
    connectedCallback(): void;
    protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    /** @internal */
    formResetCallback(): void;
    /** @internal */
    formStateRestoreCallback(state: string): void;
    /**
     * This function is called when the attribute changes.
     * It updates the validity of the input field based on the input field's validity.
     *
     * @param name - attribute name
     * @param old - old value
     * @param value - new value
     */
    attributeChangedCallback(name: string, old: string | null, value: string | null): void;
    private setInputValidity;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    /**
     * Updates the value of the input field.
     * Sets the form value.
     * @returns void
     */
    private updateValue;
    /**
     * Handles the input event of the input field.
     * Updates the value and sets the validity of the input field.
     * @internal
     */
    protected onInput(event: Event): void;
    /**
     * Handles the change event of the input field.
     * Updates the value and sets the validity of the input field.
     *
     * The 'change' event does not bubble up through the shadow DOM as it was not composed.
     * Therefore, we need to re-dispatch the same event to ensure it is propagated correctly.
     * Read more: https://developer.mozilla.org/en-US/docs/Web/API/Event/composed
     *
     * @param event - Event which contains information about the value change.
     * @internal
     */
    protected onChange(event: Event): void;
    /**
     * Handles the keydown event of the input field.
     * If the key pressed is 'Enter', it submits the form.
     * @param event - Keyboard event
     */
    protected handleKeyDown(event: KeyboardEvent): void;
    /**
     * Renders the leading icon before the input field.
     * If the leading icon is not set, it will not be displayed.
     *
     * @returns void
     */
    protected renderLeadingIcon(): import("lit-html").TemplateResult<1> | typeof nothing;
    /**
     * Renders the prefix text before the input field.
     * If the prefix text is more than 10 characters,
     * - it will not be displayed.
     * - the validation messsage will be displayed.
     *
     *  Note: We are setting aria-hidden so that the screen reader does not read the prefix text.
     *  The consumers should set the appropriate aria-label for the input field using 'data-aria-label' attribute.
     * @returns void
     */
    protected renderPrefixText(): import("lit-html").TemplateResult<1> | typeof nothing;
    /**
     * Clears the input field.
     */
    protected clearInputText(): void;
    /**
     * Renders the trailing button to clear the input field if the trailingButton is set to true.
     * @returns void
     */
    protected renderTrailingButton(show?: boolean): import("lit-html").TemplateResult<1> | typeof nothing;
    protected renderInputElement(type: InputType, hidePlaceholder?: boolean): import("lit-html").TemplateResult<1>;
    protected renderInputFooter(): import("lit-html").TemplateResult<1> | typeof nothing;
    render(): import("lit-html").TemplateResult<1>;
    static styles: Array<CSSResult>;
    static shadowRootOptions: {
        delegatesFocus: boolean;
        clonable?: boolean;
        customElementRegistry?: CustomElementRegistry;
        mode: ShadowRootMode;
        serializable?: boolean;
        slotAssignment?: SlotAssignmentMode;
    };
}
export default Input;
