import { RanElement } from '@/utils/index';
import { EventManager } from '@/utils/builder';
import '@/components/icon/index';
export declare class Input extends RanElement {
    static formAssociated: boolean;
    _internals?: ElementInternals;
    static get observedAttributes(): string[];
    _events: EventManager;
    _shadowDom: ShadowRoot;
    _input: HTMLDivElement;
    _label: HTMLLabelElement | undefined;
    _inputContent: HTMLInputElement;
    _icon: HTMLElement | undefined;
    _message: HTMLElement | undefined;
    constructor();
    /**
     * @description: 聚焦到内部原生 <input>。宿主自身不在 tab 序、也无内建 focus 行为，
     * 需显式把 `hostEl.focus()` 转发到 shadow 内真实输入框，才能支持
     * 程序化聚焦 / "/" 之类快捷键 / label 点击聚焦（closed shadow 下外部无法自行触达）。
     * @param {FocusOptions} options 原生 focus 选项（如 preventScroll）
     */
    focus(options?: FocusOptions): void;
    /**
     * @description: 让内部 <input> 失焦，转发 `hostEl.blur()`。
     */
    blur(): void;
    /**
     * @description: 选中内部 <input> 的全部文本，便于"聚焦即全选"的快捷输入体验。
     */
    select(): void;
    /**
     * @description: 获取 input 的值
     * @return {String}
     */
    get value(): string;
    /**
     * @description: 设置 input 的值
     * @param {String} value
     */
    set value(value: string);
    /**
     * @description: 获取 input 的占位字符
     * @return {String}
     */
    get placeholder(): string;
    /**
     * @description: 设置 input 的占位字符
     * @param {String} value
     */
    set placeholder(value: string);
    /**
     * @description: input 是否为必选
     * @return {String}
     */
    get required(): boolean;
    /**
     * @description: 设置 input 是否为必选，除非设置成 false，否则都是必填
     * @param {*} value
     */
    set required(value: boolean | string);
    /**
     * @description: 获取 input 上 disabled 属性
     * @return {String | null}
     */
    get disabled(): boolean;
    /**
     * @description: 设置 input 的 disabled 属性
     * @param {String} value
     */
    set disabled(value: boolean | string);
    /**
     * @description: 获取类似于 Metiral Design 的输入体验。
     */
    get label(): string;
    /**
     * @description: 设置类似于 Metiral Design 的输入体验。
     */
    set label(value: string);
    /**
     * @description: 获取 input 框的状态
     */
    get status(): string;
    /**
     * @description: 设置 input 框的状态
     */
    set status(value: string);
    /**
     * @description: 获取下方的提示/校验文案
     */
    get message(): string;
    /**
     * @description: 设置下方的提示/校验文案（配合 status 作为非颜色线索）
     */
    set message(value: string);
    /**
     * @description: 与 form 组件联动时，收集的属性名
     * @return {String}
     */
    get name(): string;
    /**
     * @description: 设置 name 属性
     * @param {string} value
     */
    set name(value: string);
    /**
     * @description: 当 input 类型为 number 类型时，可以获取 min 属性
     * @return {String}
     */
    get min(): string;
    /**
     * @description: 当 input 类型为 number 类型时，设置 min 属性
     * @param {string} value
     */
    set min(value: string);
    /**
     * @description: 当 input 类型为 number 类型时，可以获取 max 属性
     * @return {String}
     */
    get max(): string;
    /**
     * @description: 当 input 类型为 number 类型时，设置 max 属性
     * @param {string} value
     */
    set max(value: string);
    /**
     * @description: 当 input 类型为 number 类型时，可以获取 step 属性
     * @return {String}
     */
    get step(): string;
    /**
     * @description: 当 input 类型为 number 类型时，设置 step 属性
     * @param {string} value
     */
    set step(value: string);
    /**
     * @description: 获取一个 icon
     * @return {String}
     */
    get icon(): string;
    /**
     * @description: 设置 icon 来表示标识
     * @param {string|null} value
     */
    set icon(value: string);
    /**
     * @description: 获取 input 的类型
     * @return {string|null}
     */
    get type(): string;
    /**
     * @description: 设置 input 的类型
     * @param {string|null} value
     */
    set type(value: string);
    get sheet(): string;
    set sheet(value: string);
    handlerExternalCss: () => void;
    /**
     * @description: 原生的 input 方法
     * @param {Event} event
     */
    customInput: (event: Event) => void;
    /**
     * @description: change 事件——与原生一致，在失焦（提交）时触发，而非每次输入
     */
    customChange: () => void;
    /**
     * @description: 监听 placeholder 属性函数
     * @param {string} name
     * @param {string} value
     */
    listenPlaceholder: (name: string, value: string) => void;
    /**
     * @description: 监听 label 属性函数
     * @param {string} name
     * @param {string} value
     */
    listenLabel: (name: string, value: string) => void;
    /**
     * @description: 监听 type 属性
     * @param {string} name
     * @param {string} value
     */
    listenType: (name: string, value: string) => void;
    /**
     * @description: 监听 status 属性
     * @param {string} name
     * @param {string} value
     */
    listenStatus: (name: string, value: string) => void;
    /**
     * @description: 监听 message 属性，渲染/更新字段下方的提示文案
     * @param {string} name
     * @param {string} value
     */
    listenMessage: (name: string, value: string) => void;
    /**
     * @description: 监听 min/max/step 属性，仅在 type="number" 时转发到内部 <input>
     * 以启用原生数值约束；否则从内部 <input> 移除。
     * @param {string} name
     * @param {string} value
     */
    listenNumericConstraint: (name: string, value: string) => void;
    /**
     * @description: 监听 required 属性，转发到内部 <input> 以启用原生约束校验
     * @param {string} name
     * @param {string} value
     */
    listenRequired: (name: string, value: string) => void;
    /**
     * @description: 监听 disabled 属性
     * @param {string} name
     * @param {string} value
     */
    listenDisabled: (name: string, value: string) => void;
    /**
     * @description:  监听 icon 属性
     * @param {string} name
     * @param {string} value
     */
    listenIcon: (name: string, value: string, oldValue: string) => void;
    /**
     * @description: 处理 icon 属性的问题
     */
    dealIcon: () => void;
    /**
     * @description: 聚合监听事件
     * @param {string} name
     * @param {string} oldValue
     * @param {string} newValue
     */
    listenEvent: (name: string, oldValue: string, newValue: string) => void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
}
export default Input;
