/**
 * Copyright (c) Cisco Systems, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 */
import "../help-text/HelpText";
import "../icon/Icon";
import "../label/Label";
import "../spinner/Spinner";
import { LitElement, nothing } from "lit";
import { FormControl } from "../form";
export declare const containerSize: string[];
export declare const inputSize: string[];
export declare const inputType: string[];
export declare const inputShape: string[];
export declare const iconNames: string[];
export declare const iconPosition: string[];
export declare const nestedLevel: number[];
export declare const ariaInvalidType: string[];
export declare namespace Input {
    export type Type = "text" | "number" | "password" | "email" | "tel" | "checkbox" | "search";
    export type MessageType = "error" | "success" | "warning" | "priority";
    export type Message = {
        type: MessageType;
        message: string;
        id?: string;
        ariaLive?: "off" | "assertive" | "polite";
    };
    export type ContainerSize = (typeof containerSize)[number];
    export type InputSize = (typeof inputSize)[number];
    export type InputType = typeof inputSize;
    export type shape = typeof inputShape;
    export type AriaInvalidType = (typeof ariaInvalidType)[number];
    export type Autocomplete = "on" | "off";
    export type AriaAutocomplete = "inline" | "list" | "both" | "none";
    export class MessageController {
        determineMessageType(array: Input.Message[]): MessageType;
        filterMessagesByType(array: Input.Message[], value: string): string[];
    }
    export interface InputChangeEventDetail {
        srcEvent: Event;
        value: string;
    }
    export interface InputFocusEventDetail {
        srcEvent: FocusEvent;
    }
    export interface InputBlurEventDetail {
        srcEvent: FocusEvent;
    }
    export interface InputKeydownEventDetail {
        srcEvent: KeyboardEvent;
    }
    export interface InputMousedownEventDetail {
        srcEvent: MouseEvent;
    }
    export interface InputClearEventDetail {
        srcEvent: MouseEvent | KeyboardEvent;
    }
    export interface InputDropdownClickEventDetail {
        srcEvent: MouseEvent;
        expanded: boolean;
    }
    const ELEMENT_base: import("../../mixins/FocusMixin").FocusMixinReturnType<typeof LitElement>;
    export class ELEMENT extends ELEMENT_base {
        ariaDescribedBy: string;
        ariaInvalid: Input.AriaInvalidType;
        ariaLabel: string;
        autofocus: boolean;
        auxiliaryContentPosition: "before" | "after" | null;
        clear: boolean;
        clearAriaLabel: string;
        compact: boolean;
        containerSize: Input.ContainerSize;
        disabled: boolean;
        id: string;
        inputSize: string;
        isFilled: boolean;
        isLoading: boolean;
        label: string;
        helpText: string;
        hideMessage: boolean;
        htmlId: string;
        ariaRole: string | undefined;
        ariaAutocomplete: Input.AriaAutocomplete | undefined;
        messageArr: Input.Message[];
        min: number | undefined;
        max: number | undefined;
        maxLength: number | undefined;
        multi: boolean;
        multiline: boolean;
        name: string;
        nestedLevel: number;
        placeholder: string;
        readOnly: boolean;
        required: boolean;
        searchable: boolean;
        secondaryLabel: string;
        selectWhenInFocus: boolean;
        shape: string;
        type: Input.Type;
        value: string;
        ariaControls: string;
        ariaExpanded: string;
        newMomentum: boolean;
        control?: FormControl<unknown>;
        disableUserTextInput: boolean;
        autocomplete?: Autocomplete;
        showDropdown: boolean;
        dropdownExpanded: boolean;
        dropdownAriaLabel: string;
        maxSuggestedLength: number | undefined;
        input: HTMLInputElement;
        private isEditing;
        private readonly inputSectionRightSlot;
        private hasRightSlotContent;
        private readonly messageController;
        connectedCallback(): void;
        disconnectedCallback(): void;
        select(): void;
        focus(): void;
        handleOutsideClick(event: MouseEvent): void;
        handleKeyDown(event: KeyboardEvent): void;
        handleFocus(event: FocusEvent): void;
        handleMouseDown(event: MouseEvent): void;
        handleChange(event: Event): void;
        handleBlur(event: FocusEvent): void;
        handleClear(event: MouseEvent | KeyboardEvent): void;
        handleLabelClick(): void;
        handleRighSlotChange(): void;
        handleDropdownClick(event: MouseEvent): void;
        get messageType(): Input.MessageType | null;
        get messages(): string[] | null;
        get inputClassMap(): {
            [x: string]: boolean;
            "md-input--filled": boolean;
            colums: boolean;
            "md-read-only": boolean;
            "md-disabled": boolean;
            "md-multi": boolean;
            "md-new-momentum": boolean;
        };
        get inputWrapperClassMap(): {
            [x: string]: boolean;
            columns: boolean;
        };
        get inputTemplateClassMap(): {
            [x: string]: boolean;
            "md-input--multiline": boolean;
            "md-input--multi": boolean;
            "md-input--compact": boolean;
            "md-input--before": boolean;
            "md-input--after": boolean;
            "md-active": boolean;
            "md-focus": boolean;
            "md-read-only": boolean;
            "md-disable-user-text-input": boolean;
            "md-disabled": boolean;
            "md-dirty": boolean;
            "md-has-right-icon": boolean;
        };
        get ariaExpandedValue(): string | undefined;
        get effectiveAriaAutocomplete(): AriaAutocomplete | undefined;
        get effectiveAriaRole(): string | undefined;
        get hasRightIcon(): boolean;
        private get effectiveAriaLabel();
        inputTemplate(): import("lit-html").TemplateResult<1>;
        inputLeftTemplate(): import("lit-html").TemplateResult<1> | typeof nothing;
        private get inputRightTemplateClassMap();
        inputRightTemplate(): import("lit-html").TemplateResult<1> | undefined;
        private get comboBoxButtonTemplate();
        private characterCountLabelTemplate;
        secondaryLabelTemplate(): import("lit-html").TemplateResult<1> | typeof nothing;
        helpTextTemplate(): import("lit-html").TemplateResult<1> | typeof nothing;
        messagesTemplate(): import("lit-html").TemplateResult<1> | typeof nothing;
        labelTemplate(): import("lit-html").TemplateResult<1> | typeof nothing;
        static get styles(): import("lit").CSSResult[];
        render(): import("lit-html").TemplateResult<1>;
    }
    export {};
}
declare global {
    interface HTMLElementTagNameMap {
        "md-input": Input.ELEMENT;
    }
    interface HTMLElementEventMap {
        "input-change": CustomEvent<Input.InputChangeEventDetail>;
        "input-focus": CustomEvent<Input.InputFocusEventDetail>;
        "input-blur": CustomEvent<Input.InputBlurEventDetail>;
        "input-keydown": CustomEvent<Input.InputKeydownEventDetail>;
        "input-mousedown": CustomEvent<Input.InputMousedownEventDetail>;
        "input-clear": CustomEvent<Input.InputClearEventDetail>;
        "input-dropdown-click": CustomEvent<Input.InputDropdownClickEventDetail>;
    }
}
