import { ReactNode } from 'react';

export enum GamepadButton {
	INVALID,
	OK,
	CANCEL,
	SECONDARY,
	OPTIONS,
	BUMPER_LEFT,
	BUMPER_RIGHT,
	TRIGGER_LEFT,
	TRIGGER_RIGHT,
	DIR_UP,
	DIR_DOWN,
	DIR_LEFT,
	DIR_RIGHT,
	SELECT,
	START,
	LSTICK_CLICK,
	RSTICK_CLICK,
	LSTICK_TOUCH,
	RSTICK_TOUCH,
	LPAD_TOUCH,
	LPAD_CLICK,
	RPAD_TOUCH,
	RPAD_CLICK,
	REAR_LEFT_UPPER,
	REAR_LEFT_LOWER,
	REAR_RIGHT_UPPER,
	REAR_RIGHT_LOWER,
	STEAM_GUIDE,
	STEAM_QUICK_MENU,
}
export declare enum NavEntryPositionPreferences {
	FIRST,
	LAST,
	MAINTAIN_X,
	MAINTAIN_Y,
	PREFERRED_CHILD,
}
export interface GamepadEventDetail {
	button: number;
	is_repeat?: boolean;
	source: number;
}
export declare type ActionDescriptionMap = {
	[key in GamepadButton]?: ReactNode;
};
export declare type GamepadEvent = CustomEvent<GamepadEventDetail>;
export interface FooterLegendProps {
	actionDescriptionMap?: ActionDescriptionMap;
	onOKActionDescription?: ReactNode;
	onCancelActionDescription?: ReactNode;
	onSecondaryActionDescription?: ReactNode;
	onOptionsActionDescription?: ReactNode;
	onMenuActionDescription?: ReactNode;
	onButtonDown?: (evt: GamepadEvent) => void;
	onButtonUp?: (evt: GamepadEvent) => void;
	onOKButton?: (evt: GamepadEvent) => void;
	onCancelButton?: (evt: GamepadEvent) => void;
	onSecondaryButton?: (evt: GamepadEvent) => void;
	onOptionsButton?: (evt: GamepadEvent) => void;
	onGamepadDirection?: (evt: GamepadEvent) => void;
	onGamepadFocus?: (evt: GamepadEvent) => void;
	onGamepadBlur?: (evt: GamepadEvent) => void;
	onMenuButton?: (evt: GamepadEvent) => void;
}
