import { EventEmitter } from '../../stencil-public-runtime';
import { InputChangeEventDetail, InputInputEventDetail } from './input-interface';
/**
 * @slot append - Content to be displayed after the input field
 * @slot prefix - Content that is displayed visually within the input field before the input field
 * @slot prepend - Content to be displayed before the input field
 * @slot suffix - Content that is displayed visually within the input field after the input field
 * @slot action - Content to be displayed in the label area, typically for help icons or links
 */
export declare class PdsInput {
    private nativeInput?;
    private inheritedAttributes;
    private isComposing;
    private prefixEl?;
    private suffixEl?;
    private focusedValue?;
    private originalPdsInput?;
    private internals?;
    private resizeObserver?;
    private hasLoaded;
    el: HTMLPdsInputElement;
    /**
     * If true, the input has prefix content (non-focusable)
     */
    hasPrefix: boolean;
    /**
     * If true, the input has suffix content (non-focusable)
     */
    hasSuffix: boolean;
    /**
     * If true, the input has prepend content (focusable)
     */
    hasPrepend: boolean;
    /**
     * If true, the input has append content (focusable)
     */
    hasAppend: boolean;
    /**
     * If true, the input has action content in the label area
     */
    hasAction: boolean;
    /**
     * Emitted when the input loses focus.
     */
    pdsBlur: EventEmitter<FocusEvent>;
    /**
     * Emitted when the value has changed.
     *
     * This event will not emit when programmatically setting the `value` property.
     */
    pdsChange: EventEmitter<InputChangeEventDetail>;
    /**
     * Emitted when the input has focus.
     */
    pdsFocus: EventEmitter<FocusEvent>;
    /**
     * Emitted when a keyboard input occurs.
     */
    pdsInput: EventEmitter<InputInputEventDetail>;
    /**
     * Emitted when a key is pressed down in the input.
     */
    pdsKeyDown: EventEmitter<KeyboardEvent>;
    /**
     * Sets focus on the native `input` in the `pds-input`. Use this method instead of the global
     * `input.focus()`.
     */
    setFocus(): Promise<void>;
    /**
     * Specifies if and how the browser provides `autocomplete` assistance for the field.
     */
    autocomplete: string;
    /**
     * A unique identifier used for the underlying component `id` attribute.
     */
    componentId: string;
    /**
     * Sets the number of milliseconds to wait before updating the value.
     */
    debounce?: number;
    /**
     * Determines whether or not the input field is disabled.
     */
    disabled?: boolean;
    /**
     * Specifies the error message and provides an error-themed treatment to the field.
     */
    errorMessage?: string;
    /**
     * Displays a message or hint below the input field.
     */
    helperMessage?: string;
    /**
     * Determines whether or not the input field is invalid or throws an error.
     */
    invalid?: boolean;
    /**
     * Text to be displayed as the input label.
     */
    label?: string;
    /**
     * Visually hides the label text for instances where only the input should be displayed. Label remains accessible to assistive technology such as screen readers.
     * Note: When true, the action slot is also hidden to maintain a minimal UI.
     */
    hideLabel: boolean;
    /**
     * Specifies the maximum value for the input field.
     */
    max?: string;
    /**
     * Specifies the maximum number of characters allowed in the input field.
     */
    maxlength?: string;
    /**
     * Specifies the minimum value for the input field.
     */
    min?: string;
    /**
     * Specifies the minimum number of characters allowed in the input field.
     */
    minlength?: string;
    /**
     * Specifies the name. Submitted with the form name/value pair.
     */
    name?: string;
    /**
     * Specifies the regular expression that the input value is checked against.
     */
    pattern?: string;
    /**
     * Specifies a short hint that describes the expected value of the input field.
     */
    placeholder?: string;
    /**
     * Determines whether or not the input field is readonly.
     */
    readonly?: boolean;
    /**
     * Determines whether or not the input field is required.
     */
    required?: boolean;
    /**
     * Works with the `min` and `max` attributes to define increments for the input field.
     */
    step?: string;
    /**
     * Determines the type of control that will be displayed
     * `'email'`, `'number'`, `'password'`, `'tel'`, `'text'`, `'url'`
     * @defaultValue "text"
     */
    type: string;
    /**
     * The value of the input.
     */
    value?: string | number | null;
    /**
     * Determines whether or not the input field takes full width of its container.
     */
    fullWidth?: boolean;
    /**
     * Applies highlight styling to the input field.
     */
    highlight?: boolean;
    /**
     * Determines if the input has focus.
     */
    hasFocus: boolean;
    private observeAddonResize;
    private updateAddonWidths;
    private renderPrefix;
    private renderSuffix;
    private renderPrepend;
    private renderAppend;
    private renderAction;
    componentWillLoad(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentDidLoad(): void;
    protected debounceChanged(): void;
    protected valueChanged(): void;
    private getValue;
    private onInputEvent;
    private onChangeEvent;
    private onBlurEvent;
    private onFocusEvent;
    private onCompositionStart;
    private onCompositionEnd;
    private onKeyDownEvent;
    /**
     * Emits a pdsChange event
     */
    private emitValueChange;
    /**
     * Emits a `pdsInput` event
     */
    private emitInputChange;
    /**
     * Updates the form value using ElementInternals API
     */
    private updateFormValue;
    /**
     * Form Associated Custom Elements API: Called when the form is reset
     */
    formResetCallback(): void;
    /**
     * Form Associated Custom Elements API: Called when the form is disabled
     */
    formDisabledCallback(disabled: boolean): void;
    /**
     * Form Associated Custom Elements API: Called to restore form state
     */
    formStateRestoreCallback(state: string | FormData | null): void;
    render(): any;
}
