---@meta

-- GENERATED FILE — do not hand-edit.
-- Regenerated by `tools/docs_pipeline.py build` (see docs-system/README.md).
-- To fix API facts: edit the upstream EdgeTX /*luadoc*/ comment, then
-- re-extract and rebuild. To add narrative content: edit
-- docs-system/overlays/<doc_id>.md, then rebuild.

--- LCD line pattern selector such as SOLID or DOTTED.
---@alias pen_type integer
--- Text rendering flags used by legacy LCD number APIs.
---@alias text_flags integer
--- Packed 16-bit RGB color value for color LCD APIs.
---@alias lcd_color_RGB565 integer
--- Font size selector such as XXLSIZE, DBLSIZE, MIDSIZE, or SMLSIZE.
---@alias lcd_font_size integer
--- Bitmask of LCD text rendering flags such as INVERS, BLINK, and SHADOWED.
---@alias lcd_text_flags integer
--- Combined LCD text formatting bitmask covering font size and text flags.
---@alias lcd_text_format integer
--- Signed EdgeTX source value in the normalized range from -1024 to 1024.
---@alias source_range_1024 integer
--- Global timer selector such as all, total, session, throttle, or throttlepct.
---@alias timer_type string
--- Telemetry unit identifier from the EdgeTX unit list.
---@alias unit_type integer
--- Telemetry precision selector controlling decimal places.
---@alias prec_type integer

---@class model
model = {}

--- Set all inputs to defaults
--- @since 2.0.0
function model.defaultInputs() end

--- Clear all flightModes
--- @since 2.3.10
function model.deleteFlightModes() end

--- Delete line from specified input
--- @since 2.0.0
---@param input integer input number (use 0 for Input1)
---@param line integer input line (use 0 for first line)
function model.deleteInput(input, line) end

--- Delete all Inputs
--- @since 2.0.0
function model.deleteInputs() end

--- Delete mixer line from specified Channel
--- @since 2.0.0
---@param channel integer channel number (use 0 for CH1)
---@param line integer mix number (use 0 for first line(mix))
function model.deleteMix(channel, line) end

--- Remove all mixers
--- @since 2.0.0
function model.deleteMixes() end

--- Get Curve parameters
--- @since 2.0.12
---@param curve integer curve number (use 0 for Curve1)
---@return nil
---@return table
function model.getCurve(curve) end

--- Get Custom Function parameters
--- @since 2.0.0
---@param function integer custom function number (use 0 for CF1)
---@return nil
---@return table
function model.getCustomFunction(function) end

--- 
--- @since 2.3.10
---@param index integer flight mode number (use 0 for FM0)
---@return nil
---@return table
function model.getFlightMode(index) end

--- Return current global variable value
--- @since unknown
---@param index integer zero based global variable index, use 0 for GV1, 8 for GV9
---@param flight_mode integer Flight mode number (0 = FM0, 8 = FM8)
---@return nil
---@return integer
function model.getGlobalVariable(index, flight_mode) end

--- Returns details about a Global Variable, but not values
--- @since 2.11.0
---@param index integer zero based global variable index, use 0 for GV1, 8 for GV9
---@return table
function model.getGlobalVariableDetails(index) end

--- Get current Model information
--- @since 2.0.6
---@return table
function model.getInfo() end

--- Return input data for given input and line number
--- @since 2.0.0
---@param input integer input number (use 0 for Input1)
---@param line integer input line (use 0 for first line)
---@return nil
---@return table
function model.getInput(input, line) end

--- Return number of lines for given input
--- @since 2.0.0
---@param input integer input number (use 0 for Input1)
---@return integer
function model.getInputsCount(input) end

--- Get Logical Switch parameters
--- @since 2.0.0
---@param switch integer logical switch number (use 0 for LS1)
---@return nil
---@return table
function model.getLogicalSwitch(switch) end

--- Get configuration for specified Mix
--- @since 2.0.0
---@param channel integer channel number (use 0 for CH1)
---@param line integer mix number (use 0 for first line(mix))
---@return nil
---@return table
function model.getMix(channel, line) end

--- Get the number of Mixer lines that the specified Channel has
--- @since 2.0.0
---@param channel integer channel number (use 0 for CH1)
---@return integer
function model.getMixesCount(channel) end

--- Get RF module parameters
--- @since 2.2.0
---@param index integer module index (0 for internal, 1 for external)
---@return nil
---@return table
function model.getModule(index) end

--- Get servo parameters
--- @since 2.0.0
---@param index integer output number (use 0 for CH1)
---@return nil
---@return table
function model.getOutput(index) end

--- Get Telemetry Sensor parameters
--- @since 2.3.0
---@param sensor integer sensor number (use 0 for sensor 1)
---@return nil
---@return table
function model.getSensor(sensor) end

--- Get heli swash parameters
--- @since 2.8.0
---@return table
function model.getSwashRing() end

--- Get model timer parameters
--- @since 2.0.0
---@param timer integer timer index (0 for Timer 1)
---@return nil
---@return table
function model.getTimer(timer) end

--- Insert an Input at specified line
--- @since 2.0.0
---@param input integer input number (use 0 for Input1)
---@param line integer input line (use 0 for first line)
---@param value table input data, see model.getInput()
function model.insertInput(input, line, value) end

--- Insert a mixer line into Channel
--- @since 2.0.0
---@param channel integer channel number (use 0 for CH1)
---@param line integer mix number (use 0 for first line(mix))
---@param value table see model.getMix() for table format
function model.insertMix(channel, line, value) end

--- Reset Telemetry Sensor parameters
--- @since 2.3.11
---@param sensor integer sensor number (use 0 for sensor 1)
---@return nil
function model.resetSensor(sensor) end

--- Reset model timer to a startup value
--- @since unknown
---@param timer integer timer index (0 for Timer 1)
function model.resetTimer(timer) end

--- Set Curve parameters
--- @since 2.2.0
---@param curve integer curve number (use 0 for Curve1)
---@param params integer see model.getCurve return format for table format. setCurve uses standard lua array indexing and arrays start at index 1
---@return integer 0
function model.setCurve(curve, params) end

--- Set Custom Function parameters
--- @since 2.0.0
---@param function integer custom function number (use 0 for CF1)
---@param value table custom function parameters, see model.getCustomFunction() for table format
function model.setCustomFunction(function, value) end

--- Set Flight mode parameters
--- @since 2.3.10
---@param index integer flight mode number (use 0 for FM0)
---@param params unknown see model.getFlightMode return format for table format.
function model.setFlightMode(index, params) end

--- Sets current global variable value. See also model.getGlobalVariable()
--- @since unknown
---@param index integer zero based global variable index, use 0 for GV1, 8 for GV9
---@param flight_mode integer Flight mode number (0 = FM0, 8 = FM8)
---@param value unknown new value for global variable. Permitted range is from -1024 to 1024.
function model.setGlobalVariable(index, flight_mode, value) end

--- Sets details about a Global Variable, but not values
--- @since 2.11.0
---@param index integer zero based global variable index, use 0 for GV1, 8 for GV9
---@param params table see model.getGlobalVariableDetails(index) return format for table format
---@return unknown none
function model.setGlobalVariableDetails(index, params) end

--- Set the current Model information
--- @since 2.0.6
---@param value unknown model information data, see model.getInfo()
function model.setInfo(value) end

--- Set Logical Switch parameters
--- @since 2.0.0
---@param switch integer logical switch number (use 0 for LS1)
---@param value table see model.getLogicalSwitch() for table format
function model.setLogicalSwitch(switch, value) end

--- Set RF module parameters
--- @since 2.2.0
---@param index integer module index (0 for internal, 1 for external)
---@param value unknown module parameters, see model.getModule()
function model.setModule(index, value) end

--- Set servo parameters
--- @since 2.0.0
---@param index integer channel number (use 0 for CH1)
---@param value table servo parameters, see model.getOutput() for table format
function model.setOutput(index, value) end

--- Set heli swash parameters
--- @since 2.8.0
---@param params table swash ring parameters, see model.getSwashRing() for table format
function model.setSwashRing(params) end

--- Set model timer parameters
--- @since 2.0.0
---@param timer integer timer index (0 for Timer 1)
---@param value unknown timer parameters, see model.getTimer()
function model.setTimer(timer, value) end
