---@meta
---@class Microsoft.Xna.Framework.Vector4 : System.ValueType
---@operator div(Microsoft.Xna.Framework.Vector4):Microsoft.Xna.Framework.Vector4
---@operator div(System.Single):Microsoft.Xna.Framework.Vector4
---@operator unm:Microsoft.Xna.Framework.Vector4
---@operator add(Microsoft.Xna.Framework.Vector4):Microsoft.Xna.Framework.Vector4
---@operator sub(Microsoft.Xna.Framework.Vector4):Microsoft.Xna.Framework.Vector4
---@operator mul(Microsoft.Xna.Framework.Vector4):Microsoft.Xna.Framework.Vector4
---@operator mul(System.Single):Microsoft.Xna.Framework.Vector4
---`Field Public Instance`
---@field X System.Single
---`Field Public Instance`
---@field Y System.Single
---`Field Public Instance`
---@field Z System.Single
---`Field Public Instance`
---@field W System.Single
---`Field Private Static`
---@field zero Microsoft.Xna.Framework.Vector4
---`Field Private Static`
---@field one Microsoft.Xna.Framework.Vector4
---`Field Private Static`
---@field unitX Microsoft.Xna.Framework.Vector4
---`Field Private Static`
---@field unitY Microsoft.Xna.Framework.Vector4
---`Field Private Static`
---@field unitZ Microsoft.Xna.Framework.Vector4
---`Field Private Static`
---@field unitW Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field Zero Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field One Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field UnitX Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field UnitY Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field UnitZ Microsoft.Xna.Framework.Vector4
---`Getter Public Static`
---@field UnitW Microsoft.Xna.Framework.Vector4
---`Getter NonPublic Instance`
---@field DebugDisplayString System.String
_G['Vector4'] = {}

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Add = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, value3:Microsoft.Xna.Framework.Vector4, amount1:System.Single, amount2:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param value3 Microsoft.Xna.Framework.Vector4-ref
---@param amount1 System.Single
---@param amount2 System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Barycentric = function(value1, value2, value3, amount1, amount2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, value3:Microsoft.Xna.Framework.Vector4, value4:Microsoft.Xna.Framework.Vector4, amount:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param value3 Microsoft.Xna.Framework.Vector4-ref
---@param value4 Microsoft.Xna.Framework.Vector4-ref
---@param amount System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].CatmullRom = function(value1, value2, value3, value4, amount, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, min:Microsoft.Xna.Framework.Vector4, max:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param min Microsoft.Xna.Framework.Vector4-ref
---@param max Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Clamp = function(value1, min, max, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(System.Single)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result System.Single-ref
_G['Vector4'].Distance = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(System.Single)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result System.Single-ref
_G['Vector4'].DistanceSquared = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, divider:System.Single):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value1:Microsoft.Xna.Framework.Vector4-ref, divider:System.Single, result:Microsoft.Xna.Framework.Vector4-ref)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Divide = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(System.Single)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result System.Single-ref
_G['Vector4'].Dot = function(value1, value2, result) end

---`Method Public Instance Virtual`
---@overload fun(obj:System.Object):(System.Boolean)
---@param other Microsoft.Xna.Framework.Vector4
---@return System.Boolean
_G['Vector4'].Equals = function(other) end

---`Method Public Instance Virtual`
---@return System.Int32
_G['Vector4'].GetHashCode = function() end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, tangent1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, tangent2:Microsoft.Xna.Framework.Vector4, amount:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param tangent1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param tangent2 Microsoft.Xna.Framework.Vector4-ref
---@param amount System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Hermite = function(value1, tangent1, value2, tangent2, amount, result) end

---`Method Public Instance`
---@return System.Single
_G['Vector4'].Length = function() end

---`Method Public Instance`
---@return System.Single
_G['Vector4'].LengthSquared = function() end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, amount:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param amount System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Lerp = function(value1, value2, amount, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, amount:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param amount System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].LerpPrecise = function(value1, value2, amount, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Max = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Min = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, scaleFactor:System.Single):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value1:Microsoft.Xna.Framework.Vector4-ref, scaleFactor:System.Single, result:Microsoft.Xna.Framework.Vector4-ref)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Multiply = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Negate = function(value, result) end

---`Method Public Instance`
_G['Vector4'].Normalize = function() end

---`Method Public Static`
---@overload fun(value:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Normalize = function(value, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4, amount:System.Single):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param amount System.Single
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].SmoothStep = function(value1, value2, amount, result) end

---`Method Public Static`
---@overload fun(value1:Microsoft.Xna.Framework.Vector4, value2:Microsoft.Xna.Framework.Vector4):(Microsoft.Xna.Framework.Vector4)
---@param value1 Microsoft.Xna.Framework.Vector4-ref
---@param value2 Microsoft.Xna.Framework.Vector4-ref
---@param result Microsoft.Xna.Framework.Vector4-ref
_G['Vector4'].Subtract = function(value1, value2, result) end

---`Method Public Static`
---@overload fun(value:Microsoft.Xna.Framework.Vector2, matrix:Microsoft.Xna.Framework.Matrix):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector2, rotation:Microsoft.Xna.Framework.Quaternion):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector3, matrix:Microsoft.Xna.Framework.Matrix):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector3, rotation:Microsoft.Xna.Framework.Quaternion):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector4, matrix:Microsoft.Xna.Framework.Matrix):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector4, rotation:Microsoft.Xna.Framework.Quaternion):(Microsoft.Xna.Framework.Vector4)
---@overload fun(value:Microsoft.Xna.Framework.Vector2-ref, matrix:Microsoft.Xna.Framework.Matrix-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(value:Microsoft.Xna.Framework.Vector2-ref, rotation:Microsoft.Xna.Framework.Quaternion-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(value:Microsoft.Xna.Framework.Vector3-ref, matrix:Microsoft.Xna.Framework.Matrix-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(value:Microsoft.Xna.Framework.Vector3-ref, rotation:Microsoft.Xna.Framework.Quaternion-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(value:Microsoft.Xna.Framework.Vector4-ref, matrix:Microsoft.Xna.Framework.Matrix-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(value:Microsoft.Xna.Framework.Vector4-ref, rotation:Microsoft.Xna.Framework.Quaternion-ref, result:Microsoft.Xna.Framework.Vector4-ref)
---@overload fun(sourceArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]), sourceIndex:System.Int32, matrix:Microsoft.Xna.Framework.Matrix-ref, destinationArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]), destinationIndex:System.Int32, length:System.Int32)
---@overload fun(sourceArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]), sourceIndex:System.Int32, rotation:Microsoft.Xna.Framework.Quaternion-ref, destinationArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]), destinationIndex:System.Int32, length:System.Int32)
---@overload fun(sourceArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]), matrix:Microsoft.Xna.Framework.Matrix-ref, destinationArray:(Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[]))
---@param sourceArray (Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[])
---@param rotation Microsoft.Xna.Framework.Quaternion-ref
---@param destinationArray (Microsoft.Xna.Framework.Vector4-arr)|(Microsoft.Xna.Framework.Vector4[])
_G['Vector4'].Transform = function(sourceArray, rotation, destinationArray) end

---`Method Public Instance Virtual`
---@return System.String
_G['Vector4'].ToString = function() end

---`Method Public Instance`
---@param x System.Single-ref
---@param y System.Single-ref
---@param z System.Single-ref
---@param w System.Single-ref
_G['Vector4'].Deconstruct = function(x, y, z, w) end

---`Constructor Private Static`
---@overload fun():Microsoft.Xna.Framework.Vector4
---@overload fun(x:System.Single, y:System.Single, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector2, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector3, w:System.Single):Microsoft.Xna.Framework.Vector4
---@param value System.Single
---@return Microsoft.Xna.Framework.Vector4
_G['Vector4'] = function(value) end

---`Constructor Private Static`
---@overload fun():Microsoft.Xna.Framework.Vector4
---@overload fun(x:System.Single, y:System.Single, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector2, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector3, w:System.Single):Microsoft.Xna.Framework.Vector4
---@param value System.Single
---@return Microsoft.Xna.Framework.Vector4
_G['Vector4'].__new = function(value) end

---`Constructor Public Instance`
---@overload fun():Microsoft.Xna.Framework.Vector4
---@overload fun(x:System.Single, y:System.Single, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector2, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector3, w:System.Single):Microsoft.Xna.Framework.Vector4
---@param value System.Single
---@return Microsoft.Xna.Framework.Vector4
_G['Vector4'] = function(value) end

---`Constructor Public Instance`
---@overload fun():Microsoft.Xna.Framework.Vector4
---@overload fun(x:System.Single, y:System.Single, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector2, z:System.Single, w:System.Single):Microsoft.Xna.Framework.Vector4
---@overload fun(value:Microsoft.Xna.Framework.Vector3, w:System.Single):Microsoft.Xna.Framework.Vector4
---@param value System.Single
---@return Microsoft.Xna.Framework.Vector4
_G['Vector4'].__new = function(value) end

