declare module PhaserInput {
    enum InputType {
        text = 0,
        password = 1,
        number = 2,
    }
    class InputElement {
        private element;
        private keyUpCallback;
        private inputChangeCallback;
        private type;
        private id;
        private game;
        private focusIn;
        private focusOut;
        constructor(game: Phaser.Game, id: string, type?: InputType, value?: string, focusIn?: Phaser.Signal, focusOut?: Phaser.Signal);
        addKeyUpListener(callback: () => void): void;
        blockKeyDownEvents(): void;
        private preventKeyPropagation(evt);
        unblockKeyDownEvents(): void;
        removeEventListener(): void;
        destroy(): void;
        setMax(max: string, min?: string): void;
        value: string;
        focus(): void;
        blur(): void;
        readonly hasSelection: boolean;
        readonly caretStart: number;
        readonly caretEnd: number;
        getCaretPosition(): number;
        setCaretPosition(pos: number): void;
    }
}
declare module PhaserInput {
    enum ForceCase {
        none = 0,
        lower = 1,
        upper = 2,
    }
    interface InputOptions extends Phaser.PhaserTextStyle {
        x?: number;
        y?: number;
        placeHolder?: string;
        fillAlpha?: number;
        width?: number;
        height?: number;
        padding?: number;
        borderWidth?: number;
        borderColor?: string;
        borderRadius?: number;
        cursorColor?: string;
        placeHolderColor?: string;
        type?: InputType;
        forceCase?: ForceCase;
        min?: string;
        max?: string;
        textAlign?: string;
        selectionColor?: string;
        zoom?: boolean;
    }
    class InputField extends Phaser.Sprite {
        focusOutOnEnter: boolean;
        private placeHolder;
        private box;
        private textMask;
        private focus;
        private cursor;
        private text;
        private offscreenText;
        value: string;
        private inputOptions;
        private domElement;
        private selection;
        private windowScale;
        blockInput: boolean;
        focusIn: Phaser.Signal;
        focusOut: Phaser.Signal;
        width: number;
        constructor(game: Phaser.Game, x: number, y: number, inputOptions?: InputOptions);
        private updateTextAlignment();
        private checkDown(e);
        private blink;
        private cnt;
        update(): number;
        endFocus(): void;
        startFocus(): void;
        private keyUpProcessor();
        private updateText();
        private updateCursor();
        private getCaretPosition();
        private setCaretOnclick(e);
        private updateSelection();
        private zoomIn();
        private zoomOut();
        private keyListener(evt);
        destroy(destroyChildren?: boolean): void;
        resetText(): void;
        setText(text?: string): void;
        private getFormattedText(text);
    }
}
declare module PhaserInput {
    class InputBox extends Phaser.Graphics {
        private bgColor;
        private borderRadius;
        private borderColor;
        private borderWidth;
        private boxAlpha;
        private boxHeight;
        private padding;
        private boxWidth;
        constructor(game: Phaser.Game, inputOptions: InputOptions);
        resize(newWidth: number): void;
        private drawBox();
    }
}
declare module PhaserInput {
    class SelectionHighlight extends Phaser.Graphics {
        private inputOptions;
        constructor(game: Phaser.Game, inputOptions: InputOptions);
        updateSelection(rect: PIXI.Rectangle): void;
        static rgb2hex(color: {
            r: number;
            g: number;
            b: number;
            a: number;
        }): number;
    }
}
declare module PhaserInput {
    class TextMask extends Phaser.Graphics {
        private maskWidth;
        private maskHeight;
        constructor(game: Phaser.Game, inputOptions: InputOptions);
        resize(newWidth: number): void;
        private drawMask();
    }
}
declare module PhaserInput {
    var Zoomed: boolean;
    var KeyboardOpen: boolean;
    const onKeyboardOpen: Phaser.Signal;
    const onKeyboardClose: Phaser.Signal;
    interface InputFieldObjectFactory extends Phaser.GameObjectFactory {
        inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions, group?: Phaser.Group) => PhaserInput.InputField;
    }
    interface InputFieldObjectCreator extends Phaser.GameObjectCreator {
        inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions) => PhaserInput.InputField;
    }
    interface InputFieldGame extends Phaser.Game {
        add: InputFieldObjectFactory;
        make: InputFieldObjectCreator;
    }
    class Plugin extends Phaser.Plugin {
        static Zoomed: boolean;
        static KeyboardOpen: boolean;
        static onKeyboardOpen: Phaser.Signal;
        static onKeyboardClose: Phaser.Signal;
        constructor(game: Phaser.Game, parent: Phaser.PluginManager);
        private addInputFieldFactory();
    }
}
