import Notifier from './notifier'; export declare type Coord = number; export declare type XCoord = Coord; export declare type YCoord = Coord; export declare const coordInch = 96; export declare const pointsInch = 72; export declare const cmInch = 2.54; export declare const mmInch = 25.4; export declare const inch = 96; export declare const pt: number; export declare const cm: number; export declare const mm: number; export declare const zero = 0; export declare const zeroX: XCoord; export declare const zeroY: YCoord; export declare function withinTol(a: number, b: number): boolean; export declare function notWithinTol(a: number, b: number): boolean; export declare const equalX: (x1: XCoord, x2: XCoord) => boolean; export declare const notEqualX: (x1: XCoord, x2: XCoord) => boolean; export declare const equalY: (y1: YCoord, y2: YCoord) => boolean; export declare const notEqualY: (x1: XCoord, x2: XCoord) => boolean; export declare abstract class UserDevice extends Notifier { static instance(name?: string): UserDevice; private static defaultImpl(); screens: Map; protected init(): void; protected defaultScreenVar: Screen; readonly defaultScreen: Screen; abstract loopStart(): void; abstract loopStop(): void; } export declare class Screen { left: XCoord; bottom: YCoord; right: XCoord; top: YCoord; width: XCoord; height: YCoord; ppi: number; coord: number; } export interface UserDeviceListener { mouseMoved?(input: MouseInput): void; mousePressed?(input: MouseInput): void; mouseReleased?(input: MouseInput): void; mouseCanceled?(input: MouseInput): void; wheelRolled?(input: MouseInput): void; wheelTilted?(input: MouseInput): void; touchStarted?(input: TouchInput): void; touchMoved?(input: TouchInput): void; touchFinished?(input: TouchInput): void; touchCanceled?(input: TouchInput): void; keyPressed?(input: KeyInput): void; keyReleased?(input: KeyInput): void; keyCanceled?(input: KeyInput): void; } export declare class DeviceInput { readonly timestamp: number; readonly modifiers: KeyModifierSet; } export declare class MouseInput extends DeviceInput { readonly x: XCoord; readonly y: YCoord; } export declare class Touch { readonly identifier: number; readonly x: XCoord; readonly y: YCoord; } export declare class TouchInput extends DeviceInput { readonly touches: Touch[]; readonly changed: Touch[]; } export declare class KeyInput extends DeviceInput { readonly key: string; readonly code: string; readonly location: KeyLocation; } export declare enum KeyLocation { std = 0, left = 1, right = 2, numpad = 3, } export declare enum KeyModifier { shift = 0, capslock = 1, control = 2, fn = 3, meta = 4, alt = 5, } export declare type KeyModifierSet = number;