-- USER INPUT


export type InputEnumType = EnumItem & (Enum.KeyCode | Enum.UserInputType)

export type InputOptions = {
	state: Enum.UserInputState?,
	checkText: boolean?
}

export type InputObject = {
	Name: string,
	Enabled: boolean,
	Function: (...any) -> (...any),
	CheckText: boolean
}

export type InputObjectArray = Array<InputObject>

export type StateList = Map<Enum.UserInputState, InputObjectArray>

export type InputList = Map<InputEnumType, StateList>

export type UserInputType = {
	KeysDown: Map<Enum.KeyCode, boolean>,
	BoundInputs: {
		['KeyCode']: InputList,
		['UserInputType']: InputList,
	},
	AddInput: (self: UserInputType, name: string, inputs: InputEnumType | { InputEnumType }, func: (...any) -> (...any), options: InputOptions) -> (),
	RemoveInput: (self: UserInputType, name: string) -> ()
}
