import { $Events } from '../../../../Class/$';
import { Done } from '../../../../Class/Functional/Done';
import { Semifunctional } from '../../../../Class/Semifunctional';
import { System } from '../../../../system';
import { EE } from '../../../../types/interface/EE';
import { V } from '../../../../types/interface/V';
export interface I {
    i: number;
    done: any;
}
export interface O {
    state: V<Gamepad_J> & EE<GamePad_EE>;
}
export declare type GamePad_EE = {
    buttondown: [number];
    buttonup: [number];
    axischange: [[number, number]];
};
export declare type Gamepad_J = {
    buttons: boolean[];
    axes: number[];
};
export declare type GamepadEvents = $Events<GamePad_EE> & GamePad_EE;
export declare const GAMEPAD_BUTTON_COUNT = 16;
export declare const GAMEPAD_AXIS_COUNT = 4;
export declare const GAMEPAD_DEFAULT_TRESHOLD = 0.001;
export default class _Gamepad extends Semifunctional<I, O> {
    private _gamepad;
    private _connected;
    private _unlisten;
    constructor(system: System);
    f({ i }: {
        i: any;
    }, done: Done<O>): Promise<void>;
    d(): void;
    onIterDataInputData(name: keyof I): void;
}
