/// <reference types="react" />
import '../assets/keyboard.css';
import { ViewController, React } from './ctr';
export declare abstract class Keyboard<P = {}, S = {}> extends ViewController<P, S> {
    private m_recipient;
    private _hasPresskeyCycle;
    get isActive(): boolean;
    get recipient(): Input | null;
    get hasPresskeyCycle(): boolean;
    protected abstract active(active: boolean): void;
    protected triggerInput(char: string): void;
    protected triggerBackspace(): void;
    protected triggerDone(): void;
    setRecipient(input: Input): void;
    clearRecipient(input: Input): void;
    private _handleContextMenu;
    private _hasPresskeyCycleSet;
    private _handleStart;
    private _handleEnd;
    render(): JSX.Element;
    abstract renderBody(): React.ReactNode;
}
export declare class DefaultKeyboard extends Keyboard {
    state: {
        shift: number;
        symbol: boolean;
        moreSymbol: boolean;
        active: boolean;
    };
    private char;
    private m_shift;
    private m_symbol;
    private m_moreSymbol;
    private m_preventDefault;
    private m_space;
    private m_done;
    private m_backspace;
    private m_handle_input;
    protected active(action: boolean): void;
    renderMoreSymbol(): JSX.Element;
    renderSymbol(): JSX.Element;
    renderBody(): JSX.Element | null;
}
export declare function setGlobalKeyboard(keyboard: typeof Keyboard): void;
export interface InputProps {
    onChange?: () => void;
    onDone?: () => void;
    onFocus?: () => void;
    onBlur?: () => void;
    value?: string;
    className?: string;
    style?: React.CSSProperties;
    type?: string;
    placeholder?: string;
    initFocus?: boolean;
    maxLength?: number;
}
export declare class Input extends ViewController<InputProps> {
    private _focus;
    triggerMounted(): void;
    triggerRemove(): void;
    get value(): string;
    set value(val: string);
    get _dom(): HTMLInputElement;
    triggerChange(): void;
    triggerDone(): void;
    private _handleChange;
    private _handleClick;
    private _handleBlur;
    private _focusFun;
    private _blur;
    focus(): void;
    blur(): void;
    render(): JSX.Element;
}
