-- deviation: alias for internal React$ flow types

export type React_Node =
	nil
	| boolean
	| number
	| string
	| React_Element<any>
	-- TODO: only include this once it's more specific than `any`
	-- | React_Portal
	| Array<React_Node?>
	-- TODO Luau: this more closely matches the upstream Iterable<>, hypothetically the UNIQUE_TAG field makes it so we don't unify with other tables and squad field resolution
	| { [string]: React_Node?, UNIQUE_TAG: any? }

export type React_Element<ElementType> = {
	type: ElementType,
	props: React_ElementProps<ElementType>?,
	key: React_Key | nil,
	ref: any,
}

export type React_PureComponent<Props, State = nil> = React_Component<Props, State>
