import enum gameinputActionType
{
	BUTTON_PRESSED,
	BUTTON_RELEASED,
	BUTTON_HOLD_COMPLETE,
	BUTTON_MULTITAP_BEGIN_LAST,
	BUTTON_MULTITAP_END_LAST,
	AXIS_CHANGE,
	RELATIVE_CHANGE,
	TOGGLE_PRESSED,
	TOGGLE_RELEASED,
	REPEAT,
}

import struct ListenerAction
{
	public import static function GetName( me : ListenerAction ) : CName;
	public import static function GetType( me : ListenerAction ) : gameinputActionType;
	public import static function GetValue( me : ListenerAction ) : Float;
	public import static function GetKey( me : ListenerAction ) : array< Int32 >;
	public import static function IsAction( me : ListenerAction, name : CName ) : Bool;
	public import static function IsButton( me : ListenerAction ) : Bool;
	public import static function IsButtonJustPressed( me : ListenerAction ) : Bool;
	public import static function IsButtonJustReleased( me : ListenerAction ) : Bool;
	public import static function IsAxisChangeAction( me : ListenerAction ) : Bool;
	public import static function IsRelativeChangeAction( me : ListenerAction ) : Bool;
}

import struct ListenerActionConsumer
{
	public import static function Consume( me : ListenerActionConsumer );
	public import static function ConsumeSingleAction( me : ListenerActionConsumer );
	public import static function DontSendReleaseEvent( me : ListenerActionConsumer );
	public import static function AxisWaitForZero( me : ListenerActionConsumer );
}

