import { LitElement, TemplateResult, PropertyValues } from 'lit';
import '../icon-button/icon-button.js';
import '../../icons/icon-close-google.js';
import '../../icons/icon-visibility-on-google.js';
import '../../icons/icon-visibility-off-google.js';
export type ObcTextInputFieldBlurEvent = CustomEvent<{
    value: string;
}>;
/**
 * Common HTML input types for practical use with `<obc-text-input-field>`.
 * Focuses on the most commonly used input types in real applications.
 */
export declare enum HTMLInputTypeAttribute {
    Text = "text",
    Password = "password",
    Email = "email",
    Tel = "tel",
    Url = "url",
    Search = "search",
    Date = "date",
    Time = "time"
}
export declare enum ObcTextInputFieldTextAlign {
    Left = "left",
    Center = "center"
}
export declare enum ObcTextInputFieldSize {
    Regular = "regular",
    Large = "large"
}
export declare enum ObcTextInputFieldPlacement {
    Left = "left",
    Center = "center",
    Right = "right"
}
/**
 * `<obc-text-input-field>` – A text input field component with optional icons, label, and helper text.
 *
 *
 *
 * @slot leading-icon - Icon displayed before the input value (when `hasLeadingIcon` is true)
 * @slot label-icon - Icon displayed before the label text (when `hasLabelIcon` is true)
 * @slot helper-icon - Icon displayed before helper or error text (when `hasHelperIcon` is true)
 * @fires input - Standard input event on value change
 * @fires change - Standard change event on value change
 * @fires clear - Fired when the clear button is clicked
 * @fires blur - Fired when the input field is blurred
 */
export declare class ObcTextInputField extends LitElement {
    value: string;
    placeholder: string;
    type: HTMLInputTypeAttribute;
    textAlign: ObcTextInputFieldTextAlign;
    disabled: boolean;
    readonly: boolean;
    error: boolean;
    errorText: string;
    /** If true, the input field will not update its value on focus */
    rejectUpdatesOnFocus: boolean;
    /** If true, the value will only be initially set, and not updated on change */
    rejectUpdates: boolean;
    /** If true, the input field will not update its value if the value is the same as the previous value
     * This is useful to avoid React re-rendering to reset the value.
     */
    rejectDuplicateUpdates: boolean;
    /** Name attribute for form integration */
    name: string;
    /** Maximum number of characters allowed */
    maxlength?: number;
    /** Minimum number of characters required */
    minlength?: number;
    size: ObcTextInputFieldSize;
    hasLeadingIcon: boolean;
    /** Shows a clear button when the input has a value */
    hasClearButton: boolean;
    helperText: string;
    label: string;
    required: boolean;
    hasLabelIcon: boolean;
    labelPlacement: ObcTextInputFieldPlacement;
    hasHelperIcon: boolean;
    helperPlacement: ObcTextInputFieldPlacement;
    /** Internal state for password visibility toggle */
    private passwordVisible;
    private hasFocus;
    private previousValue;
    private previousInputElementValue;
    private inputElement?;
    private onInput;
    private onFocus;
    private onBlur;
    private handleClear;
    private togglePasswordVisibility;
    private getInputMode;
    private renderFooterText;
    private fireChangeEvent;
    private get shouldUpdateValue();
    willUpdate(changedProperties: PropertyValues): void;
    updated(): void;
    render(): TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-text-input-field': ObcTextInputField;
    }
}
//# sourceMappingURL=text-input-field.d.ts.map