/// <reference types="react" />
import { Event } from '@opensumi/ide-utils';
import { ProxiedInputProp } from '../../input';
export declare enum PROMPT_VALIDATE_TYPE {
    INFO = 1,
    ERROR = 2,
    WARNING = 3
}
export interface PromptValidateMessage {
    message: string | void;
    type: PROMPT_VALIDATE_TYPE;
}
export declare enum VALIDATE_CLASS_NAME {
    INFO = "validate-info",
    ERROR = "validate-error",
    WARNING = "validate-warning"
}
/**
 * 输入输出框需要在外部手动进行管理，由于我们使用的是虚拟的react节点渲染，一旦用户向上或向下滚动超出渲染访问，相关的React组件会被回收
 * 故这里在外部手动维护输入框对象
 */
export declare abstract class PromptHandle {
    readonly $: HTMLInputElement;
    readonly $validate: HTMLDivElement;
    readonly $addonAfter: HTMLDivElement;
    readonly ProxiedInput: (props: ProxiedInputProp) => JSX.Element;
    private disposables;
    private isInPendingCommitState;
    private _destroyed;
    private _hasValidateElement;
    private _hasAddonAfter;
    private _validateClassName;
    private _inComposition;
    private onChangeEmitter;
    private onCommitEmitter;
    private onCancelEmitter;
    private onFocusEmitter;
    private onBlurEmitter;
    private onDestroyEmitter;
    private markdownRenderer;
    constructor();
    abstract get id(): number;
    abstract get depth(): number;
    get destroyed(): boolean;
    get onChange(): Event<string>;
    get onCommit(): Event<string>;
    get onCancel(): Event<string>;
    get onFocus(): Event<string>;
    get onBlur(): Event<string>;
    get onDestroy(): Event<string>;
    focus(): void;
    setSelectionRange(start: number, end: number): void;
    addClassName(classname: string): void;
    removeClassName(classname: string): void;
    addAddonAfter(classname: string): void;
    removeAddonAfter(): void;
    addValidateMessage(validateMessage: PromptValidateMessage): void;
    removeValidateMessage(): void;
    destroy(): void;
    private focusPrevActiveElement;
    private handleClick;
    private handleDBClick;
    private handleCompositionstart;
    private handleCompositionend;
    private handleKeyup;
    private handleKeydown;
    private handleFocus;
    private handleBlur;
}
//# sourceMappingURL=PromptHandle.d.ts.map