import { AriaAttributes, ClipboardEventHandler, Component, CompositionEventHandler, CSSProperties, FocusEventHandler, Key, KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';
import ConfigContext, { ConfigContextValue } from '../../../lib/config-provider/ConfigContext';
import { Config, ConfigKeys, DefaultConfig } from '../../../lib/configure';
import { Size } from './enum';
import { Lang } from '../locale-context/enum';
declare type Booleanish = boolean | 'true' | 'false';
export interface ElementProps {
    /**
     * 组件id
     */
    id?: string;
    /**
     * 键盘Tab键焦点序号，设为-1时不会获得焦点，设为0时为节点树的顺序。
     */
    tabIndex?: number;
    /**
     * 组件key
     */
    key?: Key;
    /**
     * 样式后缀
     */
    suffixCls?: string;
    /**
     * 样式前缀
     */
    prefixCls?: string;
    /**
     * 外层自定义样式名
     */
    className?: string | undefined;
    /**
     * 实际元素自定义样式名
     */
    elementClassName?: string;
    /**
     * 内链样式
     */
    style?: CSSProperties | undefined;
    /**
     * 是否隐藏
     */
    hidden?: boolean;
    /**
     * 语言
     */
    lang?: Lang;
    /**
     * 拼写校验
     */
    spellCheck?: Booleanish;
    /**
     * 自动获取焦点，多个组件同时设置该参数时，以节点树的顺序最末的组件获取焦点
     */
    autoFocus?: boolean;
    /**
     * 内容的文本方向
     */
    dir?: string;
    /**
     * 快捷键, 通过 Alt + accessKey (或者 Shift + Alt + accessKey) 使组件聚焦
     */
    accessKey?: string;
    /**
     * 内容可编辑
     */
    contentEditable?: Booleanish | 'inherit';
    /**
     * 是否可拖动
     */
    draggable?: Booleanish;
}
/** 响应鼠标事件组件 */
export interface MouseEventComponentProps {
    /**
     * 右键单击回调
     */
    onAuxClick?: MouseEventHandler<any>;
    onAuxClickCapture?: MouseEventHandler<any>;
    /**
     * 单击回调
     */
    onClick?: MouseEventHandler<any>;
    onClickCapture?: MouseEventHandler<any>;
    /**
     * 双击回调
     */
    onDoubleClick?: MouseEventHandler<any>;
    onDoubleClickCapture?: MouseEventHandler<any>;
    /**
     * 右键菜单回调
     */
    onContextMenu?: MouseEventHandler<any>;
    onContextMenuCapture?: MouseEventHandler<any>;
    /**
     * 鼠标抬起回调
     */
    onMouseUp?: MouseEventHandler<any>;
    onMouseUpCapture?: MouseEventHandler<any>;
    /**
     * 鼠标点下回调
     */
    onMouseDown?: MouseEventHandler<any>;
    onMouseDownCapture?: MouseEventHandler<any>;
    /**
     * 鼠标移动回调
     */
    onMouseMove?: MouseEventHandler<any>;
    onMouseMoveCapture?: MouseEventHandler<any>;
    /**
     * 鼠标进入回调
     */
    onMouseEnter?: MouseEventHandler<any>;
    onMouseEnterCapture?: MouseEventHandler<any>;
    /**
     * 鼠标离开回调
     */
    onMouseLeave?: MouseEventHandler<any>;
    onMouseLeaveCapture?: MouseEventHandler<any>;
    /**
     * 鼠标进入回调，与onMouseEnter区别在于鼠标进入子节点时会触发onMouseOut
     */
    onMouseOver?: MouseEventHandler<any>;
    onMouseOverCapture?: MouseEventHandler<any>;
    /**
     * 鼠标离开回调，与onMouseLeave区别在于子节点的onMouseout会冒泡触发本回调
     */
    onMouseOut?: MouseEventHandler<any>;
    onMouseOutCapture?: MouseEventHandler<any>;
}
/** 响应键盘事件组件 */
export interface KeyboardEventComponentProps {
    /**
     * 键盘按下时的回调
     */
    onKeyDown?: KeyboardEventHandler<any>;
    onKeyDownCapture?: KeyboardEventHandler<any>;
    /**
     * 键盘抬起时的回调
     */
    onKeyUp?: KeyboardEventHandler<any>;
    onKeyUpCapture?: KeyboardEventHandler<any>;
    /**
     * 键盘敲击后的回调
     */
    onKeyPress?: KeyboardEventHandler<any>;
    onKeyPressCapture?: KeyboardEventHandler<any>;
}
/** 焦点事件组件 */
export interface FocusEventComponentProps {
    /**
     * 获取焦点回调
     */
    onFocus?: FocusEventHandler<any>;
    onFocusCapture?: FocusEventHandler<any>;
    /**
     * 失去焦点回调
     */
    onBlur?: FocusEventHandler<any>;
    onBlurCapture?: FocusEventHandler<any>;
}
/** 粘贴板事件组件 */
export interface ClipboardEventComponentProps {
    onCopy?: ClipboardEventHandler<any>;
    onCopyCapture?: ClipboardEventHandler<any>;
    onCut?: ClipboardEventHandler<any>;
    onCutCapture?: ClipboardEventHandler<any>;
    onPaste?: ClipboardEventHandler<any>;
    onPasteCapture?: ClipboardEventHandler<any>;
}
/** Composition事件组件 */
export interface CompositionEventComponentProps {
    onCompositionEnd?: CompositionEventHandler<any>;
    onCompositionEndCapture?: CompositionEventHandler<any>;
    onCompositionStart?: CompositionEventHandler<any>;
    onCompositionStartCapture?: CompositionEventHandler<any>;
    onCompositionUpdate?: CompositionEventHandler<any>;
    onCompositionUpdateCapture?: CompositionEventHandler<any>;
}
export interface ViewComponentProps extends MouseEventComponentProps, KeyboardEventComponentProps, FocusEventComponentProps, ClipboardEventComponentProps, CompositionEventComponentProps, AriaAttributes, ElementProps {
    /**
     *  唯一标识编码
     */
    code?: boolean;
    /**
     *  是否禁用
     */
    disabled?: boolean;
    /**
     * 悬浮提示，建议用ToolTip组件
     */
    title?: ReactNode;
    /**
     * 组件大小<未实现>
     * 可选值 `default` `small` `large`
     */
    size?: Size;
}
export default class ViewComponent<P extends ViewComponentProps, C extends ConfigContextValue = ConfigContextValue> extends Component<P, any> {
    static get contextType(): typeof ConfigContext;
    element: any;
    height: number | string | undefined;
    wrapper: any;
    isFocus: boolean;
    code: string;
    isFocused: boolean;
    observableProps: any;
    prefixCls?: string;
    context: C;
    get lang(): Lang;
    get disabled(): boolean;
    constructor(props: any, context: any);
    setCode(props: any): void;
    getMergedClassNames(...props: any[]): string;
    getMergedProps(props?: {}): any;
    getObservableProps(props: any, _context: any): any;
    setObservableProps(props: any, context: any): void;
    updateObservableProps(props: any, context: any): void;
    getOmitPropsKeys(): string[];
    getOtherProps(): any;
    getClassName(...props: any[]): string | undefined;
    getWrapperProps(props?: any): any;
    getWrapperClassNames(...args: any[]): string;
    isDisabled(): boolean;
    useFocusedClassName(): boolean;
    handleFocus(e: any): void;
    protected forceBlur(e: any): void;
    handleBlur(e: any): void;
    focus(): void;
    blur(): void;
    elementReference(node: any): void;
    wrapperReference(node: any): void;
    componentWillReceiveProps(nextProps: P, nextContext: any): void;
    componentDidMount(): void;
    setHeight(height: any): void;
    getContextConfig<T extends ConfigKeys>(key: T): T extends keyof DefaultConfig ? DefaultConfig[T] : Config[T];
    getContextProPrefixCls(suffixCls: string, customizePrefixCls?: string): string;
}
export {};
