diff --git a/addons/ficsit-network/info.json b/addons/ficsit-network/info.json new file mode 100644 index 0000000..361f5a1 --- /dev/null +++ b/addons/ficsit-network/info.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://raw.githubusercontent.com/LuaLS/LLS-Addons/main/schemas/addon_info.schema.json", + "name": "FicsIt-Networks", + "description": "Definitions for the FicsIt-Networks Lua API and reflection system.", + "size": 80993, + "hasPlugin": false +} diff --git a/addons/ficsit-network/module/README.md b/addons/ficsit-network/module/README.md new file mode 100644 index 0000000..262e44f --- /dev/null +++ b/addons/ficsit-network/module/README.md @@ -0,0 +1,6 @@ +# FicsIt-Networks Definitions for LuaLS +Generated LuaLS addon definitions for the FicsIt-Networks Lua API and reflection system. + +Source documentation: +- https://docs.ficsit.app/ficsit-networks/latest/lua/index.html +- https://github.com/Panakotta00/FicsIt-Networks/tree/master/docs/modules/ROOT/pages diff --git a/addons/ficsit-network/module/config.json b/addons/ficsit-network/module/config.json new file mode 100644 index 0000000..4ace8f0 --- /dev/null +++ b/addons/ficsit-network/module/config.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://raw.githubusercontent.com/LuaLS/LLS-Addons/main/schemas/addon_config.schema.json", + "name": "FicsIt-Networks", + "words": [ + "async", + "classes", + "component", + "computer", + "event", + "filesystem", + "findItem", + "future", + "microcontroller", + "sleep", + "structs" + ], + "settings": { + "Lua.diagnostics.globals": [ + "async", + "classes", + "component", + "computer", + "event", + "eventTask", + "filesystem", + "findItem", + "future", + "microcontroller", + "sleep", + "structs", + "timeoutTask" + ] + } +} diff --git a/addons/ficsit-network/module/library/ficsit_network_api.lua b/addons/ficsit-network/module/library/ficsit_network_api.lua new file mode 100644 index 0000000..6d53f71 --- /dev/null +++ b/addons/ficsit-network/module/library/ficsit_network_api.lua @@ -0,0 +1,243 @@ +---@meta +-- Auto-generated from FicsIt-Networks docs. + +---@type fun(fn,...):Future +async = async + +---@type fun(name:string):ItemType? +findItem = findItem + +---@type fun(...) +print = print + +---@type fun(seconds:number) +sleep = sleep + +---@type ClassLib +classes = classes + +---@type Future +eventTask = eventTask + +---@type StructLib +structs = structs + +---@type Future +timeoutTask = timeoutTask + +---@class component +component = component or {} +--- Signature: component.findComponent((string query | xref:/reflection/classes/Class.adoc[Class] type)...) +---@return string[] +function component.findComponent(...) end +--- Signature: component.proxy((id: string | ids: string[])...) +---@return Object|Object[] +function component.proxy(...) end + +---@class computer +computer = computer or {} +---@type FINMediaSubsystem +computer.media = computer.media +--- Signature: computer.attentionPing(position: xref:/reflection/structs/Vector.adoc[Vector], username: string?) +function computer.attentionPing(...) end +--- Signature: computer.beep(pitch: number) +function computer.beep(...) end +--- Signature: computer.demote() +function computer.demote(...) end +--- Signature: computer.getEEPROM() +---@return string +function computer.getEEPROM(...) end +--- Signature: computer.getInstance() +---@return ComputerCase +function computer.getInstance(...) end +--- Signature: computer.getMemory() -> (usage: integer, capacity: integer) +function computer.getMemory(...) end +--- Signature: computer.getPCIDevices(type: Class?) +---@generic T:Object +---@param type Class? +---@return T[] +function computer.getPCIDevices(type) end +--- Signature: computer.isPromoted() +---@return boolean +function computer.isPromoted(...) end +--- Signature: computer.log(verbosity: integer, message: string) +function computer.log(...) end +--- Signature: computer.magicTime() -> (integer, string, string) +function computer.magicTime(...) end +--- Signature: computer.millis() +---@return integer +function computer.millis(...) end +--- Signature: computer.panic(error: string) +function computer.panic(...) end +--- Signature: computer.promote() +function computer.promote(...) end +--- Signature: computer.reset() +function computer.reset(...) end +--- Signature: computer.setEEPROM(code: string) +function computer.setEEPROM(...) end +--- Signature: computer.skip() +function computer.skip(...) end +--- Signature: computer.stop() +function computer.stop(...) end +--- Signature: computer.textNotification(text: string, username: string?) +function computer.textNotification(...) end +--- Signature: computer.time() +---@return number +function computer.time(...) end + +---@class debug +debug = debug or {} +--- Signature: debug.getinfo() +function debug.getinfo(...) end +--- Signature: debug.log(string...) +function debug.log(...) end +--- Signature: debug.traceback() +function debug.traceback(...) end + +---@class event +event = event or {} +--- Signature: event.clear() +function event.clear(...) end +--- Signature: event.filter(params: { event?: string|string[], sender?: xref:/reflection/classes/Object.adoc[Object]|xref:/reflection/classes/Object.adoc[Object][], values?: table }) +---@return EventFilter +function event.filter(...) end +--- Signature: event.ignore(...: xref:/reflection/classes/Object.adoc[Object]) +function event.ignore(...) end +--- Signature: event.ignoreAll() +function event.ignoreAll(...) end +--- Signature: event.listen(...: xref:/reflection/classes/Object.adoc[Object]) +function event.listen(...) end +--- Signature: event.listening() +---@return Object[] +function event.listening(...) end +--- Signature: event.pull(timeout: number?) -> (string?, xref:/reflection/classes/Object.adoc[Object], ...) +function event.pull(...) end +--- Signature: event.queue(filter: xref:/reflection/structs/EventFilter.adoc[EventFilter]) +---@return EventQueue +function event.queue(...) end +--- Signature: event.registerListener(filter: xref:/reflection/structs/EventFilter.adoc[EventFilter], cb: fun(event, sender, ...)) +---@return integer +function event.registerListener(...) end +--- Signature: event.waitFor(filter: xref:/reflection/structs/EventFilter.adoc[EventFilter]) +---@return Future +function event.waitFor(...) end + +---@class filesystem +filesystem = filesystem or {} +--- Signature: filesystem.analyzePath(...: string) +---@return any +function filesystem.analyzePath(...) end +--- Signature: filesystem.children(path: string) +---@return string[] +function filesystem.children(...) end +--- Signature: filesystem.createDir(path: string, recursive: bool) +---@return boolean +function filesystem.createDir(...) end +--- Signature: filesystem.doFile(path: string) +---@return any +function filesystem.doFile(...) end +--- Signature: filesystem.exists(path: string) +---@return boolean +function filesystem.exists(...) end +--- Signature: filesystem.initFileSystem(path: string) +---@return boolean +function filesystem.initFileSystem(...) end +--- Signature: filesystem.isDir(path: string) +---@return boolean +function filesystem.isDir(...) end +--- Signature: filesystem.isFile(path: string) +---@return boolean +function filesystem.isFile(...) end +--- Signature: filesystem.isNode(...: string) +---@return any +function filesystem.isNode(...) end +--- Signature: filesystem.loadFile(path: string) +---@return fun():any +function filesystem.loadFile(...) end +--- Signature: filesystem.makeFileSystem(type: string, name: string) +---@return boolean +function filesystem.makeFileSystem(...) end +--- Signature: filesystem.meta(...: string) +---@return any +function filesystem.meta(...) end +--- Signature: filesystem.mount(device: string, mountPoint: string) +---@return boolean +function filesystem.mount(...) end +--- Signature: filesystem.move(from: string, to: string) +---@return boolean +function filesystem.move(...) end +--- Signature: filesystem.open(path: string, mode: string) +---@return File +function filesystem.open(...) end +--- Signature: filesystem.path([conversion: integer,] ...: string) +---@return string +function filesystem.path(...) end +--- Signature: filesystem.remove(path: string, recursive: bool) +---@return boolean +function filesystem.remove(...) end +--- Signature: filesystem.removeFileSystem(name: string) +---@return boolean +function filesystem.removeFileSystem(...) end +--- Signature: filesystem.rename(path: string, name: string) +---@return boolean +function filesystem.rename(...) end +--- Signature: filesystem.unmount(mountPoint: string) +---@return boolean +function filesystem.unmount(...) end + +---@class function_ +function_ = function_ or {} +---@type string +function_.description = function_.description +---@type string +function_.displayName = function_.displayName +---@type string +function_.name = function_.name +---@type string +function_.quickRef = function_.quickRef + +---@class future +future = future or {} +--- Signature: future.addTask(xref:/reflection/structs/Future.adoc[Future]...) +function future.addTask(...) end +--- Signature: future.any(xref:/reflection/structs/Future.adoc[Future]...) +---@return Future +function future.any(...) end +--- Signature: future.async(thread) +---@return Future +function future.async(...) end +--- Signature: future.join(xref:/reflection/structs/Future.adoc[Future]...) +---@return Future +function future.join(...) end +--- Signature: future.loop() +function future.loop(...) end +--- Signature: future.run() +function future.run(...) end +--- Signature: future.sleep(seconds: number) +---@return Future +function future.sleep(...) end + +---@class microcontroller +microcontroller = microcontroller or {} +---@type Object +microcontroller.component = microcontroller.component +---@type Microcontroller +microcontroller.self = microcontroller.self +--- Signature: microcontroller.broadcast(integer, ...) +function microcontroller.broadcast(...) end +--- Signature: microcontroller.close(integer...) +function microcontroller.close(...) end +--- Signature: microcontroller.closeAll() +function microcontroller.closeAll(...) end +--- Signature: microcontroller.getStorage(string) +function microcontroller.getStorage(...) end +--- Signature: microcontroller.open(integer...) +function microcontroller.open(...) end +--- Signature: microcontroller.send() +function microcontroller.send(...) end +--- Signature: microcontroller.setStorage(string) +function microcontroller.setStorage(...) end + + + + diff --git a/addons/ficsit-network/module/library/ficsit_network_reflection.lua b/addons/ficsit-network/module/library/ficsit_network_reflection.lua new file mode 100644 index 0000000..83b5e38 --- /dev/null +++ b/addons/ficsit-network/module/library/ficsit_network_reflection.lua @@ -0,0 +1,1797 @@ +---@meta +-- Auto-generated reflection class and struct stubs for FicsIt-Networks. + +---@generic T +---@class Class: ReflectionBase +local __ClassGeneric = {} + +---@generic T +---@class StructType: ReflectionBase +local __StructTypeGeneric = {} + +-- Compatibility shims for engine/base classes referenced by docs but not +-- explicitly present in reflection class pages. +---@generic T +---@class Array: { [integer]: T } +local Array = {} + +---@class FINModuleBase +local FINModuleBase = {} + +---@class FINComputerModule +local FINComputerModule = {} + +---@class FINSizeablePanel +local FINSizeablePanel = {} + +---@class FGBuildableConveyorAttachment +local FGBuildableConveyorAttachment = {} + +---@class FGBuildableStorage +local FGBuildableStorage = {} + +---@class FGBuildableWall +local FGBuildableWall = {} + +---@class FGBuildableControlPanelHost +local FGBuildableControlPanelHost = {} + +---@class FGBuildablePipelineAttachment +local FGBuildablePipelineAttachment = {} + +---@class SignPrefab +local SignPrefab = {} +---@class Actor: Object +---@field location Vector +---@field rotation Rotator +---@field scale Vector +local Actor = {} +--- Signature: Actor:getComponents(`componentType` : Class) +---@return ActorComponent[] +function Actor:getComponents(...) end +--- Signature: Actor:getFactoryConnectors() +---@return FactoryConnection[] +function Actor:getFactoryConnectors(...) end +--- Signature: Actor:getInventories() +---@return Inventory[] +function Actor:getInventories(...) end +--- Signature: Actor:getNetworkConnectors() +---@return ActorComponent[] +function Actor:getNetworkConnectors(...) end +--- Signature: Actor:getPipeConnectors() +---@return PipeConnectionBase[] +function Actor:getPipeConnectors(...) end +--- Signature: Actor:getPowerConnectors() +---@return PowerConnection[] +function Actor:getPowerConnectors(...) end + +---@class ActorComponent: Object +---@field owner Actor +local ActorComponent = {} + +---@class ArrayProperty: Property +local ArrayProperty = {} +--- Signature: ArrayProperty:getInner() +---@return Property +function ArrayProperty:getInner(...) end + +---@class BasicSubplate_2x2: FINModuleBase +local BasicSubplate_2x2 = {} +--- Signature: BasicSubplate_2x2:getModules() +---@return Object[] +function BasicSubplate_2x2:getModules(...) end +--- Signature: BasicSubplate_2x2:getSubModule() +---@return Actor +function BasicSubplate_2x2:getSubModule(...) end +--- Signature: BasicSubplate_2x2:getModule(`X` : Int, `Y` : Int) +---@return Actor +function BasicSubplate_2x2:getModule(...) end + +---@class BigGaugeModule: FINModuleBase +---@field limit number +---@field percent number +local BigGaugeModule = {} +--- Signature: BigGaugeModule:setBackgroundColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function BigGaugeModule:setBackgroundColor(...) end +--- Signature: BigGaugeModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function BigGaugeModule:setColor(...) end + +---@class Build_Speakers_C: SpeakerPole +local Build_Speakers_C = {} +--- Signature: Build_Speakers_C:getRange() +---@return number +function Build_Speakers_C:getRange(...) end +--- Signature: Build_Speakers_C:getVolume() +---@return number +function Build_Speakers_C:getVolume(...) end +--- Signature: Build_Speakers_C:setRange(`Range` : Float) +function Build_Speakers_C:setRange(...) end +--- Signature: Build_Speakers_C:setVolume(`Volume` : Float) +function Build_Speakers_C:setVolume(...) end + +---@class Buildable: Actor +---@field numFactoryConnections integer +---@field numFactoryOutputConnections integer +---@field numPowerConnections integer +local Buildable = {} + +---@class BuzzerModule: FINModuleBase +---@field attackCurve number +---@field attackTime number +---@field decayCurve number +---@field decayTime number +---@field frequency number +---@field isPlaying boolean +---@field volume number +local BuzzerModule = {} +--- Signature: BuzzerModule:beep() +function BuzzerModule:beep(...) end +--- Signature: BuzzerModule:stop() +function BuzzerModule:stop(...) end + +---@class CircuitBridge: Buildable +---@field isBridgeActive boolean +---@field isBridgeConnected boolean +local CircuitBridge = {} + +---@class CircuitSwitch: CircuitBridge +---@field buildingTag string +---@field hasBuildingTag boolean +---@field isSwitchOn boolean +local CircuitSwitch = {} +--- Signature: CircuitSwitch:setIsSwitchOn(`state` : Bool) +function CircuitSwitch:setIsSwitchOn(...) end + +---@class CircuitSwitchPriority: CircuitSwitch +---@field priority integer +local CircuitSwitchPriority = {} +--- Signature: CircuitSwitchPriority:setPrioritySwitchGroupOn(`state` : Bool) +function CircuitSwitchPriority:setPrioritySwitchGroupOn(...) end + +---@generic T +---@class Class: ReflectionBase +local Class = {} +--- Signature: Class:getAllSignals() +---@return Signal[] +function Class:getAllSignals(...) end +--- Signature: Class:getSignals() +---@return Signal[] +function Class:getSignals(...) end + +---@class ClassLib +---@field Actor Class +---@field ActorComponent Class +---@field ArrayProperty Class +---@field BasicSubplate_2x2 Class +---@field BigGaugeModule Class +---@field Build_Speakers_C Class +---@field Buildable Class +---@field BuzzerModule Class +---@field CircuitBridge Class +---@field CircuitSwitch Class +---@field CircuitSwitchPriority Class +---@field Class Class +---@field ClassProperty Class +---@field CodeableMerger Class +---@field CodeableSplitter Class +---@field ComputerCase Class +---@field DimensionalDepot Class +---@field DimensionalDepotUploader Class +---@field DockingStation Class +---@field Door Class +---@field EncoderModule Class +---@field FINAdvancedNetworkConnectionComponent Class +---@field FINComputerGPU Class +---@field FINComputerGPUT2 Class +---@field FINInternetCard Class +---@field FINMediaSubsystem Class +---@field FINModularIndicatorPoleModule Class +---@field Factory Class +---@field FactoryConnection Class +---@field Function Class +---@field GPUT1 Class +---@field GaugeModule Class +---@field IndicatorModule Class +---@field IndicatorPole Class +---@field Inventory Class +---@field ItemCategory Class +---@field ItemType Class +---@field LargeControlPanel Class +---@field LargeMicroDisplayModule Class +---@field LargeVerticalControlPanel Class +---@field LightSource Class +---@field LightsControlPanel Class +---@field Manufacturer Class +---@field MicroDisplayModule Class +---@field Microcontroller Class +---@field ModularIndicatorPole Class +---@field ModularPoleModule_Buzzer Class +---@field ModularPoleModule_Indicator Class +---@field ModuleButton Class +---@field ModulePanel Class +---@field ModulePotentiometer Class +---@field ModuleStopButton Class +---@field ModuleSwitch Class +---@field ModuleTextDisplay Class +---@field NetworkCard Class +---@field NetworkRouter Class +---@field Object Class +---@field ObjectProperty Class +---@field PipeConnection Class +---@field PipeConnectionBase Class +---@field PipeHyperStart Class +---@field PipeReservoir Class +---@field PipelinePump Class +---@field PotWDisplayModule Class +---@field PotentiometerModule Class +---@field PowerCircuit Class +---@field PowerConnection Class +---@field PowerInfo Class +---@field PowerStorage Class +---@field Property Class +---@field PushbuttonModule Class +---@field RailroadSignal Class +---@field RailroadStation Class +---@field RailroadSwitchControl Class +---@field RailroadTrack Class +---@field RailroadTrackConnection Class +---@field RailroadVehicle Class +---@field RailroadVehicleMovement Class +---@field Recipe Class +---@field ReflectionBase Class +---@field ResourceSink Class +---@field Screen Class +---@field SectionedPanelBasePanelA Class +---@field SectionedPanelRearPanelA Class +---@field SignBase Class +---@field SignType Class +---@field Signal Class +---@field SizeableModulePanel Class +---@field SpeakerPole Class +---@field SquareMicroDisplayModule Class +---@field Struct Class +---@field StructProperty Class +---@field SwitchModule2Position Class +---@field SwitchModule3Position Class +---@field TargetList Class +---@field TimeTable Class +---@field TraceProperty Class +---@field Train Class +---@field TrainPlatform Class +---@field TrainPlatformCargo Class +---@field TrainPlatformConnection Class +---@field Vehicle Class +---@field VehicleScanner Class +---@field WheeledVehicle Class +---@field WidgetSign Class +local ClassLib = {} + +---@class ClassProperty: Property +local ClassProperty = {} +--- Signature: ClassProperty:getSubclass() +---@return Class +function ClassProperty:getSubclass(...) end + +---@class CodeableMerger: FGBuildableConveyorAttachment +---@field canOutput boolean +local CodeableMerger = {} +--- Signature: CodeableMerger:getInput(`input` : Int) +---@return Item +function CodeableMerger:getInput(...) end +--- Signature: CodeableMerger:transferItem(`input` : Int) +---@return boolean +function CodeableMerger:transferItem(...) end + +---@class CodeableSplitter: FGBuildableConveyorAttachment +local CodeableSplitter = {} +--- Signature: CodeableSplitter:canOutput(`output` : Int) +---@return boolean +function CodeableSplitter:canOutput(...) end +--- Signature: CodeableSplitter:getConnectorByIndex(`outputIndex` : Int) +---@return FactoryConnection +function CodeableSplitter:getConnectorByIndex(...) end +--- Signature: CodeableSplitter:getInput() +---@return Item +function CodeableSplitter:getInput(...) end +--- Signature: CodeableSplitter:transferItem(`output` : Int) +---@return boolean +function CodeableSplitter:transferItem(...) end + +---@class Color +---@field a number +---@field b number +---@field g number +---@field r number +local Color = {} +--- Signature: Color:FIR_Operator_Mul_1(`factor` : Float) +---@return Vector +function Color:FIR_Operator_Mul_1(...) end +--- Signature: Color:FIR_Operator_Div_1(`factor` : Float) +---@return Vector +function Color:FIR_Operator_Div_1(...) end +--- Signature: Color:FIR_Operator_Add(`other` : Struct) +---@return Color +function Color:FIR_Operator_Add(...) end +--- Signature: Color:FIR_Operator_Neg_1() +---@return Color +function Color:FIR_Operator_Neg_1(...) end +--- Signature: Color:FIR_Operator_Sub(`other` : Struct) +---@return Color +function Color:FIR_Operator_Sub(...) end + +---@class ComputerCase: Buildable +local ComputerCase = {} +--- Signature: ComputerCase:getLog(`pageSize` : Int, `page` : Int) -> (`log` : Array>, `logSize` : Int) +function ComputerCase:getLog(...) end +--- Signature: ComputerCase:getState() +---@return integer +function ComputerCase:getState(...) end +--- Signature: ComputerCase:startComputer() +function ComputerCase:startComputer(...) end +--- Signature: ComputerCase:stopComputer() +function ComputerCase:stopComputer(...) end + +---@class DimensionalDepot: Actor +---@field centralStorageItemStackLimit integer +---@field centralStorageTimeToUpload number +local DimensionalDepot = {} +--- Signature: DimensionalDepot:canUploadItemsToCentralStorage(`itemType` : Class) +---@return boolean +function DimensionalDepot:canUploadItemsToCentralStorage(...) end +--- Signature: DimensionalDepot:getCentralStorageItemLimit(`itemType` : Class) +---@return integer +function DimensionalDepot:getCentralStorageItemLimit(...) end +--- Signature: DimensionalDepot:getItemCountFromCentralStorage(`itemType` : Class) +---@return integer +function DimensionalDepot:getItemCountFromCentralStorage(...) end +--- Signature: DimensionalDepot:getAllItemsFromCentralStorage() +---@return ItemAmount[] +function DimensionalDepot:getAllItemsFromCentralStorage(...) end + +---@class DimensionalDepotUploader: FGBuildableStorage +---@field centralStorage DimensionalDepot +---@field centralStorageUploadProgress number +---@field isUploadInventoryEmpty boolean +---@field isUploadingToCentralStorage boolean +local DimensionalDepotUploader = {} + +---@class DockingStation: Factory +---@field isLoadMode boolean +---@field isLoadUnloading boolean +local DockingStation = {} +--- Signature: DockingStation:getDocked() +---@return Actor +function DockingStation:getDocked(...) end +--- Signature: DockingStation:getFuelInv() +---@return Inventory +function DockingStation:getFuelInv(...) end +--- Signature: DockingStation:getInv() +---@return Inventory +function DockingStation:getInv(...) end +--- Signature: DockingStation:undock() +function DockingStation:undock(...) end + +---@class Door: FGBuildableWall +local Door = {} +--- Signature: Door:getConfiguration() +---@return integer +function Door:getConfiguration(...) end +--- Signature: Door:setConfiguration(`configuration` : Int) +function Door:setConfiguration(...) end + +---@class EncoderModule: FINModuleBase +---@field enabled boolean +local EncoderModule = {} +--- Signature: EncoderModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function EncoderModule:setColor(...) end + +---@class EventFilter +local EventFilter = {} +--- Signature: EventFilter:FIR_Operator_Mul(`operand` : Struct) +---@return EventFilter +function EventFilter:FIR_Operator_Mul(...) end +--- Signature: EventFilter:FIR_Operator_BitAND(`operand` : Struct) +---@return EventFilter +function EventFilter:FIR_Operator_BitAND(...) end +--- Signature: EventFilter:matches(`name` : String, `sender` : Object, ...) +---@return boolean +function EventFilter:matches(...) end +--- Signature: EventFilter:FIR_Operator_Neg() +---@return EventFilter +function EventFilter:FIR_Operator_Neg(...) end +--- Signature: EventFilter:FIR_Operator_BitNOT() +---@return EventFilter +function EventFilter:FIR_Operator_BitNOT(...) end +--- Signature: EventFilter:FIR_Operator_Add(`operand` : Struct) +---@return EventFilter +function EventFilter:FIR_Operator_Add(...) end +--- Signature: EventFilter:FIR_Operator_BitOR(`operand` : Struct) +---@return EventFilter +function EventFilter:FIR_Operator_BitOR(...) end + +---@class EventQueue +local EventQueue = {} +--- Signature: EventQueue:pull(timeout: number?) -> (string?, xref:/reflection/classes/Object.adoc[Object], ...) +function EventQueue:pull(...) end +--- Signature: EventQueue:waitFor(filter: xref:/reflection/structs/EventFilter.adoc[EventFilter]) -> (string?, xref:/reflection/classes/Object.adoc[Object], ...) +function EventQueue:waitFor(...) end + +---@class FINAdvancedNetworkConnectionComponent: ActorComponent +local FINAdvancedNetworkConnectionComponent = {} + +---@class FINComputerGPU: FINComputerModule +local FINComputerGPU = {} +--- Signature: FINComputerGPU:bindScreen(`newScreen` : Trace) +function FINComputerGPU:bindScreen(...) end +--- Signature: FINComputerGPU:getScreenSize() +---@return Vector2D +function FINComputerGPU:getScreenSize(...) end + +---@class FINComputerGPUT2: FINComputerGPU +local FINComputerGPUT2 = {} +--- Signature: FINComputerGPUT2:drawBezier(`p0` : Struct, `p1` : Struct, `p2` : Struct, `p3` : Struct, `thickness` : Float, `color` : Struct) +function FINComputerGPUT2:drawBezier(...) end +--- Signature: FINComputerGPUT2:drawBox(`boxSettings` : Struct) +function FINComputerGPUT2:drawBox(...) end +--- Signature: FINComputerGPUT2:drawLines(`points` : Array>, `thickness` : Float, `color` : Struct) +function FINComputerGPUT2:drawLines(...) end +--- Signature: FINComputerGPUT2:drawRect(`position` : Struct, `size` : Struct, `color` : Struct, `image` : String, `rotation` : Float) +function FINComputerGPUT2:drawRect(...) end +--- Signature: FINComputerGPUT2:drawSpline(`start` : Struct, `startDirections` : Struct, `end_` : Struct, `endDirection` : Struct, `thickness` : Float, `color` : Struct) +function FINComputerGPUT2:drawSpline(...) end +--- Signature: FINComputerGPUT2:drawText(`position` : Struct, `text` : String, `size` : Int, `color` : Struct, `monospace` : Bool) +function FINComputerGPUT2:drawText(...) end +--- Signature: FINComputerGPUT2:flush() +function FINComputerGPUT2:flush(...) end +--- Signature: FINComputerGPUT2:getFontBaseline(`size` : Int, `monospace` : Bool) +---@return integer +function FINComputerGPUT2:getFontBaseline(...) end +--- Signature: FINComputerGPUT2:getFontBaselineBatch(`size` : Array, `monospace` : Array) +---@return integer[] +function FINComputerGPUT2:getFontBaselineBatch(...) end +--- Signature: FINComputerGPUT2:getFontHeight(`size` : Int, `monospace` : Bool) +---@return integer +function FINComputerGPUT2:getFontHeight(...) end +--- Signature: FINComputerGPUT2:getFontHeightBatch(`size` : Array, `monospace` : Array) +---@return integer[] +function FINComputerGPUT2:getFontHeightBatch(...) end +--- Signature: FINComputerGPUT2:measureText(`text` : String, `size` : Int, `monospace` : Bool) +---@return Vector2D +function FINComputerGPUT2:measureText(...) end +--- Signature: FINComputerGPUT2:measureTextBatch(`text` : Array, `size` : Array, `monospace` : Array) +---@return Vector2D[] +function FINComputerGPUT2:measureTextBatch(...) end +--- Signature: FINComputerGPUT2:popClip() +function FINComputerGPUT2:popClip(...) end +--- Signature: FINComputerGPUT2:popGeometry() +function FINComputerGPUT2:popGeometry(...) end +--- Signature: FINComputerGPUT2:pushClipRect(`position` : Struct, `size` : Struct) +function FINComputerGPUT2:pushClipRect(...) end +--- Signature: FINComputerGPUT2:pushClipPolygon(`topLeft` : Struct, `topRight` : Struct, `bottomLeft` : Struct, `bottomRight` : Struct) +function FINComputerGPUT2:pushClipPolygon(...) end +--- Signature: FINComputerGPUT2:pushLayout(`offset` : Struct, `size` : Struct, `scale` : Float) +function FINComputerGPUT2:pushLayout(...) end +--- Signature: FINComputerGPUT2:pushTransform(`translation` : Struct, `rotation` : Float, `scale` : Struct) +function FINComputerGPUT2:pushTransform(...) end + +---@class FINInternetCard: FINComputerModule +local FINInternetCard = {} +--- Signature: FINInternetCard:request(`url` : String, `method` : String, `data` : String, ...) +---@return Future +function FINInternetCard:request(...) end + +---@class FINMediaSubsystem: Actor +local FINMediaSubsystem = {} +--- Signature: FINMediaSubsystem:findGameIcon(`IconName` : String) +---@return IconData +function FINMediaSubsystem:findGameIcon(...) end +--- Signature: FINMediaSubsystem:getGameIcons(`PageSize` : Int, `Page` : Int) +---@return IconData[] +function FINMediaSubsystem:getGameIcons(...) end +--- Signature: FINMediaSubsystem:isTextureLoaded(`TextureReference` : String) +---@return boolean +function FINMediaSubsystem:isTextureLoaded(...) end +--- Signature: FINMediaSubsystem:isTextureLoading(`TextureReference` : String) +---@return boolean +function FINMediaSubsystem:isTextureLoading(...) end +--- Signature: FINMediaSubsystem:loadTexture(`TextureReference` : String) +function FINMediaSubsystem:loadTexture(...) end + +---@class FINModularIndicatorPoleModule: Buildable +local FINModularIndicatorPoleModule = {} +--- Signature: FINModularIndicatorPoleModule:getNext() +---@return FINModularIndicatorPoleModule +function FINModularIndicatorPoleModule:getNext(...) end +--- Signature: FINModularIndicatorPoleModule:getPrevious() +---@return Buildable +function FINModularIndicatorPoleModule:getPrevious(...) end + +---@class Factory: Buildable +---@field canChangePotential boolean +---@field canChangeProductionBoost boolean +---@field currentPotential number +---@field currentProductionBoost number +---@field cycleTime number +---@field maxDefaultPotential number +---@field maxDefaultProductionBoost number +---@field maxPotential number +---@field maxProductionBoost number +---@field minDefaultProductionBoost number +---@field minPotential number +---@field potential number +---@field potentialInventory Inventory +---@field powerConsumProducing number +---@field productionBoost number +---@field productivity number +---@field progress number +---@field standby boolean +local Factory = {} +--- Signature: Factory:setPotential(`potential` : Float) +function Factory:setPotential(...) end +--- Signature: Factory:setProductionBoost(`productionBoost` : Float) +function Factory:setProductionBoost(...) end + +---@class FactoryConnection: ActorComponent +---@field allowedItem Class +---@field blocked boolean +---@field direction integer +---@field isConnected boolean +---@field type integer +---@field unblockedTransfers integer +local FactoryConnection = {} +--- Signature: FactoryConnection:addUnblockedTransfers(`unblockedTransfers` : Int) +---@return integer +function FactoryConnection:addUnblockedTransfers(...) end +--- Signature: FactoryConnection:getConnected() +---@return FactoryConnection +function FactoryConnection:getConnected(...) end +--- Signature: FactoryConnection:getInventory() +---@return Inventory +function FactoryConnection:getInventory(...) end + +---@class File +local File = {} +--- Signature: File:close() +function File:close(...) end +--- Signature: File:read(...: integer) +---@return any +function File:read(...) end +--- Signature: File:seek(where: string, offset: integer) +---@return integer +function File:seek(...) end +--- Signature: File:write(... string) +function File:write(...) end + +---@class Function: ReflectionBase +---@field flags integer +local Function = {} +--- Signature: Function:getParameters() +---@return Property[] +function Function:getParameters(...) end + +---@class Future +local Future = {} +--- Signature: Future:await() +function Future:await(...) end +--- Signature: Future:canGet() +function Future:canGet(...) end +--- Signature: Future:get() +function Future:get(...) end +--- Signature: Future:poll() +---@return boolean +---@return number? +function Future:poll(...) end + +---@class FutureStruct +local FutureStruct = {} + +---@class GPUT1: FINComputerGPU +local GPUT1 = {} +--- Signature: GPUT1:fill(`x` : Int, `y` : Int, `dx` : Int, `dy` : Int, `str` : String) +function GPUT1:fill(...) end +--- Signature: GPUT1:flush() +function GPUT1:flush(...) end +--- Signature: GPUT1:getBuffer() +---@return GPUT1Buffer +function GPUT1:getBuffer(...) end +--- Signature: GPUT1:getScreen() +---@return Object +function GPUT1:getScreen(...) end +--- Signature: GPUT1:getSize() -> (`w` : Int, `h` : Int) +function GPUT1:getSize(...) end +--- Signature: GPUT1:setBackground(`r` : Float, `g` : Float, `b` : Float, `a` : Float) +function GPUT1:setBackground(...) end +--- Signature: GPUT1:setBuffer(`buffer` : Struct) +function GPUT1:setBuffer(...) end +--- Signature: GPUT1:setForeground(`r` : Float, `g` : Float, `b` : Float, `a` : Float) +function GPUT1:setForeground(...) end +--- Signature: GPUT1:setSize(`w` : Int, `h` : Int) +function GPUT1:setSize(...) end +--- Signature: GPUT1:setText(`x` : Int, `y` : Int, `str` : String) +function GPUT1:setText(...) end + +---@class GPUT1Buffer +local GPUT1Buffer = {} +--- Signature: GPUT1Buffer:clone() +---@return GPUT1Buffer +function GPUT1Buffer:clone(...) end +--- Signature: GPUT1Buffer:copy(`x` : Int, `y` : Int, `buffer` : Struct, `textBlendMode` : Int, `foregroundBlendMode` : Int, `backgroundBlendMode` : Int) +function GPUT1Buffer:copy(...) end +--- Signature: GPUT1Buffer:fill(`x` : Int, `y` : Int, `width` : Int, `height` : Int, `character` : String, `foreground` : Struct, `background` : Struct) +function GPUT1Buffer:fill(...) end +--- Signature: GPUT1Buffer:get(`x` : Int, `y` : Int) -> (`c` : String, `foreground` : Struct, `background` : Struct) +function GPUT1Buffer:get(...) end +--- Signature: GPUT1Buffer:getSize() -> (`width` : Float, `height` : Float) +function GPUT1Buffer:getSize(...) end +--- Signature: GPUT1Buffer:set(`x` : Int, `y` : Int, `c` : String, `foreground` : Struct, `background` : Struct) +---@return boolean +function GPUT1Buffer:set(...) end +--- Signature: GPUT1Buffer:setRaw(`characters` : String, `foreground` : Array, `background` : Array) +---@return boolean +function GPUT1Buffer:setRaw(...) end +--- Signature: GPUT1Buffer:setSize(`width` : Float, `height` : Float) +function GPUT1Buffer:setSize(...) end +--- Signature: GPUT1Buffer:setText(`x` : Int, `y` : Int, `text` : String, `foreground` : Struct, `background` : Struct) +function GPUT1Buffer:setText(...) end + +---@class GPUT2DrawCallBox +---@field color Color +---@field hasCenteredOrigin boolean +---@field hasOutline boolean +---@field horizontalTiling boolean +---@field image string +---@field imageSize Vector2D +---@field isBorder boolean +---@field isRounded boolean +---@field margin Margin +---@field outlineColor Color +---@field outlineThickness number +---@field position Vector2D +---@field radii Vector4 +---@field rotation number +---@field size Vector2D +---@field verticalTiling boolean +local GPUT2DrawCallBox = {} + +---@class GaugeModule: FINModuleBase +---@field limit number +---@field percent number +local GaugeModule = {} +--- Signature: GaugeModule:setBackgroundColor(`r` : Float, `g` : Float, `b` : Float) +function GaugeModule:setBackgroundColor(...) end +--- Signature: GaugeModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function GaugeModule:setColor(...) end + +---@class IconData +---@field animated boolean +---@field hidden boolean +---@field iconName string +---@field iconType string +---@field id integer +---@field isValid boolean +---@field ref string +---@field searchOnly boolean +local IconData = {} + +---@class IndicatorModule: FINModuleBase +local IndicatorModule = {} +--- Signature: IndicatorModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function IndicatorModule:setColor(...) end + +---@class IndicatorPole: Buildable +local IndicatorPole = {} +--- Signature: IndicatorPole:getColor() -> (`r` : Float, `g` : Float, `b` : Float, `e` : Float) +function IndicatorPole:getColor(...) end +--- Signature: IndicatorPole:getTopPole() +---@return IndicatorPole +function IndicatorPole:getTopPole(...) end +--- Signature: IndicatorPole:setColor(`r` : Float, `g` : Float, `b` : Float, `e` : Float) +function IndicatorPole:setColor(...) end +--- Signature: IndicatorPole:getBottomPole() +---@return IndicatorPole +function IndicatorPole:getBottomPole(...) end + +---@class Inventory: ActorComponent +---@field itemCount integer +---@field size integer +local Inventory = {} +--- Signature: Inventory:canSplitAtIndex(`index` : Int) +---@return boolean +function Inventory:canSplitAtIndex(...) end +--- Signature: Inventory:flush() +function Inventory:flush(...) end +--- Signature: Inventory:getStack(...) +function Inventory:getStack(...) end +--- Signature: Inventory:sort() +function Inventory:sort(...) end +--- Signature: Inventory:splitAtIndex(`index` : Int, `num` : Int) +function Inventory:splitAtIndex(...) end +--- Signature: Inventory:swapStacks(`index1` : Int, `index2` : Int) +---@return boolean +function Inventory:swapStacks(...) end + +---@class Item +---@field type Class +local Item = {} + +---@class ItemAmount +---@field amount integer +---@field type Class +local ItemAmount = {} + +---@class ItemCategory: Object +---@field name string +local ItemCategory = {} + +---@class ItemStack +---@field count integer +---@field item Item +local ItemStack = {} + +---@class ItemType: Object +---@field canBeDiscarded boolean +---@field category Class +---@field description string +---@field energy number +---@field fluidColor Color +---@field form integer +---@field max integer +---@field name string +---@field radioactiveDecay number +local ItemType = {} + +---@class LargeControlPanel: Buildable +local LargeControlPanel = {} +--- Signature: LargeControlPanel:getModules() +---@return Object[] +function LargeControlPanel:getModules(...) end +--- Signature: LargeControlPanel:getModule(`x` : Int, `y` : Int) +---@return Actor +function LargeControlPanel:getModule(...) end + +---@class LargeMicroDisplayModule: FINModuleBase +local LargeMicroDisplayModule = {} +--- Signature: LargeMicroDisplayModule:setText(`text` : String) +function LargeMicroDisplayModule:setText(...) end +--- Signature: LargeMicroDisplayModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function LargeMicroDisplayModule:setColor(...) end + +---@class LargeVerticalControlPanel: Buildable +local LargeVerticalControlPanel = {} +--- Signature: LargeVerticalControlPanel:getModules() +---@return Object[] +function LargeVerticalControlPanel:getModules(...) end +--- Signature: LargeVerticalControlPanel:getModule(`x` : Int, `y` : Int, `panel` : Int) +---@return Actor +function LargeVerticalControlPanel:getModule(...) end + +---@class LightSource: Buildable +---@field colorSlot integer +---@field intensity number +---@field isLightEnabled boolean +---@field isTimeOfDayAware boolean +local LightSource = {} +--- Signature: LightSource:getColorFromSlot(`slot` : Int) +---@return Color +function LightSource:getColorFromSlot(...) end +--- Signature: LightSource:setColorFromSlot(`slot` : Int, `color` : Struct) +function LightSource:setColorFromSlot(...) end + +---@class LightsControlPanel: FGBuildableControlPanelHost +---@field colorSlot integer +---@field intensity number +---@field isLightEnabled boolean +---@field isTimeOfDayAware boolean +local LightsControlPanel = {} +--- Signature: LightsControlPanel:setColorFromSlot(`slot` : Int, `color` : Struct) +function LightsControlPanel:setColorFromSlot(...) end + +---@class LogEntry +---@field content string +---@field timestamp string +---@field verbosity integer +local LogEntry = {} +--- Signature: LogEntry:format() +---@return string +function LogEntry:format(...) end + +---@class Manufacturer: Factory +local Manufacturer = {} +--- Signature: Manufacturer:getInputInv() +---@return Inventory +function Manufacturer:getInputInv(...) end +--- Signature: Manufacturer:getOutputInv() +---@return Inventory +function Manufacturer:getOutputInv(...) end +--- Signature: Manufacturer:getRecipe() +---@return Class +function Manufacturer:getRecipe(...) end +--- Signature: Manufacturer:getRecipes() +---@return Array> +function Manufacturer:getRecipes(...) end +--- Signature: Manufacturer:setRecipe(`recipe` : Class) +---@return boolean +function Manufacturer:setRecipe(...) end + +---@class Margin +---@field bottom number +---@field left number +---@field right number +---@field top number +local Margin = {} + +---@class MicroDisplayModule: FINModuleBase +local MicroDisplayModule = {} +--- Signature: MicroDisplayModule:setText(`text` : String) +function MicroDisplayModule:setText(...) end +--- Signature: MicroDisplayModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function MicroDisplayModule:setColor(...) end + +---@class Microcontroller: Buildable +local Microcontroller = {} + +---@class ModularIndicatorPole: Buildable +local ModularIndicatorPole = {} +--- Signature: ModularIndicatorPole:getModule(`module` : Int) +---@return Actor +function ModularIndicatorPole:getModule(...) end +--- Signature: ModularIndicatorPole:getNext() +---@return Actor +function ModularIndicatorPole:getNext(...) end + +---@class ModularPoleModule_Buzzer: FINModularIndicatorPoleModule +---@field attackCurve number +---@field attackTime number +---@field decayCurve number +---@field decayTime number +---@field frequency number +---@field isPlaying boolean +---@field volume number +local ModularPoleModule_Buzzer = {} +--- Signature: ModularPoleModule_Buzzer:beep() +function ModularPoleModule_Buzzer:beep(...) end +--- Signature: ModularPoleModule_Buzzer:stop() +function ModularPoleModule_Buzzer:stop(...) end + +---@class ModularPoleModule_Indicator: FINModularIndicatorPoleModule +local ModularPoleModule_Indicator = {} +--- Signature: ModularPoleModule_Indicator:setColor(`r` : Float, `g` : Float, `b` : Float, `e` : Float) +function ModularPoleModule_Indicator:setColor(...) end +--- Signature: ModularPoleModule_Indicator:getColor() +---@return Color +function ModularPoleModule_Indicator:getColor(...) end + +---@class ModuleButton: FINModuleBase +local ModuleButton = {} +--- Signature: ModuleButton:trigger() +function ModuleButton:trigger(...) end +--- Signature: ModuleButton:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function ModuleButton:setColor(...) end + +---@class ModulePanel: Buildable +local ModulePanel = {} +--- Signature: ModulePanel:getModules() +---@return Object[] +function ModulePanel:getModules(...) end +--- Signature: ModulePanel:getModule(`x` : Int, `y` : Int) +---@return Actor +function ModulePanel:getModule(...) end +--- Signature: ModulePanel:getXModule(`X` : Int) +---@return Actor +function ModulePanel:getXModule(...) end +--- Signature: ModulePanel:getYModule(`Y` : Int) +---@return Actor +function ModulePanel:getYModule(...) end + +---@class ModulePotentiometer: FINModuleBase +local ModulePotentiometer = {} +--- Signature: ModulePotentiometer:rotate(`anticlockwise` : Bool) +function ModulePotentiometer:rotate(...) end + +---@class ModuleStopButton: FINModuleBase +local ModuleStopButton = {} +--- Signature: ModuleStopButton:trigger() +function ModuleStopButton:trigger(...) end + +---@class ModuleSwitch: FINModuleBase +---@field state boolean +local ModuleSwitch = {} + +---@class ModuleTextDisplay: FINModuleBase +---@field monospace boolean +---@field size integer +---@field text string +local ModuleTextDisplay = {} + +---@class NetworkCard: FINComputerModule +local NetworkCard = {} +--- Signature: NetworkCard:broadcast(`port` : Int, ...) +function NetworkCard:broadcast(...) end +--- Signature: NetworkCard:closeAll() +function NetworkCard:closeAll(...) end +--- Signature: NetworkCard:close(`port` : Int) +function NetworkCard:close(...) end +--- Signature: NetworkCard:open(`port` : Int) +function NetworkCard:open(...) end +--- Signature: NetworkCard:send(`receiver` : String, `port` : Int, ...) +function NetworkCard:send(...) end + +---@class NetworkRouter: Buildable +---@field isAddrWhitelist boolean +---@field isWhitelist boolean +local NetworkRouter = {} +--- Signature: NetworkRouter:addPortList(`port` : Int) +function NetworkRouter:addPortList(...) end +--- Signature: NetworkRouter:getAddrList() +---@return string[] +function NetworkRouter:getAddrList(...) end +--- Signature: NetworkRouter:getPortList() +---@return integer[] +function NetworkRouter:getPortList(...) end +--- Signature: NetworkRouter:removeAddrList(`addr` : String) +function NetworkRouter:removeAddrList(...) end +--- Signature: NetworkRouter:removePortList(`port` : Int) +function NetworkRouter:removePortList(...) end +--- Signature: NetworkRouter:setAddrList() +---@return string[] +function NetworkRouter:setAddrList(...) end +--- Signature: NetworkRouter:setPortList() +---@return integer[] +function NetworkRouter:setPortList(...) end +--- Signature: NetworkRouter:addAddrList(`addr` : String) +function NetworkRouter:addAddrList(...) end + +---@class Object +---@field hash integer +---@field id string +---@field internalName string +---@field internalPath string +---@field isNetworkComponent boolean +---@field nick string +local Object = {} +--- Signature: Object:getHash() +---@return integer +function Object:getHash(...) end +--- Signature: Object:getType() +---@return Class +function Object:getType(...) end +--- Signature: Object:isA(`parent` : Class) +---@return boolean +function Object:isA(...) end +--- Signature: Object:isChildOf(`parent` : Class) +---@return boolean +function Object:isChildOf(...) end + +---@class ObjectProperty: Property +local ObjectProperty = {} +--- Signature: ObjectProperty:getSubclass() +---@return Class +function ObjectProperty:getSubclass(...) end + +---@class PipeConnection: PipeConnectionBase +---@field fluidBoxContent number +---@field fluidBoxFlowDrain number +---@field fluidBoxFlowFill number +---@field fluidBoxFlowLimit number +---@field fluidBoxFlowThrough number +---@field fluidBoxHeight number +---@field fluidBoxLaminarHeight number +---@field networkID integer +local PipeConnection = {} +--- Signature: PipeConnection:flushPipeNetwork() +function PipeConnection:flushPipeNetwork(...) end +--- Signature: PipeConnection:getFluidDescriptor() +---@return ItemType +function PipeConnection:getFluidDescriptor(...) end + +---@class PipeConnectionBase: ActorComponent +---@field isConnected boolean +local PipeConnectionBase = {} +--- Signature: PipeConnectionBase:getConnection() +---@return PipeConnectionBase +function PipeConnectionBase:getConnection(...) end + +---@class PipeHyperStart: Factory +local PipeHyperStart = {} + +---@class PipeReservoir: Factory +---@field flowDrain number +---@field flowFill number +---@field flowLimit number +---@field fluidContent number +---@field maxFluidContent number +local PipeReservoir = {} +--- Signature: PipeReservoir:flush() +function PipeReservoir:flush(...) end +--- Signature: PipeReservoir:getFluidType() +---@return Class +function PipeReservoir:getFluidType(...) end + +---@class PipelinePump: FGBuildablePipelineAttachment +---@field defaultFlowLimit number +---@field designedHeadlift number +---@field flow number +---@field flowLimit number +---@field indicatorHeadlift number +---@field maxHeadlift number +---@field userFlowLimit number +local PipelinePump = {} + +---@class PotWDisplayModule: FINModuleBase +---@field autovalue boolean +---@field enabled boolean +---@field max integer +---@field min integer +---@field value integer +local PotWDisplayModule = {} +--- Signature: PotWDisplayModule:setText(`text` : String) +function PotWDisplayModule:setText(...) end +--- Signature: PotWDisplayModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function PotWDisplayModule:setColor(...) end + +---@class PotentiometerModule: FINModuleBase +---@field enabled boolean +---@field max integer +---@field min integer +---@field value integer +local PotentiometerModule = {} +--- Signature: PotentiometerModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function PotentiometerModule:setColor(...) end + +---@class PowerCircuit: Object +---@field batteryCapacity number +---@field batteryIn number +---@field batteryInput number +---@field batteryOut number +---@field batteryStore number +---@field batteryStorePercent number +---@field batteryTimeUntilEmpty number +---@field batteryTimeUntilFull number +---@field capacity number +---@field consumption number +---@field hasBatteries boolean +---@field isFuesed boolean +---@field maxPowerConsumption number +---@field production number +---@field productionBoost number +---@field productionBoostPercent number +local PowerCircuit = {} +--- Signature: PowerCircuit:getGroupPrioritySwitches() +---@return CircuitSwitchPriority[] +function PowerCircuit:getGroupPrioritySwitches(...) end +--- Signature: PowerCircuit:resetFuse() +function PowerCircuit:resetFuse(...) end + +---@class PowerConnection: ActorComponent +---@field connections integer +---@field maxConnections integer +local PowerConnection = {} +--- Signature: PowerConnection:getCircuit() +---@return PowerCircuit +function PowerConnection:getCircuit(...) end +--- Signature: PowerConnection:getPower() +---@return PowerInfo +function PowerConnection:getPower(...) end + +---@class PowerInfo: ActorComponent +---@field baseProduction number +---@field consumption number +---@field dynProduction number +---@field hasPower boolean +---@field maxDynProduction number +---@field targetConsumption number +local PowerInfo = {} +--- Signature: PowerInfo:getCircuit() +---@return PowerCircuit +function PowerInfo:getCircuit(...) end + +---@class PowerStorage: Factory +---@field batteryMaxIndicatorLevel integer +---@field batteryStatus integer +---@field powerCapacity number +---@field powerIn number +---@field powerOut number +---@field powerStore number +---@field powerStorePercent number +---@field timeUntilEmpty number +---@field timeUntilFull number +local PowerStorage = {} + +---@class PrefabSignData +---@field auxiliary Color +---@field background Color +---@field emissive number +---@field foreground Color +---@field layout Class +---@field signType Class +local PrefabSignData = {} +--- Signature: PrefabSignData:getIconElement(`elementName` : String) +---@return integer +function PrefabSignData:getIconElement(...) end +--- Signature: PrefabSignData:getIconElements() -> (`iconElements` : Array, `iconElementValues` : Array) +function PrefabSignData:getIconElements(...) end +--- Signature: PrefabSignData:getTextElement(`elementName` : String) +---@return integer +function PrefabSignData:getTextElement(...) end +--- Signature: PrefabSignData:getTextElements() -> (`textElements` : Array, `textElementValues` : Array) +function PrefabSignData:getTextElements(...) end +--- Signature: PrefabSignData:setIconElement(`elementName` : String, `value` : Int) +function PrefabSignData:setIconElement(...) end +--- Signature: PrefabSignData:setIconElements(`iconElements` : Array, `iconElementValues` : Array) +function PrefabSignData:setIconElements(...) end +--- Signature: PrefabSignData:setTextElement(`elementName` : String, `value` : String) +function PrefabSignData:setTextElement(...) end +--- Signature: PrefabSignData:setTextElements(`textElements` : Array, `textElementValues` : Array) +function PrefabSignData:setTextElements(...) end + +---@class Property: ReflectionBase +---@field dataType integer +---@field flags integer +local Property = {} + +---@class PushbuttonModule: FINModuleBase +---@field enabled boolean +---@field operationalMode integer +---@field state boolean +local PushbuttonModule = {} +--- Signature: PushbuttonModule:Trigger() +function PushbuttonModule:Trigger(...) end +--- Signature: PushbuttonModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function PushbuttonModule:setColor(...) end + +---@class RailroadSignal: Buildable +---@field aspect integer +---@field blockValidation integer +---@field hasObservedBlock boolean +---@field isBiDirectional boolean +---@field isPathSignal boolean +local RailroadSignal = {} +--- Signature: RailroadSignal:getGuardedConnnections() +---@return RailroadTrackConnection[] +function RailroadSignal:getGuardedConnnections(...) end +--- Signature: RailroadSignal:getObservedBlock() +---@return RailroadSignalBlock +function RailroadSignal:getObservedBlock(...) end +--- Signature: RailroadSignal:getObservedConnections() +---@return RailroadTrackConnection[] +function RailroadSignal:getObservedConnections(...) end + +---@class RailroadSignalBlock +---@field blockValidation integer +---@field isBlockOccupied boolean +---@field isPathBlock boolean +---@field isValid boolean +local RailroadSignalBlock = {} +--- Signature: RailroadSignalBlock:getApprovedReservations() +---@return Train[] +function RailroadSignalBlock:getApprovedReservations(...) end +--- Signature: RailroadSignalBlock:getOccupation() +---@return Train[] +function RailroadSignalBlock:getOccupation(...) end +--- Signature: RailroadSignalBlock:getQueuedReservations() +---@return Train[] +function RailroadSignalBlock:getQueuedReservations(...) end +--- Signature: RailroadSignalBlock:isOccupiedBy(`train` : Object) +---@return boolean +function RailroadSignalBlock:isOccupiedBy(...) end + +---@class RailroadStation: TrainPlatform +---@field dockedOffset integer +---@field name string +local RailroadStation = {} + +---@class RailroadSwitchControl: Buildable +local RailroadSwitchControl = {} +--- Signature: RailroadSwitchControl:getControlledConnections() +---@return RailroadTrackConnection[] +function RailroadSwitchControl:getControlledConnections(...) end +--- Signature: RailroadSwitchControl:switchPosition() +---@return integer +function RailroadSwitchControl:switchPosition(...) end +--- Signature: RailroadSwitchControl:toggleSwitch() +function RailroadSwitchControl:toggleSwitch(...) end + +---@class RailroadTrack: Buildable +---@field isOwnedByPlatform boolean +---@field length number +local RailroadTrack = {} +--- Signature: RailroadTrack:getClosestTrackPosition(`worldPos` : Struct) -> (`track` : Trace, `offset` : Float, `forward` : Float) +function RailroadTrack:getClosestTrackPosition(...) end +--- Signature: RailroadTrack:getConnection(`direction` : Int) +---@return RailroadTrackConnection +function RailroadTrack:getConnection(...) end +--- Signature: RailroadTrack:getTrackGraph() +---@return TrackGraph +function RailroadTrack:getTrackGraph(...) end +--- Signature: RailroadTrack:getVehicles() +---@return RailroadVehicle[] +function RailroadTrack:getVehicles(...) end +--- Signature: RailroadTrack:getWorldLocAndRotAtPos(`track` : Trace, `offset` : Float, `forward` : Float) -> (`location` : Struct, `rotation` : Struct) +function RailroadTrack:getWorldLocAndRotAtPos(...) end + +---@class RailroadTrackConnection: ActorComponent +---@field connectorLocation Vector +---@field connectorNormal Vector +---@field isConnected boolean +---@field isFacingSwitch boolean +---@field isTrailingSwitch boolean +---@field numSwitchPositions integer +local RailroadTrackConnection = {} +--- Signature: RailroadTrackConnection:forceSwitchPosition(`index` : Int) +function RailroadTrackConnection:forceSwitchPosition(...) end +--- Signature: RailroadTrackConnection:getConnection(`index` : Int) +---@return RailroadTrackConnection +function RailroadTrackConnection:getConnection(...) end +--- Signature: RailroadTrackConnection:getConnections() +---@return RailroadTrackConnection[] +function RailroadTrackConnection:getConnections(...) end +--- Signature: RailroadTrackConnection:getFacingSignal() +---@return RailroadSignal +function RailroadTrackConnection:getFacingSignal(...) end +--- Signature: RailroadTrackConnection:getNext() +---@return RailroadTrackConnection +function RailroadTrackConnection:getNext(...) end +--- Signature: RailroadTrackConnection:getOpposite() +---@return RailroadTrackConnection +function RailroadTrackConnection:getOpposite(...) end +--- Signature: RailroadTrackConnection:getStation() +---@return RailroadStation +function RailroadTrackConnection:getStation(...) end +--- Signature: RailroadTrackConnection:getSwitchControl() +---@return RailroadSwitchControl +function RailroadTrackConnection:getSwitchControl(...) end +--- Signature: RailroadTrackConnection:getSwitchPosition() +---@return integer +function RailroadTrackConnection:getSwitchPosition(...) end +--- Signature: RailroadTrackConnection:getTrack() +---@return RailroadTrack +function RailroadTrackConnection:getTrack(...) end +--- Signature: RailroadTrackConnection:getTrackPos() -> (`track` : Trace, `offset` : Float, `forward` : Float) +function RailroadTrackConnection:getTrackPos(...) end +--- Signature: RailroadTrackConnection:getTrailingSignal() +---@return RailroadSignal +function RailroadTrackConnection:getTrailingSignal(...) end +--- Signature: RailroadTrackConnection:setSwitchPosition(`index` : Int) +function RailroadTrackConnection:setSwitchPosition(...) end + +---@class RailroadVehicle: Vehicle +---@field isDocked boolean +---@field isReversed boolean +---@field length number +local RailroadVehicle = {} +--- Signature: RailroadVehicle:getCoupled(`coupler` : Int) +---@return RailroadVehicle +function RailroadVehicle:getCoupled(...) end +--- Signature: RailroadVehicle:getMovement() +---@return RailroadVehicleMovement +function RailroadVehicle:getMovement(...) end +--- Signature: RailroadVehicle:getTrackGraph() +---@return TrackGraph +function RailroadVehicle:getTrackGraph(...) end +--- Signature: RailroadVehicle:getTrackPos() -> (`track` : Trace, `offset` : Float, `forward` : Float) +function RailroadVehicle:getTrackPos(...) end +--- Signature: RailroadVehicle:getTrain() +---@return Train +function RailroadVehicle:getTrain(...) end +--- Signature: RailroadVehicle:isCoupled(`coupler` : Int) +---@return boolean +function RailroadVehicle:isCoupled(...) end + +---@class RailroadVehicleMovement: ActorComponent +---@field airBrakingForce number +---@field airResistance number +---@field brakingForce number +---@field curvatureResistance number +---@field dynamicBrakingForce number +---@field gradientForce number +---@field gradientResistance number +---@field gravitationalForce number +---@field isMoving boolean +---@field mass number +---@field maxAirBrakingEffort number +---@field maxDynamicBrakingEffort number +---@field maxSpeed number +---@field maxTractiveEffort number +---@field numWheelsets integer +---@field orientation number +---@field payloadMass number +---@field relativeSpeed number +---@field resistiveForce number +---@field rollingResistance number +---@field speed number +---@field tareMass number +---@field trackCurvature number +---@field trackGrade number +---@field tractiveForce number +---@field wheelRotation number +---@field wheelsetAngle number +local RailroadVehicleMovement = {} +--- Signature: RailroadVehicleMovement:getCouplerRotationAndExtention(`coupler` : Int) -> (`x` : Float, `y` : Float, `z` : Float, `extention` : Float) +function RailroadVehicleMovement:getCouplerRotationAndExtention(...) end +--- Signature: RailroadVehicleMovement:getVehicle() +---@return RailroadVehicle +function RailroadVehicleMovement:getVehicle(...) end +--- Signature: RailroadVehicleMovement:getWheelsetOffset(`wheelset` : Int) +---@return number +function RailroadVehicleMovement:getWheelsetOffset(...) end +--- Signature: RailroadVehicleMovement:getWheelsetRotation(`wheelset` : Int) -> (`x` : Float, `y` : Float, `z` : Float) +function RailroadVehicleMovement:getWheelsetRotation(...) end + +---@class Recipe: Object +---@field duration number +---@field name string +local Recipe = {} +--- Signature: Recipe:getIngredients() +---@return ItemAmount[] +function Recipe:getIngredients(...) end +--- Signature: Recipe:getProducts() +---@return ItemAmount[] +function Recipe:getProducts(...) end + +---@class ReflectionBase: Object +---@field description string +---@field displayName string +---@field name string +local ReflectionBase = {} + +---@class ReflectionFunction +---@field asFunctionObject Function +---@field callDeferred function +---@field quickRef string +local ReflectionFunction = {} + +---@class ResourceSink: Factory +---@field numCoupons integer +---@field trackDefault integer +---@field trackExploration integer +local ResourceSink = {} +--- Signature: ResourceSink:getCouponProgress(`track` : Int) +---@return number +function ResourceSink:getCouponProgress(...) end +--- Signature: ResourceSink:getNumPoints(`track` : Int) +---@return integer +function ResourceSink:getNumPoints(...) end +--- Signature: ResourceSink:getNumPointsToNextCoupon(`track` : Int) +---@return integer +function ResourceSink:getNumPointsToNextCoupon(...) end + +---@class Rotator +---@field pitch number +---@field roll number +---@field yaw number +local Rotator = {} +--- Signature: Rotator:FIR_Operator_Add(`other` : Struct) +---@return Rotator +function Rotator:FIR_Operator_Add(...) end +--- Signature: Rotator:FIR_Operator_Sub(`other` : Struct) +---@return Rotator +function Rotator:FIR_Operator_Sub(...) end + +---@class Screen: Buildable +local Screen = {} +--- Signature: Screen:getSize() -> (`width` : Int, `height` : Int) +function Screen:getSize(...) end + +---@class SectionedPanelBasePanelA: Buildable +local SectionedPanelBasePanelA = {} +--- Signature: SectionedPanelBasePanelA:getModules() +---@return Object[] +function SectionedPanelBasePanelA:getModules(...) end +--- Signature: SectionedPanelBasePanelA:getModule(`x` : Int, `y` : Int, `panel` : Int) +---@return Actor +function SectionedPanelBasePanelA:getModule(...) end + +---@class SectionedPanelRearPanelA: Buildable +local SectionedPanelRearPanelA = {} +--- Signature: SectionedPanelRearPanelA:getModules() +---@return Object[] +function SectionedPanelRearPanelA:getModules(...) end +--- Signature: SectionedPanelRearPanelA:getModule(`x` : Int, `y` : Int, `panel` : Int) +---@return Actor +function SectionedPanelRearPanelA:getModule(...) end + +---@class SignBase: Buildable +local SignBase = {} +--- Signature: SignBase:getSignType() +---@return Class +function SignBase:getSignType(...) end + +---@class SignType: Object +---@field dimensions Vector2D +local SignType = {} +--- Signature: SignType:getColors() -> (`foreground` : Struct, `background` : Struct, `auxiliary` : Struct) +function SignType:getColors(...) end +--- Signature: SignType:getIconElements() +---@return Object[] +function SignType:getIconElements(...) end +--- Signature: SignType:getPrefabs() +---@return Array> +function SignType:getPrefabs(...) end +--- Signature: SignType:getTextElements() +---@return string[] +function SignType:getTextElements(...) end + +---@class Signal: ReflectionBase +---@field isVarArgs boolean +local Signal = {} +--- Signature: Signal:getParameters() +---@return Property[] +function Signal:getParameters(...) end + +---@class SizeableModulePanel: FINSizeablePanel +---@field height integer +---@field width integer +local SizeableModulePanel = {} +--- Signature: SizeableModulePanel:getModules() +---@return Object[] +function SizeableModulePanel:getModules(...) end +--- Signature: SizeableModulePanel:getModule(`x` : Int, `y` : Int) +---@return Actor +function SizeableModulePanel:getModule(...) end + +---@class SpeakerPole: Buildable +local SpeakerPole = {} +--- Signature: SpeakerPole:playSound(`sound` : String, `startPoint` : Float) +function SpeakerPole:playSound(...) end +--- Signature: SpeakerPole:stopSound() +function SpeakerPole:stopSound(...) end + +---@class SquareMicroDisplayModule: FINModuleBase +local SquareMicroDisplayModule = {} +--- Signature: SquareMicroDisplayModule:setText(`text` : String) +function SquareMicroDisplayModule:setText(...) end +--- Signature: SquareMicroDisplayModule:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function SquareMicroDisplayModule:setColor(...) end + +---@class Struct: ReflectionBase +---@field isConstructable boolean +local Struct = {} +--- Signature: Struct:getAllFunctions() +---@return Property[] +function Struct:getAllFunctions(...) end +--- Signature: Struct:getAllProperties() +---@return Property[] +function Struct:getAllProperties(...) end +--- Signature: Struct:getFunctions() +---@return Function[] +function Struct:getFunctions(...) end +--- Signature: Struct:getParent() +---@return Class +function Struct:getParent(...) end +--- Signature: Struct:getProperties() +---@return Property[] +function Struct:getProperties(...) end +--- Signature: Struct:isChildOf(`parent` : Object) +---@return boolean +function Struct:isChildOf(...) end + +---@class StructLib +---@field Color StructType +---@field EventFilter StructType +---@field Future StructType +---@field GPUT1Buffer StructType +---@field GPUT2DrawCallBox StructType +---@field IconData StructType +---@field Item StructType +---@field ItemAmount StructType +---@field ItemStack StructType +---@field LogEntry StructType +---@field Margin StructType +---@field PrefabSignData StructType +---@field RailroadSignalBlock StructType +---@field Rotator StructType +---@field TargetPoint StructType +---@field TimeTableStop StructType +---@field TrackGraph StructType +---@field TrainDockingRuleSet StructType +---@field Vector StructType +---@field Vector2D StructType +---@field Vector4 StructType +local StructLib = {} + +---@class StructProperty: Property +local StructProperty = {} +--- Signature: StructProperty:getSubclass() +---@return Struct +function StructProperty:getSubclass(...) end + +---@generic T +---@class StructType: ReflectionBase +local StructType = {} + +---@class SwitchModule2Position: FINModuleBase +---@field enabled boolean +---@field state boolean +local SwitchModule2Position = {} +--- Signature: SwitchModule2Position:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function SwitchModule2Position:setColor(...) end + +---@class SwitchModule3Position: FINModuleBase +---@field enabled boolean +---@field state integer +local SwitchModule3Position = {} +--- Signature: SwitchModule3Position:setColor(`Red` : Float, `Green` : Float, `Blue` : Float, `Emit` : Float) +function SwitchModule3Position:setColor(...) end + +---@class TargetList: Actor +local TargetList = {} +--- Signature: TargetList:addTarget(`target` : Struct) +function TargetList:addTarget(...) end +--- Signature: TargetList:getTarget() +---@return TargetPoint +function TargetList:getTarget(...) end +--- Signature: TargetList:getTargets() +---@return TargetPoint[] +function TargetList:getTargets(...) end +--- Signature: TargetList:removeTarget(`index` : Int) +function TargetList:removeTarget(...) end +--- Signature: TargetList:setTarget(`index` : Int, `target` : Struct) +function TargetList:setTarget(...) end +--- Signature: TargetList:setTargets(`targets` : Array>) +function TargetList:setTargets(...) end + +---@class TargetPoint +---@field pos Vector +---@field rot Rotator +---@field speed number +---@field wait number +local TargetPoint = {} + +---@class TimeTable: Actor +---@field numStops integer +local TimeTable = {} +--- Signature: TimeTable:addStop(`index` : Int, `station` : Trace, `ruleSet` : Struct) +---@return boolean +function TimeTable:addStop(...) end +--- Signature: TimeTable:getCurrentStop() +---@return integer +function TimeTable:getCurrentStop(...) end +--- Signature: TimeTable:getStop(`index` : Int) +---@return TimeTableStop +function TimeTable:getStop(...) end +--- Signature: TimeTable:getStops() +---@return TimeTableStop[] +function TimeTable:getStops(...) end +--- Signature: TimeTable:incrementCurrentStop() +function TimeTable:incrementCurrentStop(...) end +--- Signature: TimeTable:isValidStop(`index` : Int) +---@return boolean +function TimeTable:isValidStop(...) end +--- Signature: TimeTable:removeStop(`index` : Int) +function TimeTable:removeStop(...) end +--- Signature: TimeTable:setCurrentStop(`index` : Int) +function TimeTable:setCurrentStop(...) end +--- Signature: TimeTable:setStop(`index` : Int, `stop` : Struct) +---@return boolean +function TimeTable:setStop(...) end +--- Signature: TimeTable:setStops(`stops` : Array>) +---@return boolean +function TimeTable:setStops(...) end + +---@class TimeTableStop +---@field station RailroadStation +local TimeTableStop = {} +--- Signature: TimeTableStop:getRuleSet() +---@return TrainDockingRuleSet +function TimeTableStop:getRuleSet(...) end +--- Signature: TimeTableStop:setRuleSet(`ruleset` : Struct) +function TimeTableStop:setRuleSet(...) end + +---@class TraceProperty: Property +local TraceProperty = {} +--- Signature: TraceProperty:getSubclass() +---@return Class +function TraceProperty:getSubclass(...) end + +---@class TrackGraph +local TrackGraph = {} +--- Signature: TrackGraph:getStations() +---@return RailroadStation[] +function TrackGraph:getStations(...) end +--- Signature: TrackGraph:getTrains() +---@return Train[] +function TrackGraph:getTrains(...) end + +---@class Train: Actor +---@field dockState integer +---@field hasTimeTable boolean +---@field isDocked boolean +---@field isPlayerDriven boolean +---@field isSelfDriving boolean +---@field selfDrivingError integer +local Train = {} +--- Signature: Train:dock() +function Train:dock(...) end +--- Signature: Train:getFirst() +---@return RailroadVehicle +function Train:getFirst(...) end +--- Signature: Train:getLast() +---@return RailroadVehicle +function Train:getLast(...) end +--- Signature: Train:getMaster() +---@return RailroadVehicle +function Train:getMaster(...) end +--- Signature: Train:getName() +---@return string +function Train:getName(...) end +--- Signature: Train:getTimeTable() +---@return TimeTable +function Train:getTimeTable(...) end +--- Signature: Train:getTrackGraph() +---@return TrackGraph +function Train:getTrackGraph(...) end +--- Signature: Train:getVehicles() +---@return RailroadVehicle[] +function Train:getVehicles(...) end +--- Signature: Train:newTimeTable() +---@return TimeTable +function Train:newTimeTable(...) end +--- Signature: Train:setName(`name` : String) +function Train:setName(...) end +--- Signature: Train:setSelfDriving(`selfDriving` : Bool) +function Train:setSelfDriving(...) end + +---@class TrainDockingRuleSet +---@field definition integer +---@field duration number +---@field isDurationAndRule boolean +local TrainDockingRuleSet = {} +--- Signature: TrainDockingRuleSet:getLoadFilters() +---@return Array> +function TrainDockingRuleSet:getLoadFilters(...) end +--- Signature: TrainDockingRuleSet:getUnloadFilters() +---@return Array> +function TrainDockingRuleSet:getUnloadFilters(...) end +--- Signature: TrainDockingRuleSet:setLoadFilters(`filters` : Array>) +function TrainDockingRuleSet:setLoadFilters(...) end +--- Signature: TrainDockingRuleSet:setUnloadFilters(`filters` : Array>) +function TrainDockingRuleSet:setUnloadFilters(...) end + +---@class TrainPlatform: Factory +---@field isReversed boolean +---@field status integer +local TrainPlatform = {} +--- Signature: TrainPlatform:getConnectedPlatform(`platformConnection` : Object) +---@return TrainPlatformConnection +function TrainPlatform:getConnectedPlatform(...) end +--- Signature: TrainPlatform:getDockedLocomotive() +---@return RailroadVehicle +function TrainPlatform:getDockedLocomotive(...) end +--- Signature: TrainPlatform:getDockedVehicle() +---@return Vehicle +function TrainPlatform:getDockedVehicle(...) end +--- Signature: TrainPlatform:getMaster() +---@return RailroadVehicle +function TrainPlatform:getMaster(...) end +--- Signature: TrainPlatform:getTrackGraph() +---@return TrackGraph +function TrainPlatform:getTrackGraph(...) end +--- Signature: TrainPlatform:getTrackPos() -> (`track` : Trace, `offset` : Float, `forward` : Float) +function TrainPlatform:getTrackPos(...) end +--- Signature: TrainPlatform:getAllConnectedPlatforms() +---@return TrainPlatformConnection[] +function TrainPlatform:getAllConnectedPlatforms(...) end + +---@class TrainPlatformCargo: TrainPlatform +---@field dockedOffset number +---@field fullLoad boolean +---@field fullUnload boolean +---@field inputFlow number +---@field isInLoadMode boolean +---@field isLoading boolean +---@field isUnloading boolean +---@field outputFlow number +local TrainPlatformCargo = {} + +---@class TrainPlatformConnection: ActorComponent +---@field connected TrainPlatformConnection +---@field connectionType integer +---@field platformOwner TrainPlatform +---@field trackConnection RailroadTrackConnection +local TrainPlatformConnection = {} + +---@class Vector +---@field x number +---@field y number +---@field z number +local Vector = {} +--- Signature: Vector:FIR_Operator_Add(`other` : Struct) +---@return Vector +function Vector:FIR_Operator_Add(...) end +--- Signature: Vector:FIR_Operator_Mul(`other` : Struct) +---@return Vector +function Vector:FIR_Operator_Mul(...) end +--- Signature: Vector:FIR_Operator_Neg() +---@return Vector +function Vector:FIR_Operator_Neg(...) end +--- Signature: Vector:FIR_Operator_Sub(`other` : Struct) +---@return Vector +function Vector:FIR_Operator_Sub(...) end +--- Signature: Vector:FIR_Operator_Mul_1(`factor` : Float) +---@return Vector +function Vector:FIR_Operator_Mul_1(...) end + +---@class Vector2D +---@field x number +---@field y number +local Vector2D = {} +--- Signature: Vector2D:FIR_Operator_Add(`other` : Struct) +---@return Vector2D +function Vector2D:FIR_Operator_Add(...) end +--- Signature: Vector2D:FIR_Operator_Neg() +---@return Vector2D +function Vector2D:FIR_Operator_Neg(...) end +--- Signature: Vector2D:FIR_Operator_Sub(`other` : Struct) +---@return Vector2D +function Vector2D:FIR_Operator_Sub(...) end +--- Signature: Vector2D:FIR_Operator_Mul(`other` : Struct) +---@return number +function Vector2D:FIR_Operator_Mul(...) end +--- Signature: Vector2D:FIR_Operator_Mul_1(`factor` : Float) +---@return Vector2D +function Vector2D:FIR_Operator_Mul_1(...) end + +---@class Vector4 +---@field w number +---@field x number +---@field y number +---@field z number +local Vector4 = {} + +---@class Vehicle: Actor +---@field health number +---@field isSelfDriving boolean +---@field maxHealth number +local Vehicle = {} + +---@class VehicleScanner: Buildable +local VehicleScanner = {} +--- Signature: VehicleScanner:getColor() -> (`r` : Float, `g` : Float, `b` : Float, `e` : Float) +function VehicleScanner:getColor(...) end +--- Signature: VehicleScanner:getLastVehicle() +---@return Vehicle +function VehicleScanner:getLastVehicle(...) end +--- Signature: VehicleScanner:setColor(`r` : Float, `g` : Float, `b` : Float, `e` : Float) +function VehicleScanner:setColor(...) end + +---@class WheeledVehicle: Vehicle +---@field burnRatio number +---@field hasFuel boolean +---@field isAutopilotEnabled boolean +---@field speed number +local WheeledVehicle = {} +--- Signature: WheeledVehicle:getCurrentTarget() +---@return integer +function WheeledVehicle:getCurrentTarget(...) end +--- Signature: WheeledVehicle:getFuelInv() +---@return Inventory +function WheeledVehicle:getFuelInv(...) end +--- Signature: WheeledVehicle:getStorageInv() +---@return Inventory +function WheeledVehicle:getStorageInv(...) end +--- Signature: WheeledVehicle:getTargetList() +---@return TargetList +function WheeledVehicle:getTargetList(...) end +--- Signature: WheeledVehicle:isValidFuel(`item` : Class) +---@return boolean +function WheeledVehicle:isValidFuel(...) end +--- Signature: WheeledVehicle:setCurrentTarget(`index` : Int) +function WheeledVehicle:setCurrentTarget(...) end + +---@class WidgetSign: SignBase +local WidgetSign = {} +--- Signature: WidgetSign:getPrefabSignData() +---@return PrefabSignData +function WidgetSign:getPrefabSignData(...) end +--- Signature: WidgetSign:setPrefabSignData(`prefabSignData` : Struct) +function WidgetSign:setPrefabSignData(...) end + +---@type ClassLib +classes = classes or {} + +---@type StructLib +structs = structs or {} + + + +