---@meta

---@class AVehicleSystemBase : APawn
---@field VehicleWheels TArray<UVehicleWheelBase>
---@field ContactModMeshes TArray<UPrimitiveComponent>
---@field ReplicateMovement boolean
---@field SyncLocation boolean
---@field SyncRotation boolean
---@field NetSendRate float
---@field NetTimeBehind float
---@field NetLerpStart float
---@field NetPositionTolerance float
---@field NetSmoothing float
---@field RestState FNetState
---@field NetworkAtRest boolean
---@field RestTimer float
---@field ChaosDeltaTime float
---@field InputsForPhysicsThread FAVS_Inputs
---@field DebugTraces TArray<FHitResult>
---@field DebugForces TArray<FDebugForce>
---@field VehicleMesh UStaticMeshComponent
---@field PassiveMode boolean
---@field PassiveTickGatekeeping boolean
---@field RestVelocityThreshold float
---@field LocalVehicleAtRest boolean
---@field SteeringFalloffCurve FRuntimeFloatCurve
---@field SteeringInputSmoothing SteeringSmoothingType
---@field SteeringSpeed float
---@field SteeringRecenterSpeed float
---@field Gears TArray<FVehicleGear>
local AVehicleSystemBase = {}

function AVehicleSystemBase:WakeWheelsForMovement() end
function AVehicleSystemBase:UpdateInternalWheelArray() end
function AVehicleSystemBase:TeleportWheels() end
---@param ShouldSync boolean
function AVehicleSystemBase:SetShouldSyncWithServer(ShouldSync) end
---@param Meshes TArray<UPrimitiveComponent>
---@return boolean
function AVehicleSystemBase:SetArrayDisabledCollisions(Meshes) end
---@param State FNetState
function AVehicleSystemBase:Server_ReceiveRestState(State) end
---@param State FNetState
function AVehicleSystemBase:Server_ReceiveNetState(State) end
---@param NewInputs FAVS_Inputs
function AVehicleSystemBase:PhysicsThreadInputs(NewInputs) end
---@param DeltaTime float
function AVehicleSystemBase:PassiveTickBP(DeltaTime) end
---@param NewPassiveState boolean
function AVehicleSystemBase:PassiveStateChanged(NewPassiveState) end
function AVehicleSystemBase:OwnerChanged() end
function AVehicleSystemBase:OnRep_RestState() end
function AVehicleSystemBase:NetStateSend() end
function AVehicleSystemBase:Multicast_ChangedOwner() end
---@param Old float
---@param New float
---@return boolean
function AVehicleSystemBase:IsTowardZero(Old, New) end
---@param OldSteering float
---@param NewSteering float
---@return float
function AVehicleSystemBase:GetSteeringSpeed(OldSteering, NewSteering) end
---@param Speed float
---@return float
function AVehicleSystemBase:GetMaxSteeringInput(Speed) end
---@return boolean
function AVehicleSystemBase:DeterminePassiveState() end
---@param State FNetState
function AVehicleSystemBase:Client_ReceiveNetState(State) end
---@param Text FString
function AVehicleSystemBase:BlueprintDebugMessage(Text) end
---@param DeltaTime float
function AVehicleSystemBase:AVS_Tick(DeltaTime) end


---@class FAVS1_Wheel_Config
---@field WheelLocalTransform FTransform
---@field IsLocked boolean
---@field WheelPrim UPrimitiveComponent
---@field WheelMode EWheelMode
---@field TraceChannel ECollisionChannel
---@field TraceIgnoreActors TArray<AActor>
---@field WheelMass float
---@field AutoWheelRadius boolean
---@field WheelRadius float
---@field TireFriction FVector2D
---@field IsDrivingWheel boolean
---@field IsSteerableWheel boolean
---@field MaxSteeringAngle float
---@field InvertTorque boolean
---@field InvertSteering boolean
---@field IsBrakingWheel boolean
---@field BrakeTorque float
---@field RollingResistance float
---@field IsHandbrakeWheel boolean
---@field EditorPreview boolean
---@field SpringLength float
---@field SpringStrength float
---@field SpringDamping float
---@field WheelRadiusM float
---@field Inertia float
local FAVS1_Wheel_Config = {}



---@class FAVS1_Wheel_Output
---@field LastTrace FHitResult
---@field AngularVelocity float
---@field CurrentSpringLength float
local FAVS1_Wheel_Output = {}



---@class FAVS1_Wheel_State
local FAVS1_Wheel_State = {}


---@class FAVS_Inputs
---@field Steering float
---@field Throttle float
---@field Brake float
---@field Handbrake boolean
---@field Torque float
---@field ReverseTorque boolean
local FAVS_Inputs = {}



---@class FDebugForce
---@field Location FVector
---@field Force FVector
---@field WheelMode EWheelMode
local FDebugForce = {}



---@class FNetState
---@field NetTimestamp float
---@field LocalTimestamp float
---@field Position FVector
---@field Rotation FRotator
---@field Velocity FVector
---@field AngularVelocity FVector
local FNetState = {}



---@class FVehicleGear
---@field EndSpeed float
---@field StartSpeed float
---@field UpShift float
---@field DownShift float
---@field HighRPM float
---@field LowRPM float
---@field MaxTorque float
---@field MinTorque float
local FVehicleGear = {}



---@class UAVS_DEBUG : UBlueprintFunctionLibrary
local UAVS_DEBUG = {}


---@class UVehicleComponent : USceneComponent
local UVehicleComponent = {}


---@class UVehicleConstraint : UPhysicsConstraintComponent
local UVehicleConstraint = {}

---@param SoftConstraint boolean
---@param Stiffness float
---@param Damping float
function UVehicleConstraint:SetLinearSoftConstraint(SoftConstraint, Stiffness, Damping) end


---@class UVehicleSystemFunctions : UBlueprintFunctionLibrary
local UVehicleSystemFunctions = {}

---@param Target UPrimitiveComponent
---@param InDamping float
---@param BoneName FName
function UVehicleSystemFunctions:SetLinearDamping(Target, InDamping, BoneName) end
---@param Target UPrimitiveComponent
---@param InDamping float
---@param BoneName FName
function UVehicleSystemFunctions:SetAngularDamping(Target, InDamping, BoneName) end
---@param WorldContextObject UObject
---@return boolean
function UVehicleSystemFunctions:RunningInPIE_World(WorldContextObject) end
---@param WorldContextObject UObject
---@return boolean
function UVehicleSystemFunctions:RunningInGame_World(WorldContextObject) end
---@param WorldContextObject UObject
---@return boolean
function UVehicleSystemFunctions:RunningInEditor_World(WorldContextObject) end
---@param InString FString
---@param TextColor FLinearColor
---@param Duration float
---@param Tag int32
function UVehicleSystemFunctions:PrintToScreenWithTag(InString, TextColor, Duration, Tag) end
---@param cm_per_sec double
---@param Radius float
---@return double
function UVehicleSystemFunctions:LinearSpeedToRads(cm_per_sec, Radius) end
---@param Target UPrimitiveComponent
---@param MassKg float
---@param RadiusCm float
---@return float
function UVehicleSystemFunctions:GetWheelInertia(Target, MassKg, RadiusCm) end
---@param Major int32
---@param Minor int32
---@param Patch int32
function UVehicleSystemFunctions:GetUnrealEngineVersion(Major, Minor, Patch) end
---@return FString
function UVehicleSystemFunctions:GetPluginVersion() end
---@param Target UPrimitiveComponent
---@param BoneName FName
---@return float
function UVehicleSystemFunctions:GetMeshRadius(Target, BoneName) end
---@param Target UPrimitiveComponent
---@param BoneName FName
---@return float
function UVehicleSystemFunctions:GetMeshDiameter(Target, BoneName) end
---@param Target UPrimitiveComponent
---@param BoneName FName
---@return FVector
function UVehicleSystemFunctions:GetMeshCenterOfMass(Target, BoneName) end
---@param Target UPrimitiveComponent
---@param AngVel float
function UVehicleSystemFunctions:AVS_SetWheelAngularVelocity(Target, AngVel) end
---@param Target UPrimitiveComponent
---@return FTransform
function UVehicleSystemFunctions:AVS_GetChaosTransform(Target) end
---@param Target UPrimitiveComponent
---@param AngVel float
function UVehicleSystemFunctions:AVS_ChaosSetWheelAngularVelocity(Target, AngVel) end
---@param Component UPrimitiveComponent
---@param Location FVector
---@return FVector
function UVehicleSystemFunctions:AVS_ChaosGetVelocityAtLocation(Component, Location) end
---@param Target UPrimitiveComponent
---@param BrakeTorque float
---@param ChaosDelta float
function UVehicleSystemFunctions:AVS_ChaosBrakes(Target, BrakeTorque, ChaosDelta) end
---@param Target UPrimitiveComponent
---@param Torque float
---@param bAccelChange boolean
function UVehicleSystemFunctions:AVS_ChaosAddWheelTorque(Target, Torque, bAccelChange) end
---@param Target UPrimitiveComponent
---@param Torque FVector
---@param bAccelChange boolean
function UVehicleSystemFunctions:AVS_ChaosAddTorque(Target, Torque, bAccelChange) end
---@param Target UPrimitiveComponent
---@param Location FVector
---@param Force FVector
function UVehicleSystemFunctions:AVS_ChaosAddForceAtLocation(Target, Location, Force) end
---@param Target UPrimitiveComponent
---@param Force FVector
---@param bAccelChange boolean
function UVehicleSystemFunctions:AVS_ChaosAddForce(Target, Force, bAccelChange) end


---@class UVehicleWheelBase : USceneComponent
---@field SimulateSuspension boolean
---@field isAttached boolean
---@field IsLocked boolean
---@field TargetAngVel float
---@field PassiveMode boolean
---@field WheelStaticMesh UStaticMesh
---@field WheelConfig FAVS1_Wheel_Config
---@field ConnectToBone boolean
---@field BoneName FName
---@field WheelData FAVS1_Wheel_Output
---@field WheelRotation FRotator
---@field WheelMeshComponent UPrimitiveComponent
---@field HasSpring boolean
---@field SpringHardLock boolean
---@field PhysicsDownforce double
---@field SteeringInput float
local UVehicleWheelBase = {}

function UVehicleWheelBase:UpdateWheelRadius() end
function UVehicleWheelBase:UpdateLocalTransformCache() end
---@param NewMode EWheelMode
function UVehicleWheelBase:SetWheelMode(NewMode) end
---@param NewComponent UPrimitiveComponent
function UVehicleWheelBase:SetWheelMeshComponent(NewComponent) end
---@param Steering float
---@param InvertSteering boolean
function UVehicleWheelBase:SetSteeringInput(Steering, InvertSteering) end
---@param NewMass float
function UVehicleWheelBase:SetRaycastWheelMass(NewMass) end
---@param NewPassive boolean
function UVehicleWheelBase:SetPassiveMode(NewPassive) end
---@param NewSimulate boolean
function UVehicleWheelBase:SetIsSimulatingSuspension(NewSimulate) end
function UVehicleWheelBase:ResetWheelCollisions() end
---@param NewPassiveState boolean
function UVehicleWheelBase:PassiveStateChanged(NewPassiveState) end
---@param Local boolean
---@return FVector
function UVehicleWheelBase:GetWheelVelocity(Local) end
---@return EWheelMode
function UVehicleWheelBase:GetWheelMode() end
---@return float
function UVehicleWheelBase:GetWheelAngVelInRadians() end
---@return float
function UVehicleWheelBase:GetSteeringInput() end
---@return float
function UVehicleWheelBase:GetSteeringAngle() end
---@return boolean
function UVehicleWheelBase:GetIsSimulatingSuspension() end
---@return boolean
function UVehicleWheelBase:GetIsAttached() end
---@return boolean
function UVehicleWheelBase:GetHasContact() end


