// This is an auto-generated file. Do not edit directly!

/** @noSelfInFile */

import type { EntityType, EquipmentType, ItemType, PrototypeType } from "factorio:prototype"

import type { ActiveMods, CustomInputName } from "factorio:common"

/**
 * @noResolution
 */
declare module "factorio:runtime" {
  /**
   * Collection of settings for overriding default ai behavior.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html Online documentation}
   */
  export interface LuaAISettings {
    /**
     * If enabled, units that repeatedly fail to succeed at commands will be destroyed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#allow_destroy_when_commands_fail Online documentation}
     */
    allow_destroy_when_commands_fail: boolean
    /**
     * If enabled, units that have nothing else to do will attempt to return to a spawner.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#allow_try_return_to_spawner Online documentation}
     */
    allow_try_return_to_spawner: boolean
    /**
     * If enabled, units will try to separate themselves from nearby friendly units.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#do_separation Online documentation}
     */
    do_separation: boolean
    /**
     * Defines how coarse the pathfinder's grid is, where smaller values mean a coarser grid. Defaults to `0`, which equals a resolution of `1x1` tiles, centered on tile centers. Values range from `-8` to `8` inclusive, where each integer increment doubles/halves the resolution. So, a resolution of `-8` equals a grid of `256x256` tiles, and a resolution of `8` equals `1/256` of a tile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#path_resolution_modifier Online documentation}
     */
    path_resolution_modifier: int8
    /**
     * The number of "slots" that the unit takes up in a unit group. Must be greater than 0.
     *
     * If this value is changed after the unit has been added to a group, the exact behavior is undefined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#size_in_group Online documentation}
     */
    size_in_group: float
    /**
     * If enabled, the unit will join attack groups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAISettings.html#join_attacks Online documentation}
     */
    join_attacks: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAISettings"
  }
  /**
   * Control behavior for accumulators.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAccumulatorControlBehavior.html Online documentation}
   */
  export interface LuaAccumulatorControlBehavior extends LuaControlBehavior {
    /**
     * `true` if this accumulator sends its charge percent to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAccumulatorControlBehavior.html#read_charge Online documentation}
     */
    read_charge: boolean
    get output_signal(): SignalID | nil
    set output_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAccumulatorControlBehavior"
  }
  /**
   * Prototype of a achievement.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAchievementPrototype.html Online documentation}
   */
  export interface LuaAchievementPrototype extends LuaPrototypeBase {
    readonly allowed_without_fight: boolean
    readonly objective_condition?: string
    readonly amount?: uint32
    readonly limited_to_one_game?: boolean
    readonly within?: uint32
    readonly to_build?: LuaEntityPrototype
    readonly surface?: string
    readonly count?: uint32
    readonly more_than_manually?: boolean
    readonly dont_build?: LuaEntityPrototype[]
    readonly excluded?: LuaEntityPrototype[]
    readonly included?: LuaEntityPrototype[]
    readonly dont_research?: LuaItemPrototype[]
    readonly research_with?: LuaItemPrototype[]
    readonly last_hour_only?: boolean
    readonly minimum_energy_produced?: double
    readonly armor?: LuaItemPrototype
    readonly alternative_armor?: LuaItemPrototype
    readonly limit_quality?: LuaQualityPrototype
    readonly damage_type?: LuaDamagePrototype
    readonly damage_dealer?: LuaEntityPrototype[]
    readonly to_kill?: LuaEntityPrototype[]
    readonly personally?: boolean
    readonly in_vehicle?: boolean
    readonly type_to_kill?: string
    readonly not_to_kill?: LuaEntityPrototype
    readonly type_not_to_kill?: string
    readonly module?: LuaItemPrototype[]
    readonly limit_equip_quality?: LuaQualityPrototype
    readonly minimum_damage?: float
    readonly should_survive?: boolean
    readonly type_of_dealer?: string
    readonly item_product?: LuaItemPrototype
    readonly quality?: LuaQualityPrototype
    readonly fluid_product?: LuaFluidPrototype
    readonly technology?: LuaTechnologyPrototype
    readonly research_all?: boolean
    readonly science_pack?: LuaItemPrototype
    readonly ammo_type?: LuaItemPrototype
    readonly minimum_distance?: double
    readonly to_use?: LuaItemPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAchievementPrototype"
  }
  /**
   * Prototype of an Active Trigger.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html Online documentation}
   */
  export interface LuaActiveTriggerPrototype extends LuaPrototypeBase {
    /**
     * The max number of jumps per trigger. default = 5.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#max_jumps Online documentation}
     */
    readonly max_jumps: uint32
    /**
     * The max length of jumps. default = 5.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#max_range_per_jump Online documentation}
     */
    readonly max_range_per_jump: double
    /**
     * The max distance jumps are allowed to travel away from the original target. default = infinity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#max_range Online documentation}
     */
    readonly max_range: double
    /**
     * The tick delay between each jump. 0 = all jumps instantaneous. default = 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#jump_delay_ticks Online documentation}
     */
    readonly jump_delay_ticks: uint32
    /**
     * The chance that a new fork will spawn after each jump [0,1]. default = 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#fork_chance Online documentation}
     */
    readonly fork_chance: double
    /**
     * The maximum number of forks that can spawn from a single jump. default = 1.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#max_forks_per_jump Online documentation}
     */
    readonly max_forks_per_jump: uint32
    /**
     * maximum number of forks allowed to spawn for the entire chain. default = infinity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaActiveTriggerPrototype.html#max_forks Online documentation}
     */
    readonly max_forks: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaActiveTriggerPrototype"
  }
  /**
   * Control behavior for agricultural tower
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAgriculturalTowerControlBehavior.html Online documentation}
   */
  export interface LuaAgriculturalTowerControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the agricultural tower reads seeds and harvested plants.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAgriculturalTowerControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAgriculturalTowerControlBehavior"
  }
  /**
   * Airborne pollutant prototype.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAirbornePollutantPrototype.html Online documentation}
   */
  export interface LuaAirbornePollutantPrototype extends LuaPrototypeBase {
    readonly chart_color: Color
    readonly affects_evolution: boolean
    readonly damages_trees: boolean
    readonly localised_name_with_amount_key: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAirbornePollutantPrototype"
  }
  /**
   * Prototype of a ammo category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAmmoCategoryPrototype.html Online documentation}
   */
  export interface LuaAmmoCategoryPrototype extends LuaPrototypeBase {
    readonly bonus_gui_order: string
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAmmoCategoryPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaAmmoCategoryPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAmmoCategoryPrototype"
  }
  /**
   * Control behavior for arithmetic combinators.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaArithmeticCombinatorControlBehavior.html Online documentation}
   */
  export interface LuaArithmeticCombinatorControlBehavior extends LuaCombinatorControlBehavior {
    /**
     * This arithmetic combinator's parameters. Writing `nil` clears the combinator's parameters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaArithmeticCombinatorControlBehavior.html#parameters Online documentation}
     */
    get parameters(): ArithmeticCombinatorParameters | nil
    set parameters(value: ArithmeticCombinatorParametersWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaArithmeticCombinatorControlBehavior"
  }
  /**
   * Control behavior for artillery turrets.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaArtilleryTurretControlBehavior.html Online documentation}
   */
  export interface LuaArtilleryTurretControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the turret will send the ammunition or fluid it contains to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaArtilleryTurretControlBehavior.html#read_ammo Online documentation}
     */
    read_ammo: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaArtilleryTurretControlBehavior"
  }
  /**
   * Control behavior for assembling machines.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html Online documentation}
   */
  export interface LuaAssemblingMachineControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the assembling machine sets its recipe from the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_set_recipe Online documentation}
     */
    circuit_set_recipe: boolean
    /**
     * `true` if the assembling machine reads its ingredients contents, product contents, materials in crafting and trash inventories.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_read_contents Online documentation}
     */
    circuit_read_contents: boolean
    /**
     * `true` if the read contents should include items in crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#include_in_crafting Online documentation}
     */
    include_in_crafting: boolean
    /**
     * `true` if the read contents should include fuel (content of energy source)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#include_fuel Online documentation}
     */
    include_fuel: boolean
    /**
     * `true` if the assembling machine outputs ingredients of current recipe as a signals to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_read_ingredients Online documentation}
     */
    circuit_read_ingredients: boolean
    /**
     * `true` if the the assembling machine sends a signal when the recipe finishes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_read_recipe_finished Online documentation}
     */
    circuit_read_recipe_finished: boolean
    /**
     * The signal sent when the assembling machine finishes a recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_recipe_finished_signal Online documentation}
     */
    get circuit_recipe_finished_signal(): SignalID | nil
    set circuit_recipe_finished_signal(value: SignalIDWrite | nil)
    /**
     * `true` if the the assembling machine sends a signal when it is working.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_read_working Online documentation}
     */
    circuit_read_working: boolean
    /**
     * The signal sent when the assembling machine is working.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAssemblingMachineControlBehavior.html#circuit_working_signal Online documentation}
     */
    get circuit_working_signal(): SignalID | nil
    set circuit_working_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAssemblingMachineControlBehavior"
  }
  /**
   * Prototype of an asteroid chunk.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidChunkPrototype.html Online documentation}
   */
  export interface LuaAsteroidChunkPrototype extends LuaPrototypeBase {
    readonly mineable_properties: MineableProperties
    readonly hide_from_signal_gui: boolean
    readonly item_signal_alias?: LuaItemPrototype
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidChunkPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaAsteroidChunkPrototype
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidChunkPrototype.html#dying_trigger_effect Online documentation}
     */
    readonly dying_trigger_effect?: TriggerEffectItem[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAsteroidChunkPrototype"
  }
  /**
   * Control behavior for asteroid collectors.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidCollectorControlBehavior.html Online documentation}
   */
  export interface LuaAsteroidCollectorControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if this asteroid collector has filters set from circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidCollectorControlBehavior.html#set_filter Online documentation}
     */
    set_filter: boolean
    /**
     * `true` if this asteroid collector reads its content and sends it to a circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidCollectorControlBehavior.html#read_content Online documentation}
     */
    read_content: boolean
    /**
     * `true` if read contents should include content of hands (items that were captured but are not yet in the asteroid collector's main inventory).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAsteroidCollectorControlBehavior.html#include_hands Online documentation}
     */
    include_hands: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAsteroidCollectorControlBehavior"
  }
  /**
   * Prototype of an autoplace control.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAutoplaceControlPrototype.html Online documentation}
   */
  export interface LuaAutoplaceControlPrototype extends LuaPrototypeBase {
    readonly richness: boolean
    readonly can_be_disabled: boolean
    /**
     * Category name of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaAutoplaceControlPrototype.html#category Online documentation}
     */
    readonly category: "resource" | "terrain" | "cliff" | "enemy"
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaAutoplaceControlPrototype"
  }
  /**
   * Entry point for registering event handlers. It is accessible through the global object named `script`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html Online documentation}
   * @noSelf
   */
  export interface LuaBootstrap {
    /**
     * Register a function to be run on mod initialization.
     *
     * This is only called when a new save game is created or when a save file is loaded that previously didn't contain the mod. During it, the mod gets the chance to set up initial values that it will use for its lifetime. It has full access to {@link LuaGameScript} and the {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/storage.html storage} table and can change anything about them that it deems appropriate. No other events will be raised for the mod until it has finished this step.
     *
     * For more context, refer to the {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/data-lifecycle.html Data Lifecycle} page.
     * @param handler The handler for this event. Passing `nil` will unregister it.
     * @example
     * -- Initialize a `players` table in `storage` for later use
     * script.on_init(function()
     *   storage.players = {}
     * end)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#on_init Online documentation}
     */
    on_init(handler: (() => void) | nil): void
    /**
     * Register a function to be run on save load. This is only called for mods that have been part of the save previously, or for players connecting to a running multiplayer session.
     *
     * It gives the mod the opportunity to rectify potential differences in local state introduced by the save/load cycle. Doing anything other than the following three will lead to desyncs, breaking multiplayer and replay functionality. Access to {@link LuaGameScript} is not available. The {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/storage.html storage} table can be accessed and is safe to read from, but not write to, as doing so will lead to an error.
     *
     * The only legitimate uses of this event are these:
     *
     * - Re-setup {@linkplain https://www.lua.org/pil/13.html metatables} as they are not persisted through the save/load cycle.
     *
     * - Re-setup conditional event handlers, meaning subscribing to an event only when some condition is met to save processing time.
     *
     * - Create local references to data stored in the {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/storage.html storage} table.
     *
     * For all other purposes, {@link LuaBootstrap#on_init LuaBootstrap::on_init}, {@link LuaBootstrap#on_configuration_changed LuaBootstrap::on_configuration_changed} or {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/migrations.html migrations} should be used instead.
     *
     * For more context, refer to the {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/data-lifecycle.html Data Lifecycle} page.
     * @param handler The handler for this event. Passing `nil` will unregister it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#on_load Online documentation}
     */
    on_load(handler: (() => void) | nil): void
    /**
     * Register a function to be run when mod configuration changes.
     *
     * This is called when the game version or any mod version changed, when any mod was added or removed, when a startup setting has changed, when any prototypes have been added or removed, or when a migration was applied. It allows the mod to make any changes it deems appropriate to both the data structures in its {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/storage.html storage} table or to the game state through {@link LuaGameScript}.
     *
     * For more context, refer to the {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/data-lifecycle.html Data Lifecycle} page.
     * @param handler The handler for this event. Passing `nil` will unregister it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#on_configuration_changed Online documentation}
     */
    on_configuration_changed(handler: ((arg1: ConfigurationChangedData) => void) | nil): void
    /**
     * Register a handler to run on the specified event(s). Each mod can only register once for every event, as any additional registration will overwrite the previous one. This holds true even if different filters are used for subsequent registrations.
     * @param event The event(s) or custom-input to invoke the handler on.
     * @param handler The handler for this event. Passing `nil` will unregister it.
     * @param filters The filters for this event. Can only be used when registering for individual events.
     * @example
     * -- Register for the on_tick event to print the current tick to console each tick
     * script.on_event(defines.events.on_tick,
     * function(event) game.print(event.tick) end)
     * @example
     * -- Register for the on_built_entity event, limiting it to only be received when a `"fast-inserter"` is built
     * script.on_event(defines.events.on_built_entity,
     * function(event) game.print("Gotta go fast!") end,
     * {{filter = "name", name = "fast-inserter"}})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#on_event Online documentation}
     */
    on_event<E extends EventId<any, table>>(
      event: E,
      handler: ((data: E["_eventData"]) => void) | nil,
      filters?: E["_filter"][],
    ): void
    on_event<E extends EventId<any>>(event: E | readonly E[], f: ((data: E["_eventData"]) => void) | nil): void
    on_event(event: CustomInputName | LuaCustomInputPrototype, f: ((data: CustomInputEvent) => void) | nil): void
    on_event<E extends LuaEventType>(event: E, f: ((data: EventTypeOf<E>) => void) | nil): void
    /**
     * Register a handler to run every nth-tick(s). When the game is on tick 0 it will trigger all registered handlers.
     * @param tick The nth-tick(s) to invoke the handler on. Passing `nil` as the only parameter will unregister all nth-tick handlers.
     * @param handler The handler to run. Passing `nil` will unregister it for the provided nth-tick(s).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#on_nth_tick Online documentation}
     */
    on_nth_tick(tick: uint32 | readonly uint32[] | nil, handler: ((arg1: NthTickEventData) => void) | nil): void
    /**
     * Registers an object so that after it's destroyed, {@link OnObjectDestroyedEvent on_object_destroyed} is called.
     *
     * Once an object is registered, it stays registered until it is actually destroyed, even through save/load cycles. The registration is global across all mods, meaning once one mod registers an object, all mods listening to {@link OnObjectDestroyedEvent on_object_destroyed} will receive the event when it is destroyed. Registering the same object multiple times will still only fire the destruction event once, and will return the same registration number.
     *
     * Depending on when a given object is destroyed, {@link OnObjectDestroyedEvent on_object_destroyed} will either be fired at the end of the current tick or at the end of the next tick.
     * @param object The object to register.
     * @returns The registration number. It is used to identify the object in the {@link OnObjectDestroyedEvent on_object_destroyed} event.
     * @returns The {@link RegistrationTarget useful identifier} of the object if it has one. This identifier is specific to the object type, for example for trains it is the value {@link LuaTrain#id LuaTrain::id}.
     * @returns Type of the target object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#register_on_object_destroyed Online documentation}
     */
    register_on_object_destroyed(object: RegistrationTarget): LuaMultiReturn<[uint64, uint64, defines.target_type]>
    /**
     * Register a metatable to have linkage recorded and restored when saving/loading.
     *
     * The metatable itself will not be saved. Instead, only the linkage to a registered metatable is saved, and the metatable registered under that name will be used when loading the table.
     *
     * `register_metatable()` can not be used in the console, in event listeners or during a `remote.call()`.
     *
     * The metatable first needs to be defined in the mod's root scope, then registered using this method. From then on, it will be properly restored for tables in {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/storage.html storage}.
     *
     * ```
     * local metatable =
     * {
     *   __index = function(key)
     *     return "no value for key " .. key
     *   end
     * }
     * script.register_metatable("my_metatable", metatable)
     * ```
     *
     * This previously defined `metatable` can then be set on any table as usual:
     *
     * ```
     * local table = {key="value"}
     * setmetatable(table, metatable)
     * ```
     * @param name The name of this metatable. Names must be unique per mod.
     * @param metatable The metatable to register.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#register_metatable Online documentation}
     */
    register_metatable(name: string, metatable: table): void
    /**
     * Generate a new, unique event ID that can be used to raise custom events with {@link LuaBootstrap#raise_event LuaBootstrap::raise_event}.
     * @returns The newly generated event ID. This will be a new value that does not correspond to any named entry in defines.events.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#generate_event_name Online documentation}
     */
    generate_event_name<T extends table>(): CustomEventId<T>
    /**
     * Converts LuaEventType into related value of defines.events. Value will be provided also if event was not given a constant inside of defines.events.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#get_event_id Online documentation}
     */
    get_event_id<E extends EventId<any, any>>(event: E): E
    get_event_id<E extends LuaEventType>(event: E): EventId<EventTypeOf<E>>
    /**
     * Find the event handler for an event.
     * @param event The event identifier to get a handler for.
     * @returns Reference to the function currently registered as the handler, if it was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#get_event_handler Online documentation}
     */
    get_event_handler<E extends EventId<any>>(event: E): (data: E["_eventData"]) => void | nil
    get_event_handler(event: CustomInputName | LuaCustomInputPrototype): (data: CustomInputEvent) => void | nil
    get_event_handler<E extends LuaEventType>(event: E): (data: EventTypeOf<E>) => void | nil
    /**
     * Gets the mod event order as a string.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#get_event_order Online documentation}
     */
    get_event_order(): string
    /**
     * Sets the filters for the given event. The filters are only retained when set after the actual event registration, because registering for an event with different or no filters will overwrite previously set ones.
     *
     * Limit the {@link OnMarkedForDeconstructionEvent on_marked_for_deconstruction} event to only be received when a non-ghost entity is marked for deconstruction.
     *
     * ```
     * script.set_event_filter(defines.events.on_marked_for_deconstruction, {{filter = "ghost", invert = true}})
     * ```
     *
     * Limit the {@link OnBuiltEntityEvent on_built_entity} event to only be received when either a `unit` or a `unit-spawner` is built.
     *
     * ```
     * script.set_event_filter(defines.events.on_built_entity, {{filter = "type", type = "unit"}, {filter = "type", type = "unit-spawner"}})
     * ```
     *
     * Limit the {@link OnEntityDamagedEvent on_entity_damaged} event to only be received when a `rail` is damaged by an `acid` attack.
     *
     * ```
     * script.set_event_filter(defines.events.on_entity_damaged, {{filter = "rail"}, {filter = "damage-type", type = "acid", mode = "and"}})
     * ```
     * @param event ID of the event to filter.
     * @param filters The filters or `nil` to clear them.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#set_event_filter Online documentation}
     */
    set_event_filter<E extends EventId<any, table>>(event: E, filters: E["_filter"][] | nil): void
    /**
     * Gets the filters for the given event.
     * @param event ID of the event to get.
     * @returns The filters or `nil` if none are defined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#get_event_filter Online documentation}
     */
    get_event_filter<E extends EventId<any, table>>(event: E): E["_filter"][] | nil
    /**
     * Raise an event. Only events generated with {@link LuaBootstrap#generate_event_name LuaBootstrap::generate_event_name} and the following can be raised:
     *
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_event > Events that can be raised manually:}
     * @param event ID or name of the event to raise.
     * @param data Table with extra data that will be passed to the event handler. Any invalid LuaObjects will silently stop the event from being raised.
     * @example
     * -- Raise the on_console_chat event with the desired message 'from' the first player
     * local data = {player_index = 1, message = "Hello friends!"}
     * script.raise_event(defines.events.on_console_chat, data)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_event Online documentation}
     */
    raise_event<E extends RaiseableEvents | CustomEventId<any>>(
      event: E,
      data: Omit<E["_eventData"], keyof EventData>,
    ): void
    /**
     * ## Raised events
     * - {@link OnConsoleChatEvent on_console_chat} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_console_chat Online documentation}
     */
    raise_console_chat(params: {
      /**
       * The player doing the chatting.
       */
      readonly player_index: PlayerIndex
      /**
       * The chat message to send.
       */
      readonly message: string
    }): void
    /**
     * ## Raised events
     * - {@link OnPlayerCraftedItemEvent on_player_crafted_item} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_player_crafted_item Online documentation}
     */
    raise_player_crafted_item(params: {
      /**
       * The item that has been crafted.
       */
      readonly item_stack: LuaItemStack
      /**
       * The player doing the crafting.
       */
      readonly player_index: PlayerIndex
      /**
       * The recipe used to craft this item.
       */
      readonly recipe: RecipeID
    }): void
    /**
     * ## Raised events
     * - {@link OnPlayerFastTransferredEvent on_player_fast_transferred} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_player_fast_transferred Online documentation}
     */
    raise_player_fast_transferred(params: {
      /**
       * The player transferred from or to.
       */
      readonly player_index: PlayerIndex
      /**
       * The entity transferred from or to.
       */
      readonly entity: LuaEntity
      /**
       * Whether the transfer was from player to entity. If `false`, the transfer was from entity to player.
       */
      readonly from_player: boolean
      /**
       * Whether the transfer was a split action (half stack).
       */
      readonly is_split: boolean
    }): void
    /**
     * ## Raised events
     * - {@link OnBiterBaseBuiltEvent on_biter_base_built} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_biter_base_built Online documentation}
     */
    raise_biter_base_built(params: {
      /**
       * The entity that was built.
       */
      readonly entity: LuaEntity
    }): void
    /**
     * ## Raised events
     * - {@link OnMarketItemPurchasedEvent on_market_item_purchased} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_market_item_purchased Online documentation}
     */
    raise_market_item_purchased(params: {
      /**
       * The player who did the purchasing.
       */
      readonly player_index: PlayerIndex
      /**
       * The market entity.
       */
      readonly market: LuaEntity
      /**
       * The index of the offer purchased.
       */
      readonly offer_index: uint32
      /**
       * The amount of offers purchased.
       */
      readonly count: uint32
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedBuiltEvent script_raised_built} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_built Online documentation}
     */
    raise_script_built(params: {
      /**
       * The entity that has been built.
       */
      readonly entity: LuaEntity
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_destroy Online documentation}
     */
    raise_script_destroy(params: {
      /**
       * The entity that was destroyed.
       */
      readonly entity: LuaEntity
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedReviveEvent script_raised_revive} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_revive Online documentation}
     */
    raise_script_revive(params: {
      /**
       * The entity that was revived.
       */
      readonly entity: LuaEntity
      /**
       * The tags associated with this entity, if any.
       */
      readonly tags?: Tags
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedTeleportedEvent script_raised_teleported} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_teleported Online documentation}
     */
    raise_script_teleported(params: {
      /**
       * The entity that was teleported.
       */
      readonly entity: LuaEntity
      /**
       * The entity's surface before the teleportation.
       */
      readonly old_surface_index: uint8
      /**
       * The entity's position before the teleportation.
       */
      readonly old_position: MapPosition | MapPositionArray
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_set_tiles Online documentation}
     */
    raise_script_set_tiles(params: {
      /**
       * The surface whose tiles have been changed.
       */
      readonly surface_index: SurfaceIndex
      /**
       * The tiles that have been changed.
       */
      readonly tiles: readonly TileWrite[]
    }): void
    /**
     * ## Raised events
     * - {@link ScriptRaisedDestroySegmentedUnitEvent script_raised_destroy_segmented_unit} _instantly_ Raised with the provided arguments.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#raise_script_destroy_segmented_unit Online documentation}
     */
    raise_script_destroy_segmented_unit(params: {
      /**
       * The segmented unit that was destroyed.
       */
      readonly segmented_unit: LuaSegmentedUnit
    }): void
    /**
     * The name of the mod from the environment this is used in.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#mod_name Online documentation}
     */
    readonly mod_name: string
    /**
     * Information about the currently running scenario/campaign/tutorial.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#level Online documentation}
     */
    readonly level: {
      /**
       * Is this level a simulation? (The main menu and 'Tips and tricks' use simulations)
       */
      readonly is_simulation?: boolean
      /**
       * Is this level a tutorial?
       */
      readonly is_tutorial?: boolean
      /**
       * The campaign name if any.
       */
      readonly campaign_name?: string
      /**
       * The level name.
       */
      readonly level_name: string
      /**
       * The mod name if any.
       */
      readonly mod_name?: string
    }
    /**
     * A dictionary listing the names of all currently active mods and mapping them to their version.
     * @example
     * -- This will print the names and versions of all active mods to the console.
     * for name, version in pairs(script.active_mods) do
     *   game.print(name .. " version " .. version)
     * end
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#active_mods Online documentation}
     */
    readonly active_mods: ActiveMods
    /**
     * A dictionary of feature flags mapping to whether they are enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBootstrap.html#feature_flags Online documentation}
     */
    readonly feature_flags: {
      readonly quality: boolean
      readonly rail_bridges: boolean
      readonly space_travel: boolean
      readonly spoiling: boolean
      readonly freezing: boolean
      readonly segmented_units: boolean
      readonly expansion_shaders: boolean
    }
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaBootstrap"
  }
  /**
   * A reference to the burner energy source owned by a specific {@link LuaEntity} or {@link LuaEquipment}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html Online documentation}
   */
  export interface LuaBurner {
    /**
     * The owner of this burner energy source
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#owner Online documentation}
     */
    readonly owner: LuaEntity | LuaEquipment
    /**
     * The fuel inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#inventory Online documentation}
     */
    readonly inventory: LuaInventory
    /**
     * The burnt result inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#burnt_result_inventory Online documentation}
     */
    readonly burnt_result_inventory: LuaInventory
    /**
     * The current heat (energy) stored in this burner.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#heat Online documentation}
     */
    heat: double
    /**
     * The maximum heat (maximum energy) that this burner can store.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#heat_capacity Online documentation}
     */
    readonly heat_capacity: double
    /**
     * The amount of energy left in the currently-burning fuel item.
     *
     * Writing to this will silently do nothing if there's no {@link LuaBurner#currently_burning LuaBurner::currently_burning} set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#remaining_burning_fuel Online documentation}
     */
    remaining_burning_fuel: double
    /**
     * The currently burning item. Writing `nil` will void the currently burning item without producing a {@link LuaBurner#burnt_result LuaBurner::burnt_result}.
     *
     * Writing to this automatically handles correcting {@link LuaBurner#remaining_burning_fuel LuaBurner::remaining_burning_fuel}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#currently_burning Online documentation}
     */
    get currently_burning(): ItemIDAndQualityIDPair | nil
    set currently_burning(value: ItemWithQualityID | nil)
    /**
     * The fuel categories this burner uses.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurner.html#fuel_categories Online documentation}
     */
    readonly fuel_categories: Record<string, true>
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaBurner"
  }
  /**
   * Prototype of a burner energy source.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerPrototype.html Online documentation}
   */
  export interface LuaBurnerPrototype {
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. Multiplying it by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerPrototype.html#emissions_per_joule Online documentation}
     */
    readonly emissions_per_joule: Record<string, double>
    readonly render_no_network_icon: boolean
    readonly render_no_power_icon: boolean
    readonly effectivity: double
    readonly fuel_inventory_size: uint32
    readonly burnt_inventory_size: uint32
    /**
     * The smoke sources for this burner prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerPrototype.html#smoke Online documentation}
     */
    readonly smoke?: SmokeSource[]
    /**
     * The light flicker definition for this burner prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerPrototype.html#light_flicker Online documentation}
     */
    readonly light_flicker?: {
      readonly minimum_intensity: float
      readonly maximum_intensity: float
      readonly derivation_change_frequency: float
      readonly derivation_change_deviation: float
      readonly border_fix_speed: float
      readonly minimum_light_size: float
      readonly light_intensity_to_size_coefficient: float
      readonly color: Color
    }
    /**
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerPrototype.html#fuel_categories Online documentation}
     */
    readonly fuel_categories: Record<string, true>
    readonly initial_fuel?: LuaItemPrototype
    readonly initial_fuel_percent: double
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaBurnerPrototype"
  }
  /**
   * Description of burner usage.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaBurnerUsagePrototype.html Online documentation}
   */
  export interface LuaBurnerUsagePrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaBurnerUsagePrototype"
  }
  /**
   * A cargo hatch.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCargoHatch.html Online documentation}
   * @noSelf
   */
  export interface LuaCargoHatch {
    /**
     * Creates a cargo pod for output at the owning entity hatch location.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCargoHatch.html#create_cargo_pod Online documentation}
     */
    create_cargo_pod(): LuaEntity
    readonly owner: LuaEntity
    readonly busy: boolean
    readonly reserved: boolean
    readonly is_input_compatible: boolean
    readonly is_output_compatible: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCargoHatch"
  }
  /**
   * Control behavior for cargo landing pad.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCargoLandingPadControlBehavior.html Online documentation}
   */
  export interface LuaCargoLandingPadControlBehavior extends LuaControlBehavior {
    /**
     * The circuit mode of operations for the cargo landing pad.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCargoLandingPadControlBehavior.html#circuit_exclusive_mode_of_operation Online documentation}
     */
    circuit_exclusive_mode_of_operation: defines.control_behavior.cargo_landing_pad.exclusive_mode
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCargoLandingPadControlBehavior"
  }
  /**
   * A chunk iterator can be used for iterating chunks coordinates of a surface.
   *
   * The returned type is a {@link ChunkPositionAndArea} containing the chunk coordinates and its area.
   * @example
   * for chunk in some_surface.get_chunks() do
   *   game.player.print("x: " .. chunk.x .. ", y: " .. chunk.y)
   *   game.player.print("area: " .. serpent.line(chunk.area))
   * end
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaChunkIterator.html Online documentation}
   */
  export interface LuaChunkIterator extends LuaIterable<ChunkPositionAndArea> {
    /**
     * Gets the next chunk position if the iterator is not yet done and increments the it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaChunkIterator.html#call_operator Online documentation}
     */
    (): ChunkPositionAndArea | nil
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaChunkIterator"
  }
  /**
   * A circuit network associated with a given entity, connector, and wire type.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html Online documentation}
   * @noSelf
   */
  export interface LuaCircuitNetwork {
    /**
     * @param signal The signal to read.
     * @returns The current value of the signal.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#get_signal Online documentation}
     */
    get_signal(signal: SignalIDWrite): int32
    /**
     * The entity this circuit network reference is associated with.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#entity Online documentation}
     */
    readonly entity: LuaEntity
    /**
     * The wire type this network is associated with.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#wire_type Online documentation}
     */
    readonly wire_type: defines.wire_type
    /**
     * Wire connector ID on associated entity this network was gotten from.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#wire_connector_id Online documentation}
     */
    readonly wire_connector_id: defines.wire_connector_id
    /**
     * The circuit network signals last tick. `nil` if there were no signals last tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#signals Online documentation}
     */
    readonly signals?: Signal[]
    /**
     * The circuit networks ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#network_id Online documentation}
     */
    readonly network_id: uint32
    /**
     * The number of circuits connected to this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCircuitNetwork.html#connected_circuit_count Online documentation}
     */
    readonly connected_circuit_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCircuitNetwork"
  }
  /**
   * Prototype of a collision layer.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCollisionLayerPrototype.html Online documentation}
   */
  export interface LuaCollisionLayerPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCollisionLayerPrototype"
  }
  /**
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCombinatorControlBehavior.html Online documentation}
   * @noSelf
   */
  export interface LuaCombinatorControlBehavior extends LuaControlBehavior {
    /**
     * Gets the value of a specific signal sent by this combinator behavior last tick or `nil` if the signal didn't exist.
     * @param signal The signal to get
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCombinatorControlBehavior.html#get_signal_last_tick Online documentation}
     */
    get_signal_last_tick(signal: SignalIDWrite): int32 | nil
    /**
     * The circuit network signals sent by this combinator last tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCombinatorControlBehavior.html#signals_last_tick Online documentation}
     */
    readonly signals_last_tick: Signal[]
  }
  /**
   * Allows for the registration of custom console commands through the global object named `commands`. Similarly to {@link LuaBootstrap#on_event event subscriptions}, these don't persist through a save-and-load cycle.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandProcessor.html Online documentation}
   * @noSelf
   */
  export interface LuaCommandProcessor {
    /**
     * Add a custom console command.
     *
     * Trying to add a command with the `name` of a game command or the name of a custom command that is already in use will result in an error.
     *
     * This example command will register a custom event called `print_tick` that prints the current tick to either the player issuing the command or to everyone on the server, depending on the command parameter:
     *
     * ```
     * commands.add_command("print_tick", nil, function(command)
     *   if command.player_index ~= nil and command.parameter == "me" then
     *     game.get_player(command.player_index).print(command.tick)
     *   else
     *     game.print(command.tick)
     *   end
     * end)
     * ```
     *
     * This shows the usage of the table that gets passed to any function handling a custom command. This specific example makes use of the `tick` and the optional `player_index` and `parameter` fields. The user is supposed to either call it without any parameter (`"/print_tick"`) or with the `"me"` parameter (`"/print_tick me"`).
     * @param name The desired name of the command (case sensitive).
     * @param help The localised help message. It will be shown to players using the `/help` command.
     * @param _function The function that will be called when this command is invoked.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandProcessor.html#add_command Online documentation}
     */
    add_command(name: string, help: LocalisedString, _function: (arg1: CustomCommandData) => void): void
    /**
     * Remove a custom console command.
     * @param name The name of the command to remove (case sensitive).
     * @returns Whether the command was successfully removed. Returns `false` if the command didn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandProcessor.html#remove_command Online documentation}
     */
    remove_command(name: string): boolean
    /**
     * Lists the custom commands registered by scripts through `LuaCommandProcessor`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandProcessor.html#commands Online documentation}
     */
    readonly commands: Record<string, LocalisedString>
    /**
     * Lists the built-in commands of the core game. The {@linkplain https://wiki.factorio.com/Console wiki} has an overview of these.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandProcessor.html#game_commands Online documentation}
     */
    readonly game_commands: Record<string, LocalisedString>
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCommandProcessor"
  }
  /**
   * AI object which can be ordered commands. This can represent a UnitGroup (a set of multiple commandables) or can be a single Unit or SpiderUnit.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html Online documentation}
   * @noSelf
   */
  export interface LuaCommandable {
    /**
     * Destroys this commandable. If it is a unit group, members will not be destroyed, they will be merely unlinked from the group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Give this commandable a command.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_command Online documentation}
     */
    set_command(command: CommandWrite): void
    /**
     * Give this commandable a distraction command.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_distraction_command Online documentation}
     */
    set_distraction_command(command: CommandWrite): void
    /**
     * Release the commandable from the spawner. This allows the spawner to continue spawning additional units.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#release_from_spawner Online documentation}
     */
    release_from_spawner(): void
    /**
     * Adds a member to this UnitGroup. Has the same effect as setting defines.command.group command on the member to join the group.
     *
     * The member must have the same force be on the same surface as the group.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#add_member Online documentation}
     */
    add_member(member: LuaCommandable | LuaEntity): void
    /**
     * Make this group autonomous. Autonomous groups will automatically attack polluted areas. Autonomous groups aren't considered to be {@link LuaCommandable#is_script_driven script-driven}.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_autonomous Online documentation}
     */
    set_autonomous(): void
    /**
     * Make the group start moving even if some of its members haven't yet arrived.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#start_moving Online documentation}
     */
    start_moving(): void
    /**
     * If this commandable is UnitGroup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_unit_group Online documentation}
     */
    readonly is_unit_group: boolean
    /**
     * If this commandable is Entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_entity Online documentation}
     */
    readonly is_entity: boolean
    /**
     * Surface this commandable is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Current position of this commandable.
     *
     * If commandable is a UnitGroup, this can have different meanings depending on the group state. When the group is gathering, the position is the place of gathering. When the group is moving, the position is the expected position of its members along the path. When the group is attacking, it is the average position of its members.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#position Online documentation}
     */
    readonly position: MapPosition
    /**
     * The force of this commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * Unique identifier of this commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#unique_id Online documentation}
     */
    readonly unique_id: uint32
    /**
     * If this commandable has a command assigned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#has_command Online documentation}
     */
    readonly has_command: boolean
    /**
     * The command of this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#command Online documentation}
     */
    readonly command?: Command
    /**
     * The distraction command of this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#distraction_command Online documentation}
     */
    readonly distraction_command?: Command
    /**
     * The unit group this commandable is a member of, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#parent_group Online documentation}
     */
    readonly parent_group?: LuaCommandable
    /**
     * The spawner associated with this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#spawner Online documentation}
     */
    readonly spawner?: LuaEntity
    /**
     * Current moving state of the commandable's behavior
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#moving_state Online documentation}
     */
    readonly moving_state: defines.moving_state
    /**
     * Whether this group is gathering, moving or attacking.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#state Online documentation}
     */
    readonly state: defines.group_state
    /**
     * All entity members of this unit group, recursive (if unit group is member of this unit group, its members will be returned here).
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#members Online documentation}
     */
    readonly members: LuaEntity[]
    /**
     * Non recursively returns all members of this unit group.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#commandable_members Online documentation}
     */
    readonly commandable_members: LuaCommandable[]
    /**
     * Whether this unit group is controlled by a script or by the game engine. This can be changed using {@link LuaCommandable#set_autonomous LuaCommandable::set_autonomous}. Units created by {@link LuaSurface#create_unit_group LuaSurface::create_unit_group} are considered script-driven.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_script_driven Online documentation}
     */
    readonly is_script_driven: boolean
    /**
     * Returns entity object for this commandable.
     *
     * _Can only be used if this is Entity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#entity Online documentation}
     */
    readonly entity: LuaEntity
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCommandable"
  }
  /**
   * @noSelf
   */
  export interface BaseCommandable {
    /**
     * Destroys this commandable. If it is a unit group, members will not be destroyed, they will be merely unlinked from the group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Give this commandable a command.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_command Online documentation}
     */
    set_command(command: CommandWrite): void
    /**
     * Give this commandable a distraction command.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_distraction_command Online documentation}
     */
    set_distraction_command(command: CommandWrite): void
    /**
     * Release the commandable from the spawner. This allows the spawner to continue spawning additional units.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#release_from_spawner Online documentation}
     */
    release_from_spawner(): void
    /**
     * If this commandable is UnitGroup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_unit_group Online documentation}
     */
    readonly is_unit_group: boolean
    /**
     * If this commandable is Entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_entity Online documentation}
     */
    readonly is_entity: boolean
    /**
     * Surface this commandable is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Current position of this commandable.
     *
     * If commandable is a UnitGroup, this can have different meanings depending on the group state. When the group is gathering, the position is the place of gathering. When the group is moving, the position is the expected position of its members along the path. When the group is attacking, it is the average position of its members.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#position Online documentation}
     */
    readonly position: MapPosition
    /**
     * The force of this commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * Unique identifier of this commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#unique_id Online documentation}
     */
    readonly unique_id: uint32
    /**
     * If this commandable has a command assigned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#has_command Online documentation}
     */
    readonly has_command: boolean
    /**
     * The command of this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#command Online documentation}
     */
    readonly command?: Command
    /**
     * The distraction command of this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#distraction_command Online documentation}
     */
    readonly distraction_command?: Command
    /**
     * The unit group this commandable is a member of, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#parent_group Online documentation}
     */
    readonly parent_group?: LuaCommandable
    /**
     * The spawner associated with this commandable, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#spawner Online documentation}
     */
    readonly spawner?: LuaEntity
    /**
     * Current moving state of the commandable's behavior
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#moving_state Online documentation}
     */
    readonly moving_state: defines.moving_state
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCommandable"
  }
  /**
   * @noSelf
   */
  export interface UnitGroupCommandable extends BaseCommandable {
    /**
     * Adds a member to this UnitGroup. Has the same effect as setting defines.command.group command on the member to join the group.
     *
     * The member must have the same force be on the same surface as the group.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#add_member Online documentation}
     */
    add_member(member: LuaCommandable | LuaEntity): void
    /**
     * Make this group autonomous. Autonomous groups will automatically attack polluted areas. Autonomous groups aren't considered to be {@link LuaCommandable#is_script_driven script-driven}.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#set_autonomous Online documentation}
     */
    set_autonomous(): void
    /**
     * Make the group start moving even if some of its members haven't yet arrived.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#start_moving Online documentation}
     */
    start_moving(): void
    /**
     * Whether this group is gathering, moving or attacking.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#state Online documentation}
     */
    readonly state: defines.group_state
    /**
     * All entity members of this unit group, recursive (if unit group is member of this unit group, its members will be returned here).
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#members Online documentation}
     */
    readonly members: LuaEntity[]
    /**
     * Non recursively returns all members of this unit group.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#commandable_members Online documentation}
     */
    readonly commandable_members: LuaCommandable[]
    /**
     * Whether this unit group is controlled by a script or by the game engine. This can be changed using {@link LuaCommandable#set_autonomous LuaCommandable::set_autonomous}. Units created by {@link LuaSurface#create_unit_group LuaSurface::create_unit_group} are considered script-driven.
     *
     * _Can only be used if this is UnitGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#is_script_driven Online documentation}
     */
    readonly is_script_driven: boolean
  }
  export interface EntityCommandable extends BaseCommandable {
    /**
     * Returns entity object for this commandable.
     *
     * _Can only be used if this is Entity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCommandable.html#entity Online documentation}
     */
    readonly entity: LuaEntity
  }
  /**
   * Control behavior for constant combinators.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html Online documentation}
   * @noSelf
   */
  export interface LuaConstantCombinatorControlBehavior extends LuaControlBehavior {
    /**
     * Adds a new logistic section to this constant combinator if possible.
     * @param group The group to assign this section to.
     * @returns Logistic section if added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#add_section Online documentation}
     */
    add_section(group?: string): LuaLogisticSection | nil
    /**
     * Removes the given logistic section if possible. Removal may fail if the section index is out of range or the section is not {@link LuaLogisticSection#is_manual manual}.
     * @param section_index Index of the section.
     * @returns Whether section was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#remove_section Online documentation}
     */
    remove_section(section_index: uint32): boolean
    /**
     * Gets section on the selected index, if it exists.
     * @param section_index Index of the section.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#get_section Online documentation}
     */
    get_section(section_index: uint32): LuaLogisticSection | nil
    /**
     * Turns this constant combinator on and off.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#enabled Online documentation}
     */
    enabled: boolean
    /**
     * All logistic sections of this constant combinator.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#sections Online documentation}
     */
    readonly sections: LuaLogisticSection[]
    /**
     * Amount of logistic sections this constant combinator has.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaConstantCombinatorControlBehavior.html#sections_count Online documentation}
     */
    readonly sections_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaConstantCombinatorControlBehavior"
  }
  /**
   * Control behavior for container entities.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaContainerControlBehavior.html Online documentation}
   */
  export interface LuaContainerControlBehavior extends LuaControlBehavior {
    /**
     * `true` if this container is sending its content to a circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaContainerControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaContainerControlBehavior"
  }
  /**
   * Common attributes to all variants of {@link ControlSetGuiArrow}.
   */
  export interface BaseControlSetGuiArrow {
    readonly margin: uint32
    /**
     * Where to point to. This field determines what other fields are mandatory.
     */
    readonly type: GuiArrowType
  }
  /**
   * `"entity"` variant of {@link ControlSetGuiArrow}.
   */
  export interface EntityControlSetGuiArrow extends BaseControlSetGuiArrow {
    readonly type: "entity"
    readonly entity: LuaEntity
  }
  /**
   * `"position"` variant of {@link ControlSetGuiArrow}.
   */
  export interface PositionControlSetGuiArrow extends BaseControlSetGuiArrow {
    readonly type: "position"
    readonly position: MapPosition | MapPositionArray
  }
  /**
   * `"crafting_queue"` variant of {@link ControlSetGuiArrow}.
   */
  export interface CraftingQueueControlSetGuiArrow extends BaseControlSetGuiArrow {
    readonly type: "crafting_queue"
    /**
     * Index in the crafting queue to point to.
     */
    readonly crafting_queueindex: uint32
  }
  /**
   * `"item_stack"` variant of {@link ControlSetGuiArrow}.
   */
  export interface ItemStackControlSetGuiArrow extends BaseControlSetGuiArrow {
    readonly type: "item_stack"
    /**
     * Which inventory the stack is in.
     */
    readonly inventory_index: defines.inventory
    /**
     * Which stack to point to.
     */
    readonly item_stack_index: uint32
    readonly source: "player" | "target" | "player-quickbar"
  }
  /**
   * Variants of {@link ControlSetGuiArrow} with no additional attributes.
   */
  export interface OtherControlSetGuiArrow extends BaseControlSetGuiArrow {
    readonly type: "nowhere" | "goal" | "entity_info" | "active_window"
  }
  export type ControlSetGuiArrow =
    | EntityControlSetGuiArrow
    | PositionControlSetGuiArrow
    | CraftingQueueControlSetGuiArrow
    | ItemStackControlSetGuiArrow
    | OtherControlSetGuiArrow
  /**
   * This is an abstract base class containing the common functionality between {@link LuaPlayer} and entities (see {@link LuaEntity}). When accessing player-related functions through a {@link LuaEntity}, it must refer to a character entity.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html Online documentation}
   * @noSelf
   */
  export interface LuaControl {
    /**
     * Get an inventory belonging to this entity. This can be either the "main" inventory or some auxiliary one, like the module slots or logistic trash slots.
     *
     * A given {@link defines.inventory} is only meaningful for the corresponding LuaObject type. EG: get_inventory(defines.inventory.character_main) is only meaningful if 'this' is a player character. You may get a value back but if the type of 'this' isn't the type referred to by the {@link defines.inventory} it's almost guaranteed to not be the inventory asked for.
     * @returns The inventory or `nil` if none with the given index was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_inventory Online documentation}
     */
    get_inventory(inventory: defines.inventory): LuaInventory | nil
    /**
     * Get name of inventory. Names match keys of {@link defines.inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_inventory_name Online documentation}
     */
    get_inventory_name(inventory: defines.inventory): string | nil
    /**
     * The highest index of all inventories this entity can use. Allows iteration over all of them if desired.
     * @example
     * for k = 1, entity.get_max_inventory_index() do [...] end
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_max_inventory_index Online documentation}
     */
    get_max_inventory_index(): defines.inventory
    /**
     * Gets the main inventory for this character or player if this is a character or player.
     * @returns The inventory or `nil` if this entity is not a character or player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_main_inventory Online documentation}
     */
    get_main_inventory(): LuaInventory | nil
    /**
     * Can at least some items be inserted?
     * @param items Items that would be inserted.
     * @returns `true` if at least a part of the given items could be inserted into this inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#can_insert Online documentation}
     */
    can_insert(items: ItemStackIdentification): boolean
    /**
     * Insert items into this entity. This works the same way as inserters or shift-clicking: the "best" inventory is chosen automatically.
     * @param items The items to insert.
     * @returns The number of items that were actually inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#insert Online documentation}
     */
    insert(items: ItemStackIdentification): uint32
    /**
     * Create an arrow which points at this entity. This is used in the tutorial. For examples, see `control.lua` in the campaign missions.
     *
     * Base attributes: {@link BaseControlSetGuiArrow}
     *
     * Other attributes may be specified depending on `type`:
     * - `"entity"`: {@link EntityControlSetGuiArrow}
     * - `"position"`: {@link PositionControlSetGuiArrow}
     * - `"crafting_queue"`: {@link CraftingQueueControlSetGuiArrow}
     * - `"item_stack"`: {@link ItemStackControlSetGuiArrow}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#set_gui_arrow Online documentation}
     */
    set_gui_arrow(params: ControlSetGuiArrow): void
    /**
     * Removes the arrow created by `set_gui_arrow`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#clear_gui_arrow Online documentation}
     */
    clear_gui_arrow(): void
    /**
     * Get the number of all or some items in this entity.
     * @param item The item to count. If not specified, count all items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_item_count Online documentation}
     */
    get_item_count(item?: ItemFilterWrite): uint32
    /**
     * Does this entity have any item inside it?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#has_items_inside Online documentation}
     */
    has_items_inside(): boolean
    /**
     * Can a given entity be opened or accessed?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#can_reach_entity Online documentation}
     */
    can_reach_entity(entity: LuaEntity): boolean
    /**
     * Remove all items from this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#clear_items_inside Online documentation}
     */
    clear_items_inside(): void
    /**
     * Remove items from this entity.
     * @param items The items to remove.
     * @returns The number of items that were actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#remove_item Online documentation}
     */
    remove_item(items: ItemStackIdentification): uint32
    /**
     * Teleport the entity to a given position, possibly on another surface.
     *
     * Some entities may not be teleported. For instance, transport belts won't allow teleportation and this method will always return `false` when used on any such entity.
     *
     * You can also pass 1 or 2 numbers as the parameters and they will be used as relative teleport coordinates `'teleport(0, 1)'` to move the entity 1 tile positive y. `'teleport(4)'` to move the entity 4 tiles to the positive x.
     *
     * `script_raised_teleported` will not be raised if teleporting a player with no character.
     *
     * ## Raised events
     * - {@link OnPlayerChangedPositionEvent on_player_changed_position}? _instantly_ Raised if the teleported entity is a player character.
     * - {@link ScriptRaisedTeleportedEvent script_raised_teleported}? _instantly_ Raised if the `raise_teleported` flag was set and the entity was successfully teleported.
     * @param position Where to teleport to.
     * @param surface Surface to teleport to. If not given, will teleport to the entity's current surface. Only players, cars, and spidertrons can be teleported cross-surface.
     * @param raise_teleported If true, {@link defines.events.script_raised_teleported} will be fired on successful entity teleportation.
     * @param snap_to_grid If false the exact position given is used to instead of snapping to the normal entity grid. This only applies if the entity normally snaps to the grid.
     * @param build_check_type The build check type done when teleporting to the destination. Defaults to `script`. This is ignored when teleporting between surfaces.
     * @returns `true` if the entity was successfully teleported.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#teleport Online documentation}
     */
    teleport(
      position: MapPosition | MapPositionArray,
      surface?: SurfaceIdentification,
      raise_teleported?: boolean,
      snap_to_grid?: boolean,
      build_check_type?: defines.build_check_type,
    ): boolean
    teleport(x: number, y?: number): boolean
    /**
     * Select an entity, as if by hovering the mouse above it.
     *
     * ## Raised events
     * - {@link OnSelectedEntityChangedEvent on_selected_entity_changed}? _instantly_ Raised if there is an entity at the given position to select.
     * @param position Position of the entity to select.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#update_selected_entity Online documentation}
     */
    update_selected_entity(position: MapPosition | MapPositionArray): void
    /**
     * Unselect any selected entity.
     *
     * ## Raised events
     * - {@link OnSelectedEntityChangedEvent on_selected_entity_changed}? _instantly_ Raised if there is a currently selected entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#clear_selected_entity Online documentation}
     */
    clear_selected_entity(): void
    /**
     * Disable the flashlight.
     *
     * Applied per controller. Only supported by {@link defines.controllers.character} and {@link defines.controllers.remote}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#disable_flashlight Online documentation}
     */
    disable_flashlight(): void
    /**
     * Enable the flashlight.
     *
     * Applied per controller. Only supported by {@link defines.controllers.character} and {@link defines.controllers.remote}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#enable_flashlight Online documentation}
     */
    enable_flashlight(): void
    /**
     * Is the flashlight enabled for the current controller. Only supported by {@link defines.controllers.character} and {@link defines.controllers.remote}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#is_flashlight_enabled Online documentation}
     */
    is_flashlight_enabled(): boolean
    /**
     * Gets the count of the given recipe that can be crafted.
     * @param recipe The recipe.
     * @returns The count that can be crafted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_craftable_count Online documentation}
     */
    get_craftable_count(recipe: RecipeID): uint32
    /**
     * Begins crafting the given count of the given recipe.
     *
     * ## Raised events
     * - {@link OnPrePlayerCraftedItemEvent on_pre_player_crafted_item}? _instantly_ Raised if crafting was able to be started.
     * - {@link OnPlayerMainInventoryChangedEvent on_player_main_inventory_changed}? _current_tick_ Raised if crafting was able to be started.
     * @returns The count that was actually started crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#begin_crafting Online documentation}
     */
    begin_crafting(params: {
      /**
       * The count to craft.
       */
      readonly count: uint32
      /**
       * The recipe to craft.
       */
      readonly recipe: RecipeID
      /**
       * If false and the recipe can't be crafted the requested number of times printing the failure is skipped.
       */
      readonly silent?: boolean
    }): uint32
    /**
     * Cancels the given amount of crafts at the given crafting queue position. If this causes any later crafts that depend on the cancelled one to have insufficient ingredients, those crafts will also be cancelled.
     *
     * ## Raised events
     * - {@link OnPlayerCancelledCraftingEvent on_player_cancelled_crafting}? _instantly_ Raised if crafting was able to be cancelled.
     * - {@link OnPlayerMainInventoryChangedEvent on_player_main_inventory_changed}? _current_tick_ Raised if crafting was able to be cancelled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cancel_crafting Online documentation}
     */
    cancel_crafting(params: {
      /**
       * The crafting queue index.
       */
      readonly index: uint32
      /**
       * The count to cancel crafting.
       */
      readonly count: uint32
    }): void
    /**
     * Mines the given entity as if this player (or character) mined it.
     *
     * ## Raised events
     * - {@link OnPrePlayerMinedItemEvent on_pre_player_mined_item}? _instantly_ Raised if mining is possible.
     * - {@link OnPlayerMinedEntityEvent on_player_mined_entity}? _instantly_ Raised if mining is successful.
     * - {@link OnPlayerMinedItemEvent on_player_mined_item}? _instantly_ Raised if mining is successful.
     * @param entity The entity to mine
     * @param force Forces mining the entity even if the items can't fit in the player.
     * @returns Whether the mining succeeded.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#mine_entity Online documentation}
     */
    mine_entity(entity: LuaEntity, force?: boolean): boolean
    /**
     * Mines the given tile as if this player (or character) mined it.
     *
     * ## Raised events
     * - {@link OnPlayerMinedItemEvent on_player_mined_item}? _instantly_ Raised if mining is successful.
     * - {@link OnPlayerMinedTileEvent on_player_mined_tile}? _instantly_ Raised if mining is successful.
     * @param tile The tile to mine.
     * @returns Whether the mining succeeded.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#mine_tile Online documentation}
     */
    mine_tile(tile: LuaTile): boolean
    /**
     * When `true` control adapter is a LuaPlayer object, `false` for entities including characters with players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#is_player Online documentation}
     */
    is_player(): boolean
    /**
     * Open the technology GUI and select a given technology.
     * @param technology The technology to select after opening the GUI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#open_technology_gui Online documentation}
     */
    open_technology_gui(technology?: TechnologyID): void
    /**
     * Open the Factoriopedia GUI and select a given entry, if any valid ID is given.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#open_factoriopedia_gui Online documentation}
     */
    open_factoriopedia_gui(prototype?: FactoriopediaID): void
    /**
     * Closes the Factoriopedia GUI if it's open.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#close_factoriopedia_gui Online documentation}
     */
    close_factoriopedia_gui(): void
    /**
     * Returns whether the player is holding a blueprint. This takes both blueprint items as well as blueprint records from the blueprint library into account.
     *
     * Note that both this method refers to the currently selected blueprint, which means that a blueprint book with a selected blueprint will return the information as well.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#is_cursor_blueprint Online documentation}
     */
    is_cursor_blueprint(): boolean
    /**
     * Returns whether the player is holding something in the cursor. Takes into account items from the blueprint library, as well as items and ghost cursor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#is_cursor_empty Online documentation}
     */
    is_cursor_empty(): boolean
    /**
     * Gets the requester logistic point for this entity if it has one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#get_requester_point Online documentation}
     */
    get_requester_point(): LuaLogisticPoint | nil
    /**
     * Sets if this character or player is driving. Returns if the player or character is still driving.
     * @param driving True for enter-vehicle, false for leave.
     * @param force If true, the player will be ejected and left at the position of the car if normal "leave" is not possible.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#set_driving Online documentation}
     */
    set_driving(driving: boolean, force?: boolean): void
    /**
     * Checks if this character or player can build the given entity at the given location on the surface the character or player is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#can_place_entity Online documentation}
     */
    can_place_entity(params: {
      /**
       * Name of the entity that would be built.
       */
      readonly name: EntityID
      /**
       * Where the entity would be placed.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Direction the entity would be facing. Defaults to `north`.
       */
      readonly direction?: defines.direction
    }): boolean
    /**
     * The surface this entity is currently on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Unique {@link LuaSurface#index index} (ID) associated with the surface this entity is currently on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#surface_index Online documentation}
     */
    readonly surface_index: SurfaceIndex
    /**
     * The current position of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#position Online documentation}
     */
    readonly position: MapPosition
    /**
     * The current render position of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#render_position Online documentation}
     */
    readonly render_position: MapPosition
    /**
     * If this player or character entity is flying.
     *
     * When called on an entity, only valid if this entity is a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#is_flying Online documentation}
     */
    readonly is_flying: boolean
    /**
     * The current flight height for this player or character entity.
     *
     * When called on an entity, only valid if this entity is a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#flight_height Online documentation}
     */
    readonly flight_height: double
    /**
     * The vehicle the player is currently sitting in.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#vehicle Online documentation}
     */
    readonly vehicle?: LuaEntity
    /**
     * The cargo pod the player is currently sitting in or the cargo pod attached to this rocket silo.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cargo_pod Online documentation}
     */
    readonly cargo_pod?: LuaEntity
    /**
     * The space platform hub the player is currently sitting in.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#hub Online documentation}
     */
    readonly hub?: LuaEntity
    /**
     * The force of this entity. Reading will always give a {@link LuaForce}, but it is possible to assign either `string`, {@link uint8} or {@link LuaForce} to this attribute to change the force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#force Online documentation}
     */
    get force(): LuaForce
    set force(value: ForceID)
    /**
     * Unique {@link LuaForce#index index} (ID) associated with the force of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#force_index Online documentation}
     */
    readonly force_index: ForceIndex
    /**
     * The currently selected entity. Assigning an entity will select it if is selectable, otherwise the selection is cleared.
     *
     * ## Raised events
     * - {@link OnSelectedEntityChangedEvent on_selected_entity_changed}? _instantly_ Raised when a selectable entity is written to this attribute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#selected Online documentation}
     */
    selected?: LuaEntity
    /**
     * The GUI the player currently has open.
     *
     * This is the GUI that will asked to close (by firing the {@link OnGuiClosedEvent on_gui_closed} event) when the `Esc` or `E` keys are pressed. If this attribute is non-nil, then writing `nil` or a new GUI to it will ask the existing GUI to close.
     *
     * Write supports any of the types. Read will return the `entity`, `equipment`, `equipment-grid`, `player`, `element`, `inventory`, `item` or `nil`.
     *
     * ## Raised events
     * - {@link OnGuiOpenedEvent on_gui_opened}? _instantly_ Raised when writing a valid GUI target to this attribute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#opened Online documentation}
     */
    set opened(
      value:
        | LuaEntity
        | LuaItemStack
        | LuaEquipment
        | LuaEquipmentGrid
        | LuaPlayer
        | LuaGuiElement
        | LuaInventory
        | LuaTechnology
        | defines.gui_type
        | nil,
    )
    get opened():
      | LuaEntity
      | LuaEquipment
      | LuaEquipmentGrid
      | LuaPlayer
      | LuaGuiElement
      | LuaInventory
      | LuaTechnology
      | nil
    /**
     * Size of the crafting queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#crafting_queue_size Online documentation}
     */
    readonly crafting_queue_size: uint32
    /**
     * The crafting queue progress in the range `[0-1]`. `0` when no recipe is being crafted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#crafting_queue_progress Online documentation}
     */
    crafting_queue_progress: double
    /**
     * Current walking state of the player, or the spider-vehicle the character is driving.
     * @example
     * -- Make the player go north. Note that a one-shot action like this will only make the player walk for one tick.
     * game.player.walking_state = {walking = true, direction = defines.direction.north}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#walking_state Online documentation}
     */
    walking_state: {
      /**
       * If `false`, the player is currently not walking; otherwise it's going somewhere
       */
      readonly walking: boolean
      /**
       * Direction where the player is walking
       */
      readonly direction: defines.direction
    }
    /**
     * Current riding state of this car, or of the car this player is riding in.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#riding_state Online documentation}
     */
    riding_state: RidingState
    /**
     * Current mining state.
     *
     * When the player isn't mining tiles the player will mine whatever entity is currently selected. See {@link LuaControl#selected LuaControl::selected} and {@link LuaControl#update_selected_entity LuaControl::update_selected_entity}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#mining_state Online documentation}
     */
    get mining_state(): {
      /**
       * Whether the player is mining at all.
       */
      readonly mining: boolean
      /**
       * What location the player is mining. Only relevant if `mining` is `true`.
       */
      readonly position?: MapPosition
    }
    set mining_state(value: {
      /**
       * Whether the player is mining at all.
       */
      readonly mining: boolean
      /**
       * What location the player is mining. Only relevant if `mining` is `true`.
       */
      readonly position?: MapPosition | MapPositionArray
    })
    /**
     * Current shooting state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#shooting_state Online documentation}
     */
    get shooting_state(): {
      /**
       * The current state
       */
      readonly state: defines.shooting
      /**
       * The position being shot at
       */
      readonly position: MapPosition
    }
    set shooting_state(value: {
      /**
       * The current state
       */
      readonly state: defines.shooting
      /**
       * The position being shot at
       */
      readonly position: MapPosition | MapPositionArray
    })
    /**
     * Current item-picking state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#picking_state Online documentation}
     */
    picking_state: boolean
    /**
     * Current repair state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#repair_state Online documentation}
     */
    get repair_state(): {
      /**
       * The current state
       */
      readonly repairing: boolean
      /**
       * The position being repaired
       */
      readonly position: MapPosition
    }
    set repair_state(value: {
      /**
       * The current state
       */
      readonly repairing: boolean
      /**
       * The position being repaired
       */
      readonly position: MapPosition | MapPositionArray
    })
    /**
     * The player's cursor stack. `nil` if the player controller is a spectator.
     * @example
     * -- Even though this property is marked as read-only, it returns a LuaItemStack,
     * -- meaning it can be manipulated like so:
     * player.cursor_stack.clear()
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cursor_stack Online documentation}
     */
    readonly cursor_stack?: LuaItemStack
    /**
     * The ghost prototype in the player's cursor.
     *
     * Items in the cursor stack will take priority over the cursor ghost.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cursor_ghost Online documentation}
     */
    get cursor_ghost(): ItemIDAndQualityIDPair | nil
    set cursor_ghost(value: ItemWithQualityID | nil)
    /**
     * The blueprint record in the player's cursor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cursor_record Online documentation}
     */
    readonly cursor_record?: LuaRecord
    /**
     * `true` if the player is in a vehicle. Writing to this attribute puts the player in or out of a vehicle.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_ Raised if the driving state successfully changed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#driving Online documentation}
     */
    driving: boolean
    /**
     * The current crafting queue items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#crafting_queue Online documentation}
     */
    readonly crafting_queue: CraftingQueueItem[]
    /**
     * The current combat robots following the character.
     *
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#following_robots Online documentation}
     */
    readonly following_robots: LuaEntity[]
    /**
     * When `true` hand crafting is free and instant.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#cheat_mode Online documentation}
     */
    cheat_mode: boolean
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_crafting_speed_modifier Online documentation}
     */
    character_crafting_speed_modifier: double
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_mining_speed_modifier Online documentation}
     */
    character_mining_speed_modifier: double
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_additional_mining_categories Online documentation}
     */
    character_additional_mining_categories: string[]
    /**
     * Modifies the running speed of this character by the given value as a percentage. Setting the running modifier to `0.5` makes the character run 50% faster. The minimum value of `-1` reduces the movement speed by 100%, resulting in a speed of `0`.
     *
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_running_speed_modifier Online documentation}
     */
    character_running_speed_modifier: double
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_build_distance_bonus Online documentation}
     */
    character_build_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_item_drop_distance_bonus Online documentation}
     */
    character_item_drop_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_reach_distance_bonus Online documentation}
     */
    character_reach_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_resource_reach_distance_bonus Online documentation}
     */
    character_resource_reach_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_item_pickup_distance_bonus Online documentation}
     */
    character_item_pickup_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_loot_pickup_distance_bonus Online documentation}
     */
    character_loot_pickup_distance_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_inventory_slots_bonus Online documentation}
     */
    character_inventory_slots_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_trash_slot_count_bonus Online documentation}
     */
    character_trash_slot_count_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_maximum_following_robot_count_bonus Online documentation}
     */
    character_maximum_following_robot_count_bonus: uint32
    /**
     * When called on a {@link LuaPlayer}, it must be associated with a character (see {@link LuaPlayer#character LuaPlayer::character}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_health_bonus Online documentation}
     */
    character_health_bonus: float
    readonly opened_gui_type?: defines.gui_type
    /**
     * The build distance of this character or max uint when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#build_distance Online documentation}
     */
    readonly build_distance: uint32
    /**
     * The item drop distance of this character or max uint when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#drop_item_distance Online documentation}
     */
    readonly drop_item_distance: uint32
    /**
     * The reach distance of this character or max uint when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#reach_distance Online documentation}
     */
    readonly reach_distance: uint32
    /**
     * The item pickup distance of this character or max double when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#item_pickup_distance Online documentation}
     */
    readonly item_pickup_distance: double
    /**
     * The loot pickup distance of this character or max double when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#loot_pickup_distance Online documentation}
     */
    readonly loot_pickup_distance: double
    /**
     * The resource reach distance of this character or max double when not a character or player connected to a character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#resource_reach_distance Online documentation}
     */
    readonly resource_reach_distance: double
    /**
     * Whether this character entity is in combat.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#in_combat Online documentation}
     */
    readonly in_combat: boolean
    /**
     * The current movement speed of this character, including effects from exoskeletons, tiles, stickers and shooting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_running_speed Online documentation}
     */
    readonly character_running_speed: double
    /**
     * The current mining progress between 0 and 1 of this character, or 0 if they aren't mining.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControl.html#character_mining_progress Online documentation}
     */
    readonly character_mining_progress: double
  }
  /**
   * The control behavior for an entity. Inserters have logistic network and circuit network behavior logic, lamps have circuit logic and so on. This is an abstract base class that concrete control behaviors inherit.
   *
   * An control reference becomes invalid once the control behavior is removed or the entity (see {@link LuaEntity}) it resides in is destroyed.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControlBehavior.html Online documentation}
   * @noSelf
   */
  export interface LuaControlBehavior {
    /**
     * @param wire_connector_id Wire connector to get circuit network for.
     * @returns The circuit network or nil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControlBehavior.html#get_circuit_network Online documentation}
     */
    get_circuit_network(wire_connector_id: defines.wire_connector_id): LuaCircuitNetwork | nil
    /**
     * The concrete type of this control behavior.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControlBehavior.html#type Online documentation}
     */
    readonly type: defines.control_behavior.type
    /**
     * The entity this control behavior belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaControlBehavior.html#entity Online documentation}
     */
    readonly entity: LuaEntity
  }
  /**
   * A custom tag that shows on the map view.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html Online documentation}
   * @noSelf
   */
  export interface LuaCustomChartTag {
    /**
     * Destroys this tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * This tag's icon, if it has one. Writing `nil` removes it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#icon Online documentation}
     */
    get icon(): SignalID | nil
    set icon(value: SignalIDWrite | nil)
    /**
     * The player who last edited this tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#last_user Online documentation}
     */
    get last_user(): LuaPlayer | nil
    set last_user(value: PlayerIdentification | nil)
    /**
     * The position of this tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#position Online documentation}
     */
    get position(): MapPosition
    set position(value: MapPosition | MapPositionArray)
    text: string
    /**
     * The unique ID for this tag on this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#tag_number Online documentation}
     */
    readonly tag_number: uint32
    /**
     * The force this tag belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * The surface this tag belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomChartTag.html#surface Online documentation}
     */
    surface: LuaSurface
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCustomChartTag"
  }
  /**
   * Prototype of a custom event.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomEventPrototype.html Online documentation}
   */
  export interface LuaCustomEventPrototype extends LuaPrototypeBase {
    /**
     * Event identifier associated with this custom event.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomEventPrototype.html#event_id Online documentation}
     */
    readonly event_id: EventId<EventData>
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCustomEventPrototype"
  }
  /**
   * Prototype of a custom input.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html Online documentation}
   */
  export interface LuaCustomInputPrototype extends LuaPrototypeBase {
    /**
     * Event identifier associated with this custom input.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#event_id Online documentation}
     */
    readonly event_id: EventId<CustomInputEvent>
    /**
     * The default key sequence for this custom input.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#key_sequence Online documentation}
     */
    readonly key_sequence: string
    /**
     * The default alternative key sequence for this custom input, if any
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#alternative_key_sequence Online documentation}
     */
    readonly alternative_key_sequence?: string
    /**
     * The default controller key sequence for this custom input, if any
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#controller_key_sequence Online documentation}
     */
    readonly controller_key_sequence?: string
    /**
     * The default controller alternative key sequence for this custom input, if any
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#controller_alternative_key_sequence Online documentation}
     */
    readonly controller_alternative_key_sequence?: string
    /**
     * The linked game control name, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#linked_game_control Online documentation}
     */
    readonly linked_game_control?: LinkedGameControl
    /**
     * The consuming type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#consuming Online documentation}
     */
    readonly consuming: "none" | "game-only"
    /**
     * The action that happens when this custom input is triggered.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#action Online documentation}
     */
    readonly action: string
    /**
     * Whether this custom input is enabled. Disabled custom inputs exist but are not used by the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#enabled Online documentation}
     */
    readonly enabled: boolean
    /**
     * Whether this custom input is enabled while using the spectator controller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#enabled_while_spectating Online documentation}
     */
    readonly enabled_while_spectating: boolean
    /**
     * Whether this custom input is enabled while using the cutscene controller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#enabled_while_in_cutscene Online documentation}
     */
    readonly enabled_while_in_cutscene: boolean
    /**
     * Whether this custom input will include the selected prototype (if any) when triggered.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#include_selected_prototype Online documentation}
     */
    readonly include_selected_prototype: boolean
    /**
     * The item that gets spawned when this custom input is fired, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomInputPrototype.html#item_to_spawn Online documentation}
     */
    readonly item_to_spawn?: LuaItemPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCustomInputPrototype"
  }
  export type CustomTableIndexer<K extends string | number, V, IterKey extends string | number = K> =
    /**
     * Access an element of this custom table.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomTable.html#index_operator Online documentation}
     */
    {
      [P in K]: V
    }
  export interface LuaCustomTableMembers {
    /**
     * Number of elements in this table.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomTable.html#length_operator Online documentation}
     */
    readonly length: LuaLengthMethod<uint32>
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaCustomTable"
  }
  /**
   * Lazily evaluated table. For performance reasons, we sometimes return a custom table-like type instead of a native Lua table. This custom type lazily constructs the necessary Lua wrappers of the corresponding C++ objects, therefore preventing their unnecessary construction in some cases.
   *
   * There are some notable consequences to the usage of a custom table type rather than the native Lua table type: Iterating a custom table is only possible using the `pairs` Lua function; `ipairs` won't work. Another key difference is that custom tables cannot be serialised into a game save file -- if saving the game would require serialisation of a custom table, an error will be displayed and the game will not be saved.
   *
   * In previous versions of Factorio, this would create a {@link LuaPlayer} instance for every player in the game, even though only one such wrapper is needed. In the current version, accessing {@link LuaGameScript#players game.players} by itself does not create any {@link LuaPlayer} instances; they are created lazily when accessed. Therefore, this example only constructs one {@link LuaPlayer} instance, no matter how many elements there are in `game.players`.
   *
   * ```
   * game.players["Oxyd"].character.die()
   * ```
   *
   * This statement will execute successfully and `storage.p` will be useable as one might expect. However, as soon as the user tries to save the game, a "LuaCustomTable cannot be serialized" error will be shown. The game will remain unsaveable so long as `storage.p` refers to an instance of a custom table.
   *
   * ```
   * storage.p = game.players  -- This has high potential to make the game unsaveable
   * ```
   *
   * The following will produce no output because `ipairs` is not supported with custom tables.
   *
   * ```
   * for _, p in ipairs(game.players) do game.player.print(p.name); end  -- incorrect; use pairs instead
   * ```
   * @example
   * -- Custom tables may be iterated using `pairs`.
   * for _, p in pairs(game.players) do game.player.print(p.name); end
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaCustomTable.html Online documentation}
   */
  export type LuaCustomTable<
    K extends string | number,
    V,
    IterKey extends string | number = K,
  > = LuaCustomTableMembers & CustomTableIndexer<K, V, IterKey> & LuaPairsIterable<IterKey, V>
  /**
   * Prototype of a damage.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDamagePrototype.html Online documentation}
   */
  export interface LuaDamagePrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaDamagePrototype"
  }
  /**
   * Control behavior for decider combinators.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html Online documentation}
   * @noSelf
   */
  export interface LuaDeciderCombinatorControlBehavior extends LuaCombinatorControlBehavior {
    /**
     * Gets the condition at `index`.
     * @param index Index of condition to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#get_condition Online documentation}
     */
    get_condition(index: uint32): DeciderCombinatorCondition
    /**
     * Sets the condition at `index`.
     * @param index Index of condition to modify.
     * @param condition Data to set selected condition to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#set_condition Online documentation}
     */
    set_condition(index: uint32, condition: DeciderCombinatorConditionWrite): void
    /**
     * Adds a new condition.
     * @param condition New condition to insert.
     * @param index Index to insert new condition at. If not specified, appends to the end.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#add_condition Online documentation}
     */
    add_condition(condition: DeciderCombinatorConditionWrite, index?: uint32): void
    /**
     * Removes the condition at `index`.
     * @param index Index of condition to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#remove_condition Online documentation}
     */
    remove_condition(index: uint32): void
    /**
     * Gets the output at `index`.
     * @param index Index of output to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#get_output Online documentation}
     */
    get_output(index: uint32): DeciderCombinatorOutput
    /**
     * Sets the output at `index`.
     * @param index Index of output to modify.
     * @param output Data to set selected output to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#set_output Online documentation}
     */
    set_output(index: uint32, output: DeciderCombinatorOutputWrite): void
    /**
     * Adds a new output.
     * @param output New output to insert.
     * @param index Index to insert new output at. If not specified, appends to the end.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#add_output Online documentation}
     */
    add_output(output: DeciderCombinatorOutputWrite, index?: uint32): void
    /**
     * Removes the output at `index`.
     * @param index Index of output to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#remove_output Online documentation}
     */
    remove_output(index: uint32): void
    /**
     * This decider combinator's parameters. Writing `nil` clears the combinator's parameters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDeciderCombinatorControlBehavior.html#parameters Online documentation}
     */
    get parameters(): DeciderCombinatorParameters | nil
    set parameters(value: DeciderCombinatorParametersWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaDeciderCombinatorControlBehavior"
  }
  /**
   * Prototype of an optimized decorative.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDecorativePrototype.html Online documentation}
   */
  export interface LuaDecorativePrototype extends LuaPrototypeBase {
    /**
     * The bounding box used for collision checking.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDecorativePrototype.html#collision_box Online documentation}
     */
    readonly collision_box: BoundingBox
    /**
     * The collision masks this decorative uses
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDecorativePrototype.html#collision_mask Online documentation}
     */
    readonly collision_mask: CollisionMask
    /**
     * Autoplace specification for this decorative prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDecorativePrototype.html#autoplace_specification Online documentation}
     */
    readonly autoplace_specification?: AutoplaceSpecification
    readonly render_layer: RenderLayer
    readonly decal: boolean
    readonly grows_through_rail_path: boolean
    readonly trigger_effect?: TriggerEffectItem[]
    readonly placed_effect?: TriggerEffectItem[]
    readonly minimal_separation: double
    readonly target_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaDecorativePrototype"
  }
  /**
   * Control behavior for display panels.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDisplayPanelControlBehavior.html Online documentation}
   * @noSelf
   */
  export interface LuaDisplayPanelControlBehavior extends LuaControlBehavior {
    /**
     * Get a specific message definition
     * @param index Message index.
     * @returns The message definition at the specified index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDisplayPanelControlBehavior.html#get_message Online documentation}
     */
    get_message(index: uint32): DisplayPanelMessageDefinition
    /**
     * Set the message at the specified index
     * @param index Message index. Use `-1` to append new element.
     * @param message The message definition for the specified index. Specify `nil` to remove the message.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDisplayPanelControlBehavior.html#set_message Online documentation}
     */
    set_message(index: int32, message: DisplayPanelMessageDefinitionWrite | nil): void
    /**
     * The full list of configured messages.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaDisplayPanelControlBehavior.html#messages Online documentation}
     */
    get messages(): DisplayPanelMessageDefinition[]
    set messages(value: readonly DisplayPanelMessageDefinitionWrite[])
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaDisplayPanelControlBehavior"
  }
  /**
   * Prototype of an electric energy source.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaElectricEnergySourcePrototype.html Online documentation}
   * @noSelf
   */
  export interface LuaElectricEnergySourcePrototype {
    get_input_flow_limit(quality?: QualityID): double
    get_output_flow_limit(quality?: QualityID): double
    readonly buffer_capacity: double
    readonly usage_priority: string
    readonly drain: double
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. Multiplying it by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaElectricEnergySourcePrototype.html#emissions_per_joule Online documentation}
     */
    readonly emissions_per_joule: Record<string, double>
    readonly render_no_network_icon: boolean
    readonly render_no_power_icon: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaElectricEnergySourcePrototype"
  }
  /**
   * The primary interface for interacting with entities through the Lua API. Entities are everything that exists on the map except for tiles (see {@link LuaTile}).
   *
   * Most functions on LuaEntity also work when the entity is contained in a ghost.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html Online documentation}
   * @noSelf
   */
  export interface LuaEntity extends LuaControl {
    /**
     * Gets the entity's output inventory if it has one.
     * @returns A reference to the entity's output inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_output_inventory Online documentation}
     */
    get_output_inventory(): LuaInventory | nil
    /**
     * Inventory for storing modules of this entity; `nil` if this entity has no module inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_module_inventory Online documentation}
     */
    get_module_inventory(): LuaInventory | nil
    /**
     * The fuel inventory for this entity or `nil` if this entity doesn't have a fuel inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fuel_inventory Online documentation}
     */
    get_fuel_inventory(): LuaInventory | nil
    /**
     * The burnt result inventory for this entity or `nil` if this entity doesn't have a burnt result inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_burnt_result_inventory Online documentation}
     */
    get_burnt_result_inventory(): LuaInventory | nil
    /**
     * Damages the entity.
     *
     * ## Raised events
     * - {@link OnEntityDamagedEvent on_entity_damaged} _instantly_
     *
     * _Can only be used if this is EntityWithHealth_
     * @param damage The amount of damage to be done.
     * @param force The force that will be doing the damage.
     * @param type The type of damage to be done, defaults to `"impact"`.
     * @param source The entity that is directly dealing the damage (e.g. the projectile, flame, sticker, grenade, laser beam, etc.). Needs to be on the same surface as the entity being damaged.
     * @param cause The entity that originally triggered the events that led to this damage being dealt (e.g. the character, turret, enemy, etc. that pulled the trigger). Does not need to be on the same surface as the entity being damaged.
     * @returns the total damage actually applied after resistances.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#damage Online documentation}
     */
    damage(damage: float, force: ForceID, type?: DamageTypeID, source?: LuaEntity, cause?: LuaEntity): float
    /**
     * Whether the entity can be destroyed
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_be_destroyed Online documentation}
     */
    can_be_destroyed(): boolean
    /**
     * Destroys the entity.
     *
     * Not all entities can be destroyed - things such as rails under trains cannot be destroyed until the train is moved or destroyed.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy}? _instantly_ Raised if the `raise_destroy` flag was set and the entity was successfully destroyed.
     * @returns Returns `false` if the entity was valid and destruction failed, `true` in all other cases.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#destroy Online documentation}
     */
    destroy(params?: {
      /**
       * Whether neighbouring cliffs should be corrected. Defaults to `false`.
       */
      readonly do_cliff_correction?: boolean
      /**
       * If `true`, {@link ScriptRaisedDestroyEvent script_raised_destroy} will be called. Defaults to `false`.
       */
      readonly raise_destroy?: boolean
      /**
       * The player whose undo queue this action should be added to.
       */
      readonly player?: PlayerIdentification
      /**
       * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
       */
      readonly undo_index?: uint32
    }): boolean
    /**
     * Immediately kills the entity. Does nothing if the entity doesn't have health.
     *
     * Unlike {@link LuaEntity#destroy LuaEntity::destroy}, `die` will trigger the {@link OnEntityDiedEvent on_entity_died} event and the entity will produce a corpse and drop loot if it has any.
     *
     * ## Raised events
     * - {@link OnEntityDiedEvent on_entity_died}? _instantly_ Raised if the entity was successfully killed. If `force` is not specified, the event will blame the `"neutral"` force.
     * - {@link OnPostEntityDiedEvent on_post_entity_died}? _instantly_ Raised if the entity was successfully killed.
     * @param force The force to attribute the kill to.
     * @param cause The cause to attribute the kill to.
     * @returns Whether the entity was successfully killed.
     * @example
     * -- This function can be called with only the `cause` argument and no `force`:
     * entity.die(nil, killer_entity)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#die Online documentation}
     */
    die(force?: ForceID, cause?: LuaEntity): boolean
    /**
     * Test whether this entity's prototype has a certain flag set.
     *
     * `entity.has_flag(f)` is a shortcut for `entity.prototype.has_flag(f)`.
     * @param flag The flag to test.
     * @returns `true` if this entity has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#has_flag Online documentation}
     */
    has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * Same as {@link LuaEntity#has_flag LuaEntity::has_flag}, but targets the inner entity on a entity ghost.
     *
     * _Can only be used if this is EntityGhost_
     * @param flag The flag to test.
     * @returns `true` if the entity has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_has_flag Online documentation}
     */
    ghost_has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * Offer a thing on the market.
     *
     * _Can only be used if this is Market_
     * @example
     * -- Adds market offer, 1 copper ore for 10 iron ore
     * market.add_market_item{price={{name = "iron-ore", count = 10}}, offer={type="give-item", item="copper-ore"}}
     * @example
     * -- Adds market offer, 1 copper ore for 5 iron ore and 5 stone ore
     * market.add_market_item{price={{name = "iron-ore", count = 5}, {name = "stone", count = 5}}, offer={type="give-item", item="copper-ore"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#add_market_item Online documentation}
     */
    add_market_item(offer: Offer): void
    /**
     * Remove an offer from a market.
     *
     * The other offers are moved down to fill the gap created by removing the offer, which decrements the overall size of the offer array.
     *
     * _Can only be used if this is Market_
     * @param offer Index of offer to remove.
     * @returns `true` if the offer was successfully removed; `false` when the given index was not valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_market_item Online documentation}
     */
    remove_market_item(offer: uint32): boolean
    /**
     * Get all offers in a market as an array.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_market_items Online documentation}
     */
    get_market_items(): Offer[]
    /**
     * Removes all offers from a market.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clear_market_items Online documentation}
     */
    clear_market_items(): void
    /**
     * Sets the entity to be deconstructed by construction robots.
     *
     * ## Raised events
     * - {@link OnMarkedForDeconstructionEvent on_marked_for_deconstruction}? _instantly_ Raised if the entity was successfully marked for deconstruction.
     * @param force The force whose robots are supposed to do the deconstruction.
     * @param player The player to set the last_user to, if any. Also the player whose undo queue this action should be added to.
     * @param undo_index The index of the undo item to add this action to. An index of `0` creates a new undo item for it. An index of `1` adds the action to the latest undo action on the stack. Defaults to putting it into the appropriate undo item automatically if one is not specified.
     * @returns if the entity was marked for deconstruction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#order_deconstruction Online documentation}
     */
    order_deconstruction(force: ForceID, player?: PlayerIdentification, undo_index?: uint32): boolean
    /**
     * Cancels deconstruction if it is scheduled, does nothing otherwise.
     *
     * ## Raised events
     * - {@link OnCancelledDeconstructionEvent on_cancelled_deconstruction}? _instantly_ Raised if the entity's deconstruction was successfully cancelled.
     * @param force The force who did the deconstruction order.
     * @param player The player to set the `last_user` to if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cancel_deconstruction Online documentation}
     */
    cancel_deconstruction(force: ForceID, player?: PlayerIdentification): void
    /**
     * Is this entity marked for deconstruction?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_deconstructed Online documentation}
     */
    to_be_deconstructed(): boolean
    /**
     * Sets the entity to be upgraded by construction robots.
     *
     * ## Raised events
     * - {@link OnMarkedForUpgradeEvent on_marked_for_upgrade}? _instantly_ Raised if the entity was successfully marked for upgrade.
     * @returns Whether the entity was marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#order_upgrade Online documentation}
     */
    order_upgrade(params: {
      /**
       * The prototype of the entity to upgrade to.
       */
      readonly target: EntityWithQualityID
      /**
       * The force whose robots are supposed to do the upgrade.
       */
      readonly force: ForceID
      /**
       * The player whose undo queue this action should be added to.
       */
      readonly player?: PlayerIdentification
      /**
       * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
       */
      readonly undo_index?: uint32
    }): boolean
    /**
     * Cancels upgrade if it is scheduled, does nothing otherwise.
     *
     * ## Raised events
     * - {@link OnCancelledUpgradeEvent on_cancelled_upgrade}? _instantly_ Raised if the entity way previously marked for upgrade.
     * @param force The force who did the upgrade order.
     * @param player The player to set the last_user to if any.
     * @returns Whether the cancel was successful.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cancel_upgrade Online documentation}
     */
    cancel_upgrade(force: ForceID, player?: PlayerIdentification): boolean
    /**
     * Is this entity marked for upgrade?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_upgraded Online documentation}
     */
    to_be_upgraded(): boolean
    /**
     * Upgrades this entity in place if it's marked to be upgraded.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy} _instantly_ Raised for the old entity if the entity was actually upgraded.
     * - {@link ScriptRaisedBuiltEvent script_raised_built} _instantly_ Raised for the new entity if the entity was actually upgraded.
     * @returns The first upgraded entity - `nil` if this entity is not marked for upgrade.
     * @returns The second upgraded entity - `nil` if this entity is not marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#apply_upgrade Online documentation}
     */
    apply_upgrade(): LuaMultiReturn<[LuaEntity | nil, LuaEntity | nil]>
    /**
     * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether a crafting process has been started in this machine.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_crafting Online documentation}
     */
    is_crafting(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently opened.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_opened Online documentation}
     */
    is_opened(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently opening.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_opening Online documentation}
     */
    is_opening(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently closed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_closed Online documentation}
     */
    is_closed(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently closing
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_closing Online documentation}
     */
    is_closing(): boolean
    /**
     * _Can only be used if this is Gate_
     * @param force The force that requests the gate to be open.
     * @param extra_time Extra ticks to stay open.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_to_open Online documentation}
     */
    request_to_open(force: ForceID, extra_time?: uint32): void
    /**
     * _Can only be used if this is Gate_
     * @param force The force that requests the gate to be closed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_to_close Online documentation}
     */
    request_to_close(force: ForceID): void
    /**
     * Get a transport line of a belt or belt connectable entity.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param index Index of the requested transport line. Transport lines are 1-indexed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_transport_line Online documentation}
     */
    get_transport_line(index: defines.transport_line): LuaTransportLine
    /**
     * Get an item insert specification onto a belt connectable: for a given map position provides into which line at what position item should be inserted to be closest to the provided position.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param position Position where the item is to be inserted.
     * @returns Index of the transport line that is closest to the provided map position.
     * @returns Position along the transport line where item should be dropped.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_item_insert_specification Online documentation}
     */
    get_item_insert_specification(position: MapPosition | MapPositionArray): LuaMultiReturn<[uint32, float]>
    /**
     * Get a map position related to a position on a transport line.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param index Index of the transport line. Transport lines are 1-indexed.
     * @param position Linear position along the transport line. Clamped to the transport line range.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_line_item_position Online documentation}
     */
    get_line_item_position(index: defines.transport_line, position: float): MapPosition
    /**
     * Get the maximum transport line index of a belt or belt connectable entity.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_max_transport_line_index Online documentation}
     */
    get_max_transport_line_index(): defines.transport_line
    /**
     * ## Raised events
     * - {@link OnRocketLaunchOrderedEvent on_rocket_launch_ordered}? _instantly_ Raised if the rocket launch was successfully initiated.
     *
     * _Can only be used if this is RocketSilo_
     * @param character If provided, must be of `character` type.
     * @returns `true` if the rocket was successfully launched. Return value of `false` means the silo is not ready for launch.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#launch_rocket Online documentation}
     */
    launch_rocket(destination?: CargoDestinationWrite, character?: LuaEntity): boolean
    /**
     * Revive a ghost, which turns it from a ghost into a real entity or tile.
     *
     * ## Raised events
     * - {@link ScriptRaisedReviveEvent script_raised_revive}? _instantly_ Raised if this was an entity ghost and the `raise_revive` flag was set and the entity was successfully revived.
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}? _instantly_ Raised if this was a tile ghost and the `raise_revive` flag was set and the tile was successfully revived.
     *
     * _Can only be used if this is Ghost_
     * @returns Any items the new real entity collided with or `nil` if the ghost could not be revived.
     * @returns The revived entity if an entity ghost was successfully revived.
     * @returns The item request proxy if one was created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#revive Online documentation}
     */
    revive(params?: {
      /**
       * If true, and an entity ghost; {@link ScriptRaisedReviveEvent script_raised_revive} will be called. Else if true, and a tile ghost; {@link ScriptRaisedSetTilesEvent script_raised_set_tiles} will be called.
       */
      readonly raise_revive?: boolean
      /**
       * Items that would be deleted will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
       */
      readonly overflow?: LuaInventory
    }): LuaMultiReturn<[Record<string, uint32> | nil, LuaEntity | nil, LuaEntity | nil]>
    /**
     * Revives a ghost silently, so the revival makes no sound and no smoke is created.
     *
     * ## Raised events
     * - {@link ScriptRaisedReviveEvent script_raised_revive}? _instantly_ Raised if this was an entity ghost and the `raise_revive` flag was set and the entity was successfully revived.
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}? _instantly_ Raised if this was a tile ghost and the `raise_revive` flag was set and the tile was successfully revived.
     *
     * _Can only be used if this is Ghost_
     * @returns Any items the new real entity collided with or `nil` if the ghost could not be revived.
     * @returns The revived entity if an entity ghost was successfully revived.
     * @returns The item request proxy if one was created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#silent_revive Online documentation}
     */
    silent_revive(params?: {
      /**
       * If true, and an entity ghost; {@link ScriptRaisedReviveEvent script_raised_revive} will be called. Else if true, and a tile ghost; {@link ScriptRaisedSetTilesEvent script_raised_set_tiles} will be called.
       */
      readonly raise_revive?: boolean
      /**
       * Items that would be deleted will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
       */
      readonly overflow?: LuaInventory
    }): LuaMultiReturn<[ItemWithQualityCounts | nil, LuaEntity | nil, LuaEntity | nil]>
    /**
     * _Can only be used if this is Rail_
     * @returns Rail connected in the specified manner to this one, `nil` if unsuccessful.
     * @returns Rail direction of the returned rail which points to origin rail
     * @returns Turn to be taken when going back from returned rail to origin rail
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rail Online documentation}
     */
    get_connected_rail(params: {
      readonly rail_direction: defines.rail_direction
      readonly rail_connection_direction: defines.rail_connection_direction
    }): LuaMultiReturn<[LuaEntity | nil, defines.rail_direction | nil, defines.rail_connection_direction | nil]>
    /**
     * Get the rails that this signal is connected to.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rails Online documentation}
     */
    get_connected_rails(): LuaEntity[]
    /**
     * Get the rail signal at the start/end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction The direction of travel relative to this rail.
     * @param in_else_out If true, gets the signal at the entrance of the rail segment, otherwise gets the signal at the exit of the rail segment.
     * @returns `nil` if the rail segment doesn't start/end with a signal.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_signal Online documentation}
     */
    get_rail_segment_signal(direction: defines.rail_direction, in_else_out: boolean): LuaEntity | nil
    /**
     * Get train stop at the start/end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction The direction of travel relative to this rail.
     * @returns `nil` if the rail segment doesn't start/end with a train stop.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_stop Online documentation}
     */
    get_rail_segment_stop(direction: defines.rail_direction): LuaEntity | nil
    /**
     * Get the rail at the end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @returns The rail entity.
     * @returns A rail direction pointing out of the rail segment from the end rail.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_end Online documentation}
     */
    get_rail_segment_end(direction: defines.rail_direction): LuaMultiReturn<[LuaEntity, defines.rail_direction]>
    /**
     * Get all rails of a rail segment this rail is in
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction Selects end of this rail that points to a rail segment end from which to start returning rails
     * @returns Rails of this rail segment
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_rails Online documentation}
     */
    get_rail_segment_rails(direction: defines.rail_direction): LuaEntity[]
    /**
     * Get the length of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_length Online documentation}
     */
    get_rail_segment_length(): double
    /**
     * Get a rail from each rail segment that overlaps with this rail's rail segment.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_overlaps Online documentation}
     */
    get_rail_segment_overlaps(): LuaEntity[]
    /**
     * Checks if this rail and other rail both belong to the same rail segment.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_rail_in_same_rail_segment_as Online documentation}
     */
    is_rail_in_same_rail_segment_as(other_rail: LuaEntity): boolean
    /**
     * Checks if this rail and other rail both belong to the same rail block.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_rail_in_same_rail_block_as Online documentation}
     */
    is_rail_in_same_rail_block_as(other_rail: LuaEntity): boolean
    /**
     * Returns all parent signals. Parent signals are always RailChainSignal. Parent signals are those signals that are checking state of this signal to determine their own chain state.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_parent_signals Online documentation}
     */
    get_parent_signals(): LuaEntity[]
    /**
     * Returns all child signals. Child signals can be either RailSignal or RailChainSignal. Child signals are signals which are checked by this signal to determine a chain state.
     *
     * _Can only be used if this is RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_child_signals Online documentation}
     */
    get_child_signals(): LuaEntity[]
    /**
     * Returns all signals guarding entrance to a rail block this rail belongs to.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inbound_signals Online documentation}
     */
    get_inbound_signals(): LuaEntity[]
    /**
     * Returns all signals guarding exit from a rail block this rail belongs to.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_outbound_signals Online documentation}
     */
    get_outbound_signals(): LuaEntity[]
    /**
     * Get the filter for a slot in an inserter, loader, mining drill, asteroid collector, or logistic storage container. The entity must allow filters.
     * @param slot_index Index of the slot to get the filter for.
     * @returns The filter, or `nil` if the given slot has no filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_filter Online documentation}
     */
    get_filter(slot_index: uint32): ItemFilter | LuaEntityPrototype | LuaAsteroidChunkPrototype | nil
    /**
     * Set the filter for a slot in an inserter (ItemFilter), loader (ItemFilter), mining drill (EntityID), asteroid collector (AsteroidChunkID) or logistic storage container (ItemWithQualityID). The entity must allow filters.
     * @param index Index of the slot to set the filter for.
     * @param filter The item or entity to filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_filter Online documentation}
     */
    set_filter(index: uint32, filter?: ItemFilterWrite | ItemWithQualityID | EntityID | AsteroidChunkID): void
    /**
     * Gets the filter for this infinity container at the given index, or `nil` if the filter index doesn't exist or is empty.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_infinity_container_filter Online documentation}
     */
    get_infinity_container_filter(index: uint32): InfinityInventoryFilter | nil
    /**
     * Sets the filter for this infinity container at the given index.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to set.
     * @param filter The new filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_infinity_container_filter Online documentation}
     */
    set_infinity_container_filter(index: uint32, filter: InfinityInventoryFilterWrite | nil): void
    /**
     * Gets the filter for this infinity pipe, or `nil` if the filter is empty.
     *
     * _Can only be used if this is InfinityPipe_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_infinity_pipe_filter Online documentation}
     */
    get_infinity_pipe_filter(): InfinityPipeFilter | nil
    /**
     * Sets the filter for this infinity pipe.
     *
     * _Can only be used if this is InfinityPipe_
     * @param filter The new filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_infinity_pipe_filter Online documentation}
     */
    set_infinity_pipe_filter(filter: InfinityPipeFilter | nil): void
    /**
     * Gets the heat setting for this heat interface.
     *
     * _Can only be used if this is HeatInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_heat_setting Online documentation}
     */
    get_heat_setting(): HeatSetting
    /**
     * Sets the heat setting for this heat interface.
     *
     * _Can only be used if this is HeatInterface_
     * @param filter The new setting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_heat_setting Online documentation}
     */
    set_heat_setting(filter: HeatSetting): void
    /**
     * Gets the control behavior of the entity (if any).
     * @returns The control behavior or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_control_behavior Online documentation}
     */
    get_control_behavior(): LuaControlBehavior | nil
    /**
     * Gets (and or creates if needed) the control behavior of the entity.
     * @returns The control behavior or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_or_create_control_behavior Online documentation}
     */
    get_or_create_control_behavior(): LuaControlBehavior | nil
    /**
     * @param wire_connector_id Wire connector to get circuit network for.
     * @returns The circuit network or nil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_circuit_network Online documentation}
     */
    get_circuit_network(wire_connector_id: defines.wire_connector_id): LuaCircuitNetwork | nil
    /**
     * Read a single signal from the selected wire connector
     * @param signal The signal to read.
     * @param wire_connector_id Wire connector ID from which to get the signal
     * @param extra_wire_connector_id Additional wire connector ID. If specified, signal will be added to the result
     * @returns The current value of the signal.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_signal Online documentation}
     */
    get_signal(
      signal: SignalIDWrite,
      wire_connector_id: defines.wire_connector_id,
      extra_wire_connector_id?: defines.wire_connector_id,
    ): int32
    /**
     * Read all signals from the selected wire connector.
     * @param wire_connector_id Wire connector ID from which to get the signal
     * @param extra_wire_connector_id Additional wire connector ID. If specified, signals will be added to the result
     * @returns Current values of all signals.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_signals Online documentation}
     */
    get_signals(
      wire_connector_id: defines.wire_connector_id,
      extra_wire_connector_id?: defines.wire_connector_id,
    ): Signal[] | nil
    /**
     * Whether this entity supports a backer name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#supports_backer_name Online documentation}
     */
    supports_backer_name(): boolean
    /**
     * Copies settings from the given entity onto this entity.
     * @param by_player If provided, the copying is done 'as' this player and {@link OnEntitySettingsPastedEvent on_entity_settings_pasted} is triggered.
     * @returns Any items removed from this entity as a result of copying the settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#copy_settings Online documentation}
     */
    copy_settings(entity: LuaEntity, by_player?: PlayerIdentification): ItemWithQualityCounts
    /**
     * Gets all the `LuaLogisticPoint`s that this entity owns. Optionally returns only the point specified by the index parameter.
     * @param index If provided, this method only returns the `LuaLogisticPoint` specified by this index, or `nil` if it doesn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_logistic_point Online documentation}
     */
    get_logistic_point(index: defines.logistic_member_index): LuaLogisticPoint | nil
    get_logistic_point(): Record<defines.logistic_member_index, LuaLogisticPoint> | nil
    /**
     * Plays a note with the given instrument and note.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @returns Whether the request is valid. The sound may or may not be played depending on polyphony settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#play_note Online documentation}
     */
    play_note(instrument: uint32, note: uint32, stop_playing_sounds?: boolean): boolean
    /**
     * Connects the rolling stock in the given direction.
     *
     * _Can only be used if this is RollingStock_
     * @returns Whether any connection was made
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connect_rolling_stock Online documentation}
     */
    connect_rolling_stock(direction: defines.rail_direction): boolean
    /**
     * Tries to disconnect this rolling stock in the given direction.
     *
     * _Can only be used if this is RollingStock_
     * @returns If anything was disconnected
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disconnect_rolling_stock Online documentation}
     */
    disconnect_rolling_stock(direction: defines.rail_direction): boolean
    /**
     * Reconnect loader, beacon, cliff and mining drill connections to entities that might have been teleported out or in by the script. The game doesn't do this automatically as we don't want to lose performance by checking this in normal games.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#update_connections Online documentation}
     */
    update_connections(): void
    /**
     * Current recipe being assembled by this machine, if any.
     *
     * _Can only be used if this is CraftingMachine_
     * @returns
     * @returns
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_recipe Online documentation}
     */
    get_recipe(): LuaMultiReturn<[LuaRecipe | nil, LuaQualityPrototype | nil]>
    /**
     * Sets the given recipe in this assembly machine.
     *
     * _Can only be used if this is AssemblingMachine_
     * @param recipe The new recipe. Writing `nil` clears the recipe, if any.
     * @param quality The quality. If not provided `normal` is used.
     * @returns Any items removed from this entity as a result of setting the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_recipe Online documentation}
     */
    set_recipe(recipe?: RecipeID, quality?: QualityID): ItemWithQualityCounts
    /**
     * Rotates this entity as if the player rotated it.
     *
     * ## Raised events
     * - {@link OnPlayerRotatedEntityEvent on_player_rotated_entity}? _instantly_ Raised if the `by_player` argument was given and the rotation was successful.
     * @returns Whether the rotation was successful.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rotate Online documentation}
     */
    rotate(params?: {
      /**
       * If `true`, rotate the entity in the counter-clockwise direction.
       */
      readonly reverse?: boolean
      readonly by_player?: PlayerIdentification
    }): boolean
    /**
     * Gets the driver of this vehicle if any.
     *
     * _Can only be used if this is Vehicle_
     * @returns `nil` if the vehicle contains no driver. To check if there's a passenger see {@link LuaEntity#get_passenger LuaEntity::get_passenger}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_driver Online documentation}
     */
    get_driver(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the driver of this vehicle.
     *
     * This differs from {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Vehicle_
     * @param driver The new driver. Writing `nil` ejects the current driver, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_driver Online documentation}
     */
    set_driver(driver: LuaEntity | PlayerIdentification | nil): void
    /**
     * Gets the passenger of this car, spidertron, or cargo pod if any.
     *
     * This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that for cars, the passenger can't drive the car.
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @returns `nil` if the vehicle contains no passenger. To check if there's a driver see {@link LuaEntity#get_driver LuaEntity::get_driver}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_passenger Online documentation}
     */
    get_passenger(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the passenger of this car, spidertron, or cargo pod.
     *
     * This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_passenger Online documentation}
     */
    set_passenger(passenger: LuaEntity | PlayerIdentification | nil): void
    /**
     * Returns `true` if this entity produces or consumes electricity and is connected to an electric network that has at least one entity that can produce power.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_connected_to_electric_network Online documentation}
     */
    is_connected_to_electric_network(): boolean
    /**
     * The trains scheduled to stop at this train stop.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_train_stop_trains Online documentation}
     */
    get_train_stop_trains(): LuaTrain[]
    /**
     * The train currently stopped at this train stop, if any.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_stopped_train Online documentation}
     */
    get_stopped_train(): LuaTrain | nil
    /**
     * Clones this entity.
     *
     * ## Raised events
     * - {@link OnEntityClonedEvent on_entity_cloned}? _instantly_ Raised if the entity was successfully cloned.
     * @returns The cloned entity or `nil` if this entity can't be cloned/can't be cloned to the given location.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clone Online documentation}
     */
    clone(params: {
      /**
       * The destination position
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The destination surface
       */
      readonly surface?: LuaSurface
      readonly force?: ForceID
      /**
       * If false, the building effect smoke will not be shown around the new entity.
       */
      readonly create_build_effect_smoke?: boolean
    }): LuaEntity | nil
    /**
     * Get the amount of all or some fluid in this entity.
     *
     * If information about fluid temperatures is required, {@link LuaEntity#fluidbox LuaEntity::fluidbox} should be used instead.
     * @param fluid Prototype name of the fluid to count. If not specified, count all fluids.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_count Online documentation}
     */
    get_fluid_count(fluid?: string): double
    /**
     * Get amounts of all fluids in this entity.
     *
     * If information about fluid temperatures is required, {@link LuaEntity#get_fluid LuaEntity::get_fluid} or {@link LuaEntity#fluidbox LuaEntity::fluidbox} should be used instead.
     * @returns The amounts, indexed by fluid names.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_contents Online documentation}
     */
    get_fluid_contents(): Record<string, FluidAmount>
    /**
     * Remove fluid from this entity.
     *
     * If temperature is given only fluid matching that exact temperature is removed. If minimum and maximum is given fluid within that range is removed.
     * @returns Amount of fluid actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_fluid Online documentation}
     */
    remove_fluid(params: {
      /**
       * Fluid prototype name.
       */
      readonly name: string
      /**
       * Amount to remove
       */
      readonly amount: double
      readonly minimum_temperature?: double
      readonly maximum_temperature?: double
      readonly temperature?: double
    }): double
    /**
     * Insert fluid into this entity. Fluidbox is chosen automatically.
     * @param fluid Fluid to insert.
     * @returns Amount of fluid actually inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#insert_fluid Online documentation}
     */
    insert_fluid(fluid: Fluid): double
    /**
     * Remove all fluids from this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clear_fluid_inside Online documentation}
     */
    clear_fluid_inside(): void
    /**
     * Get the source of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beam_source Online documentation}
     */
    get_beam_source(): BeamTarget | nil
    /**
     * Set the source of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_beam_source Online documentation}
     */
    set_beam_source(source: LuaEntity | (MapPosition | MapPositionArray)): void
    /**
     * Get the target of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beam_target Online documentation}
     */
    get_beam_target(): BeamTarget | nil
    /**
     * Set the target of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_beam_target Online documentation}
     */
    set_beam_target(target: LuaEntity | (MapPosition | MapPositionArray)): void
    /**
     * The radius of this entity. The radius is defined as half the distance between the top left corner and bottom right corner of the collision box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_radius Online documentation}
     */
    get_radius(): double
    /**
     * The health ratio of this entity between 1 and 0 (for full health and no health respectively).
     * @returns `nil` if this entity doesn't have health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_health_ratio Online documentation}
     */
    get_health_ratio(): float | nil
    /**
     * Creates the same smoke that is created when you place a building by hand.
     *
     * You can play the building sound to go with it by using {@link LuaSurface#play_sound LuaSurface::play_sound}, eg: `entity.surface.play_sound{path="entity-build/"..entity.prototype.name, position=entity.position}`
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_build_effect_smoke Online documentation}
     */
    create_build_effect_smoke(): void
    /**
     * Release the unit from the spawner which spawned it. This allows the spawner to continue spawning additional units.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#release_from_spawner Online documentation}
     */
    release_from_spawner(): void
    /**
     * Toggle this entity's equipment movement bonus. Does nothing if the entity does not have an equipment grid.
     *
     * This property can also be read and written on the equipment grid of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#toggle_equipment_movement_bonus Online documentation}
     */
    toggle_equipment_movement_bonus(): void
    /**
     * Whether this character can shoot the given entity or position.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_shoot Online documentation}
     */
    can_shoot(target: LuaEntity, position: MapPosition | MapPositionArray): boolean
    /**
     * Only works if the entity is a speech-bubble, with an "effect" defined in its wrapper_flow_style. Starts animating the opacity of the speech bubble towards zero, and destroys the entity when it hits zero.
     *
     * _Can only be used if this is SpeechBubble_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#start_fading_out Online documentation}
     */
    start_fading_out(): void
    /**
     * Returns the new entity prototype and its quality.
     * @returns `nil` if this entity is not marked for upgrade.
     * @returns `nil` if this entity is not marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_upgrade_target Online documentation}
     */
    get_upgrade_target(): LuaMultiReturn<[LuaEntityPrototype | nil, LuaQualityPrototype | nil]>
    /**
     * Returns the amount of damage to be taken by this entity.
     * @returns `nil` if this entity does not have health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_damage_to_be_taken Online documentation}
     */
    get_damage_to_be_taken(): float | nil
    /**
     * Depletes and destroys this resource entity.
     *
     * ## Raised events
     * - {@link OnResourceDepletedEvent on_resource_depleted} _instantly_
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#deplete Online documentation}
     */
    deplete(): void
    /**
     * Mines this entity.
     *
     * 'Standard' operation is to keep calling `LuaEntity.mine` with an inventory until all items are transferred and the items dealt with.
     *
     * The result of mining the entity (the item(s) it produces when mined) will be dropped on the ground if they don't fit into the provided inventory. If no inventory is provided, the items will be destroyed.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy}? _instantly_ Raised if the `raise_destroyed` flag was set and the entity was successfully mined.
     * @returns Whether mining succeeded.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mine Online documentation}
     */
    mine(params?: {
      /**
       * If provided the item(s) will be transferred into this inventory. If provided, this must be an inventory created with {@link LuaGameScript#create_inventory LuaGameScript::create_inventory} or be a basic inventory owned by some entity.
       */
      readonly inventory?: LuaInventory
      /**
       * If true, when the item(s) don't fit into the given inventory the entity is force mined. If false, the mining operation fails when there isn't enough room to transfer all of the items into the inventory. Defaults to false. This is ignored and acts as `true` if no inventory is provided.
       */
      readonly force?: boolean
      /**
       * If true, {@link ScriptRaisedDestroyEvent script_raised_destroy} will be raised. Defaults to `true`.
       */
      readonly raise_destroyed?: boolean
      /**
       * If true, the minable state of the entity is ignored. Defaults to `false`. If false, an entity that isn't minable (set as not-minable in the prototype or isn't minable for other reasons) will fail to be mined.
       */
      readonly ignore_minable?: boolean
    }): boolean
    /**
     * Triggers spawn_decoration actions defined in the entity prototype or does nothing if entity is not "turret" or "unit-spawner".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawn_decorations Online documentation}
     */
    spawn_decorations(): void
    /**
     * Get the entity ID at the specified position in the turret's priority list.
     * @param index The index of the entry to fetch.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_priority_target Online documentation}
     */
    get_priority_target(index: uint32): LuaEntityPrototype | nil
    /**
     * Set the entity ID name at the specified position in the turret's priority list.
     * @param index The index of the entry to set.
     * @param entity_id The name of the entity prototype, or `nil` to clear the entry.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_priority_target Online documentation}
     */
    set_priority_target(index: uint32, entity_id?: EntityID): void
    /**
     * Can wires reach between these entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_wires_reach Online documentation}
     */
    can_wires_reach(entity: LuaEntity): boolean
    /**
     * Gets rolling stock connected to the given end of this stock.
     *
     * _Can only be used if this is RollingStock_
     * @returns The rolling stock connected at the given end, `nil` if none is connected there.
     * @returns The rail direction of the connected rolling stock if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rolling_stock Online documentation}
     */
    get_connected_rolling_stock(
      direction: defines.rail_direction,
    ): LuaMultiReturn<[LuaEntity | nil, defines.rail_direction | nil]>
    /**
     * Is this entity or tile ghost or item request proxy registered for construction? If false, it means a construction robot has been dispatched to build the entity, or it is not an entity that can be constructed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_construction Online documentation}
     */
    is_registered_for_construction(): boolean
    /**
     * Is this entity registered for deconstruction with this force? If false, it means a construction robot has been dispatched to deconstruct it, or it is not marked for deconstruction. The complexity is effectively O(1) - it depends on the number of objects targeting this entity which should be small enough.
     * @param force The force construction manager to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_deconstruction Online documentation}
     */
    is_registered_for_deconstruction(force: ForceID): boolean
    /**
     * Is this entity registered for upgrade? If false, it means a construction robot has been dispatched to upgrade it, or it is not marked for upgrade. This is worst-case O(N) complexity where N is the current number of things in the upgrade queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_upgrade Online documentation}
     */
    is_registered_for_upgrade(): boolean
    /**
     * Is this entity registered for repair? If false, it means a construction robot has been dispatched to repair it, or it is not damaged. This is worst-case O(N) complexity where N is the current number of things in the repair queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_repair Online documentation}
     */
    is_registered_for_repair(): boolean
    /**
     * Adds the given position to this spidertron's autopilot's queue of destinations.
     *
     * _Can only be used if this is SpiderVehicle_
     * @param position The position the spidertron should move to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#add_autopilot_destination Online documentation}
     */
    add_autopilot_destination(position: MapPosition | MapPositionArray): void
    /**
     * Connects current linked belt with another one.
     *
     * Neighbours have to be of different type. If given linked belt is connected to something else it will be disconnected first. If provided neighbour is connected to something else it will also be disconnected first. Automatically updates neighbour to be connected back to this one.
     *
     * _Can only be used if this is LinkedBelt_
     * @param neighbour Another linked belt or entity ghost containing linked belt to connect or nil to disconnect
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connect_linked_belts Online documentation}
     */
    connect_linked_belts(neighbour?: LuaEntity): void
    /**
     * Disconnects linked belt from its neighbour.
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disconnect_linked_belts Online documentation}
     */
    disconnect_linked_belts(): void
    /**
     * Gets legs of given SpiderVehicle.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_spider_legs Online documentation}
     */
    get_spider_legs(): LuaEntity[]
    /**
     * Sets the {@link LuaEntity#speed speed} of the given SpiderVehicle to zero. Notably does not clear its {@link LuaEntity#autopilot_destination autopilot_destination}, which it will continue moving towards if set.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stop_spider Online documentation}
     */
    stop_spider(): void
    /**
     * Gets a single wire connector of this entity, if any.
     * @param wire_connector_id Identifier of a specific connector to get
     * @param or_create If true and connector does not exist, it will be allocated if possible
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_wire_connector Online documentation}
     */
    get_wire_connector(wire_connector_id: defines.wire_connector_id, or_create: boolean): LuaWireConnector | nil
    /**
     * Gets all wire connectors of this entity
     * @param or_create If true, it will try to create all connectors possible
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_wire_connectors Online documentation}
     */
    get_wire_connectors(or_create: boolean): Record<defines.wire_connector_id, LuaWireConnector>
    /**
     * Gets a LuaRailEnd object for specified end of this rail
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_end Online documentation}
     */
    get_rail_end(direction: defines.rail_direction): LuaRailEnd
    /**
     * The input flow limit for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_electric_input_flow_limit Online documentation}
     */
    get_electric_input_flow_limit(quality?: QualityID): double | nil
    /**
     * The output flow limit for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_electric_output_flow_limit Online documentation}
     */
    get_electric_output_flow_limit(quality?: QualityID): double | nil
    /**
     * Returns a table with all beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beacons Online documentation}
     */
    get_beacons(): LuaEntity[] | nil
    /**
     * Returns a table with all entities affected by this beacon
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beacon_effect_receivers Online documentation}
     */
    get_beacon_effect_receivers(): LuaEntity[]
    /**
     * Take an ascending cargo pod and safely make it skip all animation and immediately switch surface.
     *
     * ## Raised events
     * - {@link OnCargoPodFinishedAscendingEvent on_cargo_pod_finished_ascending} _instantly_
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#force_finish_ascending Online documentation}
     */
    force_finish_ascending(): void
    /**
     * Take a descending cargo pod and safely make it arrive and deposit cargo.
     *
     * ## Raised events
     * - {@link OnCargoPodFinishedDescendingEvent on_cargo_pod_finished_descending} _instantly_
     * - {@link OnCargoPodDeliveredCargoEvent on_cargo_pod_delivered_cargo}? _instantly_ Raised instantly if landing on the ground (i.e. destination type is {@link defines.cargo_destination.surface surface}. If landing in a {@link defines.cargo_destination.station station}, event will be raised after parking is complete.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#force_finish_descending Online documentation}
     */
    force_finish_descending(): void
    /**
     * Creates a cargo pod if possible.
     *
     * Cargo pod will be created with {@link defines.cargo_destination.invalid invalid} destination type. Setting {@link LuaEntity#cargo_pod_destination cargo_pod_destination} will cause it to launch.
     *
     * _Can only be used if this is RocketSilo, CargoLandingPad or SpacePlatformHub_
     * @param cargo_hatch The hatch to create the pod at. A random (available) one is picked if not provided.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_cargo_pod Online documentation}
     */
    create_cargo_pod(cargo_hatch?: LuaCargoHatch): LuaEntity | nil
    /**
     * Gets the cargo bays connected to this cargo landing pad or space platform hub.
     *
     * _Can only be used if this is CargoLandingPad or SpacePlatformHub_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_cargo_bays Online documentation}
     */
    get_cargo_bays(): LuaEntity[]
    /**
     * The same as {@link LuaInventory#supports_bar LuaInventory::supports_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inventory_supports_bar Online documentation}
     */
    inventory_supports_bar(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#get_bar LuaInventory::get_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_bar Online documentation}
     */
    get_inventory_bar(inventory_index: defines.inventory): uint32
    /**
     * The same as {@link LuaInventory#set_bar LuaInventory::set_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param bar The new limit. Omitting this parameter or passing `nil` will clear the limit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_bar Online documentation}
     */
    set_inventory_bar(inventory_index: defines.inventory, bar?: uint32): void
    /**
     * The same as {@link LuaInventory#supports_filters LuaInventory::supports_filters} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inventory_supports_filters Online documentation}
     */
    inventory_supports_filters(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#is_filtered LuaInventory::is_filtered} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_inventory_filtered Online documentation}
     */
    is_inventory_filtered(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#can_set_filter LuaInventory::can_set_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index
     * @param filter The item filter
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_set_inventory_filter Online documentation}
     */
    can_set_inventory_filter(inventory_index: defines.inventory, index: uint32, filter: ItemFilterWrite): boolean
    /**
     * The same as {@link LuaInventory#get_filter LuaInventory::get_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index
     * @returns The current filter or `nil` if none.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_filter Online documentation}
     */
    get_inventory_filter(inventory_index: defines.inventory, index: uint32): ItemFilter | nil
    /**
     * The same as {@link LuaInventory#set_filter LuaInventory::set_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index.
     * @param filter The new filter. `nil` erases any existing filter.
     * @returns If the filter was allowed to be set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_filter Online documentation}
     */
    set_inventory_filter(inventory_index: defines.inventory, index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Registers the given tree in this agricultural tower.
     *
     * If the tree is not within range of the tower it will not be registered.
     *
     * If the tree is already registered with a tower it will not be registered.
     *
     * _Can only be used if this is AgriculturalTower_
     * @returns If the tree was registered.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#register_tree Online documentation}
     */
    register_tree(tree: LuaEntity): boolean
    /**
     * Gets the combined movement vector (direction and speed) of this combat robot or asteroid. The entity moves by this vector each tick.
     *
     * Note that for combat robots this does not include the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_movement Online documentation}
     */
    get_movement(): Vector
    /**
     * Sets the movement direction and movement speed for this combat robot or asteroid.
     *
     * Note that for combat robots this does not affect the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @param direction This normalized form of this vector is used for the movement direction.
     * @param speed Speed in tiles per tick. Cannot be less than 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_movement Online documentation}
     */
    set_movement(direction: Vector | VectorTable, speed: double): void
    /**
     * Gets fluid of the index-th fluid storage. This includes fluidbox and non-fluidbox fluid storages like fluid wagon contents. Refer to {@link LuaEntity#fluids_count LuaEntity::fluids_count} for more information on available storages.
     * @param index Fluid storage index. Valid values are from 1 up to {@link LuaEntity#fluids_count LuaEntity::fluids_count}.
     * @returns Fluid in this storage. `nil` if fluid storage is empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid Online documentation}
     */
    get_fluid(index: uint32): Fluid | nil
    /**
     * Sets fluid to the index-th fluid storage. This includes fluidbox and non-fluidbox fluid storages like fluid wagon contents. Refer to {@link LuaEntity#fluids_count LuaEntity::fluids_count} for more information on available storages.
     *
     * Fluid storages that are part of fluidboxes (also available through {@link LuaFluidBox}) may reject some fluids if they do not match filters or are above the fluidbox volume. To verify how much fluid was set a return value can be used which is the same as value that would be returned by {@link LuaEntity#get_fluid LuaEntity::get_fluid}.
     * @param index Fluid storage index. Valid values are from 1 up to {@link LuaEntity#fluids_count LuaEntity::fluids_count}.
     * @param fluid Fluid to set. Fluid storage will be cleared if this is not provided.
     * @returns Fluid in this storage after it was set. `nil` if fluid storage is empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_fluid Online documentation}
     */
    set_fluid(index: uint32, fluid?: Fluid): Fluid | nil
    /**
     * Gives logistic sections of this entity if it uses logistic sections.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_logistic_sections Online documentation}
     */
    get_logistic_sections(): LuaLogisticSections | nil
    /**
     * Sets inventory size override. When set, supported entity will ignore inventory size from prototype and will instead keep inventory size equal to the override. Setting `nil` will restore default inventory size.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @param overflow Items that would be deleted due to change of inventory size will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_size_override Online documentation}
     */
    set_inventory_size_override(
      inventory_index: defines.inventory,
      size_override: uint16 | nil,
      overflow?: LuaInventory,
    ): void
    /**
     * Gets the inventory size override of the selected inventory if size override was set using {@link LuaEntity#set_inventory_size_override set_inventory_size_override}.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_size_override Online documentation}
     */
    get_inventory_size_override(inventory_index: defines.inventory): uint16 | nil
    /**
     * Gives TilePosition of a tile which this offshore pump uses to check what fluid should be produced.
     *
     * _Can only be used if this is OffshorePump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_source_tile Online documentation}
     */
    get_fluid_source_tile(): TilePosition
    /**
     * Checks what is expected fluid to be produced from the offshore pump's source tile. It accounts for visible tile, hidden tile and double hidden tile. It ignores currently set fluid box filter.
     *
     * _Can only be used if this is OffshorePump_
     * @returns Name of fluid that should be produced by this offshore pump based on existing tiles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_source_fluid Online documentation}
     */
    get_fluid_source_fluid(): string | nil
    /**
     * Length of this rail piece.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rail_length Online documentation}
     */
    readonly rail_length: double
    /**
     * Name of the entity prototype. E.g. "inserter" or "fast-inserter".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#name Online documentation}
     */
    readonly name: string
    /**
     * Name of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_name Online documentation}
     */
    readonly ghost_name: string
    /**
     * Localised name of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly localised_description: LocalisedString
    /**
     * Localised name of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_localised_name Online documentation}
     */
    readonly ghost_localised_name: LocalisedString
    /**
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_localised_description Online documentation}
     */
    readonly ghost_localised_description: LocalisedString
    /**
     * The entity prototype type of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#type Online documentation}
     */
    readonly type: EntityType
    /**
     * The prototype type of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_type Online documentation}
     */
    readonly ghost_type: EntityType
    /**
     * If set to 'true', this inserter will use filtering logic.
     *
     * This has no effect if the prototype does not support filters.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#use_filters Online documentation}
     */
    use_filters: boolean
    /**
     * Deactivating an entity will stop all its operations (car will stop moving, inserters will stop working, fish will stop moving etc).
     *
     * Reading from this returns `false` if the entity is deactivated in at least one of the following ways: {@link LuaEntity#disabled_by_script by script}, {@link LuaEntity#disabled_by_control_behavior by circuit network}, {@link LuaEntity#disabled_by_recipe by recipe}, {@link LuaEntity#frozen by freezing}, or by deconstruction.
     *
     * Writing to this is deprecated and affects only the {@link LuaEntity#disabled_by_script disabled_by_script} state.
     *
     * Entities that are not active naturally can't be set to be active (setting it to be active will do nothing). Some entities (Corpse, FireFlame, Roboport, RollingStock, dying entities) need to remain active and will ignore writes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#active Online documentation}
     */
    active: boolean
    /**
     * If set to `false`, this entity can't be damaged and won't be attacked automatically. It can however still be mined.
     *
     * Entities that are indestructible naturally (they have no health, like smoke, resource etc) can't be set to be destructible.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#destructible Online documentation}
     */
    destructible: boolean
    /**
     * Not minable entities can still be destroyed.
     *
     * Tells if entity reports as being minable right now. This takes into account `minable_flag` and entity specific conditions (for example rail under rolling stocks is not minable, vehicle with passenger is not minable).
     *
     * Write to this field since 2.0.26 is deprecated and it will result in write to `minable_flag` instead.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#minable Online documentation}
     */
    minable: boolean
    /**
     * Script controlled flag that allows entity to be mined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#minable_flag Online documentation}
     */
    minable_flag: boolean
    /**
     * When entity is not to be rotatable (inserter, transport belt etc), it can't be rotated by player using the R key.
     *
     * Entities that are not rotatable naturally (like chest or furnace) can't be set to be rotatable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rotatable Online documentation}
     */
    rotatable: boolean
    /**
     * Player can't open gui of this entity and he can't quick insert/input stuff in to the entity when it is not operable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#operable Online documentation}
     */
    operable: boolean
    /**
     * The current health of the entity, if any. Health is automatically clamped to be between `0` and max health (inclusive). Entities with a health of `0` can not be attacked.
     *
     * To get the maximum possible health of this entity, see {@link LuaEntity#max_health LuaEntity::max_health}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#health Online documentation}
     */
    health?: float
    /**
     * Max health of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#max_health Online documentation}
     */
    readonly max_health: float
    /**
     * The current direction this entity is facing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#direction Online documentation}
     */
    direction: defines.direction
    /**
     * Whether the entity is currently mirrored. This state is referred to as `flipped` elsewhere, such as on the {@link OnPlayerFlippedEntityEvent on_player_flipped_entity} event.
     *
     * If an entity is mirrored, it is flipped over the axis that is pointing in the entity's direction. For example if a mirrored entity is facing north, everything that was defined to be facing east in the prototype now faces west.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mirroring Online documentation}
     */
    mirroring: boolean
    /**
     * Whether the entity has direction. When it is false for this entity, it will always return north direction when asked for.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#supports_direction Online documentation}
     */
    readonly supports_direction: boolean
    /**
     * The smooth orientation of this entity. For turrets this is the orientation of the weapon.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * The orientation of this cliff.
     *
     * _Can only be used if this is Cliff_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cliff_orientation Online documentation}
     */
    readonly cliff_orientation: CliffOrientation
    /**
     * The relative orientation of the vehicle turret, artillery turret, artillery wagon. `nil` if this entity isn't a vehicle with a vehicle turret or artillery turret/wagon.
     *
     * Writing does nothing if the vehicle doesn't have a turret.
     *
     * For the turret orientation of non-artillery turrets, use {@link LuaEntity#orientation LuaEntity::orientation}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#relative_turret_orientation Online documentation}
     */
    relative_turret_orientation?: RealOrientation
    /**
     * The torso orientation of this spider vehicle.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#torso_orientation Online documentation}
     */
    torso_orientation: RealOrientation
    /**
     * Count of resource units contained.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#amount Online documentation}
     */
    amount: uint32
    /**
     * Count of initial resource units contained. `nil` if this is not an infinite resource.
     *
     * If this is not an infinite resource, writing will produce an error.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#initial_amount Online documentation}
     */
    initial_amount?: uint32
    /**
     * Multiplies the acceleration the car can create for one unit of energy. Defaults to `1`.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effectivity_modifier Online documentation}
     */
    effectivity_modifier: float
    /**
     * Multiplies the energy consumption.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#consumption_modifier Online documentation}
     */
    consumption_modifier: float
    /**
     * Multiplies the car friction rate.
     *
     * _Can only be used if this is Car_
     * @example
     * -- This will allow the car to go much faster
     * game.player.vehicle.friction_modifier = 0.5
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#friction_modifier Online documentation}
     */
    friction_modifier: float
    /**
     * Whether the driver of this car or spidertron is the gunner. If `false`, the passenger is the gunner. `nil` if this is neither a car or a spidertron.
     *
     * _Can only be used if this is Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#driver_is_gunner Online documentation}
     */
    driver_is_gunner?: boolean
    /**
     * Read when this spidertron auto-targets enemies
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#vehicle_automatic_targeting_parameters Online documentation}
     */
    vehicle_automatic_targeting_parameters: VehicleAutomaticTargetingParameters
    /**
     * The current speed if this is a car, rolling stock, projectile or spidertron, or the maximum speed if this is a unit. The speed is in tiles per tick. `nil` if this is not a car, rolling stock, unit, projectile or spidertron.
     *
     * Only the speed of units, cars, and projectiles are writable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#speed Online documentation}
     */
    speed?: float
    /**
     * The current speed of this unit in tiles per tick, taking into account any walking speed modifier given by the tile the unit is standing on. `nil` if this is not a unit.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effective_speed Online documentation}
     */
    readonly effective_speed?: float
    /**
     * _Can only be used if this is ItemEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stack Online documentation}
     */
    readonly stack: LuaItemStack
    /**
     * The entity prototype of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#prototype Online documentation}
     */
    readonly prototype: LuaEntityPrototype
    /**
     * The prototype of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_prototype Online documentation}
     */
    readonly ghost_prototype: LuaEntityPrototype | LuaTilePrototype
    /**
     * Position where the entity puts its stuff.
     *
     * Mining drills and crafting machines can't have their drop position changed; inserters must have `allow_custom_vectors` set to true on their prototype to allow changing the drop position.
     *
     * Meaningful only for entities that put stuff somewhere, such as mining drills, crafting machines with a drop target or inserters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#drop_position Online documentation}
     */
    get drop_position(): MapPosition
    set drop_position(value: MapPosition | MapPositionArray)
    /**
     * Where the inserter will pick up items from.
     *
     * Inserters must have `allow_custom_vectors` set to true on their prototype to allow changing the pickup position.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_position Online documentation}
     */
    get pickup_position(): MapPosition
    set pickup_position(value: MapPosition | MapPositionArray)
    /**
     * The entity this entity is putting its items to. If there are multiple possible entities at the drop-off point, writing to this attribute allows a mod to choose which one to drop off items to. The entity needs to collide with the tile box under the drop-off position. `nil` if there is no entity to put items to, or if this is not an entity that puts items somewhere.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#drop_target Online documentation}
     */
    drop_target?: LuaEntity
    /**
     * The entity this inserter will attempt to pick up items from. If there are multiple possible entities at the pick-up point, writing to this attribute allows a mod to choose which one to pick up items from. The entity needs to collide with the tile box under the pick-up position. `nil` if there is no entity to pull items from.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_target Online documentation}
     */
    pickup_target?: LuaEntity
    /**
     * Index of the currently selected weapon slot of this character, car, or spidertron. `nil` if this entity doesn't have guns.
     *
     * _Can only be used if this is Character, Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selected_gun_index Online documentation}
     */
    selected_gun_index?: uint32
    /**
     * Energy stored in the entity's energy buffer (energy stored in electrical devices etc.). Always 0 for entities that don't have the concept of energy stored inside.
     * @example
     * game.player.print("Machine energy: " .. game.player.selected.energy .. "J")
     * game.player.selected.energy = 3000
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#energy Online documentation}
     */
    energy: double
    /**
     * The temperature of this entity's heat energy source. `nil` if this entity does not use a heat energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#temperature Online documentation}
     */
    temperature?: double
    /**
     * The previous recipe this furnace was using, if any.
     *
     * _Can only be used if this is Furnace_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#previous_recipe Online documentation}
     */
    readonly previous_recipe?: RecipeIDAndQualityIDPair
    /**
     * The item stack currently held in an inserter's hand.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#held_stack Online documentation}
     */
    readonly held_stack: LuaItemStack
    /**
     * Current position of the inserter's "hand".
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#held_stack_position Online documentation}
     */
    readonly held_stack_position: MapPosition
    /**
     * The train this rolling stock belongs to, if any. `nil` if this is not a rolling stock.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#train Online documentation}
     */
    readonly train?: LuaTrain
    /**
     * A list of neighbours for certain types of entities. Applies to underground belts, walls, gates, reactors, heat pipes, cliffs, and pipe-connectable entities.
     *
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbours > Differs depending on the type of entity:}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbours Online documentation}
     */
    readonly neighbours?: Record<string, LuaEntity> | LuaEntity[][] | LuaEntity
    /**
     * The belt connectable neighbours of this belt connectable entity. Only entities that input to or are outputs of this entity. Does not contain the other end of an underground belt, see {@link LuaEntity#neighbours LuaEntity::neighbours} for that.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_neighbours Online documentation}
     */
    readonly belt_neighbours: {
      /**
       * Array of transport belt connectable entities.
       */
      readonly inputs: LuaEntity[]
      /**
       * Array of transport belt connectable entities.
       */
      readonly outputs: LuaEntity[]
    }
    /**
     * The entities connected to this entities heat buffer.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#heat_neighbours Online documentation}
     */
    readonly heat_neighbours: LuaEntity[]
    /**
     * Fluidboxes of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#fluidbox Online documentation}
     */
    readonly fluidbox: LuaFluidBox
    /**
     * The backer name assigned to this entity. Entities that support backer names are labs, locomotives, radars, roboports, and train stops. `nil` if this entity doesn't support backer names.
     *
     * While train stops get the name of a backer when placed down, players can rename them if they want to. In this case, `backer_name` returns the player-given name of the entity.
     *
     * ## Raised events
     * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#backer_name Online documentation}
     */
    backer_name?: string
    /**
     * The label on this spider-vehicle entity, if any. `nil` if this is not a spider-vehicle.
     *
     * ## Raised events
     * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#entity_label Online documentation}
     */
    entity_label?: string
    /**
     * The ticks left before a combat robot, highlight box, smoke, or sticker entity is destroyed.
     *
     * _Can only be used if this is CombatRobot, HighlightBox, Smoke or Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_live Online documentation}
     */
    time_to_live: uint64
    /**
     * The color of this character, rolling stock, corpse, character corpse, train stop, simple-entity-with-owner, car, spider-vehicle, or lamp. `nil` if this entity doesn't use custom colors.
     *
     * Car color is overridden by the color of the current driver/passenger, if there is one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#color Online documentation}
     */
    get color(): Color | nil
    set color(value: Color | ColorArray | nil)
    /**
     * The state of this rail signal.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#signal_state Online documentation}
     */
    readonly signal_state: defines.signal_state
    /**
     * The state of this chain signal.
     *
     * _Can only be used if this is RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#chain_signal_state Online documentation}
     */
    readonly chain_signal_state: defines.chain_signal_state
    /**
     * Will this item entity be picked up automatically when the player walks over it?
     *
     * _Can only be used if this is ItemEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_looted Online documentation}
     */
    to_be_looted: boolean
    /**
     * The current crafting speed, including speed bonuses from modules and beacons.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crafting_speed Online documentation}
     */
    readonly crafting_speed: double
    /**
     * The current crafting progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crafting_progress Online documentation}
     */
    crafting_progress: float
    /**
     * The current productivity bonus progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_progress Online documentation}
     */
    bonus_progress: double
    /**
     * The quality produced when this crafting machine finishes crafting. `nil` when crafting is not in progress.
     *
     * Note: Writing `nil` is not allowed.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#result_quality Online documentation}
     */
    get result_quality(): LuaQualityPrototype | nil
    set result_quality(value: QualityID | nil)
    /**
     * The productivity bonus of this entity.
     *
     * This includes force based bonuses as well as beacon/module bonuses.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#productivity_bonus Online documentation}
     */
    readonly productivity_bonus: double
    /**
     * The pollution bonus of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pollution_bonus Online documentation}
     */
    readonly pollution_bonus: double
    /**
     * The speed bonus of this entity.
     *
     * This includes force based bonuses as well as beacon/module bonuses.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#speed_bonus Online documentation}
     */
    readonly speed_bonus: double
    /**
     * The consumption bonus of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#consumption_bonus Online documentation}
     */
    readonly consumption_bonus: double
    /**
     * Whether this underground belt goes into or out of the ground.
     *
     * _Can only be used if this is UndergroundBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_to_ground_type Online documentation}
     */
    readonly belt_to_ground_type: BeltConnectionType
    /**
     * Whether this loader gets items from or puts item into a container.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_type Online documentation}
     */
    loader_type: BeltConnectionType
    /**
     * When true, the rocket silo will automatically request items for space platforms in orbit.
     *
     * Setting the value will have no effect when the silo doesn't support logistics.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#use_transitional_requests Online documentation}
     */
    use_transitional_requests: boolean
    /**
     * The space platform in orbit this rocket silo is automatically requesting items for.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#transitional_request_target Online documentation}
     */
    readonly transitional_request_target?: LuaSpacePlatform
    /**
     * Number of rocket parts in this rocket silo.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket_parts Online documentation}
     */
    rocket_parts: uint32
    /**
     * Whether this rocket silo is set to send items to orbit automatically. Only relevant if there is an item prototype with {@link LuaItemPrototype#rocket_launch_products launch products} with automated {@link LuaItemPrototype#send_to_orbit_mode send_to_orbit_mode}, such as the satellite in vanilla (without Space Age mod).
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#send_to_orbit_automatically Online documentation}
     */
    send_to_orbit_automatically: boolean
    /**
     * The logistic network this entity is a part of, or `nil` if this entity is not a part of any logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#logistic_network Online documentation}
     */
    logistic_network: LuaLogisticNetwork | nil
    /**
     * The logistic cell this entity is a part of. Will be `nil` if this entity is not a part of any logistic cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#logistic_cell Online documentation}
     */
    readonly logistic_cell: LuaLogisticCell | nil
    /**
     * Items this ghost will request when revived or items this item request proxy is requesting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#item_requests Online documentation}
     */
    readonly item_requests: ItemWithQualityCounts
    /**
     * The insert plan for this ghost or item request proxy.
     *
     * _Can only be used if this is EntityGhost or ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#insert_plan Online documentation}
     */
    insert_plan: BlueprintInsertPlan[]
    /**
     * The removal plan for this item request proxy.
     *
     * _Can only be used if this is ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#removal_plan Online documentation}
     */
    removal_plan: BlueprintInsertPlan[]
    /**
     * The player connected to this character, if any.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#player Online documentation}
     */
    readonly player?: LuaPlayer
    /**
     * The damage dealt by this turret, artillery turret, or artillery wagon.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#damage_dealt Online documentation}
     */
    damage_dealt: double
    /**
     * The number of units killed by this turret, artillery turret, or artillery wagon.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#kills Online documentation}
     */
    kills: uint32
    /**
     * Whether this turret shoots at targets that are not on its priority list.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ignore_unprioritised_targets Online documentation}
     */
    ignore_unprioritised_targets: boolean
    /**
     * The last player that changed any setting on this entity. This includes building the entity, changing its color, or configuring its circuit network. `nil` if the last user is not part of the save anymore.
     *
     * _Can only be used if this is EntityWithOwner, DeconstructibleTileProxy or TileGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#last_user Online documentation}
     */
    get last_user(): LuaPlayer | nil
    set last_user(value: PlayerIdentification | nil)
    /**
     * The buffer size for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     *
     * Write access is limited to the ElectricEnergyInterface type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_buffer_size Online documentation}
     */
    electric_buffer_size?: double
    /**
     * The electric drain for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_drain Online documentation}
     */
    readonly electric_drain?: double
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. `nil` if the entity doesn't have an electric energy source. Multiplying values in the returned table by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_emissions_per_joule Online documentation}
     */
    readonly electric_emissions_per_joule?: Record<string, double>
    /**
     * A unique number identifying this entity for the lifetime of the save. These are allocated sequentially, and not re-used (until overflow).
     *
     * Only entities inheriting from {@link import("factorio:prototype").EntityWithOwnerPrototype EntityWithOwnerPrototype}, as well as {@link import("factorio:prototype").ItemRequestProxyPrototype ItemRequestProxyPrototype} and {@link import("factorio:prototype").EntityGhostPrototype EntityGhostPrototype} are assigned a unit number. Returns `nil` otherwise.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#unit_number Online documentation}
     */
    readonly unit_number?: UnitNumber
    /**
     * The {@link LuaEntity#unit_number unit_number} of the entity contained in this ghost. It is the same as the unit number of the {@link import("factorio:prototype").EntityWithOwnerPrototype EntityWithOwnerPrototype} that was destroyed to create this ghost. If it was created by other means, or if the inner entity does not support unit numbers, this property is `nil`.
     *
     * _Can only be used if this is EntityGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_unit_number Online documentation}
     */
    readonly ghost_unit_number?: UnitNumber
    /**
     * The mining progress for this mining drill. Is a number in range [0, mining_target.prototype.mineable_properties.mining_time]. `nil` if this isn't a mining drill.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_progress Online documentation}
     */
    mining_progress?: double
    /**
     * The bonus mining progress for this mining drill. Read yields a number in range [0, mining_target.prototype.mineable_properties.mining_time]. `nil` if this isn't a mining drill.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_mining_progress Online documentation}
     */
    bonus_mining_progress?: double
    /**
     * Area in which this mining drill looks for resources to mine.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_area Online documentation}
     */
    readonly mining_area: BoundingBox
    /**
     * The power production specific to the ElectricEnergyInterface entity type.
     *
     * _Can only be used if this is ElectricEnergyInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_production Online documentation}
     */
    power_production: double
    /**
     * The power usage specific to the ElectricEnergyInterface entity type.
     *
     * _Can only be used if this is ElectricEnergyInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_usage Online documentation}
     */
    power_usage: double
    /**
     * {@link LuaEntityPrototype#collision_box LuaEntityPrototype::collision_box} around entity's given position and respecting the current entity orientation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bounding_box Online documentation}
     */
    readonly bounding_box: BoundingBox
    /**
     * The secondary bounding box of this entity or `nil` if it doesn't have one. This only exists for curved rails, and is automatically determined by the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#secondary_bounding_box Online documentation}
     */
    readonly secondary_bounding_box?: BoundingBox
    /**
     * {@link LuaEntityPrototype#selection_box LuaEntityPrototype::selection_box} around entity's given position and respecting the current entity orientation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selection_box Online documentation}
     */
    readonly selection_box: BoundingBox
    /**
     * The secondary selection box of this entity or `nil` if it doesn't have one. This only exists for curved rails, and is automatically determined by the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#secondary_selection_box Online documentation}
     */
    readonly secondary_selection_box?: BoundingBox
    /**
     * The mining target, if any.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_target Online documentation}
     */
    readonly mining_target?: LuaEntity
    /**
     * The number of filter slots this inserter, loader, mining drill, asteroid collector or logistic storage container has. 0 if not one of those entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#filter_slot_count Online documentation}
     */
    readonly filter_slot_count: uint32
    /**
     * The container entity this loader is pointing at/pulling from depending on the {@link LuaEntity#loader_type LuaEntity::loader_type}, if any.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_container Online documentation}
     */
    readonly loader_container?: LuaEntity
    /**
     * This entity's equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#grid Online documentation}
     */
    readonly grid?: LuaEquipmentGrid
    /**
     * The graphics variation for this entity. `nil` if this entity doesn't use graphics variations.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#graphics_variation Online documentation}
     */
    graphics_variation?: uint8
    /**
     * Index of the tree color.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_color_index Online documentation}
     */
    tree_color_index: uint8
    /**
     * Maximum index of the tree colors.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_color_index_max Online documentation}
     */
    readonly tree_color_index_max: uint8
    /**
     * Index of the tree stage.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_stage_index Online documentation}
     */
    tree_stage_index: uint8
    /**
     * Maximum index of the tree stages.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_stage_index_max Online documentation}
     */
    readonly tree_stage_index_max: uint8
    /**
     * Index of the tree gray stage
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_gray_stage_index Online documentation}
     */
    tree_gray_stage_index: uint8
    /**
     * Maximum index of the tree gray stages.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_gray_stage_index_max Online documentation}
     */
    readonly tree_gray_stage_index_max: uint8
    /**
     * The burner energy source for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#burner Online documentation}
     */
    readonly burner?: LuaBurner
    /**
     * The shooting target for this turret, if any. Can't be set to `nil` via script.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#shooting_target Online documentation}
     */
    shooting_target?: LuaEntity
    /**
     * The target entity for this item-request-proxy, if any.
     *
     * _Can only be used if this is ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target Online documentation}
     */
    readonly proxy_target?: LuaEntity
    /**
     * The sticker entities attached to this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stickers Online documentation}
     */
    readonly stickers?: LuaEntity[]
    /**
     * The entity this sticker is sticked to.
     *
     * _Can only be used if this is Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#sticked_to Online documentation}
     */
    readonly sticked_to: LuaEntity
    /**
     * The vehicle modifiers applied to this entity through the attached stickers.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#sticker_vehicle_modifiers Online documentation}
     */
    readonly sticker_vehicle_modifiers?: {
      readonly speed_modifier: double
      readonly speed_max: double
      readonly friction_modifier: double
    }
    /**
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#parameters Online documentation}
     */
    get parameters(): ProgrammableSpeakerParameters
    set parameters(value: ProgrammableSpeakerParametersWrite)
    /**
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#alert_parameters Online documentation}
     */
    get alert_parameters(): ProgrammableSpeakerAlertParameters
    set alert_parameters(value: ProgrammableSpeakerAlertParametersWrite)
    /**
     * The electric network statistics for this electric pole.
     *
     * _Can only be used if this is ElectricPole_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_network_statistics Online documentation}
     */
    readonly electric_network_statistics: LuaFlowStatistics
    /**
     * Returns the current target pickup count of the inserter.
     *
     * This considers the circuit network, manual override and the inserter stack size limit based on technology.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_target_pickup_count Online documentation}
     */
    readonly inserter_target_pickup_count: uint32
    /**
     * Sets the stack size limit on this inserter.
     *
     * Set to `0` to reset.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_stack_size_override Online documentation}
     */
    inserter_stack_size_override: uint32
    /**
     * The number of products this machine finished crafting in its lifetime.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#products_finished Online documentation}
     */
    products_finished: uint32
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawning_cooldown Online documentation}
     */
    readonly spawning_cooldown: double
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#absorbed_pollution Online documentation}
     */
    readonly absorbed_pollution: double
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawn_shift Online documentation}
     */
    readonly spawn_shift: double
    /**
     * The units associated with this spawner entity.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#units Online documentation}
     */
    readonly units: LuaEntity[]
    /**
     * The state of this power switch.
     *
     * _Can only be used if this is PowerSwitch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_switch_state Online documentation}
     */
    power_switch_state: boolean
    /**
     * The description on this combinator.
     *
     * _Can only be used if this is ArithmeticCombinator, DeciderCombinator, SelectorCombinator or ConstantCombinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combinator_description Online documentation}
     */
    combinator_description: string
    /**
     * The effects being applied to this entity, if any. For beacons, this is the effect the beacon is broadcasting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effects Online documentation}
     */
    readonly effects?: ModuleEffects
    /**
     * Number of beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#beacons_count Online documentation}
     */
    readonly beacons_count?: uint32
    /**
     * The filters for this infinity container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#infinity_container_filters Online documentation}
     */
    get infinity_container_filters(): InfinityInventoryFilter[]
    set infinity_container_filters(value: readonly InfinityInventoryFilterWrite[])
    /**
     * Whether items not included in this infinity container filters should be removed from the container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_unfiltered_items Online documentation}
     */
    remove_unfiltered_items: boolean
    /**
     * The player index associated with this character corpse.
     *
     * The index is not guaranteed to be valid so it should always be checked first if a player with that index actually exists.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_player_index Online documentation}
     */
    character_corpse_player_index: uint32
    /**
     * The tick this character corpse died at.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_tick_of_death Online documentation}
     */
    character_corpse_tick_of_death: uint32
    /**
     * The reason this character corpse character died. `""` if there is no reason.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_death_cause Online documentation}
     */
    character_corpse_death_cause: LocalisedString
    /**
     * The player this character is associated with, if any. Set to `nil` to clear.
     *
     * The player will be automatically disassociated when a controller is set on the character. Also, all characters associated to a player will be logged off when the player logs off in multiplayer.
     *
     * A character associated with a player is not directly controlled by any player.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#associated_player Online documentation}
     */
    get associated_player(): LuaPlayer | nil
    set associated_player(value: PlayerIdentification | nil)
    /**
     * The last tick this character entity was attacked.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_of_last_attack Online documentation}
     */
    tick_of_last_attack: uint32
    /**
     * The last tick this character entity was damaged.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_of_last_damage Online documentation}
     */
    tick_of_last_damage: uint32
    /**
     * The filter for this splitter, if any is set.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_filter Online documentation}
     */
    get splitter_filter(): ItemFilter | nil
    set splitter_filter(value: ItemFilterWrite | nil)
    /**
     * The filter mode for this filter inserter. `nil` if this inserter doesn't use filters.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_filter_mode Online documentation}
     */
    inserter_filter_mode?: "whitelist" | "blacklist"
    /**
     * The filter mode for this loader. `nil` if this loader does not support filters.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_filter_mode Online documentation}
     */
    loader_filter_mode?: PrototypeFilterMode
    /**
     * The belt stack size override for this loader. Set to `0` to disable. Writing this value requires {@link import("factorio:prototype").LoaderPrototype#adjustable_belt_stack_size LoaderPrototype::adjustable_belt_stack_size} to be `true`.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_belt_stack_size_override Online documentation}
     */
    loader_belt_stack_size_override: uint8
    /**
     * The filter mode for this mining drill. `nil` if this mining drill doesn't have filters.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_drill_filter_mode Online documentation}
     */
    mining_drill_filter_mode?: "whitelist" | "blacklist"
    /**
     * The input priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_input_priority Online documentation}
     */
    splitter_input_priority: "left" | "none" | "right"
    /**
     * The output priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_output_priority Online documentation}
     */
    splitter_output_priority: "left" | "none" | "right"
    /**
     * The spoil priority for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_spoil_priority Online documentation}
     */
    inserter_spoil_priority: SpoilPriority
    /**
     * Whether this land mine is armed.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#armed Online documentation}
     */
    readonly armed: boolean
    /**
     * When locked; the recipe in this assembling machine can't be changed by the player.
     *
     * _Can only be used if this is AssemblingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#recipe_locked Online documentation}
     */
    recipe_locked: boolean
    /**
     * The rail entity this train stop is connected to, if any.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connected_rail Online documentation}
     */
    readonly connected_rail?: LuaEntity
    /**
     * Rail direction to which this train stop is binding. This returns a value even when no rails are present.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connected_rail_direction Online documentation}
     */
    readonly connected_rail_direction: defines.rail_direction
    /**
     * The number of trains in this rail block for this rail entity.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_in_block Online documentation}
     */
    readonly trains_in_block: uint32
    /**
     * The timeout that's left on this landmine in ticks. It describes the time between the landmine being placed and it being armed.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#timeout Online documentation}
     */
    timeout: uint32
    /**
     * The current total neighbour bonus of this reactor.
     *
     * _Can only be used if this is Reactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbour_bonus Online documentation}
     */
    readonly neighbour_bonus: double
    /**
     * The ai settings of this unit.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ai_settings Online documentation}
     */
    readonly ai_settings: LuaAISettings
    /**
     * The highlight box type of this highlight box entity.
     *
     * _Can only be used if this is HighlightBox_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#highlight_box_type Online documentation}
     */
    highlight_box_type: CursorBoxRenderType
    /**
     * The blink interval of this highlight box entity. `0` indicates no blink.
     *
     * _Can only be used if this is HighlightBox_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#highlight_box_blink_interval Online documentation}
     */
    highlight_box_blink_interval: uint32
    /**
     * The status of this entity, if any.
     *
     * This is always the actual status of the entity, even if {@link LuaEntity#custom_status LuaEntity::custom_status} is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#status Online documentation}
     */
    readonly status?: defines.entity_status
    /**
     * A custom status for this entity that will be displayed in the GUI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#custom_status Online documentation}
     */
    custom_status?: CustomEntityStatus
    /**
     * Whether equipment grid logistics are enabled while this vehicle is moving.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#enable_logistics_while_moving Online documentation}
     */
    enable_logistics_while_moving: boolean
    /**
     * The player that this `simple-entity-with-owner`, `simple-entity-with-force`, or `highlight-box` is visible to. `nil` when this entity is rendered for all players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#render_player Online documentation}
     */
    get render_player(): LuaPlayer | nil
    set render_player(value: PlayerIdentification | nil)
    /**
     * The forces that this `simple-entity-with-owner` or `simple-entity-with-force` is visible to. `nil` or an empty array when this entity is rendered for all forces.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#render_to_forces Online documentation}
     */
    get render_to_forces(): LuaForce[] | nil
    set render_to_forces(value: ForceSet | nil)
    /**
     * The rail target of this pump, if any.
     *
     * _Can only be used if this is Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pump_rail_target Online documentation}
     */
    readonly pump_rail_target?: LuaEntity
    /**
     * The threshold override of this valve, or `nil` if an override is not defined.
     *
     * If no override is defined, the threshold is taken from {@link LuaEntityPrototype#valve_threshold LuaEntityPrototype::valve_threshold}.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#valve_threshold_override Online documentation}
     */
    valve_threshold_override?: float
    /**
     * Returns the id of the electric network that this entity is connected to, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_network_id Online documentation}
     */
    readonly electric_network_id?: uint32
    /**
     * Whether this character's personal roboports are allowed to dispatch robots.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#allow_dispatching_robots Online documentation}
     */
    allow_dispatching_robots: boolean
    /**
     * How much energy this generator generated in the last tick.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#energy_generated_last_tick Online documentation}
     */
    readonly energy_generated_last_tick: double
    /**
     * The storage filter for this logistic storage container.
     *
     * Useable only on logistic containers with the `"storage"` {@link LuaEntityPrototype#logistic_mode logistic_mode}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#storage_filter Online documentation}
     */
    get storage_filter(): ItemIDAndQualityIDPair | nil
    set storage_filter(value: ItemWithQualityID | nil)
    /**
     * Whether this requester chest is set to also request from buffer chests.
     *
     * Useable only on entities that have requester slots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_from_buffers Online documentation}
     */
    request_from_buffers: boolean
    /**
     * Whether this corpse will ever fade away.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#corpse_expires Online documentation}
     */
    corpse_expires: boolean
    /**
     * If true, corpse won't be destroyed when entities are placed over it. If false, whether corpse will be removed or not depends on value of {@link import("factorio:prototype").CorpsePrototype#remove_on_entity_placement CorpsePrototype::remove_on_entity_placement}.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#corpse_immune_to_entity_placement Online documentation}
     */
    corpse_immune_to_entity_placement: boolean
    /**
     * The tags associated with this entity ghost. `nil` if this is not an entity ghost or when the ghost has no tags.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tags Online documentation}
     */
    tags?: Tags
    /**
     * The ticks until the next trigger effect of this smoke-with-trigger.
     *
     * _Can only be used if this is SmokeWithTrigger_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_next_effect Online documentation}
     */
    time_to_next_effect: uint32
    /**
     * Destination of this spidertron's autopilot, if any. Writing `nil` clears all destinations.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#autopilot_destination Online documentation}
     */
    get autopilot_destination(): MapPosition | nil
    set autopilot_destination(value: MapPosition | MapPositionArray | nil)
    /**
     * The queued destination positions of spidertron's autopilot.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#autopilot_destinations Online documentation}
     */
    readonly autopilot_destinations: MapPosition[]
    /**
     * Amount of trains related to this particular train stop. Includes train stopped at this train stop (until it finds a path to next target) and trains having this train stop as goal or waypoint.
     *
     * Train may be included multiple times when braking distance covers this train stop multiple times.
     *
     * Value may be read even when train stop has no control behavior.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_count Online documentation}
     */
    readonly trains_count: uint32
    /**
     * Amount of trains above which no new trains will be sent to this train stop. Writing nil will disable the limit (will set a maximum possible value).
     *
     * When a train stop has a control behavior with wire connected and set_trains_limit enabled, this value will be overwritten by it.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_limit Online documentation}
     */
    trains_limit: uint32 | nil
    /**
     * Whether this entity is a MilitaryTarget. Can be written to if {@link LuaEntityPrototype#allow_run_time_change_of_is_military_target LuaEntityPrototype::allow_run_time_change_of_is_military_target} returns `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_military_target Online documentation}
     */
    is_military_target: boolean
    /**
     * If this entity is EntityWithOwner
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_entity_with_owner Online documentation}
     */
    readonly is_entity_with_owner: boolean
    /**
     * If this entity is EntityWithHealth
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_entity_with_health Online documentation}
     */
    readonly is_entity_with_health: boolean
    /**
     * The owner of this combat robot, if any.
     *
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combat_robot_owner Online documentation}
     */
    combat_robot_owner?: LuaEntity
    /**
     * The link ID this linked container is using.
     *
     * _Can only be used if this is LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#link_id Online documentation}
     */
    link_id: uint32
    /**
     * The follow target of this spidertron, if any.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#follow_target Online documentation}
     */
    follow_target?: LuaEntity
    /**
     * The follow offset of this spidertron, if any entity is being followed. This is randomized each time the follow entity is set.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#follow_offset Online documentation}
     */
    get follow_offset(): Vector | nil
    set follow_offset(value: Vector | VectorTable | nil)
    /**
     * Type of linked belt. Changing type will also flip direction so the belt is out of the same side.
     *
     * Can only be changed when linked belt is disconnected (has no neighbour set).
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#linked_belt_type Online documentation}
     */
    linked_belt_type: BeltConnectionType
    /**
     * Neighbour to which this linked belt is connected to, if any.
     *
     * May return entity ghost which contains linked belt to which connection is made.
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#linked_belt_neighbour Online documentation}
     */
    readonly linked_belt_neighbour?: LuaEntity
    /**
     * The quality of this entity.
     *
     * Not all entities support quality and will give the "normal" quality back if they don't.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * Gets rail layer of a given signal
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rail_layer Online documentation}
     */
    readonly rail_layer: defines.rail_layer
    /**
     * The current radar scan progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is Radar_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#radar_scan_progress Online documentation}
     */
    readonly radar_scan_progress: float
    /**
     * Name tag of this entity. Returns `nil` if entity has no name tag. When name tag is already used by other entity, the name will be removed from the other entity. Entity name tags can also be set in the entity "extra settings" GUI in the map editor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#name_tag Online documentation}
     */
    name_tag: string | nil
    /**
     * The status of this rocket silo entity.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket_silo_status Online documentation}
     */
    readonly rocket_silo_status: defines.rocket_silo_status
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension). Uses the current direction of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tile_width Online documentation}
     */
    readonly tile_width: uint32
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension). Uses the current direction of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tile_height Online documentation}
     */
    readonly tile_height: uint32
    /**
     * Returns current position in 3D for the end of the crane of this entity.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_end_position_3d Online documentation}
     */
    readonly crane_end_position_3d: Vector3D
    /**
     * Destination of the crane of this entity. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_destination Online documentation}
     */
    get crane_destination(): MapPosition
    set crane_destination(value: MapPosition | MapPositionArray)
    /**
     * Destination of the crane of this entity in 3D. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_destination_3d Online documentation}
     */
    get crane_destination_3d(): Vector3D
    set crane_destination_3d(value: Vector3D | Vector3DArray)
    /**
     * Will set destination for the grappler of crane of this entity. The crane grappler will start moving to reach the destination, but the rest of the arm will remain stationary. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_grappler_destination Online documentation}
     */
    set crane_grappler_destination(value: MapPosition | MapPositionArray)
    /**
     * Will set destination in 3D for the grappler of crane of this entity. The crane grappler will start moving to reach the destination, but the rest of the arm will remain stationary. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_grappler_destination_3d Online documentation}
     */
    set crane_grappler_destination_3d(value: Vector3D | Vector3DArray)
    /**
     * Plants registered by this agricultural tower. One plant can be registered in multiple agricultural towers.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#owned_plants Online documentation}
     */
    readonly owned_plants: LuaEntity[]
    /**
     * If this rolling stock has 'copy color from train stop' enabled.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#copy_color_from_train_stop Online documentation}
     */
    copy_color_from_train_stop: boolean
    /**
     * If the rolling stock is facing train's front.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_headed_to_trains_front Online documentation}
     */
    readonly is_headed_to_trains_front: boolean
    /**
     * Gives a draw data of the given entity if it supports such data.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#draw_data Online documentation}
     */
    readonly draw_data: RollingStockDrawData
    /**
     * Priority of this train stop.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#train_stop_priority Online documentation}
     */
    train_stop_priority: uint8
    /**
     * Gives what is the current shape of a transport-belt.
     *
     * _Can only be used if this is TransportBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_shape Online documentation}
     */
    readonly belt_shape: "straight" | "left" | "right"
    /**
     * Returns a {@linkplain https://wiki.factorio.com/Rich_text rich text} string containing this entity's position and surface name as a gps tag. {@link LuaGameScript#print Printing} it will ping the location of the entity.
     * @example
     * -- called on a LuaEntity on the default surface it returns:
     * entity.gps_tag -- => "[gps=-4,-9]"
     *
     * -- called on a LuaEntity on "custom-surface" it returns:
     * different_entity.gps_tag -- => "[gps=1,-5,custom-surface]"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#gps_tag Online documentation}
     */
    readonly gps_tag: string
    /**
     * Returns a LuaCommandable for this entity or nil if entity is not commandable. Units and SpiderUnits are commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#commandable Online documentation}
     */
    readonly commandable?: LuaCommandable
    /**
     * Returns count of fluid storages. This includes fluid storages provided by fluidboxes but also covers other fluid storages like fluid turret's internal buffer and fluid wagon's fluid since they are not fluidbox and cannot be exposed through {@link LuaFluidBox}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#fluids_count Online documentation}
     */
    readonly fluids_count: uint32
    /**
     * The tick when this plant is fully grown.
     *
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_grown Online documentation}
     */
    tick_grown: MapTick
    /**
     * If the lamp is always on when not driven by control behavior.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#always_on Online documentation}
     */
    always_on: boolean
    /**
     * If this artillery auto-targets enemies.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#artillery_auto_targeting Online documentation}
     */
    artillery_auto_targeting: boolean
    /**
     * Get the current queue of robot orders.
     *
     * _Can only be used if this is ConstructionRobot or LogisticRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#robot_order_queue Online documentation}
     */
    readonly robot_order_queue: WorkerRobotOrder[]
    /**
     * how far into the current procession the cargo pod is.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#procession_tick Online documentation}
     */
    procession_tick: MapTick
    /**
     * Whether the entity is updatable and considered an UpdatableEntity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_updatable Online documentation}
     */
    readonly is_updatable: boolean
    /**
     * If the updatable entity is disabled by script.
     *
     * Note: Some entities (Corpse, FireFlame, Roboport, RollingStock, dying entities) need to remain active and will ignore writes.
     *
     * If this entity is not considered {@link LuaEntity#is_updatable updatable} then this always returns `false` and writes will be ignored.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_script Online documentation}
     */
    disabled_by_script: boolean
    /**
     * If the updatable entity is disabled by control behavior.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_updatable updatable}.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_control_behavior Online documentation}
     */
    readonly disabled_by_control_behavior: boolean
    /**
     * If the assembling machine is disabled by recipe, e.g. due to {@link import("factorio:prototype").AssemblingMachinePrototype#disabled_when_recipe_not_researched AssemblingMachinePrototype::disabled_when_recipe_not_researched}.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_updatable updatable}.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_recipe Online documentation}
     */
    readonly disabled_by_recipe: boolean
    /**
     * Whether the entity is freezable and considered a FreezableEntity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_freezable Online documentation}
     */
    readonly is_freezable: boolean
    /**
     * Whether the freezable entity is currently frozen.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_freezable freezable}.
     *
     * _Can only be used if this is FreezableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#frozen Online documentation}
     */
    readonly frozen: boolean
    /**
     * The cargo hatches owned by this entity if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_hatches Online documentation}
     */
    readonly cargo_hatches: LuaCargoHatch[]
    /**
     * The state of this cargo pod entity.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_state Online documentation}
     */
    readonly cargo_pod_state: "awaiting_launch" | "ascending" | "surface_transition" | "descending" | "parking"
    /**
     * The destination of this cargo pod entity.
     *
     * Use {@link LuaEntity#force_finish_ascending force_finish_ascending} if you want it to only descend from orbit.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_destination Online documentation}
     */
    get cargo_pod_destination(): CargoDestination
    set cargo_pod_destination(value: CargoDestinationWrite)
    /**
     * The origin of this cargo pod entity. (Must be a silo, hub or pad)
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_origin Online documentation}
     */
    cargo_pod_origin?: LuaEntity
    /**
     * The cargo pod attached to this rocket silo rocket if any.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#attached_cargo_pod Online documentation}
     */
    readonly attached_cargo_pod?: LuaEntity
    /**
     * The rocket silo rocket this cargo pod is attached to, or rocket silo rocket attached to this rocket silo - if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket Online documentation}
     */
    readonly rocket?: LuaEntity
    /**
     * The first found item request proxy targeting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#item_request_proxy Online documentation}
     */
    readonly item_request_proxy?: LuaEntity
    /**
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#base_damage_modifiers Online documentation}
     */
    base_damage_modifiers: TriggerModifierData
    /**
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_damage_modifiers Online documentation}
     */
    bonus_damage_modifiers: TriggerModifierData
    /**
     * The space platform hub or cargo landing pad this cargo bay is connected to if any.
     *
     * _Can only be used if this is CargoBay_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_bay_connection_owner Online documentation}
     */
    readonly cargo_bay_connection_owner?: LuaEntity
    /**
     * For inserters taking items from transport belt connectables, this determines whether the inserter is allowed to take items from the left lane.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_from_left_lane Online documentation}
     */
    pickup_from_left_lane: boolean
    /**
     * For inserters taking items from transport belt connectables, this determines whether the inserter is allowed to take items from the right lane.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_from_right_lane Online documentation}
     */
    pickup_from_right_lane: boolean
    /**
     * The segmented unit object that the segment entity is a part of.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#segmented_unit Online documentation}
     */
    readonly segmented_unit?: LuaSegmentedUnit
    /**
     * The amount of fluid moved by this offshore pump or normal pump in the last tick.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pumped_last_tick Online documentation}
     */
    readonly pumped_last_tick: double
    /**
     * The corpse that caused this entity ghost to be created, if any.
     *
     * _Can only be used if this is EntityGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#created_by_corpse Online documentation}
     */
    readonly created_by_corpse?: LuaEntity
    /**
     * The priority targets for this turret (if any).
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#priority_targets Online documentation}
     */
    readonly priority_targets: LuaEntityPrototype[]
    /**
     * Entity of which inventory is exposed by this ProxyContainer
     *
     * _Can only be used if this is ProxyContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target_entity Online documentation}
     */
    proxy_target_entity?: LuaEntity
    /**
     * Inventory index of the inventory that is exposed by this ProxyContainer
     *
     * _Can only be used if this is ProxyContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target_inventory Online documentation}
     */
    proxy_target_inventory: defines.inventory
    /**
     * Text visible on the display panel. Can be written only when it is not set by control behavior.
     *
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_text Online documentation}
     */
    display_panel_text: LocalisedString
    /**
     * Icon visible on the display panel. Can be written only when it is not set by control behavior.
     *
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_icon Online documentation}
     */
    get display_panel_icon(): SignalID | nil
    set display_panel_icon(value: SignalIDWrite | nil)
    /**
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_always_show Online documentation}
     */
    display_panel_always_show: boolean
    /**
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_show_in_chart Online documentation}
     */
    display_panel_show_in_chart: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEntity"
  }
  /**
   * @noSelf
   */
  export interface BaseEntity extends LuaControl {
    /**
     * Gets the entity's output inventory if it has one.
     * @returns A reference to the entity's output inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_output_inventory Online documentation}
     */
    get_output_inventory(): LuaInventory | nil
    /**
     * Inventory for storing modules of this entity; `nil` if this entity has no module inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_module_inventory Online documentation}
     */
    get_module_inventory(): LuaInventory | nil
    /**
     * The fuel inventory for this entity or `nil` if this entity doesn't have a fuel inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fuel_inventory Online documentation}
     */
    get_fuel_inventory(): LuaInventory | nil
    /**
     * The burnt result inventory for this entity or `nil` if this entity doesn't have a burnt result inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_burnt_result_inventory Online documentation}
     */
    get_burnt_result_inventory(): LuaInventory | nil
    /**
     * Whether the entity can be destroyed
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_be_destroyed Online documentation}
     */
    can_be_destroyed(): boolean
    /**
     * Destroys the entity.
     *
     * Not all entities can be destroyed - things such as rails under trains cannot be destroyed until the train is moved or destroyed.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy}? _instantly_ Raised if the `raise_destroy` flag was set and the entity was successfully destroyed.
     * @returns Returns `false` if the entity was valid and destruction failed, `true` in all other cases.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#destroy Online documentation}
     */
    destroy(params?: {
      /**
       * Whether neighbouring cliffs should be corrected. Defaults to `false`.
       */
      readonly do_cliff_correction?: boolean
      /**
       * If `true`, {@link ScriptRaisedDestroyEvent script_raised_destroy} will be called. Defaults to `false`.
       */
      readonly raise_destroy?: boolean
      /**
       * The player whose undo queue this action should be added to.
       */
      readonly player?: PlayerIdentification
      /**
       * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
       */
      readonly undo_index?: uint32
    }): boolean
    /**
     * Immediately kills the entity. Does nothing if the entity doesn't have health.
     *
     * Unlike {@link LuaEntity#destroy LuaEntity::destroy}, `die` will trigger the {@link OnEntityDiedEvent on_entity_died} event and the entity will produce a corpse and drop loot if it has any.
     *
     * ## Raised events
     * - {@link OnEntityDiedEvent on_entity_died}? _instantly_ Raised if the entity was successfully killed. If `force` is not specified, the event will blame the `"neutral"` force.
     * - {@link OnPostEntityDiedEvent on_post_entity_died}? _instantly_ Raised if the entity was successfully killed.
     * @param force The force to attribute the kill to.
     * @param cause The cause to attribute the kill to.
     * @returns Whether the entity was successfully killed.
     * @example
     * -- This function can be called with only the `cause` argument and no `force`:
     * entity.die(nil, killer_entity)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#die Online documentation}
     */
    die(force?: ForceID, cause?: LuaEntity): boolean
    /**
     * Test whether this entity's prototype has a certain flag set.
     *
     * `entity.has_flag(f)` is a shortcut for `entity.prototype.has_flag(f)`.
     * @param flag The flag to test.
     * @returns `true` if this entity has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#has_flag Online documentation}
     */
    has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * Sets the entity to be deconstructed by construction robots.
     *
     * ## Raised events
     * - {@link OnMarkedForDeconstructionEvent on_marked_for_deconstruction}? _instantly_ Raised if the entity was successfully marked for deconstruction.
     * @param force The force whose robots are supposed to do the deconstruction.
     * @param player The player to set the last_user to, if any. Also the player whose undo queue this action should be added to.
     * @param undo_index The index of the undo item to add this action to. An index of `0` creates a new undo item for it. An index of `1` adds the action to the latest undo action on the stack. Defaults to putting it into the appropriate undo item automatically if one is not specified.
     * @returns if the entity was marked for deconstruction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#order_deconstruction Online documentation}
     */
    order_deconstruction(force: ForceID, player?: PlayerIdentification, undo_index?: uint32): boolean
    /**
     * Cancels deconstruction if it is scheduled, does nothing otherwise.
     *
     * ## Raised events
     * - {@link OnCancelledDeconstructionEvent on_cancelled_deconstruction}? _instantly_ Raised if the entity's deconstruction was successfully cancelled.
     * @param force The force who did the deconstruction order.
     * @param player The player to set the `last_user` to if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cancel_deconstruction Online documentation}
     */
    cancel_deconstruction(force: ForceID, player?: PlayerIdentification): void
    /**
     * Is this entity marked for deconstruction?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_deconstructed Online documentation}
     */
    to_be_deconstructed(): boolean
    /**
     * Sets the entity to be upgraded by construction robots.
     *
     * ## Raised events
     * - {@link OnMarkedForUpgradeEvent on_marked_for_upgrade}? _instantly_ Raised if the entity was successfully marked for upgrade.
     * @returns Whether the entity was marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#order_upgrade Online documentation}
     */
    order_upgrade(params: {
      /**
       * The prototype of the entity to upgrade to.
       */
      readonly target: EntityWithQualityID
      /**
       * The force whose robots are supposed to do the upgrade.
       */
      readonly force: ForceID
      /**
       * The player whose undo queue this action should be added to.
       */
      readonly player?: PlayerIdentification
      /**
       * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
       */
      readonly undo_index?: uint32
    }): boolean
    /**
     * Cancels upgrade if it is scheduled, does nothing otherwise.
     *
     * ## Raised events
     * - {@link OnCancelledUpgradeEvent on_cancelled_upgrade}? _instantly_ Raised if the entity way previously marked for upgrade.
     * @param force The force who did the upgrade order.
     * @param player The player to set the last_user to if any.
     * @returns Whether the cancel was successful.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cancel_upgrade Online documentation}
     */
    cancel_upgrade(force: ForceID, player?: PlayerIdentification): boolean
    /**
     * Is this entity marked for upgrade?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_upgraded Online documentation}
     */
    to_be_upgraded(): boolean
    /**
     * Upgrades this entity in place if it's marked to be upgraded.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy} _instantly_ Raised for the old entity if the entity was actually upgraded.
     * - {@link ScriptRaisedBuiltEvent script_raised_built} _instantly_ Raised for the new entity if the entity was actually upgraded.
     * @returns The first upgraded entity - `nil` if this entity is not marked for upgrade.
     * @returns The second upgraded entity - `nil` if this entity is not marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#apply_upgrade Online documentation}
     */
    apply_upgrade(): LuaMultiReturn<[LuaEntity | nil, LuaEntity | nil]>
    /**
     * Get the filter for a slot in an inserter, loader, mining drill, asteroid collector, or logistic storage container. The entity must allow filters.
     * @param slot_index Index of the slot to get the filter for.
     * @returns The filter, or `nil` if the given slot has no filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_filter Online documentation}
     */
    get_filter(slot_index: uint32): ItemFilter | LuaEntityPrototype | LuaAsteroidChunkPrototype | nil
    /**
     * Set the filter for a slot in an inserter (ItemFilter), loader (ItemFilter), mining drill (EntityID), asteroid collector (AsteroidChunkID) or logistic storage container (ItemWithQualityID). The entity must allow filters.
     * @param index Index of the slot to set the filter for.
     * @param filter The item or entity to filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_filter Online documentation}
     */
    set_filter(index: uint32, filter?: ItemFilterWrite | ItemWithQualityID | EntityID | AsteroidChunkID): void
    /**
     * Gets the control behavior of the entity (if any).
     * @returns The control behavior or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_control_behavior Online documentation}
     */
    get_control_behavior(): LuaControlBehavior | nil
    /**
     * Gets (and or creates if needed) the control behavior of the entity.
     * @returns The control behavior or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_or_create_control_behavior Online documentation}
     */
    get_or_create_control_behavior(): LuaControlBehavior | nil
    /**
     * @param wire_connector_id Wire connector to get circuit network for.
     * @returns The circuit network or nil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_circuit_network Online documentation}
     */
    get_circuit_network(wire_connector_id: defines.wire_connector_id): LuaCircuitNetwork | nil
    /**
     * Read a single signal from the selected wire connector
     * @param signal The signal to read.
     * @param wire_connector_id Wire connector ID from which to get the signal
     * @param extra_wire_connector_id Additional wire connector ID. If specified, signal will be added to the result
     * @returns The current value of the signal.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_signal Online documentation}
     */
    get_signal(
      signal: SignalIDWrite,
      wire_connector_id: defines.wire_connector_id,
      extra_wire_connector_id?: defines.wire_connector_id,
    ): int32
    /**
     * Read all signals from the selected wire connector.
     * @param wire_connector_id Wire connector ID from which to get the signal
     * @param extra_wire_connector_id Additional wire connector ID. If specified, signals will be added to the result
     * @returns Current values of all signals.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_signals Online documentation}
     */
    get_signals(
      wire_connector_id: defines.wire_connector_id,
      extra_wire_connector_id?: defines.wire_connector_id,
    ): Signal[] | nil
    /**
     * Whether this entity supports a backer name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#supports_backer_name Online documentation}
     */
    supports_backer_name(): boolean
    /**
     * Copies settings from the given entity onto this entity.
     * @param by_player If provided, the copying is done 'as' this player and {@link OnEntitySettingsPastedEvent on_entity_settings_pasted} is triggered.
     * @returns Any items removed from this entity as a result of copying the settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#copy_settings Online documentation}
     */
    copy_settings(entity: LuaEntity, by_player?: PlayerIdentification): ItemWithQualityCounts
    /**
     * Gets all the `LuaLogisticPoint`s that this entity owns. Optionally returns only the point specified by the index parameter.
     * @param index If provided, this method only returns the `LuaLogisticPoint` specified by this index, or `nil` if it doesn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_logistic_point Online documentation}
     */
    get_logistic_point(index: defines.logistic_member_index): LuaLogisticPoint | nil
    get_logistic_point(): Record<defines.logistic_member_index, LuaLogisticPoint> | nil
    /**
     * Reconnect loader, beacon, cliff and mining drill connections to entities that might have been teleported out or in by the script. The game doesn't do this automatically as we don't want to lose performance by checking this in normal games.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#update_connections Online documentation}
     */
    update_connections(): void
    /**
     * Rotates this entity as if the player rotated it.
     *
     * ## Raised events
     * - {@link OnPlayerRotatedEntityEvent on_player_rotated_entity}? _instantly_ Raised if the `by_player` argument was given and the rotation was successful.
     * @returns Whether the rotation was successful.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rotate Online documentation}
     */
    rotate(params?: {
      /**
       * If `true`, rotate the entity in the counter-clockwise direction.
       */
      readonly reverse?: boolean
      readonly by_player?: PlayerIdentification
    }): boolean
    /**
     * Returns `true` if this entity produces or consumes electricity and is connected to an electric network that has at least one entity that can produce power.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_connected_to_electric_network Online documentation}
     */
    is_connected_to_electric_network(): boolean
    /**
     * Clones this entity.
     *
     * ## Raised events
     * - {@link OnEntityClonedEvent on_entity_cloned}? _instantly_ Raised if the entity was successfully cloned.
     * @returns The cloned entity or `nil` if this entity can't be cloned/can't be cloned to the given location.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clone Online documentation}
     */
    clone(params: {
      /**
       * The destination position
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The destination surface
       */
      readonly surface?: LuaSurface
      readonly force?: ForceID
      /**
       * If false, the building effect smoke will not be shown around the new entity.
       */
      readonly create_build_effect_smoke?: boolean
    }): LuaEntity | nil
    /**
     * Get the amount of all or some fluid in this entity.
     *
     * If information about fluid temperatures is required, {@link LuaEntity#fluidbox LuaEntity::fluidbox} should be used instead.
     * @param fluid Prototype name of the fluid to count. If not specified, count all fluids.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_count Online documentation}
     */
    get_fluid_count(fluid?: string): double
    /**
     * Get amounts of all fluids in this entity.
     *
     * If information about fluid temperatures is required, {@link LuaEntity#get_fluid LuaEntity::get_fluid} or {@link LuaEntity#fluidbox LuaEntity::fluidbox} should be used instead.
     * @returns The amounts, indexed by fluid names.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_contents Online documentation}
     */
    get_fluid_contents(): Record<string, FluidAmount>
    /**
     * Remove fluid from this entity.
     *
     * If temperature is given only fluid matching that exact temperature is removed. If minimum and maximum is given fluid within that range is removed.
     * @returns Amount of fluid actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_fluid Online documentation}
     */
    remove_fluid(params: {
      /**
       * Fluid prototype name.
       */
      readonly name: string
      /**
       * Amount to remove
       */
      readonly amount: double
      readonly minimum_temperature?: double
      readonly maximum_temperature?: double
      readonly temperature?: double
    }): double
    /**
     * Insert fluid into this entity. Fluidbox is chosen automatically.
     * @param fluid Fluid to insert.
     * @returns Amount of fluid actually inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#insert_fluid Online documentation}
     */
    insert_fluid(fluid: Fluid): double
    /**
     * Remove all fluids from this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clear_fluid_inside Online documentation}
     */
    clear_fluid_inside(): void
    /**
     * The radius of this entity. The radius is defined as half the distance between the top left corner and bottom right corner of the collision box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_radius Online documentation}
     */
    get_radius(): double
    /**
     * The health ratio of this entity between 1 and 0 (for full health and no health respectively).
     * @returns `nil` if this entity doesn't have health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_health_ratio Online documentation}
     */
    get_health_ratio(): float | nil
    /**
     * Creates the same smoke that is created when you place a building by hand.
     *
     * You can play the building sound to go with it by using {@link LuaSurface#play_sound LuaSurface::play_sound}, eg: `entity.surface.play_sound{path="entity-build/"..entity.prototype.name, position=entity.position}`
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_build_effect_smoke Online documentation}
     */
    create_build_effect_smoke(): void
    /**
     * Toggle this entity's equipment movement bonus. Does nothing if the entity does not have an equipment grid.
     *
     * This property can also be read and written on the equipment grid of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#toggle_equipment_movement_bonus Online documentation}
     */
    toggle_equipment_movement_bonus(): void
    /**
     * Returns the new entity prototype and its quality.
     * @returns `nil` if this entity is not marked for upgrade.
     * @returns `nil` if this entity is not marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_upgrade_target Online documentation}
     */
    get_upgrade_target(): LuaMultiReturn<[LuaEntityPrototype | nil, LuaQualityPrototype | nil]>
    /**
     * Returns the amount of damage to be taken by this entity.
     * @returns `nil` if this entity does not have health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_damage_to_be_taken Online documentation}
     */
    get_damage_to_be_taken(): float | nil
    /**
     * Mines this entity.
     *
     * 'Standard' operation is to keep calling `LuaEntity.mine` with an inventory until all items are transferred and the items dealt with.
     *
     * The result of mining the entity (the item(s) it produces when mined) will be dropped on the ground if they don't fit into the provided inventory. If no inventory is provided, the items will be destroyed.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroyEvent script_raised_destroy}? _instantly_ Raised if the `raise_destroyed` flag was set and the entity was successfully mined.
     * @returns Whether mining succeeded.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mine Online documentation}
     */
    mine(params?: {
      /**
       * If provided the item(s) will be transferred into this inventory. If provided, this must be an inventory created with {@link LuaGameScript#create_inventory LuaGameScript::create_inventory} or be a basic inventory owned by some entity.
       */
      readonly inventory?: LuaInventory
      /**
       * If true, when the item(s) don't fit into the given inventory the entity is force mined. If false, the mining operation fails when there isn't enough room to transfer all of the items into the inventory. Defaults to false. This is ignored and acts as `true` if no inventory is provided.
       */
      readonly force?: boolean
      /**
       * If true, {@link ScriptRaisedDestroyEvent script_raised_destroy} will be raised. Defaults to `true`.
       */
      readonly raise_destroyed?: boolean
      /**
       * If true, the minable state of the entity is ignored. Defaults to `false`. If false, an entity that isn't minable (set as not-minable in the prototype or isn't minable for other reasons) will fail to be mined.
       */
      readonly ignore_minable?: boolean
    }): boolean
    /**
     * Triggers spawn_decoration actions defined in the entity prototype or does nothing if entity is not "turret" or "unit-spawner".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawn_decorations Online documentation}
     */
    spawn_decorations(): void
    /**
     * Get the entity ID at the specified position in the turret's priority list.
     * @param index The index of the entry to fetch.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_priority_target Online documentation}
     */
    get_priority_target(index: uint32): LuaEntityPrototype | nil
    /**
     * Set the entity ID name at the specified position in the turret's priority list.
     * @param index The index of the entry to set.
     * @param entity_id The name of the entity prototype, or `nil` to clear the entry.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_priority_target Online documentation}
     */
    set_priority_target(index: uint32, entity_id?: EntityID): void
    /**
     * Can wires reach between these entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_wires_reach Online documentation}
     */
    can_wires_reach(entity: LuaEntity): boolean
    /**
     * Is this entity or tile ghost or item request proxy registered for construction? If false, it means a construction robot has been dispatched to build the entity, or it is not an entity that can be constructed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_construction Online documentation}
     */
    is_registered_for_construction(): boolean
    /**
     * Is this entity registered for deconstruction with this force? If false, it means a construction robot has been dispatched to deconstruct it, or it is not marked for deconstruction. The complexity is effectively O(1) - it depends on the number of objects targeting this entity which should be small enough.
     * @param force The force construction manager to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_deconstruction Online documentation}
     */
    is_registered_for_deconstruction(force: ForceID): boolean
    /**
     * Is this entity registered for upgrade? If false, it means a construction robot has been dispatched to upgrade it, or it is not marked for upgrade. This is worst-case O(N) complexity where N is the current number of things in the upgrade queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_upgrade Online documentation}
     */
    is_registered_for_upgrade(): boolean
    /**
     * Is this entity registered for repair? If false, it means a construction robot has been dispatched to repair it, or it is not damaged. This is worst-case O(N) complexity where N is the current number of things in the repair queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_registered_for_repair Online documentation}
     */
    is_registered_for_repair(): boolean
    /**
     * Gets a single wire connector of this entity, if any.
     * @param wire_connector_id Identifier of a specific connector to get
     * @param or_create If true and connector does not exist, it will be allocated if possible
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_wire_connector Online documentation}
     */
    get_wire_connector(wire_connector_id: defines.wire_connector_id, or_create: boolean): LuaWireConnector | nil
    /**
     * Gets all wire connectors of this entity
     * @param or_create If true, it will try to create all connectors possible
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_wire_connectors Online documentation}
     */
    get_wire_connectors(or_create: boolean): Record<defines.wire_connector_id, LuaWireConnector>
    /**
     * The input flow limit for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_electric_input_flow_limit Online documentation}
     */
    get_electric_input_flow_limit(quality?: QualityID): double | nil
    /**
     * The output flow limit for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_electric_output_flow_limit Online documentation}
     */
    get_electric_output_flow_limit(quality?: QualityID): double | nil
    /**
     * Returns a table with all beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beacons Online documentation}
     */
    get_beacons(): LuaEntity[] | nil
    /**
     * The same as {@link LuaInventory#supports_bar LuaInventory::supports_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inventory_supports_bar Online documentation}
     */
    inventory_supports_bar(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#get_bar LuaInventory::get_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_bar Online documentation}
     */
    get_inventory_bar(inventory_index: defines.inventory): uint32
    /**
     * The same as {@link LuaInventory#set_bar LuaInventory::set_bar} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param bar The new limit. Omitting this parameter or passing `nil` will clear the limit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_bar Online documentation}
     */
    set_inventory_bar(inventory_index: defines.inventory, bar?: uint32): void
    /**
     * The same as {@link LuaInventory#supports_filters LuaInventory::supports_filters} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inventory_supports_filters Online documentation}
     */
    inventory_supports_filters(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#is_filtered LuaInventory::is_filtered} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_inventory_filtered Online documentation}
     */
    is_inventory_filtered(inventory_index: defines.inventory): boolean
    /**
     * The same as {@link LuaInventory#can_set_filter LuaInventory::can_set_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index
     * @param filter The item filter
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_set_inventory_filter Online documentation}
     */
    can_set_inventory_filter(inventory_index: defines.inventory, index: uint32, filter: ItemFilterWrite): boolean
    /**
     * The same as {@link LuaInventory#get_filter LuaInventory::get_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index
     * @returns The current filter or `nil` if none.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_filter Online documentation}
     */
    get_inventory_filter(inventory_index: defines.inventory, index: uint32): ItemFilter | nil
    /**
     * The same as {@link LuaInventory#set_filter LuaInventory::set_filter} but also works for ghosts where the inventory is not available through {@link LuaControl#get_inventory LuaControl::get_inventory}.
     * @param index The item stack index.
     * @param filter The new filter. `nil` erases any existing filter.
     * @returns If the filter was allowed to be set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_filter Online documentation}
     */
    set_inventory_filter(inventory_index: defines.inventory, index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Gets fluid of the index-th fluid storage. This includes fluidbox and non-fluidbox fluid storages like fluid wagon contents. Refer to {@link LuaEntity#fluids_count LuaEntity::fluids_count} for more information on available storages.
     * @param index Fluid storage index. Valid values are from 1 up to {@link LuaEntity#fluids_count LuaEntity::fluids_count}.
     * @returns Fluid in this storage. `nil` if fluid storage is empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid Online documentation}
     */
    get_fluid(index: uint32): Fluid | nil
    /**
     * Sets fluid to the index-th fluid storage. This includes fluidbox and non-fluidbox fluid storages like fluid wagon contents. Refer to {@link LuaEntity#fluids_count LuaEntity::fluids_count} for more information on available storages.
     *
     * Fluid storages that are part of fluidboxes (also available through {@link LuaFluidBox}) may reject some fluids if they do not match filters or are above the fluidbox volume. To verify how much fluid was set a return value can be used which is the same as value that would be returned by {@link LuaEntity#get_fluid LuaEntity::get_fluid}.
     * @param index Fluid storage index. Valid values are from 1 up to {@link LuaEntity#fluids_count LuaEntity::fluids_count}.
     * @param fluid Fluid to set. Fluid storage will be cleared if this is not provided.
     * @returns Fluid in this storage after it was set. `nil` if fluid storage is empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_fluid Online documentation}
     */
    set_fluid(index: uint32, fluid?: Fluid): Fluid | nil
    /**
     * Gives logistic sections of this entity if it uses logistic sections.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_logistic_sections Online documentation}
     */
    get_logistic_sections(): LuaLogisticSections | nil
    /**
     * Name of the entity prototype. E.g. "inserter" or "fast-inserter".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#name Online documentation}
     */
    readonly name: string
    /**
     * Localised name of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly localised_description: LocalisedString
    /**
     * The entity prototype type of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#type Online documentation}
     */
    readonly type: EntityType
    /**
     * Deactivating an entity will stop all its operations (car will stop moving, inserters will stop working, fish will stop moving etc).
     *
     * Reading from this returns `false` if the entity is deactivated in at least one of the following ways: {@link LuaEntity#disabled_by_script by script}, {@link LuaEntity#disabled_by_control_behavior by circuit network}, {@link LuaEntity#disabled_by_recipe by recipe}, {@link LuaEntity#frozen by freezing}, or by deconstruction.
     *
     * Writing to this is deprecated and affects only the {@link LuaEntity#disabled_by_script disabled_by_script} state.
     *
     * Entities that are not active naturally can't be set to be active (setting it to be active will do nothing). Some entities (Corpse, FireFlame, Roboport, RollingStock, dying entities) need to remain active and will ignore writes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#active Online documentation}
     */
    active: boolean
    /**
     * If set to `false`, this entity can't be damaged and won't be attacked automatically. It can however still be mined.
     *
     * Entities that are indestructible naturally (they have no health, like smoke, resource etc) can't be set to be destructible.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#destructible Online documentation}
     */
    destructible: boolean
    /**
     * Not minable entities can still be destroyed.
     *
     * Tells if entity reports as being minable right now. This takes into account `minable_flag` and entity specific conditions (for example rail under rolling stocks is not minable, vehicle with passenger is not minable).
     *
     * Write to this field since 2.0.26 is deprecated and it will result in write to `minable_flag` instead.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#minable Online documentation}
     */
    minable: boolean
    /**
     * Script controlled flag that allows entity to be mined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#minable_flag Online documentation}
     */
    minable_flag: boolean
    /**
     * When entity is not to be rotatable (inserter, transport belt etc), it can't be rotated by player using the R key.
     *
     * Entities that are not rotatable naturally (like chest or furnace) can't be set to be rotatable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rotatable Online documentation}
     */
    rotatable: boolean
    /**
     * Player can't open gui of this entity and he can't quick insert/input stuff in to the entity when it is not operable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#operable Online documentation}
     */
    operable: boolean
    /**
     * The current health of the entity, if any. Health is automatically clamped to be between `0` and max health (inclusive). Entities with a health of `0` can not be attacked.
     *
     * To get the maximum possible health of this entity, see {@link LuaEntity#max_health LuaEntity::max_health}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#health Online documentation}
     */
    health?: float
    /**
     * Max health of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#max_health Online documentation}
     */
    readonly max_health: float
    /**
     * The current direction this entity is facing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#direction Online documentation}
     */
    direction: defines.direction
    /**
     * Whether the entity is currently mirrored. This state is referred to as `flipped` elsewhere, such as on the {@link OnPlayerFlippedEntityEvent on_player_flipped_entity} event.
     *
     * If an entity is mirrored, it is flipped over the axis that is pointing in the entity's direction. For example if a mirrored entity is facing north, everything that was defined to be facing east in the prototype now faces west.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mirroring Online documentation}
     */
    mirroring: boolean
    /**
     * Whether the entity has direction. When it is false for this entity, it will always return north direction when asked for.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#supports_direction Online documentation}
     */
    readonly supports_direction: boolean
    /**
     * The smooth orientation of this entity. For turrets this is the orientation of the weapon.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * The relative orientation of the vehicle turret, artillery turret, artillery wagon. `nil` if this entity isn't a vehicle with a vehicle turret or artillery turret/wagon.
     *
     * Writing does nothing if the vehicle doesn't have a turret.
     *
     * For the turret orientation of non-artillery turrets, use {@link LuaEntity#orientation LuaEntity::orientation}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#relative_turret_orientation Online documentation}
     */
    relative_turret_orientation?: RealOrientation
    /**
     * The current speed if this is a car, rolling stock, projectile or spidertron, or the maximum speed if this is a unit. The speed is in tiles per tick. `nil` if this is not a car, rolling stock, unit, projectile or spidertron.
     *
     * Only the speed of units, cars, and projectiles are writable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#speed Online documentation}
     */
    speed?: float
    /**
     * The entity prototype of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#prototype Online documentation}
     */
    readonly prototype: LuaEntityPrototype
    /**
     * Position where the entity puts its stuff.
     *
     * Mining drills and crafting machines can't have their drop position changed; inserters must have `allow_custom_vectors` set to true on their prototype to allow changing the drop position.
     *
     * Meaningful only for entities that put stuff somewhere, such as mining drills, crafting machines with a drop target or inserters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#drop_position Online documentation}
     */
    get drop_position(): MapPosition
    set drop_position(value: MapPosition | MapPositionArray)
    /**
     * The entity this entity is putting its items to. If there are multiple possible entities at the drop-off point, writing to this attribute allows a mod to choose which one to drop off items to. The entity needs to collide with the tile box under the drop-off position. `nil` if there is no entity to put items to, or if this is not an entity that puts items somewhere.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#drop_target Online documentation}
     */
    drop_target?: LuaEntity
    /**
     * Energy stored in the entity's energy buffer (energy stored in electrical devices etc.). Always 0 for entities that don't have the concept of energy stored inside.
     * @example
     * game.player.print("Machine energy: " .. game.player.selected.energy .. "J")
     * game.player.selected.energy = 3000
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#energy Online documentation}
     */
    energy: double
    /**
     * The temperature of this entity's heat energy source. `nil` if this entity does not use a heat energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#temperature Online documentation}
     */
    temperature?: double
    /**
     * The train this rolling stock belongs to, if any. `nil` if this is not a rolling stock.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#train Online documentation}
     */
    readonly train?: LuaTrain
    /**
     * A list of neighbours for certain types of entities. Applies to underground belts, walls, gates, reactors, heat pipes, cliffs, and pipe-connectable entities.
     *
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbours > Differs depending on the type of entity:}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbours Online documentation}
     */
    readonly neighbours?: Record<string, LuaEntity> | LuaEntity[][] | LuaEntity
    /**
     * The entities connected to this entities heat buffer.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#heat_neighbours Online documentation}
     */
    readonly heat_neighbours: LuaEntity[]
    /**
     * Fluidboxes of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#fluidbox Online documentation}
     */
    readonly fluidbox: LuaFluidBox
    /**
     * The backer name assigned to this entity. Entities that support backer names are labs, locomotives, radars, roboports, and train stops. `nil` if this entity doesn't support backer names.
     *
     * While train stops get the name of a backer when placed down, players can rename them if they want to. In this case, `backer_name` returns the player-given name of the entity.
     *
     * ## Raised events
     * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#backer_name Online documentation}
     */
    backer_name?: string
    /**
     * The label on this spider-vehicle entity, if any. `nil` if this is not a spider-vehicle.
     *
     * ## Raised events
     * - {@link OnEntityRenamedEvent on_entity_renamed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#entity_label Online documentation}
     */
    entity_label?: string
    /**
     * The color of this character, rolling stock, corpse, character corpse, train stop, simple-entity-with-owner, car, spider-vehicle, or lamp. `nil` if this entity doesn't use custom colors.
     *
     * Car color is overridden by the color of the current driver/passenger, if there is one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#color Online documentation}
     */
    get color(): Color | nil
    set color(value: Color | ColorArray | nil)
    /**
     * The productivity bonus of this entity.
     *
     * This includes force based bonuses as well as beacon/module bonuses.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#productivity_bonus Online documentation}
     */
    readonly productivity_bonus: double
    /**
     * The pollution bonus of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pollution_bonus Online documentation}
     */
    readonly pollution_bonus: double
    /**
     * The speed bonus of this entity.
     *
     * This includes force based bonuses as well as beacon/module bonuses.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#speed_bonus Online documentation}
     */
    readonly speed_bonus: double
    /**
     * The consumption bonus of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#consumption_bonus Online documentation}
     */
    readonly consumption_bonus: double
    /**
     * The logistic network this entity is a part of, or `nil` if this entity is not a part of any logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#logistic_network Online documentation}
     */
    logistic_network: LuaLogisticNetwork | nil
    /**
     * The logistic cell this entity is a part of. Will be `nil` if this entity is not a part of any logistic cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#logistic_cell Online documentation}
     */
    readonly logistic_cell: LuaLogisticCell | nil
    /**
     * Items this ghost will request when revived or items this item request proxy is requesting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#item_requests Online documentation}
     */
    readonly item_requests: ItemWithQualityCounts
    /**
     * The buffer size for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     *
     * Write access is limited to the ElectricEnergyInterface type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_buffer_size Online documentation}
     */
    electric_buffer_size?: double
    /**
     * The electric drain for the electric energy source. `nil` if the entity doesn't have an electric energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_drain Online documentation}
     */
    readonly electric_drain?: double
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. `nil` if the entity doesn't have an electric energy source. Multiplying values in the returned table by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_emissions_per_joule Online documentation}
     */
    readonly electric_emissions_per_joule?: Record<string, double>
    /**
     * A unique number identifying this entity for the lifetime of the save. These are allocated sequentially, and not re-used (until overflow).
     *
     * Only entities inheriting from {@link import("factorio:prototype").EntityWithOwnerPrototype EntityWithOwnerPrototype}, as well as {@link import("factorio:prototype").ItemRequestProxyPrototype ItemRequestProxyPrototype} and {@link import("factorio:prototype").EntityGhostPrototype EntityGhostPrototype} are assigned a unit number. Returns `nil` otherwise.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#unit_number Online documentation}
     */
    readonly unit_number?: UnitNumber
    /**
     * The mining progress for this mining drill. Is a number in range [0, mining_target.prototype.mineable_properties.mining_time]. `nil` if this isn't a mining drill.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_progress Online documentation}
     */
    mining_progress?: double
    /**
     * The bonus mining progress for this mining drill. Read yields a number in range [0, mining_target.prototype.mineable_properties.mining_time]. `nil` if this isn't a mining drill.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_mining_progress Online documentation}
     */
    bonus_mining_progress?: double
    /**
     * {@link LuaEntityPrototype#collision_box LuaEntityPrototype::collision_box} around entity's given position and respecting the current entity orientation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bounding_box Online documentation}
     */
    readonly bounding_box: BoundingBox
    /**
     * The secondary bounding box of this entity or `nil` if it doesn't have one. This only exists for curved rails, and is automatically determined by the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#secondary_bounding_box Online documentation}
     */
    readonly secondary_bounding_box?: BoundingBox
    /**
     * {@link LuaEntityPrototype#selection_box LuaEntityPrototype::selection_box} around entity's given position and respecting the current entity orientation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selection_box Online documentation}
     */
    readonly selection_box: BoundingBox
    /**
     * The secondary selection box of this entity or `nil` if it doesn't have one. This only exists for curved rails, and is automatically determined by the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#secondary_selection_box Online documentation}
     */
    readonly secondary_selection_box?: BoundingBox
    /**
     * The number of filter slots this inserter, loader, mining drill, asteroid collector or logistic storage container has. 0 if not one of those entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#filter_slot_count Online documentation}
     */
    readonly filter_slot_count: uint32
    /**
     * This entity's equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#grid Online documentation}
     */
    readonly grid?: LuaEquipmentGrid
    /**
     * The graphics variation for this entity. `nil` if this entity doesn't use graphics variations.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#graphics_variation Online documentation}
     */
    graphics_variation?: uint8
    /**
     * The burner energy source for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#burner Online documentation}
     */
    readonly burner?: LuaBurner
    /**
     * The sticker entities attached to this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stickers Online documentation}
     */
    readonly stickers?: LuaEntity[]
    /**
     * The vehicle modifiers applied to this entity through the attached stickers.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#sticker_vehicle_modifiers Online documentation}
     */
    readonly sticker_vehicle_modifiers?: {
      readonly speed_modifier: double
      readonly speed_max: double
      readonly friction_modifier: double
    }
    /**
     * The effects being applied to this entity, if any. For beacons, this is the effect the beacon is broadcasting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effects Online documentation}
     */
    readonly effects?: ModuleEffects
    /**
     * Number of beacons affecting this effect receiver. Can only be used when the entity has an effect receiver (AssemblingMachine, Furnace, Lab, MiningDrills)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#beacons_count Online documentation}
     */
    readonly beacons_count?: uint32
    /**
     * The status of this entity, if any.
     *
     * This is always the actual status of the entity, even if {@link LuaEntity#custom_status LuaEntity::custom_status} is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#status Online documentation}
     */
    readonly status?: defines.entity_status
    /**
     * A custom status for this entity that will be displayed in the GUI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#custom_status Online documentation}
     */
    custom_status?: CustomEntityStatus
    /**
     * The player that this `simple-entity-with-owner`, `simple-entity-with-force`, or `highlight-box` is visible to. `nil` when this entity is rendered for all players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#render_player Online documentation}
     */
    get render_player(): LuaPlayer | nil
    set render_player(value: PlayerIdentification | nil)
    /**
     * The forces that this `simple-entity-with-owner` or `simple-entity-with-force` is visible to. `nil` or an empty array when this entity is rendered for all forces.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#render_to_forces Online documentation}
     */
    get render_to_forces(): LuaForce[] | nil
    set render_to_forces(value: ForceSet | nil)
    /**
     * Returns the id of the electric network that this entity is connected to, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_network_id Online documentation}
     */
    readonly electric_network_id?: uint32
    /**
     * The storage filter for this logistic storage container.
     *
     * Useable only on logistic containers with the `"storage"` {@link LuaEntityPrototype#logistic_mode logistic_mode}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#storage_filter Online documentation}
     */
    get storage_filter(): ItemIDAndQualityIDPair | nil
    set storage_filter(value: ItemWithQualityID | nil)
    /**
     * Whether this requester chest is set to also request from buffer chests.
     *
     * Useable only on entities that have requester slots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_from_buffers Online documentation}
     */
    request_from_buffers: boolean
    /**
     * The tags associated with this entity ghost. `nil` if this is not an entity ghost or when the ghost has no tags.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tags Online documentation}
     */
    tags?: Tags
    /**
     * Whether this entity is a MilitaryTarget. Can be written to if {@link LuaEntityPrototype#allow_run_time_change_of_is_military_target LuaEntityPrototype::allow_run_time_change_of_is_military_target} returns `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_military_target Online documentation}
     */
    is_military_target: boolean
    /**
     * If this entity is EntityWithOwner
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_entity_with_owner Online documentation}
     */
    readonly is_entity_with_owner: boolean
    /**
     * If this entity is EntityWithHealth
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_entity_with_health Online documentation}
     */
    readonly is_entity_with_health: boolean
    /**
     * The quality of this entity.
     *
     * Not all entities support quality and will give the "normal" quality back if they don't.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * Name tag of this entity. Returns `nil` if entity has no name tag. When name tag is already used by other entity, the name will be removed from the other entity. Entity name tags can also be set in the entity "extra settings" GUI in the map editor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#name_tag Online documentation}
     */
    name_tag: string | nil
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension). Uses the current direction of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tile_width Online documentation}
     */
    readonly tile_width: uint32
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension). Uses the current direction of the entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tile_height Online documentation}
     */
    readonly tile_height: uint32
    /**
     * Returns a {@linkplain https://wiki.factorio.com/Rich_text rich text} string containing this entity's position and surface name as a gps tag. {@link LuaGameScript#print Printing} it will ping the location of the entity.
     * @example
     * -- called on a LuaEntity on the default surface it returns:
     * entity.gps_tag -- => "[gps=-4,-9]"
     *
     * -- called on a LuaEntity on "custom-surface" it returns:
     * different_entity.gps_tag -- => "[gps=1,-5,custom-surface]"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#gps_tag Online documentation}
     */
    readonly gps_tag: string
    /**
     * Returns a LuaCommandable for this entity or nil if entity is not commandable. Units and SpiderUnits are commandable.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#commandable Online documentation}
     */
    readonly commandable?: LuaCommandable
    /**
     * Returns count of fluid storages. This includes fluid storages provided by fluidboxes but also covers other fluid storages like fluid turret's internal buffer and fluid wagon's fluid since they are not fluidbox and cannot be exposed through {@link LuaFluidBox}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#fluids_count Online documentation}
     */
    readonly fluids_count: uint32
    /**
     * Whether the entity is updatable and considered an UpdatableEntity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_updatable Online documentation}
     */
    readonly is_updatable: boolean
    /**
     * Whether the entity is freezable and considered a FreezableEntity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_freezable Online documentation}
     */
    readonly is_freezable: boolean
    /**
     * The cargo hatches owned by this entity if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_hatches Online documentation}
     */
    readonly cargo_hatches: LuaCargoHatch[]
    /**
     * The rocket silo rocket this cargo pod is attached to, or rocket silo rocket attached to this rocket silo - if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket Online documentation}
     */
    readonly rocket?: LuaEntity
    /**
     * The first found item request proxy targeting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#item_request_proxy Online documentation}
     */
    readonly item_request_proxy?: LuaEntity
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEntity"
  }
  /**
   * @noSelf
   */
  export interface EntityWithHealthEntity extends BaseEntity {
    /**
     * Damages the entity.
     *
     * ## Raised events
     * - {@link OnEntityDamagedEvent on_entity_damaged} _instantly_
     *
     * _Can only be used if this is EntityWithHealth_
     * @param damage The amount of damage to be done.
     * @param force The force that will be doing the damage.
     * @param type The type of damage to be done, defaults to `"impact"`.
     * @param source The entity that is directly dealing the damage (e.g. the projectile, flame, sticker, grenade, laser beam, etc.). Needs to be on the same surface as the entity being damaged.
     * @param cause The entity that originally triggered the events that led to this damage being dealt (e.g. the character, turret, enemy, etc. that pulled the trigger). Does not need to be on the same surface as the entity being damaged.
     * @returns the total damage actually applied after resistances.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#damage Online documentation}
     */
    damage(damage: float, force: ForceID, type?: DamageTypeID, source?: LuaEntity, cause?: LuaEntity): float
  }
  /**
   * @noSelf
   */
  export interface EntityGhostEntity extends BaseEntity {
    /**
     * Same as {@link LuaEntity#has_flag LuaEntity::has_flag}, but targets the inner entity on a entity ghost.
     *
     * _Can only be used if this is EntityGhost_
     * @param flag The flag to test.
     * @returns `true` if the entity has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_has_flag Online documentation}
     */
    ghost_has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * The insert plan for this ghost or item request proxy.
     *
     * _Can only be used if this is EntityGhost or ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#insert_plan Online documentation}
     */
    insert_plan: BlueprintInsertPlan[]
    /**
     * The {@link LuaEntity#unit_number unit_number} of the entity contained in this ghost. It is the same as the unit number of the {@link import("factorio:prototype").EntityWithOwnerPrototype EntityWithOwnerPrototype} that was destroyed to create this ghost. If it was created by other means, or if the inner entity does not support unit numbers, this property is `nil`.
     *
     * _Can only be used if this is EntityGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_unit_number Online documentation}
     */
    readonly ghost_unit_number?: UnitNumber
    /**
     * The corpse that caused this entity ghost to be created, if any.
     *
     * _Can only be used if this is EntityGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#created_by_corpse Online documentation}
     */
    readonly created_by_corpse?: LuaEntity
  }
  /**
   * @noSelf
   */
  export interface MarketEntity extends BaseEntity {
    /**
     * Offer a thing on the market.
     *
     * _Can only be used if this is Market_
     * @example
     * -- Adds market offer, 1 copper ore for 10 iron ore
     * market.add_market_item{price={{name = "iron-ore", count = 10}}, offer={type="give-item", item="copper-ore"}}
     * @example
     * -- Adds market offer, 1 copper ore for 5 iron ore and 5 stone ore
     * market.add_market_item{price={{name = "iron-ore", count = 5}, {name = "stone", count = 5}}, offer={type="give-item", item="copper-ore"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#add_market_item Online documentation}
     */
    add_market_item(offer: Offer): void
    /**
     * Remove an offer from a market.
     *
     * The other offers are moved down to fill the gap created by removing the offer, which decrements the overall size of the offer array.
     *
     * _Can only be used if this is Market_
     * @param offer Index of offer to remove.
     * @returns `true` if the offer was successfully removed; `false` when the given index was not valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_market_item Online documentation}
     */
    remove_market_item(offer: uint32): boolean
    /**
     * Get all offers in a market as an array.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_market_items Online documentation}
     */
    get_market_items(): Offer[]
    /**
     * Removes all offers from a market.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#clear_market_items Online documentation}
     */
    clear_market_items(): void
  }
  /**
   * @noSelf
   */
  export interface CraftingMachineEntity extends BaseEntity {
    /**
     * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether a crafting process has been started in this machine.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_crafting Online documentation}
     */
    is_crafting(): boolean
    /**
     * Current recipe being assembled by this machine, if any.
     *
     * _Can only be used if this is CraftingMachine_
     * @returns
     * @returns
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_recipe Online documentation}
     */
    get_recipe(): LuaMultiReturn<[LuaRecipe | nil, LuaQualityPrototype | nil]>
    /**
     * The current crafting speed, including speed bonuses from modules and beacons.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crafting_speed Online documentation}
     */
    readonly crafting_speed: double
    /**
     * The current crafting progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crafting_progress Online documentation}
     */
    crafting_progress: float
    /**
     * The current productivity bonus progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_progress Online documentation}
     */
    bonus_progress: double
    /**
     * The quality produced when this crafting machine finishes crafting. `nil` when crafting is not in progress.
     *
     * Note: Writing `nil` is not allowed.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#result_quality Online documentation}
     */
    get result_quality(): LuaQualityPrototype | nil
    set result_quality(value: QualityID | nil)
    /**
     * The number of products this machine finished crafting in its lifetime.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#products_finished Online documentation}
     */
    products_finished: uint32
  }
  /**
   * @noSelf
   */
  export interface GateEntity extends BaseEntity {
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently opened.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_opened Online documentation}
     */
    is_opened(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently opening.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_opening Online documentation}
     */
    is_opening(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently closed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_closed Online documentation}
     */
    is_closed(): boolean
    /**
     * _Can only be used if this is Gate_
     * @returns `true` if this gate is currently closing
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_closing Online documentation}
     */
    is_closing(): boolean
    /**
     * _Can only be used if this is Gate_
     * @param force The force that requests the gate to be open.
     * @param extra_time Extra ticks to stay open.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_to_open Online documentation}
     */
    request_to_open(force: ForceID, extra_time?: uint32): void
    /**
     * _Can only be used if this is Gate_
     * @param force The force that requests the gate to be closed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#request_to_close Online documentation}
     */
    request_to_close(force: ForceID): void
  }
  /**
   * @noSelf
   */
  export interface TransportBeltConnectableEntity extends BaseEntity {
    /**
     * Get a transport line of a belt or belt connectable entity.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param index Index of the requested transport line. Transport lines are 1-indexed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_transport_line Online documentation}
     */
    get_transport_line(index: defines.transport_line): LuaTransportLine
    /**
     * Get an item insert specification onto a belt connectable: for a given map position provides into which line at what position item should be inserted to be closest to the provided position.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param position Position where the item is to be inserted.
     * @returns Index of the transport line that is closest to the provided map position.
     * @returns Position along the transport line where item should be dropped.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_item_insert_specification Online documentation}
     */
    get_item_insert_specification(position: MapPosition | MapPositionArray): LuaMultiReturn<[uint32, float]>
    /**
     * Get a map position related to a position on a transport line.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @param index Index of the transport line. Transport lines are 1-indexed.
     * @param position Linear position along the transport line. Clamped to the transport line range.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_line_item_position Online documentation}
     */
    get_line_item_position(index: defines.transport_line, position: float): MapPosition
    /**
     * Get the maximum transport line index of a belt or belt connectable entity.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_max_transport_line_index Online documentation}
     */
    get_max_transport_line_index(): defines.transport_line
    /**
     * The belt connectable neighbours of this belt connectable entity. Only entities that input to or are outputs of this entity. Does not contain the other end of an underground belt, see {@link LuaEntity#neighbours LuaEntity::neighbours} for that.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_neighbours Online documentation}
     */
    readonly belt_neighbours: {
      /**
       * Array of transport belt connectable entities.
       */
      readonly inputs: LuaEntity[]
      /**
       * Array of transport belt connectable entities.
       */
      readonly outputs: LuaEntity[]
    }
  }
  /**
   * @noSelf
   */
  export interface RocketSiloEntity extends BaseEntity {
    /**
     * ## Raised events
     * - {@link OnRocketLaunchOrderedEvent on_rocket_launch_ordered}? _instantly_ Raised if the rocket launch was successfully initiated.
     *
     * _Can only be used if this is RocketSilo_
     * @param character If provided, must be of `character` type.
     * @returns `true` if the rocket was successfully launched. Return value of `false` means the silo is not ready for launch.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#launch_rocket Online documentation}
     */
    launch_rocket(destination?: CargoDestinationWrite, character?: LuaEntity): boolean
    /**
     * Creates a cargo pod if possible.
     *
     * Cargo pod will be created with {@link defines.cargo_destination.invalid invalid} destination type. Setting {@link LuaEntity#cargo_pod_destination cargo_pod_destination} will cause it to launch.
     *
     * _Can only be used if this is RocketSilo, CargoLandingPad or SpacePlatformHub_
     * @param cargo_hatch The hatch to create the pod at. A random (available) one is picked if not provided.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_cargo_pod Online documentation}
     */
    create_cargo_pod(cargo_hatch?: LuaCargoHatch): LuaEntity | nil
    /**
     * When true, the rocket silo will automatically request items for space platforms in orbit.
     *
     * Setting the value will have no effect when the silo doesn't support logistics.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#use_transitional_requests Online documentation}
     */
    use_transitional_requests: boolean
    /**
     * The space platform in orbit this rocket silo is automatically requesting items for.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#transitional_request_target Online documentation}
     */
    readonly transitional_request_target?: LuaSpacePlatform
    /**
     * Number of rocket parts in this rocket silo.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket_parts Online documentation}
     */
    rocket_parts: uint32
    /**
     * Whether this rocket silo is set to send items to orbit automatically. Only relevant if there is an item prototype with {@link LuaItemPrototype#rocket_launch_products launch products} with automated {@link LuaItemPrototype#send_to_orbit_mode send_to_orbit_mode}, such as the satellite in vanilla (without Space Age mod).
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#send_to_orbit_automatically Online documentation}
     */
    send_to_orbit_automatically: boolean
    /**
     * The status of this rocket silo entity.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rocket_silo_status Online documentation}
     */
    readonly rocket_silo_status: defines.rocket_silo_status
  }
  /**
   * @noSelf
   */
  export interface GhostEntity extends BaseEntity {
    /**
     * Revive a ghost, which turns it from a ghost into a real entity or tile.
     *
     * ## Raised events
     * - {@link ScriptRaisedReviveEvent script_raised_revive}? _instantly_ Raised if this was an entity ghost and the `raise_revive` flag was set and the entity was successfully revived.
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}? _instantly_ Raised if this was a tile ghost and the `raise_revive` flag was set and the tile was successfully revived.
     *
     * _Can only be used if this is Ghost_
     * @returns Any items the new real entity collided with or `nil` if the ghost could not be revived.
     * @returns The revived entity if an entity ghost was successfully revived.
     * @returns The item request proxy if one was created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#revive Online documentation}
     */
    revive(params?: {
      /**
       * If true, and an entity ghost; {@link ScriptRaisedReviveEvent script_raised_revive} will be called. Else if true, and a tile ghost; {@link ScriptRaisedSetTilesEvent script_raised_set_tiles} will be called.
       */
      readonly raise_revive?: boolean
      /**
       * Items that would be deleted will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
       */
      readonly overflow?: LuaInventory
    }): LuaMultiReturn<[Record<string, uint32> | nil, LuaEntity | nil, LuaEntity | nil]>
    /**
     * Revives a ghost silently, so the revival makes no sound and no smoke is created.
     *
     * ## Raised events
     * - {@link ScriptRaisedReviveEvent script_raised_revive}? _instantly_ Raised if this was an entity ghost and the `raise_revive` flag was set and the entity was successfully revived.
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}? _instantly_ Raised if this was a tile ghost and the `raise_revive` flag was set and the tile was successfully revived.
     *
     * _Can only be used if this is Ghost_
     * @returns Any items the new real entity collided with or `nil` if the ghost could not be revived.
     * @returns The revived entity if an entity ghost was successfully revived.
     * @returns The item request proxy if one was created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#silent_revive Online documentation}
     */
    silent_revive(params?: {
      /**
       * If true, and an entity ghost; {@link ScriptRaisedReviveEvent script_raised_revive} will be called. Else if true, and a tile ghost; {@link ScriptRaisedSetTilesEvent script_raised_set_tiles} will be called.
       */
      readonly raise_revive?: boolean
      /**
       * Items that would be deleted will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
       */
      readonly overflow?: LuaInventory
    }): LuaMultiReturn<[ItemWithQualityCounts | nil, LuaEntity | nil, LuaEntity | nil]>
    /**
     * Name of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_name Online documentation}
     */
    readonly ghost_name: string
    /**
     * Localised name of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_localised_name Online documentation}
     */
    readonly ghost_localised_name: LocalisedString
    /**
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_localised_description Online documentation}
     */
    readonly ghost_localised_description: LocalisedString
    /**
     * The prototype type of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_type Online documentation}
     */
    readonly ghost_type: EntityType
    /**
     * The prototype of the entity or tile contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ghost_prototype Online documentation}
     */
    readonly ghost_prototype: LuaEntityPrototype | LuaTilePrototype
  }
  /**
   * @noSelf
   */
  export interface RailEntity extends BaseEntity {
    /**
     * _Can only be used if this is Rail_
     * @returns Rail connected in the specified manner to this one, `nil` if unsuccessful.
     * @returns Rail direction of the returned rail which points to origin rail
     * @returns Turn to be taken when going back from returned rail to origin rail
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rail Online documentation}
     */
    get_connected_rail(params: {
      readonly rail_direction: defines.rail_direction
      readonly rail_connection_direction: defines.rail_connection_direction
    }): LuaMultiReturn<[LuaEntity | nil, defines.rail_direction | nil, defines.rail_connection_direction | nil]>
    /**
     * Get the rail signal at the start/end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction The direction of travel relative to this rail.
     * @param in_else_out If true, gets the signal at the entrance of the rail segment, otherwise gets the signal at the exit of the rail segment.
     * @returns `nil` if the rail segment doesn't start/end with a signal.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_signal Online documentation}
     */
    get_rail_segment_signal(direction: defines.rail_direction, in_else_out: boolean): LuaEntity | nil
    /**
     * Get train stop at the start/end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction The direction of travel relative to this rail.
     * @returns `nil` if the rail segment doesn't start/end with a train stop.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_stop Online documentation}
     */
    get_rail_segment_stop(direction: defines.rail_direction): LuaEntity | nil
    /**
     * Get the rail at the end of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @returns The rail entity.
     * @returns A rail direction pointing out of the rail segment from the end rail.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_end Online documentation}
     */
    get_rail_segment_end(direction: defines.rail_direction): LuaMultiReturn<[LuaEntity, defines.rail_direction]>
    /**
     * Get all rails of a rail segment this rail is in
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @param direction Selects end of this rail that points to a rail segment end from which to start returning rails
     * @returns Rails of this rail segment
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_rails Online documentation}
     */
    get_rail_segment_rails(direction: defines.rail_direction): LuaEntity[]
    /**
     * Get the length of the rail segment this rail is in.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_length Online documentation}
     */
    get_rail_segment_length(): double
    /**
     * Get a rail from each rail segment that overlaps with this rail's rail segment.
     *
     * A rail segment is a continuous section of rail with no branches, signals, nor train stops.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_segment_overlaps Online documentation}
     */
    get_rail_segment_overlaps(): LuaEntity[]
    /**
     * Checks if this rail and other rail both belong to the same rail segment.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_rail_in_same_rail_segment_as Online documentation}
     */
    is_rail_in_same_rail_segment_as(other_rail: LuaEntity): boolean
    /**
     * Checks if this rail and other rail both belong to the same rail block.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_rail_in_same_rail_block_as Online documentation}
     */
    is_rail_in_same_rail_block_as(other_rail: LuaEntity): boolean
    /**
     * Returns all signals guarding entrance to a rail block this rail belongs to.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inbound_signals Online documentation}
     */
    get_inbound_signals(): LuaEntity[]
    /**
     * Returns all signals guarding exit from a rail block this rail belongs to.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_outbound_signals Online documentation}
     */
    get_outbound_signals(): LuaEntity[]
    /**
     * Gets a LuaRailEnd object for specified end of this rail
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_rail_end Online documentation}
     */
    get_rail_end(direction: defines.rail_direction): LuaRailEnd
    /**
     * Length of this rail piece.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rail_length Online documentation}
     */
    readonly rail_length: double
    /**
     * The number of trains in this rail block for this rail entity.
     *
     * _Can only be used if this is Rail_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_in_block Online documentation}
     */
    readonly trains_in_block: uint32
  }
  /**
   * @noSelf
   */
  export interface RailSignalEntity extends BaseEntity {
    /**
     * Get the rails that this signal is connected to.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rails Online documentation}
     */
    get_connected_rails(): LuaEntity[]
    /**
     * Returns all parent signals. Parent signals are always RailChainSignal. Parent signals are those signals that are checking state of this signal to determine their own chain state.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_parent_signals Online documentation}
     */
    get_parent_signals(): LuaEntity[]
    /**
     * The state of this rail signal.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#signal_state Online documentation}
     */
    readonly signal_state: defines.signal_state
    /**
     * Gets rail layer of a given signal
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rail_layer Online documentation}
     */
    readonly rail_layer: defines.rail_layer
  }
  /**
   * @noSelf
   */
  export interface RailChainSignalEntity extends BaseEntity {
    /**
     * Get the rails that this signal is connected to.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rails Online documentation}
     */
    get_connected_rails(): LuaEntity[]
    /**
     * Returns all parent signals. Parent signals are always RailChainSignal. Parent signals are those signals that are checking state of this signal to determine their own chain state.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_parent_signals Online documentation}
     */
    get_parent_signals(): LuaEntity[]
    /**
     * Returns all child signals. Child signals can be either RailSignal or RailChainSignal. Child signals are signals which are checked by this signal to determine a chain state.
     *
     * _Can only be used if this is RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_child_signals Online documentation}
     */
    get_child_signals(): LuaEntity[]
    /**
     * The state of this rail signal.
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#signal_state Online documentation}
     */
    readonly signal_state: defines.signal_state
    /**
     * The state of this chain signal.
     *
     * _Can only be used if this is RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#chain_signal_state Online documentation}
     */
    readonly chain_signal_state: defines.chain_signal_state
    /**
     * Gets rail layer of a given signal
     *
     * _Can only be used if this is RailSignal or RailChainSignal_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#rail_layer Online documentation}
     */
    readonly rail_layer: defines.rail_layer
  }
  /**
   * @noSelf
   */
  export interface InfinityContainerEntity extends BaseEntity {
    /**
     * Gets the filter for this infinity container at the given index, or `nil` if the filter index doesn't exist or is empty.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_infinity_container_filter Online documentation}
     */
    get_infinity_container_filter(index: uint32): InfinityInventoryFilter | nil
    /**
     * Sets the filter for this infinity container at the given index.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to set.
     * @param filter The new filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_infinity_container_filter Online documentation}
     */
    set_infinity_container_filter(index: uint32, filter: InfinityInventoryFilterWrite | nil): void
    /**
     * The filters for this infinity container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#infinity_container_filters Online documentation}
     */
    get infinity_container_filters(): InfinityInventoryFilter[]
    set infinity_container_filters(value: readonly InfinityInventoryFilterWrite[])
    /**
     * Whether items not included in this infinity container filters should be removed from the container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_unfiltered_items Online documentation}
     */
    remove_unfiltered_items: boolean
  }
  /**
   * @noSelf
   */
  export interface InfinityCargoWagonEntity extends BaseEntity {
    /**
     * Gets the filter for this infinity container at the given index, or `nil` if the filter index doesn't exist or is empty.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_infinity_container_filter Online documentation}
     */
    get_infinity_container_filter(index: uint32): InfinityInventoryFilter | nil
    /**
     * Sets the filter for this infinity container at the given index.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @param index The index to set.
     * @param filter The new filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_infinity_container_filter Online documentation}
     */
    set_infinity_container_filter(index: uint32, filter: InfinityInventoryFilterWrite | nil): void
    /**
     * The filters for this infinity container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#infinity_container_filters Online documentation}
     */
    get infinity_container_filters(): InfinityInventoryFilter[]
    set infinity_container_filters(value: readonly InfinityInventoryFilterWrite[])
    /**
     * Whether items not included in this infinity container filters should be removed from the container.
     *
     * _Can only be used if this is InfinityContainer or InfinityCargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#remove_unfiltered_items Online documentation}
     */
    remove_unfiltered_items: boolean
  }
  /**
   * @noSelf
   */
  export interface InfinityPipeEntity extends BaseEntity {
    /**
     * Gets the filter for this infinity pipe, or `nil` if the filter is empty.
     *
     * _Can only be used if this is InfinityPipe_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_infinity_pipe_filter Online documentation}
     */
    get_infinity_pipe_filter(): InfinityPipeFilter | nil
    /**
     * Sets the filter for this infinity pipe.
     *
     * _Can only be used if this is InfinityPipe_
     * @param filter The new filter, or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_infinity_pipe_filter Online documentation}
     */
    set_infinity_pipe_filter(filter: InfinityPipeFilter | nil): void
  }
  /**
   * @noSelf
   */
  export interface HeatInterfaceEntity extends BaseEntity {
    /**
     * Gets the heat setting for this heat interface.
     *
     * _Can only be used if this is HeatInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_heat_setting Online documentation}
     */
    get_heat_setting(): HeatSetting
    /**
     * Sets the heat setting for this heat interface.
     *
     * _Can only be used if this is HeatInterface_
     * @param filter The new setting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_heat_setting Online documentation}
     */
    set_heat_setting(filter: HeatSetting): void
  }
  /**
   * @noSelf
   */
  export interface ProgrammableSpeakerEntity extends BaseEntity {
    /**
     * Plays a note with the given instrument and note.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @returns Whether the request is valid. The sound may or may not be played depending on polyphony settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#play_note Online documentation}
     */
    play_note(instrument: uint32, note: uint32, stop_playing_sounds?: boolean): boolean
    /**
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#parameters Online documentation}
     */
    get parameters(): ProgrammableSpeakerParameters
    set parameters(value: ProgrammableSpeakerParametersWrite)
    /**
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#alert_parameters Online documentation}
     */
    get alert_parameters(): ProgrammableSpeakerAlertParameters
    set alert_parameters(value: ProgrammableSpeakerAlertParametersWrite)
  }
  /**
   * @noSelf
   */
  export interface RollingStockEntity extends BaseEntity {
    /**
     * Connects the rolling stock in the given direction.
     *
     * _Can only be used if this is RollingStock_
     * @returns Whether any connection was made
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connect_rolling_stock Online documentation}
     */
    connect_rolling_stock(direction: defines.rail_direction): boolean
    /**
     * Tries to disconnect this rolling stock in the given direction.
     *
     * _Can only be used if this is RollingStock_
     * @returns If anything was disconnected
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disconnect_rolling_stock Online documentation}
     */
    disconnect_rolling_stock(direction: defines.rail_direction): boolean
    /**
     * Gets rolling stock connected to the given end of this stock.
     *
     * _Can only be used if this is RollingStock_
     * @returns The rolling stock connected at the given end, `nil` if none is connected there.
     * @returns The rail direction of the connected rolling stock if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_connected_rolling_stock Online documentation}
     */
    get_connected_rolling_stock(
      direction: defines.rail_direction,
    ): LuaMultiReturn<[LuaEntity | nil, defines.rail_direction | nil]>
    /**
     * If this rolling stock has 'copy color from train stop' enabled.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#copy_color_from_train_stop Online documentation}
     */
    copy_color_from_train_stop: boolean
    /**
     * If the rolling stock is facing train's front.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#is_headed_to_trains_front Online documentation}
     */
    readonly is_headed_to_trains_front: boolean
    /**
     * Gives a draw data of the given entity if it supports such data.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#draw_data Online documentation}
     */
    readonly draw_data: RollingStockDrawData
  }
  /**
   * @noSelf
   */
  export interface AssemblingMachineEntity extends BaseEntity {
    /**
     * Sets the given recipe in this assembly machine.
     *
     * _Can only be used if this is AssemblingMachine_
     * @param recipe The new recipe. Writing `nil` clears the recipe, if any.
     * @param quality The quality. If not provided `normal` is used.
     * @returns Any items removed from this entity as a result of setting the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_recipe Online documentation}
     */
    set_recipe(recipe?: RecipeID, quality?: QualityID): ItemWithQualityCounts
    /**
     * When locked; the recipe in this assembling machine can't be changed by the player.
     *
     * _Can only be used if this is AssemblingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#recipe_locked Online documentation}
     */
    recipe_locked: boolean
  }
  /**
   * @noSelf
   */
  export interface VehicleEntity extends BaseEntity {
    /**
     * Gets the driver of this vehicle if any.
     *
     * _Can only be used if this is Vehicle_
     * @returns `nil` if the vehicle contains no driver. To check if there's a passenger see {@link LuaEntity#get_passenger LuaEntity::get_passenger}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_driver Online documentation}
     */
    get_driver(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the driver of this vehicle.
     *
     * This differs from {@link LuaEntity#set_passenger LuaEntity::set_passenger} in that the passenger can't drive the vehicle.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Vehicle_
     * @param driver The new driver. Writing `nil` ejects the current driver, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_driver Online documentation}
     */
    set_driver(driver: LuaEntity | PlayerIdentification | nil): void
    /**
     * Whether equipment grid logistics are enabled while this vehicle is moving.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#enable_logistics_while_moving Online documentation}
     */
    enable_logistics_while_moving: boolean
  }
  /**
   * @noSelf
   */
  export interface CarEntity extends BaseEntity {
    /**
     * Gets the passenger of this car, spidertron, or cargo pod if any.
     *
     * This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that for cars, the passenger can't drive the car.
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @returns `nil` if the vehicle contains no passenger. To check if there's a driver see {@link LuaEntity#get_driver LuaEntity::get_driver}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_passenger Online documentation}
     */
    get_passenger(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the passenger of this car, spidertron, or cargo pod.
     *
     * This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_passenger Online documentation}
     */
    set_passenger(passenger: LuaEntity | PlayerIdentification | nil): void
    /**
     * Multiplies the acceleration the car can create for one unit of energy. Defaults to `1`.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effectivity_modifier Online documentation}
     */
    effectivity_modifier: float
    /**
     * Multiplies the energy consumption.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#consumption_modifier Online documentation}
     */
    consumption_modifier: float
    /**
     * Multiplies the car friction rate.
     *
     * _Can only be used if this is Car_
     * @example
     * -- This will allow the car to go much faster
     * game.player.vehicle.friction_modifier = 0.5
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#friction_modifier Online documentation}
     */
    friction_modifier: float
    /**
     * Whether the driver of this car or spidertron is the gunner. If `false`, the passenger is the gunner. `nil` if this is neither a car or a spidertron.
     *
     * _Can only be used if this is Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#driver_is_gunner Online documentation}
     */
    driver_is_gunner?: boolean
    /**
     * Index of the currently selected weapon slot of this character, car, or spidertron. `nil` if this entity doesn't have guns.
     *
     * _Can only be used if this is Character, Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selected_gun_index Online documentation}
     */
    selected_gun_index?: uint32
  }
  /**
   * @noSelf
   */
  export interface SpiderVehicleEntity extends BaseEntity {
    /**
     * Gets the passenger of this car, spidertron, or cargo pod if any.
     *
     * This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that for cars, the passenger can't drive the car.
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @returns `nil` if the vehicle contains no passenger. To check if there's a driver see {@link LuaEntity#get_driver LuaEntity::get_driver}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_passenger Online documentation}
     */
    get_passenger(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the passenger of this car, spidertron, or cargo pod.
     *
     * This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_passenger Online documentation}
     */
    set_passenger(passenger: LuaEntity | PlayerIdentification | nil): void
    /**
     * Adds the given position to this spidertron's autopilot's queue of destinations.
     *
     * _Can only be used if this is SpiderVehicle_
     * @param position The position the spidertron should move to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#add_autopilot_destination Online documentation}
     */
    add_autopilot_destination(position: MapPosition | MapPositionArray): void
    /**
     * Gets legs of given SpiderVehicle.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_spider_legs Online documentation}
     */
    get_spider_legs(): LuaEntity[]
    /**
     * Sets the {@link LuaEntity#speed speed} of the given SpiderVehicle to zero. Notably does not clear its {@link LuaEntity#autopilot_destination autopilot_destination}, which it will continue moving towards if set.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stop_spider Online documentation}
     */
    stop_spider(): void
    /**
     * The torso orientation of this spider vehicle.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#torso_orientation Online documentation}
     */
    torso_orientation: RealOrientation
    /**
     * Whether the driver of this car or spidertron is the gunner. If `false`, the passenger is the gunner. `nil` if this is neither a car or a spidertron.
     *
     * _Can only be used if this is Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#driver_is_gunner Online documentation}
     */
    driver_is_gunner?: boolean
    /**
     * Read when this spidertron auto-targets enemies
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#vehicle_automatic_targeting_parameters Online documentation}
     */
    vehicle_automatic_targeting_parameters: VehicleAutomaticTargetingParameters
    /**
     * Index of the currently selected weapon slot of this character, car, or spidertron. `nil` if this entity doesn't have guns.
     *
     * _Can only be used if this is Character, Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selected_gun_index Online documentation}
     */
    selected_gun_index?: uint32
    /**
     * Destination of this spidertron's autopilot, if any. Writing `nil` clears all destinations.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#autopilot_destination Online documentation}
     */
    get autopilot_destination(): MapPosition | nil
    set autopilot_destination(value: MapPosition | MapPositionArray | nil)
    /**
     * The queued destination positions of spidertron's autopilot.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#autopilot_destinations Online documentation}
     */
    readonly autopilot_destinations: MapPosition[]
    /**
     * The follow target of this spidertron, if any.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#follow_target Online documentation}
     */
    follow_target?: LuaEntity
    /**
     * The follow offset of this spidertron, if any entity is being followed. This is randomized each time the follow entity is set.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#follow_offset Online documentation}
     */
    get follow_offset(): Vector | nil
    set follow_offset(value: Vector | VectorTable | nil)
  }
  /**
   * @noSelf
   */
  export interface CargoPodEntity extends BaseEntity {
    /**
     * Gets the passenger of this car, spidertron, or cargo pod if any.
     *
     * This differs over {@link LuaEntity#get_driver LuaEntity::get_driver} in that for cars, the passenger can't drive the car.
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @returns `nil` if the vehicle contains no passenger. To check if there's a driver see {@link LuaEntity#get_driver LuaEntity::get_driver}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_passenger Online documentation}
     */
    get_passenger(): LuaEntity | LuaPlayer | nil
    /**
     * Sets the passenger of this car, spidertron, or cargo pod.
     *
     * This differs from {@link LuaEntity#get_driver LuaEntity::get_driver} in that the passenger can't drive the car.
     *
     * ## Raised events
     * - {@link OnPlayerDrivingChangedStateEvent on_player_driving_changed_state}? _instantly_
     *
     * _Can only be used if this is Car, SpiderVehicle or CargoPod_
     * @param passenger The new passenger. Writing `nil` ejects the current passenger, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_passenger Online documentation}
     */
    set_passenger(passenger: LuaEntity | PlayerIdentification | nil): void
    /**
     * Take an ascending cargo pod and safely make it skip all animation and immediately switch surface.
     *
     * ## Raised events
     * - {@link OnCargoPodFinishedAscendingEvent on_cargo_pod_finished_ascending} _instantly_
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#force_finish_ascending Online documentation}
     */
    force_finish_ascending(): void
    /**
     * Take a descending cargo pod and safely make it arrive and deposit cargo.
     *
     * ## Raised events
     * - {@link OnCargoPodFinishedDescendingEvent on_cargo_pod_finished_descending} _instantly_
     * - {@link OnCargoPodDeliveredCargoEvent on_cargo_pod_delivered_cargo}? _instantly_ Raised instantly if landing on the ground (i.e. destination type is {@link defines.cargo_destination.surface surface}. If landing in a {@link defines.cargo_destination.station station}, event will be raised after parking is complete.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#force_finish_descending Online documentation}
     */
    force_finish_descending(): void
    /**
     * how far into the current procession the cargo pod is.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#procession_tick Online documentation}
     */
    procession_tick: MapTick
    /**
     * The state of this cargo pod entity.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_state Online documentation}
     */
    readonly cargo_pod_state: "awaiting_launch" | "ascending" | "surface_transition" | "descending" | "parking"
    /**
     * The destination of this cargo pod entity.
     *
     * Use {@link LuaEntity#force_finish_ascending force_finish_ascending} if you want it to only descend from orbit.
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_destination Online documentation}
     */
    get cargo_pod_destination(): CargoDestination
    set cargo_pod_destination(value: CargoDestinationWrite)
    /**
     * The origin of this cargo pod entity. (Must be a silo, hub or pad)
     *
     * _Can only be used if this is CargoPod_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_pod_origin Online documentation}
     */
    cargo_pod_origin?: LuaEntity
  }
  /**
   * @noSelf
   */
  export interface TrainStopEntity extends BaseEntity {
    /**
     * The trains scheduled to stop at this train stop.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_train_stop_trains Online documentation}
     */
    get_train_stop_trains(): LuaTrain[]
    /**
     * The train currently stopped at this train stop, if any.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_stopped_train Online documentation}
     */
    get_stopped_train(): LuaTrain | nil
    /**
     * The rail entity this train stop is connected to, if any.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connected_rail Online documentation}
     */
    readonly connected_rail?: LuaEntity
    /**
     * Rail direction to which this train stop is binding. This returns a value even when no rails are present.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connected_rail_direction Online documentation}
     */
    readonly connected_rail_direction: defines.rail_direction
    /**
     * Amount of trains related to this particular train stop. Includes train stopped at this train stop (until it finds a path to next target) and trains having this train stop as goal or waypoint.
     *
     * Train may be included multiple times when braking distance covers this train stop multiple times.
     *
     * Value may be read even when train stop has no control behavior.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_count Online documentation}
     */
    readonly trains_count: uint32
    /**
     * Amount of trains above which no new trains will be sent to this train stop. Writing nil will disable the limit (will set a maximum possible value).
     *
     * When a train stop has a control behavior with wire connected and set_trains_limit enabled, this value will be overwritten by it.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#trains_limit Online documentation}
     */
    trains_limit: uint32 | nil
    /**
     * Priority of this train stop.
     *
     * _Can only be used if this is TrainStop_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#train_stop_priority Online documentation}
     */
    train_stop_priority: uint8
  }
  /**
   * @noSelf
   */
  export interface BeamEntity extends BaseEntity {
    /**
     * Get the source of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beam_source Online documentation}
     */
    get_beam_source(): BeamTarget | nil
    /**
     * Set the source of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_beam_source Online documentation}
     */
    set_beam_source(source: LuaEntity | (MapPosition | MapPositionArray)): void
    /**
     * Get the target of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beam_target Online documentation}
     */
    get_beam_target(): BeamTarget | nil
    /**
     * Set the target of this beam.
     *
     * _Can only be used if this is Beam_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_beam_target Online documentation}
     */
    set_beam_target(target: LuaEntity | (MapPosition | MapPositionArray)): void
  }
  /**
   * @noSelf
   */
  export interface UnitEntity extends BaseEntity {
    /**
     * Release the unit from the spawner which spawned it. This allows the spawner to continue spawning additional units.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#release_from_spawner Online documentation}
     */
    release_from_spawner(): void
    /**
     * The current speed of this unit in tiles per tick, taking into account any walking speed modifier given by the tile the unit is standing on. `nil` if this is not a unit.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#effective_speed Online documentation}
     */
    readonly effective_speed?: float
    /**
     * The ai settings of this unit.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ai_settings Online documentation}
     */
    readonly ai_settings: LuaAISettings
  }
  /**
   * @noSelf
   */
  export interface SpiderUnitEntity extends BaseEntity {
    /**
     * Release the unit from the spawner which spawned it. This allows the spawner to continue spawning additional units.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#release_from_spawner Online documentation}
     */
    release_from_spawner(): void
    /**
     * The ai settings of this unit.
     *
     * _Can only be used if this is Unit or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ai_settings Online documentation}
     */
    readonly ai_settings: LuaAISettings
  }
  /**
   * @noSelf
   */
  export interface CharacterEntity extends BaseEntity {
    /**
     * Whether this character can shoot the given entity or position.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#can_shoot Online documentation}
     */
    can_shoot(target: LuaEntity, position: MapPosition | MapPositionArray): boolean
    /**
     * Index of the currently selected weapon slot of this character, car, or spidertron. `nil` if this entity doesn't have guns.
     *
     * _Can only be used if this is Character, Car or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#selected_gun_index Online documentation}
     */
    selected_gun_index?: uint32
    /**
     * The current crafting speed, including speed bonuses from modules and beacons.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crafting_speed Online documentation}
     */
    readonly crafting_speed: double
    /**
     * The player connected to this character, if any.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#player Online documentation}
     */
    readonly player?: LuaPlayer
    /**
     * The player this character is associated with, if any. Set to `nil` to clear.
     *
     * The player will be automatically disassociated when a controller is set on the character. Also, all characters associated to a player will be logged off when the player logs off in multiplayer.
     *
     * A character associated with a player is not directly controlled by any player.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#associated_player Online documentation}
     */
    get associated_player(): LuaPlayer | nil
    set associated_player(value: PlayerIdentification | nil)
    /**
     * The last tick this character entity was attacked.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_of_last_attack Online documentation}
     */
    tick_of_last_attack: uint32
    /**
     * The last tick this character entity was damaged.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_of_last_damage Online documentation}
     */
    tick_of_last_damage: uint32
    /**
     * Whether this character's personal roboports are allowed to dispatch robots.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#allow_dispatching_robots Online documentation}
     */
    allow_dispatching_robots: boolean
  }
  /**
   * @noSelf
   */
  export interface SpeechBubbleEntity extends BaseEntity {
    /**
     * Only works if the entity is a speech-bubble, with an "effect" defined in its wrapper_flow_style. Starts animating the opacity of the speech bubble towards zero, and destroys the entity when it hits zero.
     *
     * _Can only be used if this is SpeechBubble_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#start_fading_out Online documentation}
     */
    start_fading_out(): void
  }
  /**
   * @noSelf
   */
  export interface ResourceEntity extends BaseEntity {
    /**
     * Depletes and destroys this resource entity.
     *
     * ## Raised events
     * - {@link OnResourceDepletedEvent on_resource_depleted} _instantly_
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#deplete Online documentation}
     */
    deplete(): void
    /**
     * Count of resource units contained.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#amount Online documentation}
     */
    amount: uint32
    /**
     * Count of initial resource units contained. `nil` if this is not an infinite resource.
     *
     * If this is not an infinite resource, writing will produce an error.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#initial_amount Online documentation}
     */
    initial_amount?: uint32
  }
  /**
   * @noSelf
   */
  export interface LinkedBeltEntity extends BaseEntity {
    /**
     * Connects current linked belt with another one.
     *
     * Neighbours have to be of different type. If given linked belt is connected to something else it will be disconnected first. If provided neighbour is connected to something else it will also be disconnected first. Automatically updates neighbour to be connected back to this one.
     *
     * _Can only be used if this is LinkedBelt_
     * @param neighbour Another linked belt or entity ghost containing linked belt to connect or nil to disconnect
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#connect_linked_belts Online documentation}
     */
    connect_linked_belts(neighbour?: LuaEntity): void
    /**
     * Disconnects linked belt from its neighbour.
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disconnect_linked_belts Online documentation}
     */
    disconnect_linked_belts(): void
    /**
     * Type of linked belt. Changing type will also flip direction so the belt is out of the same side.
     *
     * Can only be changed when linked belt is disconnected (has no neighbour set).
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#linked_belt_type Online documentation}
     */
    linked_belt_type: BeltConnectionType
    /**
     * Neighbour to which this linked belt is connected to, if any.
     *
     * May return entity ghost which contains linked belt to which connection is made.
     *
     * _Can only be used if this is LinkedBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#linked_belt_neighbour Online documentation}
     */
    readonly linked_belt_neighbour?: LuaEntity
  }
  /**
   * @noSelf
   */
  export interface BeaconEntity extends BaseEntity {
    /**
     * Returns a table with all entities affected by this beacon
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_beacon_effect_receivers Online documentation}
     */
    get_beacon_effect_receivers(): LuaEntity[]
  }
  /**
   * @noSelf
   */
  export interface CargoLandingPadEntity extends BaseEntity {
    /**
     * Creates a cargo pod if possible.
     *
     * Cargo pod will be created with {@link defines.cargo_destination.invalid invalid} destination type. Setting {@link LuaEntity#cargo_pod_destination cargo_pod_destination} will cause it to launch.
     *
     * _Can only be used if this is RocketSilo, CargoLandingPad or SpacePlatformHub_
     * @param cargo_hatch The hatch to create the pod at. A random (available) one is picked if not provided.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_cargo_pod Online documentation}
     */
    create_cargo_pod(cargo_hatch?: LuaCargoHatch): LuaEntity | nil
    /**
     * Gets the cargo bays connected to this cargo landing pad or space platform hub.
     *
     * _Can only be used if this is CargoLandingPad or SpacePlatformHub_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_cargo_bays Online documentation}
     */
    get_cargo_bays(): LuaEntity[]
  }
  /**
   * @noSelf
   */
  export interface SpacePlatformHubEntity extends BaseEntity {
    /**
     * Creates a cargo pod if possible.
     *
     * Cargo pod will be created with {@link defines.cargo_destination.invalid invalid} destination type. Setting {@link LuaEntity#cargo_pod_destination cargo_pod_destination} will cause it to launch.
     *
     * _Can only be used if this is RocketSilo, CargoLandingPad or SpacePlatformHub_
     * @param cargo_hatch The hatch to create the pod at. A random (available) one is picked if not provided.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#create_cargo_pod Online documentation}
     */
    create_cargo_pod(cargo_hatch?: LuaCargoHatch): LuaEntity | nil
    /**
     * Gets the cargo bays connected to this cargo landing pad or space platform hub.
     *
     * _Can only be used if this is CargoLandingPad or SpacePlatformHub_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_cargo_bays Online documentation}
     */
    get_cargo_bays(): LuaEntity[]
  }
  /**
   * @noSelf
   */
  export interface AgriculturalTowerEntity extends BaseEntity {
    /**
     * Registers the given tree in this agricultural tower.
     *
     * If the tree is not within range of the tower it will not be registered.
     *
     * If the tree is already registered with a tower it will not be registered.
     *
     * _Can only be used if this is AgriculturalTower_
     * @returns If the tree was registered.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#register_tree Online documentation}
     */
    register_tree(tree: LuaEntity): boolean
    /**
     * Returns current position in 3D for the end of the crane of this entity.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_end_position_3d Online documentation}
     */
    readonly crane_end_position_3d: Vector3D
    /**
     * Destination of the crane of this entity. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_destination Online documentation}
     */
    get crane_destination(): MapPosition
    set crane_destination(value: MapPosition | MapPositionArray)
    /**
     * Destination of the crane of this entity in 3D. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_destination_3d Online documentation}
     */
    get crane_destination_3d(): Vector3D
    set crane_destination_3d(value: Vector3D | Vector3DArray)
    /**
     * Will set destination for the grappler of crane of this entity. The crane grappler will start moving to reach the destination, but the rest of the arm will remain stationary. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_grappler_destination Online documentation}
     */
    set crane_grappler_destination(value: MapPosition | MapPositionArray)
    /**
     * Will set destination in 3D for the grappler of crane of this entity. The crane grappler will start moving to reach the destination, but the rest of the arm will remain stationary. Throws when trying to set the destination out of range.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#crane_grappler_destination_3d Online documentation}
     */
    set crane_grappler_destination_3d(value: Vector3D | Vector3DArray)
    /**
     * Plants registered by this agricultural tower. One plant can be registered in multiple agricultural towers.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#owned_plants Online documentation}
     */
    readonly owned_plants: LuaEntity[]
  }
  /**
   * @noSelf
   */
  export interface CombatRobotEntity extends BaseEntity {
    /**
     * Gets the combined movement vector (direction and speed) of this combat robot or asteroid. The entity moves by this vector each tick.
     *
     * Note that for combat robots this does not include the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_movement Online documentation}
     */
    get_movement(): Vector
    /**
     * Sets the movement direction and movement speed for this combat robot or asteroid.
     *
     * Note that for combat robots this does not affect the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @param direction This normalized form of this vector is used for the movement direction.
     * @param speed Speed in tiles per tick. Cannot be less than 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_movement Online documentation}
     */
    set_movement(direction: Vector | VectorTable, speed: double): void
    /**
     * The ticks left before a combat robot, highlight box, smoke, or sticker entity is destroyed.
     *
     * _Can only be used if this is CombatRobot, HighlightBox, Smoke or Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_live Online documentation}
     */
    time_to_live: uint64
    /**
     * The owner of this combat robot, if any.
     *
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combat_robot_owner Online documentation}
     */
    combat_robot_owner?: LuaEntity
  }
  /**
   * @noSelf
   */
  export interface AsteroidEntity extends BaseEntity {
    /**
     * Gets the combined movement vector (direction and speed) of this combat robot or asteroid. The entity moves by this vector each tick.
     *
     * Note that for combat robots this does not include the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_movement Online documentation}
     */
    get_movement(): Vector
    /**
     * Sets the movement direction and movement speed for this combat robot or asteroid.
     *
     * Note that for combat robots this does not affect the constant drift in the direction they are facing.
     *
     * _Can only be used if this is CombatRobot or Asteroid_
     * @param direction This normalized form of this vector is used for the movement direction.
     * @param speed Speed in tiles per tick. Cannot be less than 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_movement Online documentation}
     */
    set_movement(direction: Vector | VectorTable, speed: double): void
  }
  /**
   * @noSelf
   */
  export interface ContainerEntity extends BaseEntity {
    /**
     * Sets inventory size override. When set, supported entity will ignore inventory size from prototype and will instead keep inventory size equal to the override. Setting `nil` will restore default inventory size.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @param overflow Items that would be deleted due to change of inventory size will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_size_override Online documentation}
     */
    set_inventory_size_override(
      inventory_index: defines.inventory,
      size_override: uint16 | nil,
      overflow?: LuaInventory,
    ): void
    /**
     * Gets the inventory size override of the selected inventory if size override was set using {@link LuaEntity#set_inventory_size_override set_inventory_size_override}.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_size_override Online documentation}
     */
    get_inventory_size_override(inventory_index: defines.inventory): uint16 | nil
  }
  /**
   * @noSelf
   */
  export interface CargoWagonEntity extends BaseEntity {
    /**
     * Sets inventory size override. When set, supported entity will ignore inventory size from prototype and will instead keep inventory size equal to the override. Setting `nil` will restore default inventory size.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @param overflow Items that would be deleted due to change of inventory size will be transferred to this inventory. Must be a script inventory or inventory of other entity. Inventory references obtained from proxy container are not allowed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#set_inventory_size_override Online documentation}
     */
    set_inventory_size_override(
      inventory_index: defines.inventory,
      size_override: uint16 | nil,
      overflow?: LuaInventory,
    ): void
    /**
     * Gets the inventory size override of the selected inventory if size override was set using {@link LuaEntity#set_inventory_size_override set_inventory_size_override}.
     *
     * _Can only be used if this is ContainerEntity or CargoWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_inventory_size_override Online documentation}
     */
    get_inventory_size_override(inventory_index: defines.inventory): uint16 | nil
  }
  /**
   * @noSelf
   */
  export interface OffshorePumpEntity extends BaseEntity {
    /**
     * Gives TilePosition of a tile which this offshore pump uses to check what fluid should be produced.
     *
     * _Can only be used if this is OffshorePump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_source_tile Online documentation}
     */
    get_fluid_source_tile(): TilePosition
    /**
     * Checks what is expected fluid to be produced from the offshore pump's source tile. It accounts for visible tile, hidden tile and double hidden tile. It ignores currently set fluid box filter.
     *
     * _Can only be used if this is OffshorePump_
     * @returns Name of fluid that should be produced by this offshore pump based on existing tiles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#get_fluid_source_fluid Online documentation}
     */
    get_fluid_source_fluid(): string | nil
    /**
     * The amount of fluid moved by this offshore pump or normal pump in the last tick.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pumped_last_tick Online documentation}
     */
    readonly pumped_last_tick: double
  }
  export interface InserterEntity extends BaseEntity {
    /**
     * If set to 'true', this inserter will use filtering logic.
     *
     * This has no effect if the prototype does not support filters.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#use_filters Online documentation}
     */
    use_filters: boolean
    /**
     * Where the inserter will pick up items from.
     *
     * Inserters must have `allow_custom_vectors` set to true on their prototype to allow changing the pickup position.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_position Online documentation}
     */
    get pickup_position(): MapPosition
    set pickup_position(value: MapPosition | MapPositionArray)
    /**
     * The entity this inserter will attempt to pick up items from. If there are multiple possible entities at the pick-up point, writing to this attribute allows a mod to choose which one to pick up items from. The entity needs to collide with the tile box under the pick-up position. `nil` if there is no entity to pull items from.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_target Online documentation}
     */
    pickup_target?: LuaEntity
    /**
     * The item stack currently held in an inserter's hand.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#held_stack Online documentation}
     */
    readonly held_stack: LuaItemStack
    /**
     * Current position of the inserter's "hand".
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#held_stack_position Online documentation}
     */
    readonly held_stack_position: MapPosition
    /**
     * Returns the current target pickup count of the inserter.
     *
     * This considers the circuit network, manual override and the inserter stack size limit based on technology.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_target_pickup_count Online documentation}
     */
    readonly inserter_target_pickup_count: uint32
    /**
     * Sets the stack size limit on this inserter.
     *
     * Set to `0` to reset.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_stack_size_override Online documentation}
     */
    inserter_stack_size_override: uint32
    /**
     * The filter mode for this filter inserter. `nil` if this inserter doesn't use filters.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_filter_mode Online documentation}
     */
    inserter_filter_mode?: "whitelist" | "blacklist"
    /**
     * The spoil priority for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#inserter_spoil_priority Online documentation}
     */
    inserter_spoil_priority: SpoilPriority
    /**
     * For inserters taking items from transport belt connectables, this determines whether the inserter is allowed to take items from the left lane.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_from_left_lane Online documentation}
     */
    pickup_from_left_lane: boolean
    /**
     * For inserters taking items from transport belt connectables, this determines whether the inserter is allowed to take items from the right lane.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pickup_from_right_lane Online documentation}
     */
    pickup_from_right_lane: boolean
  }
  export interface CliffEntity extends BaseEntity {
    /**
     * The orientation of this cliff.
     *
     * _Can only be used if this is Cliff_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cliff_orientation Online documentation}
     */
    readonly cliff_orientation: CliffOrientation
  }
  export interface ItemEntity extends BaseEntity {
    /**
     * _Can only be used if this is ItemEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#stack Online documentation}
     */
    readonly stack: LuaItemStack
    /**
     * Will this item entity be picked up automatically when the player walks over it?
     *
     * _Can only be used if this is ItemEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#to_be_looted Online documentation}
     */
    to_be_looted: boolean
  }
  export interface FurnaceEntity extends BaseEntity {
    /**
     * The previous recipe this furnace was using, if any.
     *
     * _Can only be used if this is Furnace_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#previous_recipe Online documentation}
     */
    readonly previous_recipe?: RecipeIDAndQualityIDPair
  }
  export interface HighlightBoxEntity extends BaseEntity {
    /**
     * The ticks left before a combat robot, highlight box, smoke, or sticker entity is destroyed.
     *
     * _Can only be used if this is CombatRobot, HighlightBox, Smoke or Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_live Online documentation}
     */
    time_to_live: uint64
    /**
     * The highlight box type of this highlight box entity.
     *
     * _Can only be used if this is HighlightBox_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#highlight_box_type Online documentation}
     */
    highlight_box_type: CursorBoxRenderType
    /**
     * The blink interval of this highlight box entity. `0` indicates no blink.
     *
     * _Can only be used if this is HighlightBox_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#highlight_box_blink_interval Online documentation}
     */
    highlight_box_blink_interval: uint32
  }
  export interface SmokeEntity extends BaseEntity {
    /**
     * The ticks left before a combat robot, highlight box, smoke, or sticker entity is destroyed.
     *
     * _Can only be used if this is CombatRobot, HighlightBox, Smoke or Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_live Online documentation}
     */
    time_to_live: uint64
  }
  export interface StickerEntity extends BaseEntity {
    /**
     * The ticks left before a combat robot, highlight box, smoke, or sticker entity is destroyed.
     *
     * _Can only be used if this is CombatRobot, HighlightBox, Smoke or Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_live Online documentation}
     */
    time_to_live: uint64
    /**
     * The entity this sticker is sticked to.
     *
     * _Can only be used if this is Sticker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#sticked_to Online documentation}
     */
    readonly sticked_to: LuaEntity
  }
  export interface UndergroundBeltEntity extends BaseEntity {
    /**
     * Whether this underground belt goes into or out of the ground.
     *
     * _Can only be used if this is UndergroundBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_to_ground_type Online documentation}
     */
    readonly belt_to_ground_type: BeltConnectionType
  }
  export interface LoaderEntity extends BaseEntity {
    /**
     * Whether this loader gets items from or puts item into a container.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_type Online documentation}
     */
    loader_type: BeltConnectionType
    /**
     * The container entity this loader is pointing at/pulling from depending on the {@link LuaEntity#loader_type LuaEntity::loader_type}, if any.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_container Online documentation}
     */
    readonly loader_container?: LuaEntity
    /**
     * The filter mode for this loader. `nil` if this loader does not support filters.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_filter_mode Online documentation}
     */
    loader_filter_mode?: PrototypeFilterMode
    /**
     * The belt stack size override for this loader. Set to `0` to disable. Writing this value requires {@link import("factorio:prototype").LoaderPrototype#adjustable_belt_stack_size LoaderPrototype::adjustable_belt_stack_size} to be `true`.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#loader_belt_stack_size_override Online documentation}
     */
    loader_belt_stack_size_override: uint8
  }
  export interface ItemRequestProxyEntity extends BaseEntity {
    /**
     * The insert plan for this ghost or item request proxy.
     *
     * _Can only be used if this is EntityGhost or ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#insert_plan Online documentation}
     */
    insert_plan: BlueprintInsertPlan[]
    /**
     * The removal plan for this item request proxy.
     *
     * _Can only be used if this is ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#removal_plan Online documentation}
     */
    removal_plan: BlueprintInsertPlan[]
    /**
     * The target entity for this item-request-proxy, if any.
     *
     * _Can only be used if this is ItemRequestProxy_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target Online documentation}
     */
    readonly proxy_target?: LuaEntity
  }
  export interface TurretEntity extends BaseEntity {
    /**
     * The damage dealt by this turret, artillery turret, or artillery wagon.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#damage_dealt Online documentation}
     */
    damage_dealt: double
    /**
     * The number of units killed by this turret, artillery turret, or artillery wagon.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#kills Online documentation}
     */
    kills: uint32
    /**
     * Whether this turret shoots at targets that are not on its priority list.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#ignore_unprioritised_targets Online documentation}
     */
    ignore_unprioritised_targets: boolean
    /**
     * The shooting target for this turret, if any. Can't be set to `nil` via script.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#shooting_target Online documentation}
     */
    shooting_target?: LuaEntity
    /**
     * The priority targets for this turret (if any).
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#priority_targets Online documentation}
     */
    readonly priority_targets: LuaEntityPrototype[]
  }
  export interface EntityWithOwnerEntity extends BaseEntity {
    /**
     * The last player that changed any setting on this entity. This includes building the entity, changing its color, or configuring its circuit network. `nil` if the last user is not part of the save anymore.
     *
     * _Can only be used if this is EntityWithOwner, DeconstructibleTileProxy or TileGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#last_user Online documentation}
     */
    get last_user(): LuaPlayer | nil
    set last_user(value: PlayerIdentification | nil)
  }
  export interface DeconstructibleTileProxyEntity extends BaseEntity {
    /**
     * The last player that changed any setting on this entity. This includes building the entity, changing its color, or configuring its circuit network. `nil` if the last user is not part of the save anymore.
     *
     * _Can only be used if this is EntityWithOwner, DeconstructibleTileProxy or TileGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#last_user Online documentation}
     */
    get last_user(): LuaPlayer | nil
    set last_user(value: PlayerIdentification | nil)
  }
  export interface TileGhostEntity extends BaseEntity {
    /**
     * The last player that changed any setting on this entity. This includes building the entity, changing its color, or configuring its circuit network. `nil` if the last user is not part of the save anymore.
     *
     * _Can only be used if this is EntityWithOwner, DeconstructibleTileProxy or TileGhost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#last_user Online documentation}
     */
    get last_user(): LuaPlayer | nil
    set last_user(value: PlayerIdentification | nil)
  }
  export interface MiningDrillEntity extends BaseEntity {
    /**
     * Area in which this mining drill looks for resources to mine.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_area Online documentation}
     */
    readonly mining_area: BoundingBox
    /**
     * The mining target, if any.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_target Online documentation}
     */
    readonly mining_target?: LuaEntity
    /**
     * The filter mode for this mining drill. `nil` if this mining drill doesn't have filters.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#mining_drill_filter_mode Online documentation}
     */
    mining_drill_filter_mode?: "whitelist" | "blacklist"
  }
  export interface ElectricEnergyInterfaceEntity extends BaseEntity {
    /**
     * The power production specific to the ElectricEnergyInterface entity type.
     *
     * _Can only be used if this is ElectricEnergyInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_production Online documentation}
     */
    power_production: double
    /**
     * The power usage specific to the ElectricEnergyInterface entity type.
     *
     * _Can only be used if this is ElectricEnergyInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_usage Online documentation}
     */
    power_usage: double
  }
  export interface TreeEntity extends BaseEntity {
    /**
     * Index of the tree color.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_color_index Online documentation}
     */
    tree_color_index: uint8
    /**
     * Maximum index of the tree colors.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_color_index_max Online documentation}
     */
    readonly tree_color_index_max: uint8
    /**
     * Index of the tree stage.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_stage_index Online documentation}
     */
    tree_stage_index: uint8
    /**
     * Maximum index of the tree stages.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_stage_index_max Online documentation}
     */
    readonly tree_stage_index_max: uint8
    /**
     * Index of the tree gray stage
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_gray_stage_index Online documentation}
     */
    tree_gray_stage_index: uint8
    /**
     * Maximum index of the tree gray stages.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tree_gray_stage_index_max Online documentation}
     */
    readonly tree_gray_stage_index_max: uint8
  }
  export interface ElectricPoleEntity extends BaseEntity {
    /**
     * The electric network statistics for this electric pole.
     *
     * _Can only be used if this is ElectricPole_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#electric_network_statistics Online documentation}
     */
    readonly electric_network_statistics: LuaFlowStatistics
  }
  export interface SpawnerEntity extends BaseEntity {
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawning_cooldown Online documentation}
     */
    readonly spawning_cooldown: double
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#absorbed_pollution Online documentation}
     */
    readonly absorbed_pollution: double
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#spawn_shift Online documentation}
     */
    readonly spawn_shift: double
    /**
     * The units associated with this spawner entity.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#units Online documentation}
     */
    readonly units: LuaEntity[]
  }
  export interface PowerSwitchEntity extends BaseEntity {
    /**
     * The state of this power switch.
     *
     * _Can only be used if this is PowerSwitch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#power_switch_state Online documentation}
     */
    power_switch_state: boolean
  }
  export interface ArithmeticCombinatorEntity extends BaseEntity {
    /**
     * The description on this combinator.
     *
     * _Can only be used if this is ArithmeticCombinator, DeciderCombinator, SelectorCombinator or ConstantCombinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combinator_description Online documentation}
     */
    combinator_description: string
  }
  export interface DeciderCombinatorEntity extends BaseEntity {
    /**
     * The description on this combinator.
     *
     * _Can only be used if this is ArithmeticCombinator, DeciderCombinator, SelectorCombinator or ConstantCombinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combinator_description Online documentation}
     */
    combinator_description: string
  }
  export interface SelectorCombinatorEntity extends BaseEntity {
    /**
     * The description on this combinator.
     *
     * _Can only be used if this is ArithmeticCombinator, DeciderCombinator, SelectorCombinator or ConstantCombinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combinator_description Online documentation}
     */
    combinator_description: string
  }
  export interface ConstantCombinatorEntity extends BaseEntity {
    /**
     * The description on this combinator.
     *
     * _Can only be used if this is ArithmeticCombinator, DeciderCombinator, SelectorCombinator or ConstantCombinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#combinator_description Online documentation}
     */
    combinator_description: string
  }
  export interface CharacterCorpseEntity extends BaseEntity {
    /**
     * The player index associated with this character corpse.
     *
     * The index is not guaranteed to be valid so it should always be checked first if a player with that index actually exists.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_player_index Online documentation}
     */
    character_corpse_player_index: uint32
    /**
     * The tick this character corpse died at.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_tick_of_death Online documentation}
     */
    character_corpse_tick_of_death: uint32
    /**
     * The reason this character corpse character died. `""` if there is no reason.
     *
     * _Can only be used if this is CharacterCorpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#character_corpse_death_cause Online documentation}
     */
    character_corpse_death_cause: LocalisedString
  }
  export interface SplitterEntity extends BaseEntity {
    /**
     * The filter for this splitter, if any is set.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_filter Online documentation}
     */
    get splitter_filter(): ItemFilter | nil
    set splitter_filter(value: ItemFilterWrite | nil)
    /**
     * The input priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_input_priority Online documentation}
     */
    splitter_input_priority: "left" | "none" | "right"
    /**
     * The output priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_output_priority Online documentation}
     */
    splitter_output_priority: "left" | "none" | "right"
  }
  export interface LaneSplitterEntity extends BaseEntity {
    /**
     * The filter for this splitter, if any is set.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_filter Online documentation}
     */
    get splitter_filter(): ItemFilter | nil
    set splitter_filter(value: ItemFilterWrite | nil)
    /**
     * The input priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_input_priority Online documentation}
     */
    splitter_input_priority: "left" | "none" | "right"
    /**
     * The output priority for this splitter.
     *
     * _Can only be used if this is Splitter or LaneSplitter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#splitter_output_priority Online documentation}
     */
    splitter_output_priority: "left" | "none" | "right"
  }
  export interface LandMineEntity extends BaseEntity {
    /**
     * Whether this land mine is armed.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#armed Online documentation}
     */
    readonly armed: boolean
    /**
     * The timeout that's left on this landmine in ticks. It describes the time between the landmine being placed and it being armed.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#timeout Online documentation}
     */
    timeout: uint32
  }
  export interface ReactorEntity extends BaseEntity {
    /**
     * The current total neighbour bonus of this reactor.
     *
     * _Can only be used if this is Reactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#neighbour_bonus Online documentation}
     */
    readonly neighbour_bonus: double
  }
  export interface PumpEntity extends BaseEntity {
    /**
     * The rail target of this pump, if any.
     *
     * _Can only be used if this is Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pump_rail_target Online documentation}
     */
    readonly pump_rail_target?: LuaEntity
    /**
     * The amount of fluid moved by this offshore pump or normal pump in the last tick.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#pumped_last_tick Online documentation}
     */
    readonly pumped_last_tick: double
  }
  export interface ValveEntity extends BaseEntity {
    /**
     * The threshold override of this valve, or `nil` if an override is not defined.
     *
     * If no override is defined, the threshold is taken from {@link LuaEntityPrototype#valve_threshold LuaEntityPrototype::valve_threshold}.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#valve_threshold_override Online documentation}
     */
    valve_threshold_override?: float
  }
  export interface GeneratorEntity extends BaseEntity {
    /**
     * How much energy this generator generated in the last tick.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#energy_generated_last_tick Online documentation}
     */
    readonly energy_generated_last_tick: double
  }
  export interface CorpseEntity extends BaseEntity {
    /**
     * Whether this corpse will ever fade away.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#corpse_expires Online documentation}
     */
    corpse_expires: boolean
    /**
     * If true, corpse won't be destroyed when entities are placed over it. If false, whether corpse will be removed or not depends on value of {@link import("factorio:prototype").CorpsePrototype#remove_on_entity_placement CorpsePrototype::remove_on_entity_placement}.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#corpse_immune_to_entity_placement Online documentation}
     */
    corpse_immune_to_entity_placement: boolean
  }
  export interface SmokeWithTriggerEntity extends BaseEntity {
    /**
     * The ticks until the next trigger effect of this smoke-with-trigger.
     *
     * _Can only be used if this is SmokeWithTrigger_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#time_to_next_effect Online documentation}
     */
    time_to_next_effect: uint32
  }
  export interface LinkedContainerEntity extends BaseEntity {
    /**
     * The link ID this linked container is using.
     *
     * _Can only be used if this is LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#link_id Online documentation}
     */
    link_id: uint32
  }
  export interface RadarEntity extends BaseEntity {
    /**
     * The current radar scan progress, as a number in range `[0, 1]`.
     *
     * _Can only be used if this is Radar_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#radar_scan_progress Online documentation}
     */
    readonly radar_scan_progress: float
  }
  export interface TransportBeltEntity extends BaseEntity {
    /**
     * Gives what is the current shape of a transport-belt.
     *
     * _Can only be used if this is TransportBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#belt_shape Online documentation}
     */
    readonly belt_shape: "straight" | "left" | "right"
  }
  export interface PlantEntity extends BaseEntity {
    /**
     * The tick when this plant is fully grown.
     *
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#tick_grown Online documentation}
     */
    tick_grown: MapTick
  }
  export interface LampEntity extends BaseEntity {
    /**
     * If the lamp is always on when not driven by control behavior.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#always_on Online documentation}
     */
    always_on: boolean
  }
  export interface ArtilleryWagonEntity extends BaseEntity {
    /**
     * If this artillery auto-targets enemies.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#artillery_auto_targeting Online documentation}
     */
    artillery_auto_targeting: boolean
  }
  export interface ArtilleryTurretEntity extends BaseEntity {
    /**
     * If this artillery auto-targets enemies.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#artillery_auto_targeting Online documentation}
     */
    artillery_auto_targeting: boolean
  }
  export interface ConstructionRobotEntity extends BaseEntity {
    /**
     * Get the current queue of robot orders.
     *
     * _Can only be used if this is ConstructionRobot or LogisticRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#robot_order_queue Online documentation}
     */
    readonly robot_order_queue: WorkerRobotOrder[]
  }
  export interface LogisticRobotEntity extends BaseEntity {
    /**
     * Get the current queue of robot orders.
     *
     * _Can only be used if this is ConstructionRobot or LogisticRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#robot_order_queue Online documentation}
     */
    readonly robot_order_queue: WorkerRobotOrder[]
  }
  export interface UpdatableEntity extends BaseEntity {
    /**
     * If the updatable entity is disabled by script.
     *
     * Note: Some entities (Corpse, FireFlame, Roboport, RollingStock, dying entities) need to remain active and will ignore writes.
     *
     * If this entity is not considered {@link LuaEntity#is_updatable updatable} then this always returns `false` and writes will be ignored.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_script Online documentation}
     */
    disabled_by_script: boolean
    /**
     * If the updatable entity is disabled by control behavior.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_updatable updatable}.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_control_behavior Online documentation}
     */
    readonly disabled_by_control_behavior: boolean
    /**
     * If the assembling machine is disabled by recipe, e.g. due to {@link import("factorio:prototype").AssemblingMachinePrototype#disabled_when_recipe_not_researched AssemblingMachinePrototype::disabled_when_recipe_not_researched}.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_updatable updatable}.
     *
     * _Can only be used if this is UpdatableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#disabled_by_recipe Online documentation}
     */
    readonly disabled_by_recipe: boolean
  }
  export interface FreezableEntity extends BaseEntity {
    /**
     * Whether the freezable entity is currently frozen.
     *
     * Always returns `false` if this entity is not considered {@link LuaEntity#is_freezable freezable}.
     *
     * _Can only be used if this is FreezableEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#frozen Online documentation}
     */
    readonly frozen: boolean
  }
  export interface RocketSiloRocketEntity extends BaseEntity {
    /**
     * The cargo pod attached to this rocket silo rocket if any.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#attached_cargo_pod Online documentation}
     */
    readonly attached_cargo_pod?: LuaEntity
  }
  export interface ProjectileEntity extends BaseEntity {
    /**
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#base_damage_modifiers Online documentation}
     */
    base_damage_modifiers: TriggerModifierData
    /**
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#bonus_damage_modifiers Online documentation}
     */
    bonus_damage_modifiers: TriggerModifierData
  }
  export interface CargoBayEntity extends BaseEntity {
    /**
     * The space platform hub or cargo landing pad this cargo bay is connected to if any.
     *
     * _Can only be used if this is CargoBay_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#cargo_bay_connection_owner Online documentation}
     */
    readonly cargo_bay_connection_owner?: LuaEntity
  }
  export interface SegmentEntity extends BaseEntity {
    /**
     * The segmented unit object that the segment entity is a part of.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#segmented_unit Online documentation}
     */
    readonly segmented_unit?: LuaSegmentedUnit
  }
  export interface ProxyContainerEntity extends BaseEntity {
    /**
     * Entity of which inventory is exposed by this ProxyContainer
     *
     * _Can only be used if this is ProxyContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target_entity Online documentation}
     */
    proxy_target_entity?: LuaEntity
    /**
     * Inventory index of the inventory that is exposed by this ProxyContainer
     *
     * _Can only be used if this is ProxyContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#proxy_target_inventory Online documentation}
     */
    proxy_target_inventory: defines.inventory
  }
  export interface DisplayPanelEntity extends BaseEntity {
    /**
     * Text visible on the display panel. Can be written only when it is not set by control behavior.
     *
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_text Online documentation}
     */
    display_panel_text: LocalisedString
    /**
     * Icon visible on the display panel. Can be written only when it is not set by control behavior.
     *
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_icon Online documentation}
     */
    get display_panel_icon(): SignalID | nil
    set display_panel_icon(value: SignalIDWrite | nil)
    /**
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_always_show Online documentation}
     */
    display_panel_always_show: boolean
    /**
     * _Can only be used if this is DisplayPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntity.html#display_panel_show_in_chart Online documentation}
     */
    display_panel_show_in_chart: boolean
  }
  /**
   * Prototype of an entity.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html Online documentation}
   * @noSelf
   */
  export interface LuaEntityPrototype extends LuaPrototypeBase {
    /**
     * Test whether this entity prototype has a certain flag set.
     * @param flag The flag to test.
     * @returns `true` if this prototype has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_flag Online documentation}
     */
    has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * Gets the base size of the given inventory on this entity or `nil` if the given inventory doesn't exist.
     * @param quality Defaults to `"normal"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inventory_size Online documentation}
     */
    get_inventory_size(index: defines.inventory, quality?: QualityID): uint32 | nil
    /**
     * The crafting speed of this crafting-machine or character.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_crafting_speed Online documentation}
     */
    get_crafting_speed(quality?: QualityID): double
    /**
     * The supply area of this electric pole or beacon prototype.
     *
     * _Can only be used if this is ElectricPole or Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_supply_area_distance Online documentation}
     */
    get_supply_area_distance(quality?: QualityID): double
    /**
     * The maximum wire distance for this entity. 0 if the entity doesn't support wires.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_wire_distance Online documentation}
     */
    get_max_wire_distance(quality?: QualityID): double
    /**
     * The maximum circuit wire distance for this entity. 0 if the entity doesn't support circuit wires.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_circuit_wire_distance Online documentation}
     */
    get_max_circuit_wire_distance(quality?: QualityID): double
    /**
     * The theoretical maximum energy usage for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy_usage Online documentation}
     */
    get_max_energy_usage(quality?: QualityID): double
    /**
     * The theoretical maximum energy production for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy_production Online documentation}
     */
    get_max_energy_production(quality?: QualityID): double
    /**
     * The max energy for this flying robot prototype.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy Online documentation}
     */
    get_max_energy(quality?: QualityID): double | nil
    /**
     * The extension speed of this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inserter_extension_speed Online documentation}
     */
    get_inserter_extension_speed(quality?: QualityID): double | nil
    /**
     * The rotation speed of this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inserter_rotation_speed Online documentation}
     */
    get_inserter_rotation_speed(quality?: QualityID): double | nil
    /**
     * The base researching speed of this lab prototype.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_researching_speed Online documentation}
     */
    get_researching_speed(quality?: QualityID): double | nil
    /**
     * The radius of the area this radar can chart, in chunks.
     *
     * _Can only be used if this is Radar_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_distance_of_sector_revealed Online documentation}
     */
    get_max_distance_of_sector_revealed(quality?: QualityID): uint32 | nil
    /**
     * The radius of the area constantly revealed by this radar, or cargo landing pad, in chunks.
     *
     * _Can only be used if this is Radar or CargoLandingPad_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_distance_of_nearby_sector_revealed Online documentation}
     */
    get_max_distance_of_nearby_sector_revealed(quality?: QualityID): uint32 | nil
    /**
     * Max health of this entity. Will be `0` if this is not an entity with health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_health Online documentation}
     */
    get_max_health(quality?: QualityID): float
    /**
     * The fluid usage of this generator, fusion generator or fusion reactor prototype.
     *
     * _Can only be used if this is Generator, FusionGenerator or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_usage_per_tick Online documentation}
     */
    get_fluid_usage_per_tick(quality?: QualityID): double | nil
    /**
     * The maximum power output of this burner generator or generator prototype.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_power_output Online documentation}
     */
    get_max_power_output(quality?: QualityID): double | nil
    /**
     * The pumping speed of this offshore pump or normal pump.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_pumping_speed Online documentation}
     */
    get_pumping_speed(quality?: QualityID): double
    /**
     * The maximum flow rate through this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_valve_flow_rate Online documentation}
     */
    get_valve_flow_rate(quality?: QualityID): double
    /**
     * The mining radius of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_mining_drill_radius Online documentation}
     */
    get_mining_drill_radius(quality?: QualityID): double | nil
    /**
     * Gets the fluid capacity of this entity or 0 if this entity doesn't support fluids.
     *
     * Crafting machines will report 0 due to their fluid capacity being whatever a given recipe needs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_capacity Online documentation}
     */
    get_fluid_capacity(quality?: QualityID): double
    /**
     * _Can only be used if this is LightningAttractor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_attraction_range_elongation Online documentation}
     */
    get_attraction_range_elongation(quality?: QualityID): double | nil
    /**
     * _Can only be used if this is LightningAttractor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_energy_distribution_efficiency Online documentation}
     */
    get_energy_distribution_efficiency(quality?: QualityID): double | nil
    /**
     * Whether this resource is infinite.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#infinite_resource Online documentation}
     */
    readonly infinite_resource?: boolean
    /**
     * Minimum amount of this resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#minimum_resource_amount Online documentation}
     */
    readonly minimum_resource_amount?: uint32
    /**
     * The normal amount for this resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#normal_resource_amount Online documentation}
     */
    readonly normal_resource_amount?: uint32
    /**
     * Every time this infinite resource 'ticks' down, it is reduced by this amount. Meaningless if this isn't an infinite resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#infinite_depletion_resource_amount Online documentation}
     */
    readonly infinite_depletion_resource_amount?: uint32
    /**
     * Name of the category of this resource.
     *
     * During data stage, this property is named "category".
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_category Online documentation}
     */
    readonly resource_category?: string
    /**
     * Whether this entity is minable and what can be obtained by mining it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mineable_properties Online documentation}
     */
    readonly mineable_properties: MineableProperties
    /**
     * Items that when placed will produce this entity, if any. Construction bots will choose the first item in the list to build this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#items_to_place_this Online documentation}
     */
    readonly items_to_place_this?: ItemToPlace[]
    /**
     * The bounding box used for collision checking.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_box Online documentation}
     */
    readonly collision_box: BoundingBox
    /**
     * The secondary bounding box used for collision checking, if any. This is only used in rails and rail remnants.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#secondary_collision_box Online documentation}
     */
    readonly secondary_collision_box?: BoundingBox
    /**
     * The bounding box used for map generator collision checking.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#map_generator_bounding_box Online documentation}
     */
    readonly map_generator_bounding_box: BoundingBox
    /**
     * The bounding box used for drawing selection.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selection_box Online documentation}
     */
    readonly selection_box: BoundingBox
    /**
     * Extra vertical space needed to see the whole entity in GUIs. This is used to calculate the correct zoom and positioning in the entity info gui, for example in the entity tooltip.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#drawing_box_vertical_extension Online documentation}
     */
    readonly drawing_box_vertical_extension: double
    /**
     * The bounding box used to attach sticker type entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#sticker_box Online documentation}
     */
    readonly sticker_box: BoundingBox
    /**
     * The collision masks this entity uses
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask Online documentation}
     */
    readonly collision_mask: CollisionMask
    /**
     * The trigger target mask for this entity prototype type.
     *
     * The values in the dictionary are meaningless and exists just to allow the dictionary type for easy lookup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#trigger_target_mask Online documentation}
     */
    readonly trigger_target_mask: Record<string, boolean>
    /**
     * Amount this entity can heal per tick, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#healing_per_tick Online documentation}
     */
    readonly healing_per_tick?: float
    /**
     * A table of pollution emissions per second the entity will create, grouped by the name of the pollution type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#emissions_per_second Online documentation}
     */
    readonly emissions_per_second: Record<string, double>
    /**
     * Corpses used when this entity is destroyed. It is a dictionary indexed by the corpse's prototype name.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#corpses Online documentation}
     */
    readonly corpses?: Record<string, LuaEntityPrototype>
    /**
     * Is this entity selectable?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selectable_in_game Online documentation}
     */
    readonly selectable_in_game: boolean
    /**
     * The selection priority of this entity - a value between `0` and `255`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selection_priority Online documentation}
     */
    readonly selection_priority: uint32
    /**
     * The weight of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#weight Online documentation}
     */
    readonly weight?: double
    /**
     * List of resistances towards each damage type. It is a dictionary indexed by damage type names (see `data/base/prototypes/damage-type.lua`).
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resistances Online documentation}
     */
    readonly resistances?: Record<string, Resistance>
    /**
     * The group of mutually fast-replaceable entities, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fast_replaceable_group Online documentation}
     */
    readonly fast_replaceable_group?: string
    /**
     * The next upgrade for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#next_upgrade Online documentation}
     */
    readonly next_upgrade?: LuaEntityPrototype
    /**
     * The icon positioning for inventories of this entity, if defined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#icons_positioning Online documentation}
     */
    readonly icons_positioning?: IconSequencePositioning[]
    /**
     * The definition of where and how the alt-mode icons of this entity should be drawn.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#icon_draw_specification Online documentation}
     */
    readonly icon_draw_specification: IconDrawSpecification
    /**
     * Loot that will be dropped when this entity is killed, if any.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loot Online documentation}
     */
    readonly loot?: Loot[]
    /**
     * Repair-speed modifier for this entity, if any. Actual repair speed will be `tool_repair_speed * entity_repair_speed_modifier`.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#repair_speed_modifier Online documentation}
     */
    readonly repair_speed_modifier?: float
    /**
     * The range of this turret.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turret_range Online documentation}
     */
    readonly turret_range?: uint32
    /**
     * Autoplace specification for this entity prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#autoplace_specification Online documentation}
     */
    readonly autoplace_specification?: AutoplaceSpecification
    /**
     * The speed of this transport belt.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_speed Online documentation}
     */
    readonly belt_speed?: double
    /**
     * The result units and spawn points with weight and evolution factor for a biter spawner entity.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#result_units Online documentation}
     */
    readonly result_units?: UnitSpawnDefinition[]
    /**
     * The attack result of this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_result Online documentation}
     */
    readonly attack_result?: TriggerItem[]
    /**
     * The final attack result for this projectile.
     *
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#final_attack_result Online documentation}
     */
    readonly final_attack_result?: TriggerItem[]
    /**
     * The attack parameters for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
    /**
     * The revenge attack parameters for this entity, if any. These attack parameters are used in addition to {@link LuaEntityPrototype#attack_parameters LuaEntityPrototype::attack_parameters} if the entity is attacking a target that has previously dealt damage to the entity.
     *
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#revenge_attack_parameters Online documentation}
     */
    readonly revenge_attack_parameters?: AttackParameters
    /**
     * The spawning cooldown for this enemy spawner prototype.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_cooldown Online documentation}
     */
    readonly spawn_cooldown?: {
      readonly min: double
      readonly max: double
    }
    /**
     * The mining radius of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mining_drill_radius Online documentation}
     */
    readonly mining_drill_radius?: double
    /**
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_mining_radius Online documentation}
     */
    readonly quality_affects_mining_radius?: boolean
    /**
     * The mining speed of this mining drill/character prototype.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mining_speed Online documentation}
     */
    readonly mining_speed?: double
    /**
     * The resource drain rate percent of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_drain_rate_percent Online documentation}
     */
    readonly resource_drain_rate_percent?: uint8
    /**
     * If this drill uses force productivity bonus
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#uses_force_mining_productivity_bonus Online documentation}
     */
    readonly uses_force_mining_productivity_bonus?: boolean
    /**
     * The logistic mode of this logistic container.
     *
     * _Can only be used if this is LogisticContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_mode Online documentation}
     */
    readonly logistic_mode?: "requester" | "active-provider" | "passive-provider" | "buffer" | "storage" | "none"
    /**
     * The max underground distance for underground belts and underground pipes.
     *
     * _Can only be used if this is UndergroundBelt or PipeToGround_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_underground_distance Online documentation}
     */
    readonly max_underground_distance?: uint8
    /**
     * The flags for this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flags Online documentation}
     */
    readonly flags: EntityPrototypeFlags
    /**
     * The remains left behind when this entity is mined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#remains_when_mined Online documentation}
     */
    readonly remains_when_mined: LuaEntityPrototype[]
    /**
     * Entities this entity can be pasted onto in addition to the normal allowed ones.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#additional_pastable_entities Online documentation}
     */
    readonly additional_pastable_entities: LuaEntityPrototype[]
    /**
     * When false copy-paste is not allowed for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_copy_paste Online documentation}
     */
    readonly allow_copy_paste: boolean
    /**
     * The cursor size used when shooting at this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#shooting_cursor_size Online documentation}
     */
    readonly shooting_cursor_size: float
    /**
     * The smoke trigger run when this entity is built, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#created_smoke Online documentation}
     */
    readonly created_smoke?: {
      readonly smoke_name: string
      readonly offsets: Vector[]
      readonly offset_deviation: BoundingBox
      readonly initial_height: float
      readonly max_radius?: float
      readonly speed: Vector
      readonly speed_multiplier: float
      readonly speed_multiplier_deviation: float
      readonly starting_frame: float
      readonly starting_frame_deviation: float
      readonly speed_from_center: float
      readonly speed_from_center_deviation: float
    }
    /**
     * The trigger to run when this entity is created, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#created_effect Online documentation}
     */
    readonly created_effect?: TriggerItem[]
    /**
     * The trigger effects to run every tick when on cooldown.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#update_effects Online documentation}
     */
    readonly update_effects?: TriggerEffectWithCooldown[]
    /**
     * The trigger effects to run every tick when on cooldown while the owning {@link LuaSegmentedUnit} is enraged.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#update_effects_while_enraged Online documentation}
     */
    readonly update_effects_while_enraged?: TriggerEffectWithCooldown[]
    /**
     * The map color used when charting this entity if a friendly or enemy color isn't defined, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#map_color Online documentation}
     */
    readonly map_color?: Color
    /**
     * The friendly map color used when charting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#friendly_map_color Online documentation}
     */
    readonly friendly_map_color: Color
    /**
     * The enemy map color used when charting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enemy_map_color Online documentation}
     */
    readonly enemy_map_color: Color
    /**
     * The evolution requirement to build this entity as a base when expanding enemy bases.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#build_base_evolution_requirement Online documentation}
     */
    readonly build_base_evolution_requirement: double
    /**
     * The instruments for this programmable speaker.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#instruments Online documentation}
     */
    readonly instruments?: ProgrammableSpeakerInstrument[]
    /**
     * The maximum polyphony for this programmable speaker.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_polyphony Online documentation}
     */
    readonly max_polyphony?: uint32
    /**
     * The module inventory size. `nil` if this entity doesn't support modules.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#module_inventory_size Online documentation}
     */
    readonly module_inventory_size?: uint32
    /**
     * _Can only be used if this is Beacon, CraftingMachine, MiningDrill or Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_module_slots Online documentation}
     */
    readonly quality_affects_module_slots?: boolean
    /**
     * The inventory type this container or linked container uses.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_type Online documentation}
     */
    readonly inventory_type?:
      | "normal"
      | "with_bar"
      | "with_filters"
      | "with_filters_and_bar"
      | "with_weight_limit"
      | "with_custom_stack_size"
    /**
     * Weight limit of the inventory if inventory_type is `"with_weight_limit"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_weight_limit Online documentation}
     */
    readonly inventory_weight_limit?: Weight
    /**
     * Properties of custom inventory. Only provided if inventory_type is `"with_custom_stack_size"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_properties Online documentation}
     */
    readonly inventory_properties?: InventoryWithCustomStackSizeSpecification
    /**
     * The max number of ingredients this crafting machine prototype supports.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ingredient_count Online documentation}
     */
    readonly ingredient_count?: uint32
    /**
     * The max number of item products this crafting machine prototype supports.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_item_product_count Online documentation}
     */
    readonly max_item_product_count?: uint32
    /**
     * The {@link LuaRecipeCategoryPrototype crafting categories} this entity prototype supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#crafting_categories Online documentation}
     */
    readonly crafting_categories?: Record<string, true>
    /**
     * The {@link LuaResourceCategoryPrototype resource categories} this character or mining drill supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_categories Online documentation}
     */
    readonly resource_categories?: Record<string, true>
    /**
     * The direct energy usage of this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_usage Online documentation}
     */
    readonly energy_usage?: double
    /**
     * The effectivity of this car prototype, generator prototype.
     *
     * _Can only be used if this is Car, Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effectivity Online documentation}
     */
    readonly effectivity?: double
    /**
     * The energy consumption of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#consumption Online documentation}
     */
    readonly consumption?: double
    /**
     * The friction of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#friction_force Online documentation}
     */
    readonly friction_force?: double
    /**
     * The braking force of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#braking_force Online documentation}
     */
    readonly braking_force?: double
    /**
     * The air resistance of this rolling stock prototype.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#air_resistance Online documentation}
     */
    readonly air_resistance?: double
    /**
     * If this car prototype uses tank controls to drive.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tank_driving Online documentation}
     */
    readonly tank_driving?: boolean
    /**
     * The rotation speed of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rotation_speed Online documentation}
     */
    readonly rotation_speed?: double
    /**
     * The rotation snap angle of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rotation_snap_angle Online documentation}
     */
    readonly rotation_snap_angle?: double
    /**
     * The turret rotation speed of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turret_rotation_speed Online documentation}
     */
    readonly turret_rotation_speed?: float
    /**
     * A mapping of the gun name to the gun prototype this prototype uses. `nil` if this entity prototype doesn't use guns.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#guns Online documentation}
     */
    readonly guns?: Record<string, LuaItemPrototype>
    /**
     * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
     *
     * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#indexed_guns Online documentation}
     */
    readonly indexed_guns?: LuaItemPrototype[]
    /**
     * The default speed of this flying robot, rolling stock or unit. For rolling stocks, this is their `max_speed`.
     *
     * _Can only be used if this is FlyingRobot, RollingStock or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed Online documentation}
     */
    readonly speed?: double
    /**
     * The speed multiplier when this flying robot is out of energy.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed_multiplier_when_out_of_energy Online documentation}
     */
    readonly speed_multiplier_when_out_of_energy?: float
    /**
     * The cargo carrying capacity of this logistics or construction robot.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_payload_size Online documentation}
     */
    readonly max_payload_size?: uint32
    /**
     * The maximum possible cargo carrying capacity of this logistics or construction robot. Bonuses from technologies/forces can't increase the carrying capacity beyond this number.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_payload_size_after_bonus Online documentation}
     */
    readonly max_payload_size_after_bonus?: uint32
    /**
     * Whether this logistics or construction robot renders its cargo when flying.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#draw_cargo Online documentation}
     */
    readonly draw_cargo?: boolean
    /**
     * The energy consumed per tile moved for this flying robot.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_move Online documentation}
     */
    readonly energy_per_move?: double
    /**
     * The energy consumed per tick for this flying robot.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_tick Online documentation}
     */
    readonly energy_per_tick?: double
    /**
     * The minimum energy for this flying robot before it tries to recharge.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_to_charge Online documentation}
     */
    readonly min_to_charge?: float
    /**
     * The maximum energy for this flying robot above which it won't try to recharge when stationing.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_to_charge Online documentation}
     */
    readonly max_to_charge?: float
    /**
     * The burner energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#burner_prototype Online documentation}
     */
    readonly burner_prototype?: LuaBurnerPrototype
    /**
     * The electric energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#electric_energy_source_prototype Online documentation}
     */
    readonly electric_energy_source_prototype?: LuaElectricEnergySourcePrototype
    /**
     * The heat energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heat_energy_source_prototype Online documentation}
     */
    readonly heat_energy_source_prototype?: LuaHeatEnergySourcePrototype
    /**
     * The fluid energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_energy_source_prototype Online documentation}
     */
    readonly fluid_energy_source_prototype?: LuaFluidEnergySourcePrototype
    /**
     * The void energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#void_energy_source_prototype Online documentation}
     */
    readonly void_energy_source_prototype?: LuaVoidEnergySourcePrototype
    /**
     * The heat buffer prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heat_buffer_prototype Online documentation}
     */
    readonly heat_buffer_prototype?: LuaHeatBufferPrototype
    /**
     * The log2 of {@link import("factorio:prototype").EntityPrototype#build_grid_size grid size} of the building.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#building_grid_bit_shift Online documentation}
     */
    readonly building_grid_bit_shift: uint32
    /**
     * The fluid usage of this generator prototype. This property is deprecated in favor of {@link LuaEntityPrototype#get_fluid_usage_per_tick LuaEntityPrototype::get_fluid_usage_per_tick} and should not be used.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_usage_per_tick Online documentation}
     */
    readonly fluid_usage_per_tick?: double
    /**
     * The maximum fluid temperature of this generator prototype.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#maximum_temperature Online documentation}
     */
    readonly maximum_temperature?: double
    /**
     * Whether this generator prototype burns fluid.
     *
     * _Can only be used if this is Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#burns_fluid Online documentation}
     */
    readonly burns_fluid?: boolean
    /**
     * Whether this generator prototype scales fluid usage.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#scale_fluid_usage Online documentation}
     */
    readonly scale_fluid_usage?: boolean
    /**
     * Whether this generator prototype destroys non-fuel fluids.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#destroy_non_fuel_fluid Online documentation}
     */
    readonly destroy_non_fuel_fluid?: boolean
    /**
     * The default maximum power output of this generator prototype. This property is deprecated in favor of {@link LuaEntityPrototype#get_max_power_output LuaEntityPrototype::get_max_power_output} and should not be used.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_power_output Online documentation}
     */
    readonly max_power_output?: double
    /**
     * The target temperature of this boiler or fusion reactor prototype. If `nil` on a fusion reactor, the target temperature is the default temperature of the output fluid.
     *
     * _Can only be used if this is Boiler or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#target_temperature Online documentation}
     */
    readonly target_temperature?: float
    /**
     * The boiler operation mode of this boiler prototype.
     *
     * _Can only be used if this is Boiler_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#boiler_mode Online documentation}
     */
    readonly boiler_mode?: "heat-fluid-inside" | "output-to-separate-pipe"
    /**
     * The fluid capacity of this entity or 0 if this entity doesn't support fluids.
     *
     * Crafting machines will report 0 due to their fluid capacity being whatever a given recipe needs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_capacity Online documentation}
     */
    readonly fluid_capacity: double
    /**
     * The pumping speed of this offshore pump or normal pump. This property is deprecated in favor of {@link LuaEntityPrototype#get_pumping_speed LuaEntityPrototype::get_pumping_speed} and should not be used.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#pumping_speed Online documentation}
     */
    readonly pumping_speed?: double
    /**
     * The mode of operation of this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#valve_mode Online documentation}
     */
    readonly valve_mode?: ValveMode
    /**
     * The default threshold of this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#valve_threshold Online documentation}
     */
    readonly valve_threshold?: float
    /**
     * Whether this inserter is a bulk-type.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#bulk Online documentation}
     */
    readonly bulk?: boolean
    /**
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#uses_inserter_stack_size_bonus Online documentation}
     */
    readonly uses_inserter_stack_size_bonus?: boolean
    /**
     * _Can only be used if this is OffshorePump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_source_offset Online documentation}
     */
    readonly fluid_source_offset?: Vector
    /**
     * _Can only be used if this is Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flow_scaling Online documentation}
     */
    readonly flow_scaling?: boolean
    /**
     * Whether this inserter allows custom pickup and drop vectors.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_custom_vectors Online documentation}
     */
    readonly allow_custom_vectors?: boolean
    /**
     * Whether this inserter allows burner leeching.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_burner_leech Online documentation}
     */
    readonly allow_burner_leech?: boolean
    /**
     * The pickup position for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_pickup_position Online documentation}
     */
    readonly inserter_pickup_position?: Vector
    /**
     * The drop position for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_drop_position Online documentation}
     */
    readonly inserter_drop_position?: Vector
    /**
     * True if this inserter chases items on belts for pickup.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_chases_belt_items Online documentation}
     */
    readonly inserter_chases_belt_items?: boolean
    /**
     * The max belt stack size for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_max_belt_stack_size Online documentation}
     */
    readonly inserter_max_belt_stack_size?: uint8
    /**
     * The max belt stack size for this loader.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_max_belt_stack_size Online documentation}
     */
    readonly loader_max_belt_stack_size?: uint8
    /**
     * True if this loader supports a runtime-adjustable belt stack size.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_adjustable_belt_stack_size Online documentation}
     */
    readonly loader_adjustable_belt_stack_size?: boolean
    /**
     * True if this loader will not drop items for which total amount is less than a full belt stack.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_wait_for_full_stack Online documentation}
     */
    readonly loader_wait_for_full_stack?: boolean
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_respect_insert_limits Online documentation}
     */
    readonly loader_respect_insert_limits?: boolean
    /**
     * If this simple-entity is counted as a rock for the deconstruction planner "trees and rocks only" filter.
     *
     * _Can only be used if this is SimpleEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#count_as_rock_for_filtered_deconstruction Online documentation}
     */
    readonly count_as_rock_for_filtered_deconstruction?: boolean
    /**
     * The filter count of this inserter, loader, mining drill or logistic chest. For logistic containers, `nil` means no limit.
     *
     * _Can only be used if this is Inserter, Loader, LogisticContainer or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#filter_count Online documentation}
     */
    readonly filter_count?: uint32
    /**
     * The time to live for this prototype or `0` if prototype doesn't have time_to_live or time_before_removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#time_to_live Online documentation}
     */
    readonly time_to_live: uint32
    /**
     * The distribution effectivity for this beacon prototype.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distribution_effectivity Online documentation}
     */
    readonly distribution_effectivity?: double
    /**
     * The distribution effectivity bonus per quality level for this beacon prototype.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distribution_effectivity_bonus_per_quality_level Online documentation}
     */
    readonly distribution_effectivity_bonus_per_quality_level?: double
    /**
     * The beacon profile: extra multiplier applied to the effects received from beacon by the effect receiver based on amount of beacons that reach that effect receiver
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#profile Online documentation}
     */
    readonly profile?: double[]
    /**
     * The beacon counter used by effect receiver when deciding which sample to take from beacon profile.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#beacon_counter Online documentation}
     */
    readonly beacon_counter?: "total" | "same_type"
    /**
     * Whether this explosion has a beam.
     *
     * _Can only be used if this is Explosion_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#explosion_beam Online documentation}
     */
    readonly explosion_beam?: double
    /**
     * Whether this explosion rotates.
     *
     * _Can only be used if this is Explosion_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#explosion_rotate Online documentation}
     */
    readonly explosion_rotate?: double
    /**
     * If it is a tree, return the number of colors it supports.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tree_color_count Online documentation}
     */
    readonly tree_color_count?: uint8
    /**
     * Whether this entity raises an alert when damaged.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_when_damaged Online documentation}
     */
    readonly alert_when_damaged?: boolean
    /**
     * Whether this turret raises an alert when attacking
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_when_attacking Online documentation}
     */
    readonly alert_when_attacking?: boolean
    /**
     * The color of the prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#color Online documentation}
     */
    readonly color?: Color
    /**
     * Does this prototype collision mask collide with itself?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_collides_with_self Online documentation}
     */
    readonly collision_mask_collides_with_self: boolean
    /**
     * Does this prototype collision mask collide with tiles only?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_collides_with_tiles_only Online documentation}
     */
    readonly collision_mask_collides_with_tiles_only: boolean
    /**
     * Does this prototype collision mask consider tile transitions?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_considers_tile_transitions Online documentation}
     */
    readonly collision_mask_considers_tile_transitions: boolean
    /**
     * The allowed module effects for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allowed_effects Online documentation}
     */
    readonly allowed_effects?: Record<string, boolean>
    /**
     * The allowed module categories for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allowed_module_categories Online documentation}
     */
    readonly allowed_module_categories?: Record<string, true>
    /**
     * The rocket parts required for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_parts_required Online documentation}
     */
    readonly rocket_parts_required?: uint32
    /**
     * The rocket rising delay for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_rising_delay Online documentation}
     */
    readonly rocket_rising_delay?: uint8
    /**
     * The rocket launch delay for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#launch_wait_time Online documentation}
     */
    readonly launch_wait_time?: uint8
    /**
     * The light blinking speed for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#light_blinking_speed Online documentation}
     */
    readonly light_blinking_speed?: double
    /**
     * The door opening speed for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#door_opening_speed Online documentation}
     */
    readonly door_opening_speed?: double
    /**
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#launch_to_space_platforms Online documentation}
     */
    readonly launch_to_space_platforms?: boolean
    /**
     * The rising speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rising_speed Online documentation}
     */
    readonly rising_speed?: double
    /**
     * The engine starting speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#engine_starting_speed Online documentation}
     */
    readonly engine_starting_speed?: double
    /**
     * The flying speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flying_speed Online documentation}
     */
    readonly flying_speed?: double
    /**
     * The flying acceleration for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flying_acceleration Online documentation}
     */
    readonly flying_acceleration?: double
    /**
     * The fixed recipe name for this assembling machine prototype, if any.
     *
     * _Can only be used if this is AssemblingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fixed_recipe Online documentation}
     */
    readonly fixed_recipe?: string
    /**
     * The construction radius for this roboport prototype.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#construction_radius Online documentation}
     */
    readonly construction_radius?: double
    /**
     * The logistic radius for this roboport prototype.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_radius Online documentation}
     */
    readonly logistic_radius?: double
    /**
     * The energy used per hit point taken for this vehicle during collisions.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_hit_point Online documentation}
     */
    readonly energy_per_hit_point?: double
    /**
     * If this prototype will attempt to create a ghost of itself on death.
     *
     * If this is false then a ghost will never be made, if it's true a ghost may be made.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#create_ghost_on_death Online documentation}
     */
    readonly create_ghost_on_death: boolean
    /**
     * Name of the ammo category of this land mine.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ammo_category Online documentation}
     */
    readonly ammo_category?: string
    /**
     * The time it takes this land mine to arm.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#timeout Online documentation}
     */
    readonly timeout?: uint32
    /**
     * The collision mask entities must collide with to make this landmine blow up.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#trigger_collision_mask Online documentation}
     */
    readonly trigger_collision_mask?: CollisionMask
    /**
     * The fluidbox prototypes for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluidbox_prototypes Online documentation}
     */
    readonly fluidbox_prototypes: LuaFluidBoxPrototype[]
    /**
     * _Can only be used if this is Reactor or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#neighbour_bonus Online documentation}
     */
    readonly neighbour_bonus?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#container_distance Online documentation}
     */
    readonly container_distance?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_distance Online documentation}
     */
    readonly belt_distance?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_length Online documentation}
     */
    readonly belt_length?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#per_lane_filters Online documentation}
     */
    readonly per_lane_filters?: boolean
    /**
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_building > These are the objects that are considered buildings:}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_building Online documentation}
     */
    readonly is_building: boolean
    /**
     * The amount of ammo that inserters automatically insert into this ammo turret, artillery turret or artillery wagon.
     *
     * _Can only be used if this is ArtilleryTurret, ArtilleryWagon or AmmoTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automated_ammo_count Online documentation}
     */
    readonly automated_ammo_count?: uint32
    /**
     * The max speed of this projectile or flying robot prototype.
     *
     * _Can only be used if this is Projectile or FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_speed Online documentation}
     */
    readonly max_speed?: double
    /**
     * Value between 0 and 1 darkness where all lamps of this lamp prototype are on.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#darkness_for_all_lamps_on Online documentation}
     */
    readonly darkness_for_all_lamps_on?: float
    /**
     * Value between 0 and 1 darkness where all lamps of this lamp prototype are off.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#darkness_for_all_lamps_off Online documentation}
     */
    readonly darkness_for_all_lamps_off?: float
    /**
     * Whether the lamp is always on (except when out of power or turned off by the circuit network).
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#always_on Online documentation}
     */
    readonly always_on?: boolean
    /**
     * The minimum darkness at which this unit spawner can spawn entities.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_darkness_to_spawn Online documentation}
     */
    readonly min_darkness_to_spawn?: float
    /**
     * The maximum darkness at which this unit spawner can spawn entities.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_darkness_to_spawn Online documentation}
     */
    readonly max_darkness_to_spawn?: float
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#call_for_help_radius Online documentation}
     */
    readonly call_for_help_radius?: double
    /**
     * Count of enemies this spawner can sustain.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_count_of_owned_units Online documentation}
     */
    readonly max_count_of_owned_units?: double
    /**
     * Count of defensive enemies this spawner can sustain.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_count_of_owned_defensive_units Online documentation}
     */
    readonly max_count_of_owned_defensive_units?: double
    /**
     * How many friendly units are required within the spawning_radius of this spawner for it to stop producing more units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_friends_around_to_spawn Online documentation}
     */
    readonly max_friends_around_to_spawn?: double
    /**
     * How many defensive friendly units are required within the spawning_radius of this spawner for it to stop producing more units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_defensive_friends_around_to_spawn Online documentation}
     */
    readonly max_defensive_friends_around_to_spawn?: double
    /**
     * How far from the spawner can the units be spawned.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_radius Online documentation}
     */
    readonly spawning_radius?: double
    /**
     * What spaces should be between the spawned units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_spacing Online documentation}
     */
    readonly spawning_spacing?: double
    /**
     * The radius of this entity prototype. The radius is defined as half the distance between the top left corner and bottom right corner of the collision box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#radius Online documentation}
     */
    readonly radius: double
    /**
     * The item prototype name used to destroy this cliff.
     *
     * _Can only be used if this is Cliff_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#cliff_explosive_prototype Online documentation}
     */
    readonly cliff_explosive_prototype?: string
    /**
     * The rocket entity prototype associated with this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_entity_prototype Online documentation}
     */
    readonly rocket_entity_prototype?: LuaEntityPrototype
    /**
     * Whether this unit, car, or character prototype has belt immunity.
     *
     * _Can only be used if this is Unit, Car or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_belt_immunity Online documentation}
     */
    readonly has_belt_immunity?: boolean
    /**
     * The vision distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit, Unit or SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vision_distance Online documentation}
     */
    readonly vision_distance?: double
    /**
     * A table of pollutions amounts that has to be absorbed by the unit's spawner before the unit will leave the spawner and attack the source of the pollution, indexed by the name of each absorbed pollution type.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#absorptions_to_join_attack Online documentation}
     */
    readonly absorptions_to_join_attack?: Record<string, float>
    /**
     * The minimum pursue time of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_pursue_time Online documentation}
     */
    readonly min_pursue_time?: uint32
    /**
     * The maximum pursue distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_pursue_distance Online documentation}
     */
    readonly max_pursue_distance?: double
    /**
     * The radar range of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#radar_range Online documentation}
     */
    readonly radar_range?: uint32
    /**
     * Whether this unit prototype can move while shooting.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#move_while_shooting Online documentation}
     */
    readonly move_while_shooting?: boolean
    /**
     * Whether this unit prototype can open gates.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#can_open_gates Online documentation}
     */
    readonly can_open_gates?: boolean
    /**
     * Whether this unit prototype is affected by tile walking speed modifiers.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#affected_by_tiles Online documentation}
     */
    readonly affected_by_tiles?: boolean
    /**
     * The distraction cooldown of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distraction_cooldown Online documentation}
     */
    readonly distraction_cooldown?: uint32
    /**
     * The spawning time modifier of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_time_modifier Online documentation}
     */
    readonly spawning_time_modifier?: double
    /**
     * The alert icon shift of this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_icon_shift Online documentation}
     */
    readonly alert_icon_shift: Vector
    /**
     * The alert icon scale of this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_icon_scale Online documentation}
     */
    readonly alert_icon_scale: float
    /**
     * The item prototype names that are the inputs of this lab prototype.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#lab_inputs Online documentation}
     */
    readonly lab_inputs?: string[]
    /**
     * How much science pack durability is required to research one science point.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#science_pack_drain_rate_percent Online documentation}
     */
    readonly science_pack_drain_rate_percent: uint8
    /**
     * Effect receiver prototype of this crafting machine, lab, or mining drill.
     *
     * _Can only be used if this is CraftingMachine, Lab or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effect_receiver Online documentation}
     */
    readonly effect_receiver?: EffectReceiver
    /**
     * Whether this market allows access to all forces or just friendly ones.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_access_to_all_forces Online documentation}
     */
    readonly allow_access_to_all_forces?: boolean
    /**
     * Whether this entity prototype could possibly ever be rotated.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#supports_direction Online documentation}
     */
    readonly supports_direction: boolean
    /**
     * The terrain friction modifier for this vehicle.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#terrain_friction_modifier Online documentation}
     */
    readonly terrain_friction_modifier?: float
    /**
     * Whether this vehicle allows passengers.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_passengers Online documentation}
     */
    readonly allow_passengers?: boolean
    /**
     * The equipment grid prototype for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#grid_prototype Online documentation}
     */
    readonly grid_prototype?: LuaEquipmentGridPrototype
    /**
     * Whether this entity should remove decoratives that collide with it when this entity is built.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#remove_decoratives Online documentation}
     */
    readonly remove_decoratives: "automatic" | "true" | "false"
    /**
     * _Can only be used if this is TransportBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#related_underground_belt Online documentation}
     */
    readonly related_underground_belt?: LuaEntityPrototype
    /**
     * The built-in stack size bonus of this inserter prototype.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_stack_size_bonus Online documentation}
     */
    readonly inserter_stack_size_bonus?: uint32
    /**
     * True if this entity prototype should be included during tile collision checks with {@link LuaTilePrototype#check_collision_with_entities LuaTilePrototype::check_collision_with_entities} enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#protected_from_tile_building Online documentation}
     */
    readonly protected_from_tile_building: boolean
    /**
     * True if this is entity-with-owner
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_entity_with_owner Online documentation}
     */
    readonly is_entity_with_owner: boolean
    /**
     * True if this entity-with-owner is military target
     *
     * _Can only be used if this is EntityWithOwner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_military_target Online documentation}
     */
    readonly is_military_target?: boolean
    /**
     * True if this entity-with-owner's is_military_target can be changed run-time (on the entity, not on the prototype itself)
     *
     * _Can only be used if this is EntityWithOwner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_run_time_change_of_is_military_target Online documentation}
     */
    readonly allow_run_time_change_of_is_military_target?: boolean
    /**
     * The logistic parameters for this roboport.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_parameters Online documentation}
     */
    readonly logistic_parameters?: {
      readonly spawn_and_station_height: float
      readonly spawn_and_station_shadow_height_offset: float
      readonly stationing_render_layer_swap_height: float
      readonly charge_approach_distance: float
      readonly logistic_radius: float
      readonly construction_radius: float
      readonly charging_station_count: uint32
      readonly charging_distance: float
      readonly charging_station_shift: Vector
      readonly charging_energy: double
      readonly charging_threshold_distance: float
      readonly robot_vertical_acceleration: float
      readonly stationing_offset: Vector
      readonly robot_limit: uint32
      readonly logistics_connection_distance: float
      readonly robots_shrink_when_entering_and_exiting: boolean
    }
    /**
     * The height of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#height Online documentation}
     */
    readonly height?: double
    /**
     * The torso rotation speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_rotation_speed Online documentation}
     */
    readonly torso_rotation_speed?: double
    /**
     * The torso bob speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_bob_speed Online documentation}
     */
    readonly torso_bob_speed?: double
    /**
     * Whether this spider vehicle prototype automatically cycles weapons.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automatic_weapon_cycling Online documentation}
     */
    readonly automatic_weapon_cycling?: boolean
    /**
     * The chain shooting cooldown modifier of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#chain_shooting_cooldown_modifier Online documentation}
     */
    readonly chain_shooting_cooldown_modifier?: double
    /**
     * _Can only be used if this is SpiderVehicle or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spider_engine Online documentation}
     */
    readonly spider_engine?: SpiderEngineSpecification
    /**
     * The chunk exploration radius of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#chunk_exploration_radius Online documentation}
     */
    readonly chunk_exploration_radius?: double
    /**
     * The animation speed coefficient of this belt connectable prototype.
     *
     * _Can only be used if this is BeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#animation_speed_coefficient Online documentation}
     */
    readonly animation_speed_coefficient?: double
    /**
     * The manual range modifier for this artillery turret or wagon prototype.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#manual_range_modifier Online documentation}
     */
    readonly manual_range_modifier?: double
    /**
     * The dying time of this corpse prototype.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_speed Online documentation}
     */
    readonly dying_speed?: float
    /**
     * The active energy usage of this rocket silo or combinator prototype.
     *
     * _Can only be used if this is RocketSilo or Combinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#active_energy_usage Online documentation}
     */
    readonly active_energy_usage?: double
    /**
     * The lamp energy usage of this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#lamp_energy_usage Online documentation}
     */
    readonly lamp_energy_usage?: double
    /**
     * The crane energy usage of this agricultural tower prototype.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#crane_energy_usage Online documentation}
     */
    readonly crane_energy_usage?: double
    /**
     * Whether this logistic container prototype uses exact mode
     *
     * _Can only be used if this is LogisticContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#use_exact_mode Online documentation}
     */
    readonly use_exact_mode?: boolean
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tile_width Online documentation}
     */
    readonly tile_width: uint32
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tile_height Online documentation}
     */
    readonly tile_height: uint32
    /**
     * Vertical selection shift used by rolling stocks. It affects selection box vertical position but is also used to shift rolling stock graphics along the rails to fine tune train's look.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vertical_selection_shift Online documentation}
     */
    readonly vertical_selection_shift?: double
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decoration Online documentation}
     */
    readonly spawn_decoration?: TriggerEffectItem[]
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decorations_on_expansion Online documentation}
     */
    readonly spawn_decorations_on_expansion?: boolean
    /**
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#connection_distance Online documentation}
     */
    readonly connection_distance?: double
    /**
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#joint_distance Online documentation}
     */
    readonly joint_distance?: double
    readonly radius_visualisation_specification?: RadiusVisualisationSpecification
    /**
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_ticks Online documentation}
     */
    readonly growth_ticks?: uint32
    /**
     * A table of pollutants that this plant will release when it is harvested.
     *
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#harvest_emissions Online documentation}
     */
    readonly harvest_emissions?: Record<string, double>
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#agricultural_tower_radius Online documentation}
     */
    readonly agricultural_tower_radius?: double
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_area_radius Online documentation}
     */
    readonly growth_area_radius?: double
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_grid_tile_size Online documentation}
     */
    readonly growth_grid_tile_size?: uint32
    /**
     * _Can only be used if this is MiningDrill or CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vector_to_place_result Online documentation}
     */
    readonly vector_to_place_result?: Vector
    /**
     * The surface conditions required to build this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#surface_conditions Online documentation}
     */
    readonly surface_conditions?: SurfaceCondition[]
    /**
     * The energy required to keep this entity from freezing. Zero energy means it doesn't freeze.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heating_energy Online documentation}
     */
    readonly heating_energy: double
    /**
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#auto_setup_collision_box Online documentation}
     */
    readonly auto_setup_collision_box: boolean
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaEntityPrototype
    /**
     * _Can only be used if this is ElectricPole_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rewire_neighbours_when_destroying Online documentation}
     */
    readonly rewire_neighbours_when_destroying: boolean
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_performance_at_day Online documentation}
     */
    readonly solar_panel_performance_at_day: double
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_performance_at_night Online documentation}
     */
    readonly solar_panel_performance_at_night: double
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_solar_coefficient_property Online documentation}
     */
    readonly solar_panel_solar_coefficient_property: LuaSurfacePropertyPrototype
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#accepted_seeds Online documentation}
     */
    readonly accepted_seeds?: string[]
    /**
     * _Can only be used if this is EnemySpawnerPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#captured_spawner_entity Online documentation}
     */
    readonly captured_spawner_entity?: LuaEntityPrototype
    /**
     * _Can only be used if this is ThrusterPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_performance Online documentation}
     */
    readonly min_performance?: ThrusterPerformancePoint
    /**
     * _Can only be used if this is ThrusterPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_performance Online documentation}
     */
    readonly max_performance?: ThrusterPerformancePoint
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#two_direction_only Online documentation}
     */
    readonly two_direction_only?: boolean
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#perceived_performance Online documentation}
     */
    readonly perceived_performance?: PerceivedPerformance
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#overkill_fraction Online documentation}
     */
    readonly overkill_fraction?: float
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_explosion Online documentation}
     */
    readonly dying_explosion?: ExplosionDefinition[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_trigger_effect Online documentation}
     */
    readonly dying_trigger_effect?: TriggerEffectItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damaged_trigger_effect Online documentation}
     */
    readonly damaged_trigger_effect?: TriggerEffectItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_reaction Online documentation}
     */
    readonly attack_reaction?: AttackReactionItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#hide_resistances Online documentation}
     */
    readonly hide_resistances?: boolean
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#random_corpse_variation Online documentation}
     */
    readonly random_corpse_variation?: boolean
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#neighbour_connectable Online documentation}
     */
    readonly neighbour_connectable?: NeighbourConnectable
    readonly tile_buildability_rules?: TileBuildabilityRule[]
    /**
     * _Can only be used if this is RailSupport or RailRamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#support_range Online documentation}
     */
    readonly support_range?: float
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#territory_radius Online documentation}
     */
    readonly territory_radius?: uint32
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enraged_duration Online documentation}
     */
    readonly enraged_duration?: MapTick
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#patrolling_speed Online documentation}
     */
    readonly patrolling_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#investigating_speed Online documentation}
     */
    readonly investigating_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attacking_speed Online documentation}
     */
    readonly attacking_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enraged_speed Online documentation}
     */
    readonly enraged_speed: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#acceleration_rate Online documentation}
     */
    readonly acceleration_rate: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turn_radius Online documentation}
     */
    readonly turn_radius?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#patrolling_turn_radius Online documentation}
     */
    readonly patrolling_turn_radius?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turn_smoothing Online documentation}
     */
    readonly turn_smoothing?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_per_scan Online documentation}
     */
    readonly ticks_per_scan?: uint32
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#segment_engine Online documentation}
     */
    readonly segment_engine?: SegmentEngineSpecification
    /**
     * The movement speed of this character prototype.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#running_speed Online documentation}
     */
    readonly running_speed?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#maximum_corner_sliding_distance Online documentation}
     */
    readonly maximum_corner_sliding_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#build_distance Online documentation}
     */
    readonly build_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#drop_item_distance Online documentation}
     */
    readonly drop_item_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#reach_distance Online documentation}
     */
    readonly reach_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#reach_resource_distance Online documentation}
     */
    readonly reach_resource_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#item_pickup_distance Online documentation}
     */
    readonly item_pickup_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loot_pickup_distance Online documentation}
     */
    readonly loot_pickup_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enter_vehicle_distance Online documentation}
     */
    readonly enter_vehicle_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_keep_gun Online documentation}
     */
    readonly ticks_to_keep_gun?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_keep_aiming_direction Online documentation}
     */
    readonly ticks_to_keep_aiming_direction?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_stay_in_combat Online documentation}
     */
    readonly ticks_to_stay_in_combat?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#respawn_time Online documentation}
     */
    readonly respawn_time?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damage_hit_tint Online documentation}
     */
    readonly damage_hit_tint?: Color
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#character_corpse Online documentation}
     */
    readonly character_corpse?: LuaEntityPrototype
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_inventory_size_quality_increase Online documentation}
     */
    readonly arm_inventory_size_quality_increase?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_size_quality_increase Online documentation}
     */
    readonly inventory_size_quality_increase?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#passive_energy_usage Online documentation}
     */
    readonly passive_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_energy_usage Online documentation}
     */
    readonly arm_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_slow_energy_usage Online documentation}
     */
    readonly arm_slow_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_usage_quality_scaling Online documentation}
     */
    readonly energy_usage_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_count_base Online documentation}
     */
    readonly arm_count_base?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_count_quality_scaling Online documentation}
     */
    readonly arm_count_quality_scaling?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#head_collection_radius Online documentation}
     */
    readonly head_collection_radius?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collection_box_offset Online documentation}
     */
    readonly collection_box_offset?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#deposit_radius Online documentation}
     */
    readonly deposit_radius?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_speed_base Online documentation}
     */
    readonly arm_speed_base?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_speed_quality_scaling Online documentation}
     */
    readonly arm_speed_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_angular_speed_cap_base Online documentation}
     */
    readonly arm_angular_speed_cap_base?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_angular_speed_cap_quality_scaling Online documentation}
     */
    readonly arm_angular_speed_cap_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tether_size Online documentation}
     */
    readonly tether_size?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#unpowered_arm_speed_scale Online documentation}
     */
    readonly unpowered_arm_speed_scale?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#minimal_arm_swing_segment_retraction Online documentation}
     */
    readonly minimal_arm_swing_segment_retraction?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_offset Online documentation}
     */
    readonly held_items_offset?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_spread Online documentation}
     */
    readonly held_items_spread?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_display_count Online documentation}
     */
    readonly held_items_display_count?: uint8
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_color_gradient Online documentation}
     */
    readonly arm_color_gradient?: Color[]
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_buffer_size Online documentation}
     */
    readonly fluid_buffer_size?: FluidAmount
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#activation_buffer_ratio Online documentation}
     */
    readonly activation_buffer_ratio?: FluidAmount
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_buffer_input_flow Online documentation}
     */
    readonly fluid_buffer_input_flow?: FluidAmount
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#range_from_player Online documentation}
     */
    readonly range_from_player?: double
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#combat_robot_friction Online documentation}
     */
    readonly combat_robot_friction?: double
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#destroy_action Online documentation}
     */
    readonly destroy_action?: TriggerItem[]
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#follows_player Online documentation}
     */
    readonly follows_player?: boolean
    /**
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#strike_effect Online documentation}
     */
    readonly strike_effect?: TriggerItem[]
    /**
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attractor_hit_effect Online documentation}
     */
    readonly attractor_hit_effect?: TriggerItem[]
    /**
     * When lightning strikes something that is not a lightning attractor, this damage is applied to the target.
     *
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damage Online documentation}
     */
    readonly damage?: double
    /**
     * When lightning hits a lightning attractor this amount of energy is transferred to the lightning attractor.
     *
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy Online documentation}
     */
    readonly energy?: double
    /**
     * _Can only be used if this is FluidWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#connection_category Online documentation}
     */
    readonly connection_category: string[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEntityPrototype"
  }
  /**
   * @noSelf
   */
  export interface BaseEntityPrototype extends LuaPrototypeBase {
    /**
     * Test whether this entity prototype has a certain flag set.
     * @param flag The flag to test.
     * @returns `true` if this prototype has the given flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_flag Online documentation}
     */
    has_flag(flag: EntityPrototypeFlag): boolean
    /**
     * Gets the base size of the given inventory on this entity or `nil` if the given inventory doesn't exist.
     * @param quality Defaults to `"normal"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inventory_size Online documentation}
     */
    get_inventory_size(index: defines.inventory, quality?: QualityID): uint32 | nil
    /**
     * The maximum wire distance for this entity. 0 if the entity doesn't support wires.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_wire_distance Online documentation}
     */
    get_max_wire_distance(quality?: QualityID): double
    /**
     * The maximum circuit wire distance for this entity. 0 if the entity doesn't support circuit wires.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_circuit_wire_distance Online documentation}
     */
    get_max_circuit_wire_distance(quality?: QualityID): double
    /**
     * The theoretical maximum energy usage for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy_usage Online documentation}
     */
    get_max_energy_usage(quality?: QualityID): double
    /**
     * The theoretical maximum energy production for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy_production Online documentation}
     */
    get_max_energy_production(quality?: QualityID): double
    /**
     * Max health of this entity. Will be `0` if this is not an entity with health.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_health Online documentation}
     */
    get_max_health(quality?: QualityID): float
    /**
     * Gets the fluid capacity of this entity or 0 if this entity doesn't support fluids.
     *
     * Crafting machines will report 0 due to their fluid capacity being whatever a given recipe needs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_capacity Online documentation}
     */
    get_fluid_capacity(quality?: QualityID): double
    /**
     * Whether this entity is minable and what can be obtained by mining it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mineable_properties Online documentation}
     */
    readonly mineable_properties: MineableProperties
    /**
     * Items that when placed will produce this entity, if any. Construction bots will choose the first item in the list to build this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#items_to_place_this Online documentation}
     */
    readonly items_to_place_this?: ItemToPlace[]
    /**
     * The bounding box used for collision checking.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_box Online documentation}
     */
    readonly collision_box: BoundingBox
    /**
     * The secondary bounding box used for collision checking, if any. This is only used in rails and rail remnants.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#secondary_collision_box Online documentation}
     */
    readonly secondary_collision_box?: BoundingBox
    /**
     * The bounding box used for map generator collision checking.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#map_generator_bounding_box Online documentation}
     */
    readonly map_generator_bounding_box: BoundingBox
    /**
     * The bounding box used for drawing selection.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selection_box Online documentation}
     */
    readonly selection_box: BoundingBox
    /**
     * Extra vertical space needed to see the whole entity in GUIs. This is used to calculate the correct zoom and positioning in the entity info gui, for example in the entity tooltip.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#drawing_box_vertical_extension Online documentation}
     */
    readonly drawing_box_vertical_extension: double
    /**
     * The bounding box used to attach sticker type entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#sticker_box Online documentation}
     */
    readonly sticker_box: BoundingBox
    /**
     * The collision masks this entity uses
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask Online documentation}
     */
    readonly collision_mask: CollisionMask
    /**
     * The trigger target mask for this entity prototype type.
     *
     * The values in the dictionary are meaningless and exists just to allow the dictionary type for easy lookup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#trigger_target_mask Online documentation}
     */
    readonly trigger_target_mask: Record<string, boolean>
    /**
     * Amount this entity can heal per tick, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#healing_per_tick Online documentation}
     */
    readonly healing_per_tick?: float
    /**
     * A table of pollution emissions per second the entity will create, grouped by the name of the pollution type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#emissions_per_second Online documentation}
     */
    readonly emissions_per_second: Record<string, double>
    /**
     * Is this entity selectable?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selectable_in_game Online documentation}
     */
    readonly selectable_in_game: boolean
    /**
     * The selection priority of this entity - a value between `0` and `255`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#selection_priority Online documentation}
     */
    readonly selection_priority: uint32
    /**
     * The group of mutually fast-replaceable entities, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fast_replaceable_group Online documentation}
     */
    readonly fast_replaceable_group?: string
    /**
     * The next upgrade for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#next_upgrade Online documentation}
     */
    readonly next_upgrade?: LuaEntityPrototype
    /**
     * The icon positioning for inventories of this entity, if defined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#icons_positioning Online documentation}
     */
    readonly icons_positioning?: IconSequencePositioning[]
    /**
     * The definition of where and how the alt-mode icons of this entity should be drawn.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#icon_draw_specification Online documentation}
     */
    readonly icon_draw_specification: IconDrawSpecification
    /**
     * Autoplace specification for this entity prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#autoplace_specification Online documentation}
     */
    readonly autoplace_specification?: AutoplaceSpecification
    /**
     * The attack result of this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_result Online documentation}
     */
    readonly attack_result?: TriggerItem[]
    /**
     * The attack parameters for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
    /**
     * The flags for this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flags Online documentation}
     */
    readonly flags: EntityPrototypeFlags
    /**
     * The remains left behind when this entity is mined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#remains_when_mined Online documentation}
     */
    readonly remains_when_mined: LuaEntityPrototype[]
    /**
     * Entities this entity can be pasted onto in addition to the normal allowed ones.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#additional_pastable_entities Online documentation}
     */
    readonly additional_pastable_entities: LuaEntityPrototype[]
    /**
     * When false copy-paste is not allowed for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_copy_paste Online documentation}
     */
    readonly allow_copy_paste: boolean
    /**
     * The cursor size used when shooting at this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#shooting_cursor_size Online documentation}
     */
    readonly shooting_cursor_size: float
    /**
     * The smoke trigger run when this entity is built, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#created_smoke Online documentation}
     */
    readonly created_smoke?: {
      readonly smoke_name: string
      readonly offsets: Vector[]
      readonly offset_deviation: BoundingBox
      readonly initial_height: float
      readonly max_radius?: float
      readonly speed: Vector
      readonly speed_multiplier: float
      readonly speed_multiplier_deviation: float
      readonly starting_frame: float
      readonly starting_frame_deviation: float
      readonly speed_from_center: float
      readonly speed_from_center_deviation: float
    }
    /**
     * The trigger to run when this entity is created, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#created_effect Online documentation}
     */
    readonly created_effect?: TriggerItem[]
    /**
     * The map color used when charting this entity if a friendly or enemy color isn't defined, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#map_color Online documentation}
     */
    readonly map_color?: Color
    /**
     * The friendly map color used when charting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#friendly_map_color Online documentation}
     */
    readonly friendly_map_color: Color
    /**
     * The enemy map color used when charting this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enemy_map_color Online documentation}
     */
    readonly enemy_map_color: Color
    /**
     * The evolution requirement to build this entity as a base when expanding enemy bases.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#build_base_evolution_requirement Online documentation}
     */
    readonly build_base_evolution_requirement: double
    /**
     * The module inventory size. `nil` if this entity doesn't support modules.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#module_inventory_size Online documentation}
     */
    readonly module_inventory_size?: uint32
    /**
     * The direct energy usage of this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_usage Online documentation}
     */
    readonly energy_usage?: double
    /**
     * A mapping of the gun name to the gun prototype this prototype uses. `nil` if this entity prototype doesn't use guns.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#guns Online documentation}
     */
    readonly guns?: Record<string, LuaItemPrototype>
    /**
     * The burner energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#burner_prototype Online documentation}
     */
    readonly burner_prototype?: LuaBurnerPrototype
    /**
     * The electric energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#electric_energy_source_prototype Online documentation}
     */
    readonly electric_energy_source_prototype?: LuaElectricEnergySourcePrototype
    /**
     * The heat energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heat_energy_source_prototype Online documentation}
     */
    readonly heat_energy_source_prototype?: LuaHeatEnergySourcePrototype
    /**
     * The fluid energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_energy_source_prototype Online documentation}
     */
    readonly fluid_energy_source_prototype?: LuaFluidEnergySourcePrototype
    /**
     * The void energy source prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#void_energy_source_prototype Online documentation}
     */
    readonly void_energy_source_prototype?: LuaVoidEnergySourcePrototype
    /**
     * The heat buffer prototype this entity uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heat_buffer_prototype Online documentation}
     */
    readonly heat_buffer_prototype?: LuaHeatBufferPrototype
    /**
     * The log2 of {@link import("factorio:prototype").EntityPrototype#build_grid_size grid size} of the building.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#building_grid_bit_shift Online documentation}
     */
    readonly building_grid_bit_shift: uint32
    /**
     * The fluid capacity of this entity or 0 if this entity doesn't support fluids.
     *
     * Crafting machines will report 0 due to their fluid capacity being whatever a given recipe needs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_capacity Online documentation}
     */
    readonly fluid_capacity: double
    /**
     * The time to live for this prototype or `0` if prototype doesn't have time_to_live or time_before_removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#time_to_live Online documentation}
     */
    readonly time_to_live: uint32
    /**
     * The color of the prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#color Online documentation}
     */
    readonly color?: Color
    /**
     * Does this prototype collision mask collide with itself?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_collides_with_self Online documentation}
     */
    readonly collision_mask_collides_with_self: boolean
    /**
     * Does this prototype collision mask collide with tiles only?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_collides_with_tiles_only Online documentation}
     */
    readonly collision_mask_collides_with_tiles_only: boolean
    /**
     * Does this prototype collision mask consider tile transitions?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collision_mask_considers_tile_transitions Online documentation}
     */
    readonly collision_mask_considers_tile_transitions: boolean
    /**
     * The allowed module effects for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allowed_effects Online documentation}
     */
    readonly allowed_effects?: Record<string, boolean>
    /**
     * The allowed module categories for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allowed_module_categories Online documentation}
     */
    readonly allowed_module_categories?: Record<string, true>
    /**
     * If this prototype will attempt to create a ghost of itself on death.
     *
     * If this is false then a ghost will never be made, if it's true a ghost may be made.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#create_ghost_on_death Online documentation}
     */
    readonly create_ghost_on_death: boolean
    /**
     * The fluidbox prototypes for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluidbox_prototypes Online documentation}
     */
    readonly fluidbox_prototypes: LuaFluidBoxPrototype[]
    /**
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_building > These are the objects that are considered buildings:}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_building Online documentation}
     */
    readonly is_building: boolean
    /**
     * The radius of this entity prototype. The radius is defined as half the distance between the top left corner and bottom right corner of the collision box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#radius Online documentation}
     */
    readonly radius: double
    /**
     * The alert icon shift of this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_icon_shift Online documentation}
     */
    readonly alert_icon_shift: Vector
    /**
     * The alert icon scale of this entity prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_icon_scale Online documentation}
     */
    readonly alert_icon_scale: float
    /**
     * Whether this entity prototype could possibly ever be rotated.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#supports_direction Online documentation}
     */
    readonly supports_direction: boolean
    /**
     * The equipment grid prototype for this entity, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#grid_prototype Online documentation}
     */
    readonly grid_prototype?: LuaEquipmentGridPrototype
    /**
     * Whether this entity should remove decoratives that collide with it when this entity is built.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#remove_decoratives Online documentation}
     */
    readonly remove_decoratives: "automatic" | "true" | "false"
    /**
     * True if this entity prototype should be included during tile collision checks with {@link LuaTilePrototype#check_collision_with_entities LuaTilePrototype::check_collision_with_entities} enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#protected_from_tile_building Online documentation}
     */
    readonly protected_from_tile_building: boolean
    /**
     * True if this is entity-with-owner
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_entity_with_owner Online documentation}
     */
    readonly is_entity_with_owner: boolean
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tile_width Online documentation}
     */
    readonly tile_width: uint32
    /**
     * Specifies the tiling size of the entity, is used to decide, if the center should be in the center of the tile (odd tile size dimension) or on the tile border (even tile size dimension)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tile_height Online documentation}
     */
    readonly tile_height: uint32
    readonly radius_visualisation_specification?: RadiusVisualisationSpecification
    /**
     * The surface conditions required to build this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#surface_conditions Online documentation}
     */
    readonly surface_conditions?: SurfaceCondition[]
    /**
     * The energy required to keep this entity from freezing. Zero energy means it doesn't freeze.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#heating_energy Online documentation}
     */
    readonly heating_energy: double
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaEntityPrototype
    readonly tile_buildability_rules?: TileBuildabilityRule[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEntityPrototype"
  }
  /**
   * @noSelf
   */
  export interface CraftingMachineEntityPrototype extends BaseEntityPrototype {
    /**
     * The crafting speed of this crafting-machine or character.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_crafting_speed Online documentation}
     */
    get_crafting_speed(quality?: QualityID): double
    /**
     * _Can only be used if this is Beacon, CraftingMachine, MiningDrill or Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_module_slots Online documentation}
     */
    readonly quality_affects_module_slots?: boolean
    /**
     * The max number of ingredients this crafting machine prototype supports.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ingredient_count Online documentation}
     */
    readonly ingredient_count?: uint32
    /**
     * The max number of item products this crafting machine prototype supports.
     *
     * _Can only be used if this is CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_item_product_count Online documentation}
     */
    readonly max_item_product_count?: uint32
    /**
     * The {@link LuaRecipeCategoryPrototype crafting categories} this entity prototype supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#crafting_categories Online documentation}
     */
    readonly crafting_categories?: Record<string, true>
    /**
     * Effect receiver prototype of this crafting machine, lab, or mining drill.
     *
     * _Can only be used if this is CraftingMachine, Lab or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effect_receiver Online documentation}
     */
    readonly effect_receiver?: EffectReceiver
    /**
     * _Can only be used if this is MiningDrill or CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vector_to_place_result Online documentation}
     */
    readonly vector_to_place_result?: Vector
  }
  /**
   * @noSelf
   */
  export interface CharacterEntityPrototype extends BaseEntityPrototype {
    /**
     * The crafting speed of this crafting-machine or character.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_crafting_speed Online documentation}
     */
    get_crafting_speed(quality?: QualityID): double
    /**
     * The mining speed of this mining drill/character prototype.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mining_speed Online documentation}
     */
    readonly mining_speed?: double
    /**
     * The {@link LuaRecipeCategoryPrototype crafting categories} this entity prototype supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is CraftingMachine or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#crafting_categories Online documentation}
     */
    readonly crafting_categories?: Record<string, true>
    /**
     * The {@link LuaResourceCategoryPrototype resource categories} this character or mining drill supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_categories Online documentation}
     */
    readonly resource_categories?: Record<string, true>
    /**
     * Whether this unit, car, or character prototype has belt immunity.
     *
     * _Can only be used if this is Unit, Car or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_belt_immunity Online documentation}
     */
    readonly has_belt_immunity?: boolean
    /**
     * The movement speed of this character prototype.
     *
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#running_speed Online documentation}
     */
    readonly running_speed?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#maximum_corner_sliding_distance Online documentation}
     */
    readonly maximum_corner_sliding_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#build_distance Online documentation}
     */
    readonly build_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#drop_item_distance Online documentation}
     */
    readonly drop_item_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#reach_distance Online documentation}
     */
    readonly reach_distance?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#reach_resource_distance Online documentation}
     */
    readonly reach_resource_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#item_pickup_distance Online documentation}
     */
    readonly item_pickup_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loot_pickup_distance Online documentation}
     */
    readonly loot_pickup_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enter_vehicle_distance Online documentation}
     */
    readonly enter_vehicle_distance?: double
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_keep_gun Online documentation}
     */
    readonly ticks_to_keep_gun?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_keep_aiming_direction Online documentation}
     */
    readonly ticks_to_keep_aiming_direction?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_to_stay_in_combat Online documentation}
     */
    readonly ticks_to_stay_in_combat?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#respawn_time Online documentation}
     */
    readonly respawn_time?: uint32
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damage_hit_tint Online documentation}
     */
    readonly damage_hit_tint?: Color
    /**
     * _Can only be used if this is Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#character_corpse Online documentation}
     */
    readonly character_corpse?: LuaEntityPrototype
  }
  /**
   * @noSelf
   */
  export interface ElectricPoleEntityPrototype extends BaseEntityPrototype {
    /**
     * The supply area of this electric pole or beacon prototype.
     *
     * _Can only be used if this is ElectricPole or Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_supply_area_distance Online documentation}
     */
    get_supply_area_distance(quality?: QualityID): double
    /**
     * _Can only be used if this is ElectricPole_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rewire_neighbours_when_destroying Online documentation}
     */
    readonly rewire_neighbours_when_destroying: boolean
  }
  /**
   * @noSelf
   */
  export interface BeaconEntityPrototype extends BaseEntityPrototype {
    /**
     * The supply area of this electric pole or beacon prototype.
     *
     * _Can only be used if this is ElectricPole or Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_supply_area_distance Online documentation}
     */
    get_supply_area_distance(quality?: QualityID): double
    /**
     * _Can only be used if this is Beacon, CraftingMachine, MiningDrill or Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_module_slots Online documentation}
     */
    readonly quality_affects_module_slots?: boolean
    /**
     * The distribution effectivity for this beacon prototype.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distribution_effectivity Online documentation}
     */
    readonly distribution_effectivity?: double
    /**
     * The distribution effectivity bonus per quality level for this beacon prototype.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distribution_effectivity_bonus_per_quality_level Online documentation}
     */
    readonly distribution_effectivity_bonus_per_quality_level?: double
    /**
     * The beacon profile: extra multiplier applied to the effects received from beacon by the effect receiver based on amount of beacons that reach that effect receiver
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#profile Online documentation}
     */
    readonly profile?: double[]
    /**
     * The beacon counter used by effect receiver when deciding which sample to take from beacon profile.
     *
     * _Can only be used if this is Beacon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#beacon_counter Online documentation}
     */
    readonly beacon_counter?: "total" | "same_type"
  }
  /**
   * @noSelf
   */
  export interface FlyingRobotEntityPrototype extends BaseEntityPrototype {
    /**
     * The max energy for this flying robot prototype.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_energy Online documentation}
     */
    get_max_energy(quality?: QualityID): double | nil
    /**
     * The default speed of this flying robot, rolling stock or unit. For rolling stocks, this is their `max_speed`.
     *
     * _Can only be used if this is FlyingRobot, RollingStock or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed Online documentation}
     */
    readonly speed?: double
    /**
     * The speed multiplier when this flying robot is out of energy.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed_multiplier_when_out_of_energy Online documentation}
     */
    readonly speed_multiplier_when_out_of_energy?: float
    /**
     * The energy consumed per tile moved for this flying robot.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_move Online documentation}
     */
    readonly energy_per_move?: double
    /**
     * The energy consumed per tick for this flying robot.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_tick Online documentation}
     */
    readonly energy_per_tick?: double
    /**
     * The minimum energy for this flying robot before it tries to recharge.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_to_charge Online documentation}
     */
    readonly min_to_charge?: float
    /**
     * The maximum energy for this flying robot above which it won't try to recharge when stationing.
     *
     * _Can only be used if this is FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_to_charge Online documentation}
     */
    readonly max_to_charge?: float
    /**
     * The max speed of this projectile or flying robot prototype.
     *
     * _Can only be used if this is Projectile or FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_speed Online documentation}
     */
    readonly max_speed?: double
  }
  /**
   * @noSelf
   */
  export interface InserterEntityPrototype extends BaseEntityPrototype {
    /**
     * The extension speed of this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inserter_extension_speed Online documentation}
     */
    get_inserter_extension_speed(quality?: QualityID): double | nil
    /**
     * The rotation speed of this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_inserter_rotation_speed Online documentation}
     */
    get_inserter_rotation_speed(quality?: QualityID): double | nil
    /**
     * Whether this inserter is a bulk-type.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#bulk Online documentation}
     */
    readonly bulk?: boolean
    /**
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#uses_inserter_stack_size_bonus Online documentation}
     */
    readonly uses_inserter_stack_size_bonus?: boolean
    /**
     * Whether this inserter allows custom pickup and drop vectors.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_custom_vectors Online documentation}
     */
    readonly allow_custom_vectors?: boolean
    /**
     * Whether this inserter allows burner leeching.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_burner_leech Online documentation}
     */
    readonly allow_burner_leech?: boolean
    /**
     * The pickup position for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_pickup_position Online documentation}
     */
    readonly inserter_pickup_position?: Vector
    /**
     * The drop position for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_drop_position Online documentation}
     */
    readonly inserter_drop_position?: Vector
    /**
     * True if this inserter chases items on belts for pickup.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_chases_belt_items Online documentation}
     */
    readonly inserter_chases_belt_items?: boolean
    /**
     * The max belt stack size for this inserter.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_max_belt_stack_size Online documentation}
     */
    readonly inserter_max_belt_stack_size?: uint8
    /**
     * The filter count of this inserter, loader, mining drill or logistic chest. For logistic containers, `nil` means no limit.
     *
     * _Can only be used if this is Inserter, Loader, LogisticContainer or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#filter_count Online documentation}
     */
    readonly filter_count?: uint32
    /**
     * The built-in stack size bonus of this inserter prototype.
     *
     * _Can only be used if this is Inserter_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inserter_stack_size_bonus Online documentation}
     */
    readonly inserter_stack_size_bonus?: uint32
  }
  /**
   * @noSelf
   */
  export interface LabEntityPrototype extends BaseEntityPrototype {
    /**
     * The base researching speed of this lab prototype.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_researching_speed Online documentation}
     */
    get_researching_speed(quality?: QualityID): double | nil
    /**
     * _Can only be used if this is Beacon, CraftingMachine, MiningDrill or Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_module_slots Online documentation}
     */
    readonly quality_affects_module_slots?: boolean
    /**
     * The item prototype names that are the inputs of this lab prototype.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#lab_inputs Online documentation}
     */
    readonly lab_inputs?: string[]
    /**
     * How much science pack durability is required to research one science point.
     *
     * _Can only be used if this is Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#science_pack_drain_rate_percent Online documentation}
     */
    readonly science_pack_drain_rate_percent: uint8
    /**
     * Effect receiver prototype of this crafting machine, lab, or mining drill.
     *
     * _Can only be used if this is CraftingMachine, Lab or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effect_receiver Online documentation}
     */
    readonly effect_receiver?: EffectReceiver
  }
  /**
   * @noSelf
   */
  export interface RadarEntityPrototype extends BaseEntityPrototype {
    /**
     * The radius of the area this radar can chart, in chunks.
     *
     * _Can only be used if this is Radar_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_distance_of_sector_revealed Online documentation}
     */
    get_max_distance_of_sector_revealed(quality?: QualityID): uint32 | nil
    /**
     * The radius of the area constantly revealed by this radar, or cargo landing pad, in chunks.
     *
     * _Can only be used if this is Radar or CargoLandingPad_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_distance_of_nearby_sector_revealed Online documentation}
     */
    get_max_distance_of_nearby_sector_revealed(quality?: QualityID): uint32 | nil
  }
  /**
   * @noSelf
   */
  export interface CargoLandingPadEntityPrototype extends BaseEntityPrototype {
    /**
     * The radius of the area constantly revealed by this radar, or cargo landing pad, in chunks.
     *
     * _Can only be used if this is Radar or CargoLandingPad_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_distance_of_nearby_sector_revealed Online documentation}
     */
    get_max_distance_of_nearby_sector_revealed(quality?: QualityID): uint32 | nil
  }
  /**
   * @noSelf
   */
  export interface GeneratorEntityPrototype extends BaseEntityPrototype {
    /**
     * The fluid usage of this generator, fusion generator or fusion reactor prototype.
     *
     * _Can only be used if this is Generator, FusionGenerator or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_usage_per_tick Online documentation}
     */
    get_fluid_usage_per_tick(quality?: QualityID): double | nil
    /**
     * The maximum power output of this burner generator or generator prototype.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_power_output Online documentation}
     */
    get_max_power_output(quality?: QualityID): double | nil
    /**
     * The effectivity of this car prototype, generator prototype.
     *
     * _Can only be used if this is Car, Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effectivity Online documentation}
     */
    readonly effectivity?: double
    /**
     * The fluid usage of this generator prototype. This property is deprecated in favor of {@link LuaEntityPrototype#get_fluid_usage_per_tick LuaEntityPrototype::get_fluid_usage_per_tick} and should not be used.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_usage_per_tick Online documentation}
     */
    readonly fluid_usage_per_tick?: double
    /**
     * The maximum fluid temperature of this generator prototype.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#maximum_temperature Online documentation}
     */
    readonly maximum_temperature?: double
    /**
     * Whether this generator prototype burns fluid.
     *
     * _Can only be used if this is Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#burns_fluid Online documentation}
     */
    readonly burns_fluid?: boolean
    /**
     * Whether this generator prototype scales fluid usage.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#scale_fluid_usage Online documentation}
     */
    readonly scale_fluid_usage?: boolean
    /**
     * Whether this generator prototype destroys non-fuel fluids.
     *
     * _Can only be used if this is Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#destroy_non_fuel_fluid Online documentation}
     */
    readonly destroy_non_fuel_fluid?: boolean
    /**
     * The default maximum power output of this generator prototype. This property is deprecated in favor of {@link LuaEntityPrototype#get_max_power_output LuaEntityPrototype::get_max_power_output} and should not be used.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_power_output Online documentation}
     */
    readonly max_power_output?: double
  }
  /**
   * @noSelf
   */
  export interface FusionGeneratorEntityPrototype extends BaseEntityPrototype {
    /**
     * The fluid usage of this generator, fusion generator or fusion reactor prototype.
     *
     * _Can only be used if this is Generator, FusionGenerator or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_usage_per_tick Online documentation}
     */
    get_fluid_usage_per_tick(quality?: QualityID): double | nil
    /**
     * The effectivity of this car prototype, generator prototype.
     *
     * _Can only be used if this is Car, Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effectivity Online documentation}
     */
    readonly effectivity?: double
    /**
     * Whether this generator prototype burns fluid.
     *
     * _Can only be used if this is Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#burns_fluid Online documentation}
     */
    readonly burns_fluid?: boolean
  }
  /**
   * @noSelf
   */
  export interface FusionReactorEntityPrototype extends BaseEntityPrototype {
    /**
     * The fluid usage of this generator, fusion generator or fusion reactor prototype.
     *
     * _Can only be used if this is Generator, FusionGenerator or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_fluid_usage_per_tick Online documentation}
     */
    get_fluid_usage_per_tick(quality?: QualityID): double | nil
    /**
     * The target temperature of this boiler or fusion reactor prototype. If `nil` on a fusion reactor, the target temperature is the default temperature of the output fluid.
     *
     * _Can only be used if this is Boiler or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#target_temperature Online documentation}
     */
    readonly target_temperature?: float
    /**
     * _Can only be used if this is Reactor or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#neighbour_bonus Online documentation}
     */
    readonly neighbour_bonus?: double
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#two_direction_only Online documentation}
     */
    readonly two_direction_only?: boolean
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#perceived_performance Online documentation}
     */
    readonly perceived_performance?: PerceivedPerformance
    /**
     * _Can only be used if this is FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#neighbour_connectable Online documentation}
     */
    readonly neighbour_connectable?: NeighbourConnectable
  }
  /**
   * @noSelf
   */
  export interface BurnerGeneratorEntityPrototype extends BaseEntityPrototype {
    /**
     * The maximum power output of this burner generator or generator prototype.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_max_power_output Online documentation}
     */
    get_max_power_output(quality?: QualityID): double | nil
    /**
     * The default maximum power output of this generator prototype. This property is deprecated in favor of {@link LuaEntityPrototype#get_max_power_output LuaEntityPrototype::get_max_power_output} and should not be used.
     *
     * _Can only be used if this is BurnerGenerator or Generator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_power_output Online documentation}
     */
    readonly max_power_output?: double
  }
  /**
   * @noSelf
   */
  export interface OffshorePumpEntityPrototype extends BaseEntityPrototype {
    /**
     * The pumping speed of this offshore pump or normal pump.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_pumping_speed Online documentation}
     */
    get_pumping_speed(quality?: QualityID): double
    /**
     * The pumping speed of this offshore pump or normal pump. This property is deprecated in favor of {@link LuaEntityPrototype#get_pumping_speed LuaEntityPrototype::get_pumping_speed} and should not be used.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#pumping_speed Online documentation}
     */
    readonly pumping_speed?: double
    /**
     * _Can only be used if this is OffshorePump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_source_offset Online documentation}
     */
    readonly fluid_source_offset?: Vector
  }
  /**
   * @noSelf
   */
  export interface PumpEntityPrototype extends BaseEntityPrototype {
    /**
     * The pumping speed of this offshore pump or normal pump.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_pumping_speed Online documentation}
     */
    get_pumping_speed(quality?: QualityID): double
    /**
     * The pumping speed of this offshore pump or normal pump. This property is deprecated in favor of {@link LuaEntityPrototype#get_pumping_speed LuaEntityPrototype::get_pumping_speed} and should not be used.
     *
     * _Can only be used if this is OffshorePump or Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#pumping_speed Online documentation}
     */
    readonly pumping_speed?: double
    /**
     * _Can only be used if this is Pump_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flow_scaling Online documentation}
     */
    readonly flow_scaling?: boolean
  }
  /**
   * @noSelf
   */
  export interface ValveEntityPrototype extends BaseEntityPrototype {
    /**
     * The maximum flow rate through this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_valve_flow_rate Online documentation}
     */
    get_valve_flow_rate(quality?: QualityID): double
    /**
     * The mode of operation of this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#valve_mode Online documentation}
     */
    readonly valve_mode?: ValveMode
    /**
     * The default threshold of this valve.
     *
     * _Can only be used if this is Valve_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#valve_threshold Online documentation}
     */
    readonly valve_threshold?: float
  }
  /**
   * @noSelf
   */
  export interface MiningDrillEntityPrototype extends BaseEntityPrototype {
    /**
     * The mining radius of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_mining_drill_radius Online documentation}
     */
    get_mining_drill_radius(quality?: QualityID): double | nil
    /**
     * The mining radius of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mining_drill_radius Online documentation}
     */
    readonly mining_drill_radius?: double
    /**
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_mining_radius Online documentation}
     */
    readonly quality_affects_mining_radius?: boolean
    /**
     * The mining speed of this mining drill/character prototype.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#mining_speed Online documentation}
     */
    readonly mining_speed?: double
    /**
     * The resource drain rate percent of this mining drill prototype.
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_drain_rate_percent Online documentation}
     */
    readonly resource_drain_rate_percent?: uint8
    /**
     * If this drill uses force productivity bonus
     *
     * _Can only be used if this is MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#uses_force_mining_productivity_bonus Online documentation}
     */
    readonly uses_force_mining_productivity_bonus?: boolean
    /**
     * _Can only be used if this is Beacon, CraftingMachine, MiningDrill or Lab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#quality_affects_module_slots Online documentation}
     */
    readonly quality_affects_module_slots?: boolean
    /**
     * The {@link LuaResourceCategoryPrototype resource categories} this character or mining drill supports.
     *
     * The value in the dictionary is meaningless and exists just to allow for easy lookup.
     *
     * _Can only be used if this is MiningDrill or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_categories Online documentation}
     */
    readonly resource_categories?: Record<string, true>
    /**
     * The filter count of this inserter, loader, mining drill or logistic chest. For logistic containers, `nil` means no limit.
     *
     * _Can only be used if this is Inserter, Loader, LogisticContainer or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#filter_count Online documentation}
     */
    readonly filter_count?: uint32
    /**
     * Effect receiver prototype of this crafting machine, lab, or mining drill.
     *
     * _Can only be used if this is CraftingMachine, Lab or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effect_receiver Online documentation}
     */
    readonly effect_receiver?: EffectReceiver
    /**
     * _Can only be used if this is MiningDrill or CraftingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vector_to_place_result Online documentation}
     */
    readonly vector_to_place_result?: Vector
  }
  /**
   * @noSelf
   */
  export interface LightningAttractorEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is LightningAttractor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_attraction_range_elongation Online documentation}
     */
    get_attraction_range_elongation(quality?: QualityID): double | nil
    /**
     * _Can only be used if this is LightningAttractor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#get_energy_distribution_efficiency Online documentation}
     */
    get_energy_distribution_efficiency(quality?: QualityID): double | nil
  }
  export interface ResourceEntityPrototype extends BaseEntityPrototype {
    /**
     * Whether this resource is infinite.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#infinite_resource Online documentation}
     */
    readonly infinite_resource?: boolean
    /**
     * Minimum amount of this resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#minimum_resource_amount Online documentation}
     */
    readonly minimum_resource_amount?: uint32
    /**
     * The normal amount for this resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#normal_resource_amount Online documentation}
     */
    readonly normal_resource_amount?: uint32
    /**
     * Every time this infinite resource 'ticks' down, it is reduced by this amount. Meaningless if this isn't an infinite resource.
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#infinite_depletion_resource_amount Online documentation}
     */
    readonly infinite_depletion_resource_amount?: uint32
    /**
     * Name of the category of this resource.
     *
     * During data stage, this property is named "category".
     *
     * _Can only be used if this is ResourceEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resource_category Online documentation}
     */
    readonly resource_category?: string
  }
  export interface EntityWithHealthEntityPrototype extends BaseEntityPrototype {
    /**
     * Corpses used when this entity is destroyed. It is a dictionary indexed by the corpse's prototype name.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#corpses Online documentation}
     */
    readonly corpses?: Record<string, LuaEntityPrototype>
    /**
     * List of resistances towards each damage type. It is a dictionary indexed by damage type names (see `data/base/prototypes/damage-type.lua`).
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#resistances Online documentation}
     */
    readonly resistances?: Record<string, Resistance>
    /**
     * Loot that will be dropped when this entity is killed, if any.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loot Online documentation}
     */
    readonly loot?: Loot[]
    /**
     * Repair-speed modifier for this entity, if any. Actual repair speed will be `tool_repair_speed * entity_repair_speed_modifier`.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#repair_speed_modifier Online documentation}
     */
    readonly repair_speed_modifier?: float
    /**
     * Whether this entity raises an alert when damaged.
     *
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_when_damaged Online documentation}
     */
    readonly alert_when_damaged?: boolean
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#overkill_fraction Online documentation}
     */
    readonly overkill_fraction?: float
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_explosion Online documentation}
     */
    readonly dying_explosion?: ExplosionDefinition[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_trigger_effect Online documentation}
     */
    readonly dying_trigger_effect?: TriggerEffectItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damaged_trigger_effect Online documentation}
     */
    readonly damaged_trigger_effect?: TriggerEffectItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attack_reaction Online documentation}
     */
    readonly attack_reaction?: AttackReactionItem[]
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#hide_resistances Online documentation}
     */
    readonly hide_resistances?: boolean
    /**
     * _Can only be used if this is EntityWithHealth_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#random_corpse_variation Online documentation}
     */
    readonly random_corpse_variation?: boolean
  }
  export interface VehicleEntityPrototype extends BaseEntityPrototype {
    /**
     * The weight of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#weight Online documentation}
     */
    readonly weight?: double
    /**
     * The friction of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#friction_force Online documentation}
     */
    readonly friction_force?: double
    /**
     * The braking force of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#braking_force Online documentation}
     */
    readonly braking_force?: double
    /**
     * The energy used per hit point taken for this vehicle during collisions.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_per_hit_point Online documentation}
     */
    readonly energy_per_hit_point?: double
    /**
     * The terrain friction modifier for this vehicle.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#terrain_friction_modifier Online documentation}
     */
    readonly terrain_friction_modifier?: float
    /**
     * Whether this vehicle allows passengers.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_passengers Online documentation}
     */
    readonly allow_passengers?: boolean
    /**
     * The chunk exploration radius of this vehicle prototype.
     *
     * _Can only be used if this is Vehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#chunk_exploration_radius Online documentation}
     */
    readonly chunk_exploration_radius?: double
  }
  export interface TurretEntityPrototype extends BaseEntityPrototype {
    /**
     * The range of this turret.
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turret_range Online documentation}
     */
    readonly turret_range?: uint32
    /**
     * Whether this turret raises an alert when attacking
     *
     * _Can only be used if this is Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#alert_when_attacking Online documentation}
     */
    readonly alert_when_attacking?: boolean
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decoration Online documentation}
     */
    readonly spawn_decoration?: TriggerEffectItem[]
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decorations_on_expansion Online documentation}
     */
    readonly spawn_decorations_on_expansion?: boolean
  }
  export interface TransportBeltConnectableEntityPrototype extends BaseEntityPrototype {
    /**
     * The speed of this transport belt.
     *
     * _Can only be used if this is TransportBeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_speed Online documentation}
     */
    readonly belt_speed?: double
  }
  export interface SpawnerEntityPrototype extends BaseEntityPrototype {
    /**
     * The result units and spawn points with weight and evolution factor for a biter spawner entity.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#result_units Online documentation}
     */
    readonly result_units?: UnitSpawnDefinition[]
    /**
     * The spawning cooldown for this enemy spawner prototype.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_cooldown Online documentation}
     */
    readonly spawn_cooldown?: {
      readonly min: double
      readonly max: double
    }
    /**
     * The minimum darkness at which this unit spawner can spawn entities.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_darkness_to_spawn Online documentation}
     */
    readonly min_darkness_to_spawn?: float
    /**
     * The maximum darkness at which this unit spawner can spawn entities.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_darkness_to_spawn Online documentation}
     */
    readonly max_darkness_to_spawn?: float
    /**
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#call_for_help_radius Online documentation}
     */
    readonly call_for_help_radius?: double
    /**
     * Count of enemies this spawner can sustain.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_count_of_owned_units Online documentation}
     */
    readonly max_count_of_owned_units?: double
    /**
     * Count of defensive enemies this spawner can sustain.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_count_of_owned_defensive_units Online documentation}
     */
    readonly max_count_of_owned_defensive_units?: double
    /**
     * How many friendly units are required within the spawning_radius of this spawner for it to stop producing more units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_friends_around_to_spawn Online documentation}
     */
    readonly max_friends_around_to_spawn?: double
    /**
     * How many defensive friendly units are required within the spawning_radius of this spawner for it to stop producing more units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_defensive_friends_around_to_spawn Online documentation}
     */
    readonly max_defensive_friends_around_to_spawn?: double
    /**
     * How far from the spawner can the units be spawned.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_radius Online documentation}
     */
    readonly spawning_radius?: double
    /**
     * What spaces should be between the spawned units.
     *
     * _Can only be used if this is Spawner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_spacing Online documentation}
     */
    readonly spawning_spacing?: double
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decoration Online documentation}
     */
    readonly spawn_decoration?: TriggerEffectItem[]
    /**
     * _Can only be used if this is Spawner or Turret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawn_decorations_on_expansion Online documentation}
     */
    readonly spawn_decorations_on_expansion?: boolean
  }
  export interface ProjectileEntityPrototype extends BaseEntityPrototype {
    /**
     * The final attack result for this projectile.
     *
     * _Can only be used if this is Projectile_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#final_attack_result Online documentation}
     */
    readonly final_attack_result?: TriggerItem[]
    /**
     * The max speed of this projectile or flying robot prototype.
     *
     * _Can only be used if this is Projectile or FlyingRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_speed Online documentation}
     */
    readonly max_speed?: double
  }
  export interface SegmentedUnitEntityPrototype extends BaseEntityPrototype {
    /**
     * The revenge attack parameters for this entity, if any. These attack parameters are used in addition to {@link LuaEntityPrototype#attack_parameters LuaEntityPrototype::attack_parameters} if the entity is attacking a target that has previously dealt damage to the entity.
     *
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#revenge_attack_parameters Online documentation}
     */
    readonly revenge_attack_parameters?: AttackParameters
    /**
     * The vision distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit, Unit or SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vision_distance Online documentation}
     */
    readonly vision_distance?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#territory_radius Online documentation}
     */
    readonly territory_radius?: uint32
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enraged_duration Online documentation}
     */
    readonly enraged_duration?: MapTick
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#patrolling_speed Online documentation}
     */
    readonly patrolling_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#investigating_speed Online documentation}
     */
    readonly investigating_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attacking_speed Online documentation}
     */
    readonly attacking_speed?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#enraged_speed Online documentation}
     */
    readonly enraged_speed: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#acceleration_rate Online documentation}
     */
    readonly acceleration_rate: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turn_radius Online documentation}
     */
    readonly turn_radius?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#patrolling_turn_radius Online documentation}
     */
    readonly patrolling_turn_radius?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turn_smoothing Online documentation}
     */
    readonly turn_smoothing?: double
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ticks_per_scan Online documentation}
     */
    readonly ticks_per_scan?: uint32
    /**
     * _Can only be used if this is SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#segment_engine Online documentation}
     */
    readonly segment_engine?: SegmentEngineSpecification
  }
  export interface LogisticContainerEntityPrototype extends BaseEntityPrototype {
    /**
     * The logistic mode of this logistic container.
     *
     * _Can only be used if this is LogisticContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_mode Online documentation}
     */
    readonly logistic_mode?: "requester" | "active-provider" | "passive-provider" | "buffer" | "storage" | "none"
    /**
     * The filter count of this inserter, loader, mining drill or logistic chest. For logistic containers, `nil` means no limit.
     *
     * _Can only be used if this is Inserter, Loader, LogisticContainer or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#filter_count Online documentation}
     */
    readonly filter_count?: uint32
    /**
     * Whether this logistic container prototype uses exact mode
     *
     * _Can only be used if this is LogisticContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#use_exact_mode Online documentation}
     */
    readonly use_exact_mode?: boolean
  }
  export interface UndergroundBeltEntityPrototype extends BaseEntityPrototype {
    /**
     * The max underground distance for underground belts and underground pipes.
     *
     * _Can only be used if this is UndergroundBelt or PipeToGround_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_underground_distance Online documentation}
     */
    readonly max_underground_distance?: uint8
  }
  export interface PipeToGroundEntityPrototype extends BaseEntityPrototype {
    /**
     * The max underground distance for underground belts and underground pipes.
     *
     * _Can only be used if this is UndergroundBelt or PipeToGround_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_underground_distance Online documentation}
     */
    readonly max_underground_distance?: uint8
  }
  export interface SegmentEntityPrototype extends BaseEntityPrototype {
    /**
     * The trigger effects to run every tick when on cooldown.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#update_effects Online documentation}
     */
    readonly update_effects?: TriggerEffectWithCooldown[]
    /**
     * The trigger effects to run every tick when on cooldown while the owning {@link LuaSegmentedUnit} is enraged.
     *
     * _Can only be used if this is Segment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#update_effects_while_enraged Online documentation}
     */
    readonly update_effects_while_enraged?: TriggerEffectWithCooldown[]
  }
  export interface ProgrammableSpeakerEntityPrototype extends BaseEntityPrototype {
    /**
     * The instruments for this programmable speaker.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#instruments Online documentation}
     */
    readonly instruments?: ProgrammableSpeakerInstrument[]
    /**
     * The maximum polyphony for this programmable speaker.
     *
     * _Can only be used if this is ProgrammableSpeaker_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_polyphony Online documentation}
     */
    readonly max_polyphony?: uint32
  }
  export interface ContainerEntityPrototype extends BaseEntityPrototype {
    /**
     * The inventory type this container or linked container uses.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_type Online documentation}
     */
    readonly inventory_type?:
      | "normal"
      | "with_bar"
      | "with_filters"
      | "with_filters_and_bar"
      | "with_weight_limit"
      | "with_custom_stack_size"
    /**
     * Weight limit of the inventory if inventory_type is `"with_weight_limit"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_weight_limit Online documentation}
     */
    readonly inventory_weight_limit?: Weight
    /**
     * Properties of custom inventory. Only provided if inventory_type is `"with_custom_stack_size"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_properties Online documentation}
     */
    readonly inventory_properties?: InventoryWithCustomStackSizeSpecification
  }
  export interface LinkedContainerEntityPrototype extends BaseEntityPrototype {
    /**
     * The inventory type this container or linked container uses.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_type Online documentation}
     */
    readonly inventory_type?:
      | "normal"
      | "with_bar"
      | "with_filters"
      | "with_filters_and_bar"
      | "with_weight_limit"
      | "with_custom_stack_size"
    /**
     * Weight limit of the inventory if inventory_type is `"with_weight_limit"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_weight_limit Online documentation}
     */
    readonly inventory_weight_limit?: Weight
    /**
     * Properties of custom inventory. Only provided if inventory_type is `"with_custom_stack_size"`.
     *
     * _Can only be used if this is ContainerEntity or LinkedContainer_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_properties Online documentation}
     */
    readonly inventory_properties?: InventoryWithCustomStackSizeSpecification
  }
  export interface CarEntityPrototype extends BaseEntityPrototype {
    /**
     * The effectivity of this car prototype, generator prototype.
     *
     * _Can only be used if this is Car, Generator or FusionGenerator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#effectivity Online documentation}
     */
    readonly effectivity?: double
    /**
     * The energy consumption of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#consumption Online documentation}
     */
    readonly consumption?: double
    /**
     * If this car prototype uses tank controls to drive.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tank_driving Online documentation}
     */
    readonly tank_driving?: boolean
    /**
     * The rotation speed of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rotation_speed Online documentation}
     */
    readonly rotation_speed?: double
    /**
     * The rotation snap angle of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rotation_snap_angle Online documentation}
     */
    readonly rotation_snap_angle?: double
    /**
     * The turret rotation speed of this car prototype.
     *
     * _Can only be used if this is Car_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#turret_rotation_speed Online documentation}
     */
    readonly turret_rotation_speed?: float
    /**
     * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
     *
     * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#indexed_guns Online documentation}
     */
    readonly indexed_guns?: LuaItemPrototype[]
    /**
     * Whether this unit, car, or character prototype has belt immunity.
     *
     * _Can only be used if this is Unit, Car or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_belt_immunity Online documentation}
     */
    readonly has_belt_immunity?: boolean
  }
  export interface RollingStockEntityPrototype extends BaseEntityPrototype {
    /**
     * The air resistance of this rolling stock prototype.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#air_resistance Online documentation}
     */
    readonly air_resistance?: double
    /**
     * The default speed of this flying robot, rolling stock or unit. For rolling stocks, this is their `max_speed`.
     *
     * _Can only be used if this is FlyingRobot, RollingStock or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed Online documentation}
     */
    readonly speed?: double
    /**
     * Vertical selection shift used by rolling stocks. It affects selection box vertical position but is also used to shift rolling stock graphics along the rails to fine tune train's look.
     *
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vertical_selection_shift Online documentation}
     */
    readonly vertical_selection_shift?: double
    /**
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#connection_distance Online documentation}
     */
    readonly connection_distance?: double
    /**
     * _Can only be used if this is RollingStock_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#joint_distance Online documentation}
     */
    readonly joint_distance?: double
  }
  export interface SpiderVehicleEntityPrototype extends BaseEntityPrototype {
    /**
     * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
     *
     * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#indexed_guns Online documentation}
     */
    readonly indexed_guns?: LuaItemPrototype[]
    /**
     * The height of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#height Online documentation}
     */
    readonly height?: double
    /**
     * The torso rotation speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_rotation_speed Online documentation}
     */
    readonly torso_rotation_speed?: double
    /**
     * The torso bob speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_bob_speed Online documentation}
     */
    readonly torso_bob_speed?: double
    /**
     * Whether this spider vehicle prototype automatically cycles weapons.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automatic_weapon_cycling Online documentation}
     */
    readonly automatic_weapon_cycling?: boolean
    /**
     * The chain shooting cooldown modifier of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#chain_shooting_cooldown_modifier Online documentation}
     */
    readonly chain_shooting_cooldown_modifier?: double
    /**
     * _Can only be used if this is SpiderVehicle or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spider_engine Online documentation}
     */
    readonly spider_engine?: SpiderEngineSpecification
  }
  export interface ArtilleryTurretEntityPrototype extends BaseEntityPrototype {
    /**
     * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
     *
     * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#indexed_guns Online documentation}
     */
    readonly indexed_guns?: LuaItemPrototype[]
    /**
     * The amount of ammo that inserters automatically insert into this ammo turret, artillery turret or artillery wagon.
     *
     * _Can only be used if this is ArtilleryTurret, ArtilleryWagon or AmmoTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automated_ammo_count Online documentation}
     */
    readonly automated_ammo_count?: uint32
    /**
     * The manual range modifier for this artillery turret or wagon prototype.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#manual_range_modifier Online documentation}
     */
    readonly manual_range_modifier?: double
  }
  export interface ArtilleryWagonEntityPrototype extends BaseEntityPrototype {
    /**
     * A vector of the gun prototypes of this car, spider vehicle, artillery wagon, or turret.
     *
     * _Can only be used if this is Car, SpiderVehicle, ArtilleryTurret or ArtilleryWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#indexed_guns Online documentation}
     */
    readonly indexed_guns?: LuaItemPrototype[]
    /**
     * The amount of ammo that inserters automatically insert into this ammo turret, artillery turret or artillery wagon.
     *
     * _Can only be used if this is ArtilleryTurret, ArtilleryWagon or AmmoTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automated_ammo_count Online documentation}
     */
    readonly automated_ammo_count?: uint32
    /**
     * The manual range modifier for this artillery turret or wagon prototype.
     *
     * _Can only be used if this is ArtilleryWagon or ArtilleryTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#manual_range_modifier Online documentation}
     */
    readonly manual_range_modifier?: double
  }
  export interface UnitEntityPrototype extends BaseEntityPrototype {
    /**
     * The default speed of this flying robot, rolling stock or unit. For rolling stocks, this is their `max_speed`.
     *
     * _Can only be used if this is FlyingRobot, RollingStock or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#speed Online documentation}
     */
    readonly speed?: double
    /**
     * Whether this unit, car, or character prototype has belt immunity.
     *
     * _Can only be used if this is Unit, Car or Character_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#has_belt_immunity Online documentation}
     */
    readonly has_belt_immunity?: boolean
    /**
     * The vision distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit, Unit or SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vision_distance Online documentation}
     */
    readonly vision_distance?: double
    /**
     * A table of pollutions amounts that has to be absorbed by the unit's spawner before the unit will leave the spawner and attack the source of the pollution, indexed by the name of each absorbed pollution type.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#absorptions_to_join_attack Online documentation}
     */
    readonly absorptions_to_join_attack?: Record<string, float>
    /**
     * The minimum pursue time of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_pursue_time Online documentation}
     */
    readonly min_pursue_time?: uint32
    /**
     * The maximum pursue distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_pursue_distance Online documentation}
     */
    readonly max_pursue_distance?: double
    /**
     * The radar range of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#radar_range Online documentation}
     */
    readonly radar_range?: uint32
    /**
     * Whether this unit prototype can move while shooting.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#move_while_shooting Online documentation}
     */
    readonly move_while_shooting?: boolean
    /**
     * Whether this unit prototype can open gates.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#can_open_gates Online documentation}
     */
    readonly can_open_gates?: boolean
    /**
     * Whether this unit prototype is affected by tile walking speed modifiers.
     *
     * _Can only be used if this is Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#affected_by_tiles Online documentation}
     */
    readonly affected_by_tiles?: boolean
    /**
     * The distraction cooldown of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distraction_cooldown Online documentation}
     */
    readonly distraction_cooldown?: uint32
    /**
     * The spawning time modifier of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_time_modifier Online documentation}
     */
    readonly spawning_time_modifier?: double
  }
  export interface RobotWithLogisticsInterfaceEntityPrototype extends BaseEntityPrototype {
    /**
     * The cargo carrying capacity of this logistics or construction robot.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_payload_size Online documentation}
     */
    readonly max_payload_size?: uint32
    /**
     * The maximum possible cargo carrying capacity of this logistics or construction robot. Bonuses from technologies/forces can't increase the carrying capacity beyond this number.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_payload_size_after_bonus Online documentation}
     */
    readonly max_payload_size_after_bonus?: uint32
    /**
     * Whether this logistics or construction robot renders its cargo when flying.
     *
     * _Can only be used if this is RobotWithLogisticsInterface_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#draw_cargo Online documentation}
     */
    readonly draw_cargo?: boolean
  }
  export interface BoilerEntityPrototype extends BaseEntityPrototype {
    /**
     * The target temperature of this boiler or fusion reactor prototype. If `nil` on a fusion reactor, the target temperature is the default temperature of the output fluid.
     *
     * _Can only be used if this is Boiler or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#target_temperature Online documentation}
     */
    readonly target_temperature?: float
    /**
     * The boiler operation mode of this boiler prototype.
     *
     * _Can only be used if this is Boiler_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#boiler_mode Online documentation}
     */
    readonly boiler_mode?: "heat-fluid-inside" | "output-to-separate-pipe"
  }
  export interface LoaderEntityPrototype extends BaseEntityPrototype {
    /**
     * The max belt stack size for this loader.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_max_belt_stack_size Online documentation}
     */
    readonly loader_max_belt_stack_size?: uint8
    /**
     * True if this loader supports a runtime-adjustable belt stack size.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_adjustable_belt_stack_size Online documentation}
     */
    readonly loader_adjustable_belt_stack_size?: boolean
    /**
     * True if this loader will not drop items for which total amount is less than a full belt stack.
     *
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_wait_for_full_stack Online documentation}
     */
    readonly loader_wait_for_full_stack?: boolean
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#loader_respect_insert_limits Online documentation}
     */
    readonly loader_respect_insert_limits?: boolean
    /**
     * The filter count of this inserter, loader, mining drill or logistic chest. For logistic containers, `nil` means no limit.
     *
     * _Can only be used if this is Inserter, Loader, LogisticContainer or MiningDrill_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#filter_count Online documentation}
     */
    readonly filter_count?: uint32
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#container_distance Online documentation}
     */
    readonly container_distance?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_distance Online documentation}
     */
    readonly belt_distance?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#belt_length Online documentation}
     */
    readonly belt_length?: double
    /**
     * _Can only be used if this is Loader_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#per_lane_filters Online documentation}
     */
    readonly per_lane_filters?: boolean
  }
  export interface SimpleEntityPrototype extends BaseEntityPrototype {
    /**
     * If this simple-entity is counted as a rock for the deconstruction planner "trees and rocks only" filter.
     *
     * _Can only be used if this is SimpleEntity_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#count_as_rock_for_filtered_deconstruction Online documentation}
     */
    readonly count_as_rock_for_filtered_deconstruction?: boolean
  }
  export interface ExplosionEntityPrototype extends BaseEntityPrototype {
    /**
     * Whether this explosion has a beam.
     *
     * _Can only be used if this is Explosion_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#explosion_beam Online documentation}
     */
    readonly explosion_beam?: double
    /**
     * Whether this explosion rotates.
     *
     * _Can only be used if this is Explosion_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#explosion_rotate Online documentation}
     */
    readonly explosion_rotate?: double
  }
  export interface TreeEntityPrototype extends BaseEntityPrototype {
    /**
     * If it is a tree, return the number of colors it supports.
     *
     * _Can only be used if this is Tree_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tree_color_count Online documentation}
     */
    readonly tree_color_count?: uint8
  }
  export interface RocketSiloEntityPrototype extends BaseEntityPrototype {
    /**
     * The rocket parts required for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_parts_required Online documentation}
     */
    readonly rocket_parts_required?: uint32
    /**
     * The rocket rising delay for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_rising_delay Online documentation}
     */
    readonly rocket_rising_delay?: uint8
    /**
     * The rocket launch delay for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#launch_wait_time Online documentation}
     */
    readonly launch_wait_time?: uint8
    /**
     * The light blinking speed for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#light_blinking_speed Online documentation}
     */
    readonly light_blinking_speed?: double
    /**
     * The door opening speed for this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#door_opening_speed Online documentation}
     */
    readonly door_opening_speed?: double
    /**
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#launch_to_space_platforms Online documentation}
     */
    readonly launch_to_space_platforms?: boolean
    /**
     * The rocket entity prototype associated with this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rocket_entity_prototype Online documentation}
     */
    readonly rocket_entity_prototype?: LuaEntityPrototype
    /**
     * The active energy usage of this rocket silo or combinator prototype.
     *
     * _Can only be used if this is RocketSilo or Combinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#active_energy_usage Online documentation}
     */
    readonly active_energy_usage?: double
    /**
     * The lamp energy usage of this rocket silo prototype.
     *
     * _Can only be used if this is RocketSilo_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#lamp_energy_usage Online documentation}
     */
    readonly lamp_energy_usage?: double
  }
  export interface RocketSiloRocketEntityPrototype extends BaseEntityPrototype {
    /**
     * The rising speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#rising_speed Online documentation}
     */
    readonly rising_speed?: double
    /**
     * The engine starting speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#engine_starting_speed Online documentation}
     */
    readonly engine_starting_speed?: double
    /**
     * The flying speed for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flying_speed Online documentation}
     */
    readonly flying_speed?: double
    /**
     * The flying acceleration for this rocket silo rocket prototype.
     *
     * _Can only be used if this is RocketSiloRocket_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#flying_acceleration Online documentation}
     */
    readonly flying_acceleration?: double
  }
  export interface AssemblingMachineEntityPrototype extends BaseEntityPrototype {
    /**
     * The fixed recipe name for this assembling machine prototype, if any.
     *
     * _Can only be used if this is AssemblingMachine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fixed_recipe Online documentation}
     */
    readonly fixed_recipe?: string
  }
  export interface RoboportEntityPrototype extends BaseEntityPrototype {
    /**
     * The construction radius for this roboport prototype.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#construction_radius Online documentation}
     */
    readonly construction_radius?: double
    /**
     * The logistic radius for this roboport prototype.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_radius Online documentation}
     */
    readonly logistic_radius?: double
    /**
     * The logistic parameters for this roboport.
     *
     * _Can only be used if this is Roboport_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#logistic_parameters Online documentation}
     */
    readonly logistic_parameters?: {
      readonly spawn_and_station_height: float
      readonly spawn_and_station_shadow_height_offset: float
      readonly stationing_render_layer_swap_height: float
      readonly charge_approach_distance: float
      readonly logistic_radius: float
      readonly construction_radius: float
      readonly charging_station_count: uint32
      readonly charging_distance: float
      readonly charging_station_shift: Vector
      readonly charging_energy: double
      readonly charging_threshold_distance: float
      readonly robot_vertical_acceleration: float
      readonly stationing_offset: Vector
      readonly robot_limit: uint32
      readonly logistics_connection_distance: float
      readonly robots_shrink_when_entering_and_exiting: boolean
    }
  }
  export interface LandMineEntityPrototype extends BaseEntityPrototype {
    /**
     * Name of the ammo category of this land mine.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#ammo_category Online documentation}
     */
    readonly ammo_category?: string
    /**
     * The time it takes this land mine to arm.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#timeout Online documentation}
     */
    readonly timeout?: uint32
    /**
     * The collision mask entities must collide with to make this landmine blow up.
     *
     * _Can only be used if this is LandMine_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#trigger_collision_mask Online documentation}
     */
    readonly trigger_collision_mask?: CollisionMask
  }
  export interface ReactorEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is Reactor or FusionReactor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#neighbour_bonus Online documentation}
     */
    readonly neighbour_bonus?: double
  }
  export interface AmmoTurretEntityPrototype extends BaseEntityPrototype {
    /**
     * The amount of ammo that inserters automatically insert into this ammo turret, artillery turret or artillery wagon.
     *
     * _Can only be used if this is ArtilleryTurret, ArtilleryWagon or AmmoTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#automated_ammo_count Online documentation}
     */
    readonly automated_ammo_count?: uint32
  }
  export interface LampEntityPrototype extends BaseEntityPrototype {
    /**
     * Value between 0 and 1 darkness where all lamps of this lamp prototype are on.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#darkness_for_all_lamps_on Online documentation}
     */
    readonly darkness_for_all_lamps_on?: float
    /**
     * Value between 0 and 1 darkness where all lamps of this lamp prototype are off.
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#darkness_for_all_lamps_off Online documentation}
     */
    readonly darkness_for_all_lamps_off?: float
    /**
     * Whether the lamp is always on (except when out of power or turned off by the circuit network).
     *
     * _Can only be used if this is Lamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#always_on Online documentation}
     */
    readonly always_on?: boolean
  }
  export interface CliffEntityPrototype extends BaseEntityPrototype {
    /**
     * The item prototype name used to destroy this cliff.
     *
     * _Can only be used if this is Cliff_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#cliff_explosive_prototype Online documentation}
     */
    readonly cliff_explosive_prototype?: string
  }
  export interface SpiderUnitEntityPrototype extends BaseEntityPrototype {
    /**
     * The vision distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit, Unit or SegmentedUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#vision_distance Online documentation}
     */
    readonly vision_distance?: double
    /**
     * A table of pollutions amounts that has to be absorbed by the unit's spawner before the unit will leave the spawner and attack the source of the pollution, indexed by the name of each absorbed pollution type.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#absorptions_to_join_attack Online documentation}
     */
    readonly absorptions_to_join_attack?: Record<string, float>
    /**
     * The minimum pursue time of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_pursue_time Online documentation}
     */
    readonly min_pursue_time?: uint32
    /**
     * The maximum pursue distance of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_pursue_distance Online documentation}
     */
    readonly max_pursue_distance?: double
    /**
     * The radar range of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#radar_range Online documentation}
     */
    readonly radar_range?: uint32
    /**
     * The distraction cooldown of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#distraction_cooldown Online documentation}
     */
    readonly distraction_cooldown?: uint32
    /**
     * The spawning time modifier of this unit prototype.
     *
     * _Can only be used if this is SpiderUnit or Unit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spawning_time_modifier Online documentation}
     */
    readonly spawning_time_modifier?: double
    /**
     * The height of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#height Online documentation}
     */
    readonly height?: double
    /**
     * The torso rotation speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_rotation_speed Online documentation}
     */
    readonly torso_rotation_speed?: double
    /**
     * The torso bob speed of this spider vehicle prototype.
     *
     * _Can only be used if this is SpiderUnit or SpiderVehicle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#torso_bob_speed Online documentation}
     */
    readonly torso_bob_speed?: double
    /**
     * _Can only be used if this is SpiderVehicle or SpiderUnit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#spider_engine Online documentation}
     */
    readonly spider_engine?: SpiderEngineSpecification
  }
  export interface MarketEntityPrototype extends BaseEntityPrototype {
    /**
     * Whether this market allows access to all forces or just friendly ones.
     *
     * _Can only be used if this is Market_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_access_to_all_forces Online documentation}
     */
    readonly allow_access_to_all_forces?: boolean
  }
  export interface TransportBeltEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is TransportBelt_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#related_underground_belt Online documentation}
     */
    readonly related_underground_belt?: LuaEntityPrototype
  }
  export interface EntityWithOwnerEntityPrototype extends BaseEntityPrototype {
    /**
     * True if this entity-with-owner is military target
     *
     * _Can only be used if this is EntityWithOwner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#is_military_target Online documentation}
     */
    readonly is_military_target?: boolean
    /**
     * True if this entity-with-owner's is_military_target can be changed run-time (on the entity, not on the prototype itself)
     *
     * _Can only be used if this is EntityWithOwner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#allow_run_time_change_of_is_military_target Online documentation}
     */
    readonly allow_run_time_change_of_is_military_target?: boolean
  }
  export interface BeltConnectableEntityPrototype extends BaseEntityPrototype {
    /**
     * The animation speed coefficient of this belt connectable prototype.
     *
     * _Can only be used if this is BeltConnectable_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#animation_speed_coefficient Online documentation}
     */
    readonly animation_speed_coefficient?: double
  }
  export interface CorpseEntityPrototype extends BaseEntityPrototype {
    /**
     * The dying time of this corpse prototype.
     *
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#dying_speed Online documentation}
     */
    readonly dying_speed?: float
    /**
     * _Can only be used if this is Corpse_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#auto_setup_collision_box Online documentation}
     */
    readonly auto_setup_collision_box: boolean
  }
  export interface CombinatorEntityPrototype extends BaseEntityPrototype {
    /**
     * The active energy usage of this rocket silo or combinator prototype.
     *
     * _Can only be used if this is RocketSilo or Combinator_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#active_energy_usage Online documentation}
     */
    readonly active_energy_usage?: double
  }
  export interface AgriculturalTowerEntityPrototype extends BaseEntityPrototype {
    /**
     * The crane energy usage of this agricultural tower prototype.
     *
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#crane_energy_usage Online documentation}
     */
    readonly crane_energy_usage?: double
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#agricultural_tower_radius Online documentation}
     */
    readonly agricultural_tower_radius?: double
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_area_radius Online documentation}
     */
    readonly growth_area_radius?: double
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_grid_tile_size Online documentation}
     */
    readonly growth_grid_tile_size?: uint32
    /**
     * _Can only be used if this is AgriculturalTower_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#accepted_seeds Online documentation}
     */
    readonly accepted_seeds?: string[]
  }
  export interface PlantEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#growth_ticks Online documentation}
     */
    readonly growth_ticks?: uint32
    /**
     * A table of pollutants that this plant will release when it is harvested.
     *
     * _Can only be used if this is Plant_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#harvest_emissions Online documentation}
     */
    readonly harvest_emissions?: Record<string, double>
  }
  export interface SolarPanelEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_performance_at_day Online documentation}
     */
    readonly solar_panel_performance_at_day: double
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_performance_at_night Online documentation}
     */
    readonly solar_panel_performance_at_night: double
    /**
     * _Can only be used if this is SolarPanel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#solar_panel_solar_coefficient_property Online documentation}
     */
    readonly solar_panel_solar_coefficient_property: LuaSurfacePropertyPrototype
  }
  export interface EnemySpawnerEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is EnemySpawnerPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#captured_spawner_entity Online documentation}
     */
    readonly captured_spawner_entity?: LuaEntityPrototype
  }
  export interface ThrusterEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is ThrusterPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#min_performance Online documentation}
     */
    readonly min_performance?: ThrusterPerformancePoint
    /**
     * _Can only be used if this is ThrusterPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#max_performance Online documentation}
     */
    readonly max_performance?: ThrusterPerformancePoint
  }
  export interface RailSupportEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is RailSupport or RailRamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#support_range Online documentation}
     */
    readonly support_range?: float
  }
  export interface RailRampEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is RailSupport or RailRamp_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#support_range Online documentation}
     */
    readonly support_range?: float
  }
  export interface AsteroidCollectorEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_inventory_size_quality_increase Online documentation}
     */
    readonly arm_inventory_size_quality_increase?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#inventory_size_quality_increase Online documentation}
     */
    readonly inventory_size_quality_increase?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#passive_energy_usage Online documentation}
     */
    readonly passive_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_energy_usage Online documentation}
     */
    readonly arm_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_slow_energy_usage Online documentation}
     */
    readonly arm_slow_energy_usage?: double
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy_usage_quality_scaling Online documentation}
     */
    readonly energy_usage_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_count_base Online documentation}
     */
    readonly arm_count_base?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_count_quality_scaling Online documentation}
     */
    readonly arm_count_quality_scaling?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#head_collection_radius Online documentation}
     */
    readonly head_collection_radius?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#collection_box_offset Online documentation}
     */
    readonly collection_box_offset?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#deposit_radius Online documentation}
     */
    readonly deposit_radius?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_speed_base Online documentation}
     */
    readonly arm_speed_base?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_speed_quality_scaling Online documentation}
     */
    readonly arm_speed_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_angular_speed_cap_base Online documentation}
     */
    readonly arm_angular_speed_cap_base?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_angular_speed_cap_quality_scaling Online documentation}
     */
    readonly arm_angular_speed_cap_quality_scaling?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#tether_size Online documentation}
     */
    readonly tether_size?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#unpowered_arm_speed_scale Online documentation}
     */
    readonly unpowered_arm_speed_scale?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#minimal_arm_swing_segment_retraction Online documentation}
     */
    readonly minimal_arm_swing_segment_retraction?: uint32
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_offset Online documentation}
     */
    readonly held_items_offset?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_spread Online documentation}
     */
    readonly held_items_spread?: float
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#held_items_display_count Online documentation}
     */
    readonly held_items_display_count?: uint8
    /**
     * _Can only be used if this is AsteroidCollector_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#arm_color_gradient Online documentation}
     */
    readonly arm_color_gradient?: Color[]
  }
  export interface FluidTurretEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_buffer_size Online documentation}
     */
    readonly fluid_buffer_size?: FluidAmount
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#activation_buffer_ratio Online documentation}
     */
    readonly activation_buffer_ratio?: FluidAmount
    /**
     * _Can only be used if this is FluidTurret_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#fluid_buffer_input_flow Online documentation}
     */
    readonly fluid_buffer_input_flow?: FluidAmount
  }
  export interface CombatRobotEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#range_from_player Online documentation}
     */
    readonly range_from_player?: double
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#combat_robot_friction Online documentation}
     */
    readonly combat_robot_friction?: double
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#destroy_action Online documentation}
     */
    readonly destroy_action?: TriggerItem[]
    /**
     * _Can only be used if this is CombatRobot_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#follows_player Online documentation}
     */
    readonly follows_player?: boolean
  }
  export interface LightningEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#strike_effect Online documentation}
     */
    readonly strike_effect?: TriggerItem[]
    /**
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#attractor_hit_effect Online documentation}
     */
    readonly attractor_hit_effect?: TriggerItem[]
    /**
     * When lightning strikes something that is not a lightning attractor, this damage is applied to the target.
     *
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#damage Online documentation}
     */
    readonly damage?: double
    /**
     * When lightning hits a lightning attractor this amount of energy is transferred to the lightning attractor.
     *
     * _Can only be used if this is Lightning_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#energy Online documentation}
     */
    readonly energy?: double
  }
  export interface FluidWagonEntityPrototype extends BaseEntityPrototype {
    /**
     * _Can only be used if this is FluidWagon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEntityPrototype.html#connection_category Online documentation}
     */
    readonly connection_category: string[]
  }
  /**
   * An item in a {@link LuaEquipmentGrid}, for example a fusion reactor placed in one's power armor.
   *
   * An equipment reference becomes invalid once the equipment is removed or the equipment grid it resides in is destroyed.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html Online documentation}
   */
  export interface LuaEquipment {
    /**
     * Name of this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#name Online documentation}
     */
    readonly name: string
    /**
     * Name of the equipment contained in this ghost
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#ghost_name Online documentation}
     */
    readonly ghost_name: string
    /**
     * Type of this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#type Online documentation}
     */
    readonly type: EquipmentType
    /**
     * Type of the equipment contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#ghost_type Online documentation}
     */
    readonly ghost_type: EquipmentType
    /**
     * Quality of this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * Position of this equipment in the equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#position Online documentation}
     */
    readonly position: EquipmentPosition
    /**
     * Shape of this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#shape Online documentation}
     */
    readonly shape: {
      readonly width: uint32
      readonly height: uint32
    }
    /**
     * Current shield value of the equipment. Can't be set higher than {@link LuaEquipment#max_shield LuaEquipment::max_shield}.
     *
     * Trying to write this value on non-shield equipment will throw an error.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#shield Online documentation}
     */
    shield: double
    /**
     * Maximum shield value. `0` if this equipment doesn't have a shield.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#max_shield Online documentation}
     */
    readonly max_shield: double
    /**
     * Maximum energy per tick crated by this equipment on the current surface. Actual generated energy varies depending on the daylight levels.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#max_solar_power Online documentation}
     */
    readonly max_solar_power: double
    /**
     * Inventory size bonus.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#inventory_bonus Online documentation}
     */
    readonly inventory_bonus: uint32
    /**
     * Movement speed bonus.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#movement_bonus Online documentation}
     */
    readonly movement_bonus: double
    /**
     * Energy generated per tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#generator_power Online documentation}
     */
    readonly generator_power: double
    /**
     * Current available energy.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#energy Online documentation}
     */
    energy: double
    /**
     * Maximum amount of energy that can be stored in this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#max_energy Online documentation}
     */
    readonly max_energy: double
    readonly prototype: LuaEquipmentPrototype
    /**
     * The prototype of the equipment contained in this ghost.
     *
     * _Can only be used if this is Ghost_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#ghost_prototype Online documentation}
     */
    readonly ghost_prototype: LuaEquipmentPrototype
    /**
     * The burner energy source for this equipment, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#burner Online documentation}
     */
    readonly burner?: LuaBurner
    /**
     * If this equipment is marked to be removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipment.html#to_be_removed Online documentation}
     */
    readonly to_be_removed: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipment"
  }
  /**
   * Prototype of an equipment category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentCategoryPrototype.html Online documentation}
   */
  export interface LuaEquipmentCategoryPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipmentCategoryPrototype"
  }
  /**
   * An equipment grid is for example the inside of a power armor.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html Online documentation}
   * @noSelf
   */
  export interface LuaEquipmentGrid {
    /**
     * Remove an equipment from the grid.
     * @returns The removed equipment, or `nil` if no equipment was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#take Online documentation}
     */
    take(params: {
      /**
       * Take the equipment that contains this position in the grid.
       */
      readonly position?: EquipmentPosition | EquipmentPositionArray
      /**
       * Take this exact equipment.
       */
      readonly equipment?: LuaEquipment
      /**
       * If provided the action is done 'as' this player and {@link OnPlayerRemovedEquipmentEvent on_player_removed_equipment} is triggered.
       */
      readonly by_player?: PlayerIdentification
    }): ItemWithQualityCount | nil
    /**
     * Remove all equipment from the grid.
     * @param by_player If provided, the action is done 'as' this player and {@link OnPlayerRemovedEquipmentEvent on_player_removed_equipment} is triggered.
     * @returns List of the equipment that has been removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#take_all Online documentation}
     */
    take_all(by_player?: PlayerIdentification): ItemWithQualityCounts
    /**
     * Clear all equipment from the grid, removing it without actually returning it.
     * @param by_player If provided, the action is done 'as' this player and {@link OnPlayerRemovedEquipmentEvent on_player_removed_equipment} is triggered.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#clear Online documentation}
     */
    clear(by_player?: PlayerIdentification): void
    /**
     * Insert an equipment into the grid.
     * @returns The newly-added equipment, or `nil` if the equipment could not be added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#put Online documentation}
     */
    put(params: {
      /**
       * Equipment prototype name
       */
      readonly name: EquipmentID
      /**
       * The quality, `nil` for any or if not provided `normal` is used.
       */
      readonly quality?: QualityID
      /**
       * Grid position to put the equipment in.
       */
      readonly position?: EquipmentPosition | EquipmentPositionArray
      /**
       * If provided the action is done 'as' this player and {@link OnPlayerPlacedEquipmentEvent on_player_placed_equipment} is triggered.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If true, place the equipment as a ghost.
       */
      readonly ghost?: boolean
    }): LuaEquipment | nil
    /**
     * Check whether moving an equipment would succeed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#can_move Online documentation}
     */
    can_move(params: {
      /**
       * The equipment to move
       */
      readonly equipment: LuaEquipment
      /**
       * Where to put it
       */
      readonly position: EquipmentPosition | EquipmentPositionArray
    }): boolean
    /**
     * Move an equipment within this grid.
     * @returns `true` if the equipment was successfully moved.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#move Online documentation}
     */
    move(params: {
      /**
       * The equipment to move
       */
      readonly equipment: LuaEquipment
      /**
       * Where to put it
       */
      readonly position: EquipmentPosition | EquipmentPositionArray
    }): boolean
    /**
     * Find equipment in the Equipment Grid colliding with this position.
     * @param position The position
     * @returns The found equipment, or `nil` if equipment occupying the given position could not be found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#get Online documentation}
     */
    get(position: EquipmentPosition | EquipmentPositionArray): LuaEquipment | nil
    /**
     * Get counts of all equipment in this grid.
     * @returns List of all equipment in the grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#get_contents Online documentation}
     */
    get_contents(): EquipmentWithQualityCounts[]
    /**
     * Total energy per tick generated by the equipment inside this grid.
     * @param quality Defaults to `"normal"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#get_generator_energy Online documentation}
     */
    get_generator_energy(quality?: QualityID): double
    /**
     * Find equipment by name.
     * @param equipment Prototype of the equipment to find.
     * @param search_ghosts If ghosts inner equipment should be searched. Defaults to `false`
     * @returns The first found equipment, or `nil` if equipment could not be found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#find Online documentation}
     */
    find(equipment: EquipmentWithQualityID, search_ghosts?: boolean): LuaEquipment | nil
    /**
     * Get the number of all or some equipment in this grid.
     * @param equipment The equipment to count. If not specified, count all equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#count Online documentation}
     */
    count(equipment?: EquipmentWithQualityID): uint32
    /**
     * Revives the given equipment ghost if possible.
     * @param equipment The equipment ghost to revive.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#revive Online documentation}
     */
    revive(equipment: LuaEquipment): LuaEquipment
    /**
     * Marks the given equipment for removal. If the given equipment is a ghost it is removed.
     * @returns If the equipment was successfully marked for removal (or in the case of a ghost; removed.)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#order_removal Online documentation}
     */
    order_removal(equipment: LuaEquipment): boolean
    /**
     * Cancels removal for the given equipment.
     * @returns If the equipment removal was successfully cancelled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#cancel_removal Online documentation}
     */
    cancel_removal(equipment: LuaEquipment): boolean
    readonly prototype: LuaEquipmentGridPrototype
    /**
     * Width of the equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#width Online documentation}
     */
    readonly width: uint32
    /**
     * Height of the equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#height Online documentation}
     */
    readonly height: uint32
    /**
     * All the equipment in this grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#equipment Online documentation}
     */
    readonly equipment: LuaEquipment[]
    /**
     * Maximum energy per tick that can be created by all solar panels in the equipment grid on the current surface. Actual generated energy varies depending on the daylight levels.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#max_solar_energy Online documentation}
     */
    readonly max_solar_energy: double
    /**
     * The total energy stored in all batteries in the equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#available_in_batteries Online documentation}
     */
    readonly available_in_batteries: double
    /**
     * Total energy storage capacity of all batteries in the equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#battery_capacity Online documentation}
     */
    readonly battery_capacity: double
    /**
     * The amount of shield hitpoints this equipment grid currently has across all shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#shield Online documentation}
     */
    readonly shield: float
    /**
     * The maximum amount of shield hitpoints this equipment grid has across all shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#max_shield Online documentation}
     */
    readonly max_shield: float
    /**
     * The total amount of inventory bonus this equipment grid gives.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#inventory_bonus Online documentation}
     */
    readonly inventory_bonus: uint32
    /**
     * The total amount of movement bonus this equipment grid gives.
     *
     * Returns `0` if {@link LuaEquipmentGrid#inhibit_movement_bonus LuaEquipmentGrid::inhibit_movement_bonus} is `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#movement_bonus Online documentation}
     */
    readonly movement_bonus: double
    /**
     * Whether this grid's equipment movement bonus is active.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#inhibit_movement_bonus Online documentation}
     */
    inhibit_movement_bonus: boolean
    /**
     * Unique identifier of this equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#unique_id Online documentation}
     */
    readonly unique_id: uint32
    /**
     * The entity that this equipment grid is owned by (in some inventory or item stack.)
     *
     * If the owning entity is a character owned by some player and the player is disconnected this will return `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#entity_owner Online documentation}
     */
    readonly entity_owner?: LuaEntity
    /**
     * The player that this equipment grid is owned by (in some inventory or item stack.)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#player_owner Online documentation}
     */
    readonly player_owner?: LuaPlayer
    /**
     * The item stack that this equipment grid is owned by.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGrid.html#itemstack_owner Online documentation}
     */
    readonly itemstack_owner?: LuaItemStack
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipmentGrid"
  }
  /**
   * Prototype of an equipment grid.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGridPrototype.html Online documentation}
   */
  export interface LuaEquipmentGridPrototype extends LuaPrototypeBase {
    /**
     * Equipment category names for the {@link LuaEquipmentPrototype#equipment_categories categories} that may be inserted into this equipment grid. The grid will accept any equipment that has at least one category in this list.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGridPrototype.html#equipment_categories Online documentation}
     */
    readonly equipment_categories: string[]
    readonly width: uint32
    readonly height: uint32
    /**
     * If the player can move equipment into or out of this grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentGridPrototype.html#locked Online documentation}
     */
    readonly locked: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipmentGridPrototype"
  }
  /**
   * Prototype of a modular equipment.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html Online documentation}
   * @noSelf
   */
  export interface LuaEquipmentPrototype extends LuaPrototypeBase {
    /**
     * The shield value of this equipment. 0 for non-shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_shield Online documentation}
     */
    get_shield(quality?: QualityID): float
    get_energy_consumption(quality?: QualityID): double
    /**
     * _Can only be used if this is InventoryBonusEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_inventory_bonus Online documentation}
     */
    get_inventory_bonus(quality?: QualityID): uint32 | nil
    /**
     * _Can only be used if this is MovementBonusEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_movement_bonus Online documentation}
     */
    get_movement_bonus(quality?: QualityID): float | nil
    /**
     * Shape of this equipment prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#shape Online documentation}
     */
    readonly shape: {
      readonly width: uint32
      readonly height: uint32
      /**
       * Only set when the shape is "manual"
       */
      readonly points?: EquipmentPoint[]
    }
    /**
     * The result item when taking this equipment out of an equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#take_result Online documentation}
     */
    readonly take_result?: LuaItemPrototype
    /**
     * The max power generated by this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_production Online documentation}
     */
    readonly energy_production: double
    /**
     * The energy per shield point restored. 0 for non-shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_per_shield Online documentation}
     */
    readonly energy_per_shield: double
    /**
     * The logistic parameters for this roboport equipment.
     *
     * _Can only be used if this is RoboportEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#logistic_parameters Online documentation}
     */
    readonly logistic_parameters?: {
      readonly spawn_and_station_height: float
      readonly spawn_and_station_shadow_height_offset: float
      readonly stationing_render_layer_swap_height: float
      readonly charge_approach_distance: float
      readonly logistic_radius: float
      readonly construction_radius: float
      readonly charging_station_count: uint32
      readonly charging_distance: float
      readonly charging_station_shift: Vector
      readonly charging_energy: double
      readonly charging_threshold_distance: float
      readonly robot_vertical_acceleration: float
      readonly stationing_offset: Vector
      readonly robot_limit: uint32
      readonly logistics_connection_distance: float
      readonly robots_shrink_when_entering_and_exiting: boolean
    }
    /**
     * The energy source prototype for the equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_source Online documentation}
     */
    readonly energy_source: LuaElectricEnergySourcePrototype
    /**
     * Category names for this equipment. These {@link LuaEquipmentGridPrototype#equipment_categories categories} will be used to determine whether this equipment is allowed in a particular equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#equipment_categories Online documentation}
     */
    readonly equipment_categories: string[]
    /**
     * The burner energy source prototype this equipment uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#burner_prototype Online documentation}
     */
    readonly burner_prototype?: LuaBurnerPrototype
    /**
     * The electric energy source prototype this equipment uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#electric_energy_source_prototype Online documentation}
     */
    readonly electric_energy_source_prototype?: LuaElectricEnergySourcePrototype
    /**
     * The background color of this equipment prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#background_color Online documentation}
     */
    readonly background_color: Color
    /**
     * The equipment attack parameters.
     *
     * _Can only be used if this is ActiveDefenseEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
    /**
     * Whether this active defense equipment is automatic. Returns false if not active defense equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#automatic Online documentation}
     */
    readonly automatic: boolean
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_performance_at_day Online documentation}
     */
    readonly solar_panel_performance_at_day: double
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_performance_at_night Online documentation}
     */
    readonly solar_panel_performance_at_night: double
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_solar_coefficient_property Online documentation}
     */
    readonly solar_panel_solar_coefficient_property: LuaSurfacePropertyPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipmentPrototype"
  }
  /**
   * @noSelf
   */
  export interface BaseEquipmentPrototype extends LuaPrototypeBase {
    /**
     * The shield value of this equipment. 0 for non-shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_shield Online documentation}
     */
    get_shield(quality?: QualityID): float
    get_energy_consumption(quality?: QualityID): double
    /**
     * Shape of this equipment prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#shape Online documentation}
     */
    readonly shape: {
      readonly width: uint32
      readonly height: uint32
      /**
       * Only set when the shape is "manual"
       */
      readonly points?: EquipmentPoint[]
    }
    /**
     * The result item when taking this equipment out of an equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#take_result Online documentation}
     */
    readonly take_result?: LuaItemPrototype
    /**
     * The max power generated by this equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_production Online documentation}
     */
    readonly energy_production: double
    /**
     * The energy per shield point restored. 0 for non-shield equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_per_shield Online documentation}
     */
    readonly energy_per_shield: double
    /**
     * The energy source prototype for the equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#energy_source Online documentation}
     */
    readonly energy_source: LuaElectricEnergySourcePrototype
    /**
     * Category names for this equipment. These {@link LuaEquipmentGridPrototype#equipment_categories categories} will be used to determine whether this equipment is allowed in a particular equipment grid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#equipment_categories Online documentation}
     */
    readonly equipment_categories: string[]
    /**
     * The burner energy source prototype this equipment uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#burner_prototype Online documentation}
     */
    readonly burner_prototype?: LuaBurnerPrototype
    /**
     * The electric energy source prototype this equipment uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#electric_energy_source_prototype Online documentation}
     */
    readonly electric_energy_source_prototype?: LuaElectricEnergySourcePrototype
    /**
     * The background color of this equipment prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#background_color Online documentation}
     */
    readonly background_color: Color
    /**
     * Whether this active defense equipment is automatic. Returns false if not active defense equipment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#automatic Online documentation}
     */
    readonly automatic: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaEquipmentPrototype"
  }
  /**
   * @noSelf
   */
  export interface InventoryBonusEquipmentPrototype extends BaseEquipmentPrototype {
    /**
     * _Can only be used if this is InventoryBonusEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_inventory_bonus Online documentation}
     */
    get_inventory_bonus(quality?: QualityID): uint32 | nil
  }
  /**
   * @noSelf
   */
  export interface MovementBonusEquipmentPrototype extends BaseEquipmentPrototype {
    /**
     * _Can only be used if this is MovementBonusEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#get_movement_bonus Online documentation}
     */
    get_movement_bonus(quality?: QualityID): float | nil
  }
  export interface RoboportEquipmentPrototype extends BaseEquipmentPrototype {
    /**
     * The logistic parameters for this roboport equipment.
     *
     * _Can only be used if this is RoboportEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#logistic_parameters Online documentation}
     */
    readonly logistic_parameters?: {
      readonly spawn_and_station_height: float
      readonly spawn_and_station_shadow_height_offset: float
      readonly stationing_render_layer_swap_height: float
      readonly charge_approach_distance: float
      readonly logistic_radius: float
      readonly construction_radius: float
      readonly charging_station_count: uint32
      readonly charging_distance: float
      readonly charging_station_shift: Vector
      readonly charging_energy: double
      readonly charging_threshold_distance: float
      readonly robot_vertical_acceleration: float
      readonly stationing_offset: Vector
      readonly robot_limit: uint32
      readonly logistics_connection_distance: float
      readonly robots_shrink_when_entering_and_exiting: boolean
    }
  }
  export interface ActiveDefenseEquipmentPrototype extends BaseEquipmentPrototype {
    /**
     * The equipment attack parameters.
     *
     * _Can only be used if this is ActiveDefenseEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
  }
  export interface SolarPanelEquipmentPrototype extends BaseEquipmentPrototype {
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_performance_at_day Online documentation}
     */
    readonly solar_panel_performance_at_day: double
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_performance_at_night Online documentation}
     */
    readonly solar_panel_performance_at_night: double
    /**
     * _Can only be used if this is SolarPanelEquipment_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaEquipmentPrototype.html#solar_panel_solar_coefficient_property Online documentation}
     */
    readonly solar_panel_solar_coefficient_property: LuaSurfacePropertyPrototype
  }
  /**
   * Encapsulates statistic data for different parts of the game.
   *
   * In the context of flow statistics, `input`, `output` and `storage` describe in which position of the associated GUI the values are shown. Input values are shown on the far left side, output values to the immediate right, and storage values (if present) to the far right.
   *
   * - The item production GUI shows "consumption" on the right, thus `output` describes the item consumption numbers. The same goes for fluid consumption.
   *
   * - The kills GUI shows "losses" on the right, so `output` describes how many of the force's entities were killed by enemies.
   *
   * - The electric network GUI shows "power consumption" on the left side, so in this case `input` describes the power consumption numbers. In addition, electric networks are currently the only ones that utilize the `storage` part of their statistics, showing accumulator charges to the far right of the GUI.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html Online documentation}
   * @noSelf
   */
  export interface LuaFlowStatistics {
    /**
     * Gets the total input count for a given prototype.
     * @param id The prototype ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#get_input_count Online documentation}
     */
    get_input_count(id: FlowStatisticsID): uint64 | double
    /**
     * Sets the total input count for a given prototype.
     * @param id The prototype ID.
     * @param count The new count. The type depends on the instance of the statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#set_input_count Online documentation}
     */
    set_input_count(id: FlowStatisticsID, count: uint64 | double): void
    /**
     * Gets the total output count for a given prototype.
     * @param id The prototype ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#get_output_count Online documentation}
     */
    get_output_count(id: FlowStatisticsID): uint64 | double
    /**
     * Sets the total output count for a given prototype.
     * @param id The prototype ID.
     * @param count The new count. The type depends on the instance of the statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#set_output_count Online documentation}
     */
    set_output_count(id: FlowStatisticsID, count: uint64 | double): void
    /**
     * Gets the total storage count for a given prototype.
     * @param id The prototype ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#get_storage_count Online documentation}
     */
    get_storage_count(id: FlowStatisticsID): uint64 | double
    /**
     * Sets the total storage count for a given prototype.
     * @param id The prototype ID.
     * @param count The new count. The type depends on the instance of the statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#set_storage_count Online documentation}
     */
    set_storage_count(id: FlowStatisticsID, count: uint64 | double): void
    /**
     * Gets the flow count value for the given time frame. If `sample_index` is not provided, then the value returned is the average across the provided precision time period. These are the values shown in the bottom section of the statistics GUIs.
     *
     * Use `sample_index` to access the data used to generate the statistics graphs. Each precision level contains 300 samples of data so at a precision of 1 minute, each sample contains data averaged across 60s / 300 = 0.2s = 12 ticks.
     *
     * All return values are normalized to be per-tick for electric networks and per-minute for all other types.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#get_flow_count Online documentation}
     */
    get_flow_count(params: {
      /**
       * The prototype ID.
       */
      readonly name: FlowStatisticsID
      /**
       * The statistics category to read from. Valid choices are `"input"`, `"output"` and `"storage"`.
       */
      readonly category: "input" | "output" | "storage"
      /**
       * The precision to read.
       */
      readonly precision_index: defines.flow_precision_index
      /**
       * The sample index to read from within the precision range. If not provided, the entire precision range is read. Must be between 1 and 300 where 1 is the most recent sample and 300 is the oldest.
       */
      readonly sample_index?: uint16
      /**
       * If true, the count of items/fluids/entities is returned instead of the per-time-frame value.
       */
      readonly count?: boolean
    }): double
    /**
     * Adds a value to this flow statistics.
     * @param id The prototype ID.
     * @param count The count: positive or negative determines if the value goes in the input or output statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#on_flow Online documentation}
     */
    on_flow(id: FlowStatisticsID, count: float): void
    /**
     * Reset all the statistics data to 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#clear Online documentation}
     */
    clear(): void
    /**
     * List of input counts indexed by prototype name. Represents the data that is shown on the left side of the GUI for the given statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#input_counts Online documentation}
     */
    readonly input_counts: Record<string, uint64 | double>
    /**
     * List of output counts indexed by prototype name. Represents the data that is shown in the middle of the GUI for electric networks and on the right side for all other statistics types.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#output_counts Online documentation}
     */
    readonly output_counts: Record<string, uint64 | double>
    /**
     * List of storage counts indexed by prototype name. Represents the data that is shown on the right side of the GUI for electric networks. For other statistics types these values are currently unused and hidden.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#storage_counts Online documentation}
     */
    readonly storage_counts: Record<string, uint64 | double>
    /**
     * The force these statistics belong to. `nil` for pollution statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFlowStatistics.html#force Online documentation}
     */
    readonly force?: LuaForce
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFlowStatistics"
  }
  /**
   * An array of fluid boxes of an entity. Entities may contain more than one fluid box, and some can change the number of fluid boxes -- for instance, an assembling machine will change its number of fluid boxes depending on its active recipe. See {@link Fluid}.
   *
   * Do note that reading from a {@link LuaFluidBox} creates a new table and writing will copy the given fields from the table into the engine's own fluid box structure. Therefore, the correct way to update a fluidbox of an entity is to read it first, modify the table, then write the modified table back. Directly accessing the returned table's attributes won't have the desired effect.
   * @example
   * -- Double the temperature of the fluid in entity's first fluid box.
   * fluid = entity.fluidbox[1]
   * fluid.temperature = fluid.temperature * 2
   * entity.fluidbox[1] = fluid
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html Online documentation}
   * @noSelf
   */
  export interface LuaFluidBox extends Array<Fluid | nil> {
    /**
     * The prototype of this fluidbox index. If this is used on a fluidbox of a crafting machine which due to recipe was created by merging multiple prototypes, a table of prototypes that were merged will be returned instead
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_prototype Online documentation}
     */
    get_prototype(index: uint32): LuaFluidBoxPrototype | LuaFluidBoxPrototype[]
    /**
     * The capacity of the given fluidbox segment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_capacity Online documentation}
     */
    get_capacity(index: uint32): double
    /**
     * The fluidboxes to which the fluidbox at the given index is connected.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_connections Online documentation}
     */
    get_connections(index: uint32): LuaFluidBox[]
    /**
     * Get the fluid box's connections and associated data.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_pipe_connections Online documentation}
     */
    get_pipe_connections(index: uint32): PipeConnection[]
    /**
     * Get a fluid box filter
     * @param index The index of the filter to get.
     * @returns The filter at the requested index, or `nil` if there isn't one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_filter Online documentation}
     */
    get_filter(index: uint32): FluidBoxFilter | nil
    /**
     * Set a fluid box filter.
     *
     * Some entities cannot have their fluidbox filter set, notably fluid wagons and crafting machines.
     * @param index The index of the filter to set.
     * @param filter The filter to set. Setting `nil` clears the filter.
     * @returns Whether the filter was set successfully.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#set_filter Online documentation}
     */
    set_filter(index: uint32, filter: FluidBoxFilterSpec | nil): boolean
    /**
     * Returns the fluid the fluidbox is locked onto
     * @returns `nil` if the fluidbox is not locked to any fluid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_locked_fluid Online documentation}
     */
    get_locked_fluid(index: uint32): string | nil
    /**
     * Gets the unique ID of the fluid segment this fluid box belongs to. May return `nil` for fluid wagon, fluid turret's internal buffer or a fluidbox which does not belong to a fluid segment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_fluid_segment_id Online documentation}
     */
    get_fluid_segment_id(index: uint32): uint32 | nil
    /**
     * Gets counts of all fluids in the fluid segment. May return `nil` for fluid wagon, fluid turret's internal buffer, or a fluidbox which does not belong to a fluid segment.
     *
     * Note that this method only ever returns one fluid, since fluids can't be mixed anymore.
     * @returns The counts, indexed by fluid name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_fluid_segment_contents Online documentation}
     */
    get_fluid_segment_contents(index: uint32): Record<string, uint32> | nil
    /**
     * Gets the current extent bounding box of the fluid segment this fluid box belongs to. May return `nil` for fluid wagon, fluid turret's internal buffer, or a fluidbox which does not belong to a fluid segment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_fluid_segment_extent_bounding_box Online documentation}
     */
    get_fluid_segment_extent_bounding_box(index: uint32): BoundingBox | nil
    /**
     * Flushes all fluid from this fluidbox and its fluid system.
     * @param fluid If provided, only this fluid is flushed.
     * @returns The removed fluid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#flush Online documentation}
     */
    flush(index: uint32, fluid?: FluidID): Record<string, FluidAmount>
    /**
     * Registers a linked connection between this entity and other entity. Because entity may have multiple fluidboxes, each with multiple connections that could be linked, a unique value for this and other linked_connection_id may need to be given.
     *
     * It may happen a linked connection is not established immediately due to crafting machines being possible to not have certain fluidboxes exposed at a given point in time, but once they appear (due to recipe changes that would use them) they will be linked. Linked connections are persisted as (this_entity, this_linked_connection_id, other_entity, other_linked_connection_id) so if a pipe connection definition's value of linked_connection_id changes existing connections may not restore correct connections.
     *
     * Every fluidbox connection that was defined in prototypes as connection_type=="linked" may be linked to at most 1 other fluidbox. When trying to connect already used connection, previous connection will be removed.
     *
     * Linked connections cannot go to the same entity even if they would be part of other fluidbox.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#add_linked_connection Online documentation}
     */
    add_linked_connection(
      this_linked_connection_id: uint32,
      other_entity: LuaEntity,
      other_linked_connection_id: uint32,
    ): void
    /**
     * Removes linked connection record. If connected, other end will be also removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#remove_linked_connection Online documentation}
     */
    remove_linked_connection(this_linked_connection_id: uint32): void
    /**
     * Returns other end of a linked connection.
     * @returns Other entity to which a linked connection was made
     * @returns linked_connection_id on other entity
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_linked_connection Online documentation}
     */
    get_linked_connection(this_linked_connection_id: uint32): LuaMultiReturn<[LuaEntity | nil, uint32 | nil]>
    /**
     * Returns list of all linked connections registered for this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#get_linked_connections Online documentation}
     */
    get_linked_connections(): FluidBoxConnectionRecord[]
    /**
     * Number of fluid boxes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#length_operator Online documentation}
     */
    readonly length: uint32
    /**
     * Access, set or clear a fluid box. The index must always be in bounds (see {@link LuaFluidBox#length LuaFluidBox::length_operator}). New fluidboxes may not be added or removed using this operator.
     *
     * Is `nil` if the given fluid box does not contain any fluid. Writing `nil` removes all fluid from the fluid box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#index_operator Online documentation}
     */
    [index: number]: Fluid | nil
    /**
     * The entity that owns this fluidbox.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBox.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFluidBox"
  }
  /**
   * A prototype of a fluidbox owned by some {@link LuaEntityPrototype}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html Online documentation}
   */
  export interface LuaFluidBoxPrototype {
    /**
     * The entity that this belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#entity Online documentation}
     */
    readonly entity: LuaEntityPrototype
    /**
     * The index of this fluidbox prototype in the owning entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#index Online documentation}
     */
    readonly index: uint32
    /**
     * The pipe connection points.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#pipe_connections Online documentation}
     */
    readonly pipe_connections: PipeConnectionDefinition[]
    /**
     * The production type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#production_type Online documentation}
     */
    readonly production_type: ProductionType
    readonly volume: double
    /**
     * The filter, if any is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#filter Online documentation}
     */
    readonly filter?: LuaFluidPrototype
    /**
     * The minimum temperature, if any is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#minimum_temperature Online documentation}
     */
    readonly minimum_temperature?: double
    /**
     * The maximum temperature, if any is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#maximum_temperature Online documentation}
     */
    readonly maximum_temperature?: double
    /**
     * The secondary draw orders for the 4 possible connection directions.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#secondary_draw_orders Online documentation}
     */
    readonly secondary_draw_orders: int32[]
    /**
     * The render layer.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidBoxPrototype.html#render_layer Online documentation}
     */
    readonly render_layer: RenderLayer
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFluidBoxPrototype"
  }
  /**
   * Prototype of a fluid energy source.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidEnergySourcePrototype.html Online documentation}
   */
  export interface LuaFluidEnergySourcePrototype {
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. Multiplying it by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidEnergySourcePrototype.html#emissions_per_joule Online documentation}
     */
    readonly emissions_per_joule: Record<string, double>
    readonly render_no_network_icon: boolean
    readonly render_no_power_icon: boolean
    readonly effectivity: double
    readonly burns_fluid: boolean
    readonly scale_fluid_usage: boolean
    readonly destroy_non_fuel_fluid: boolean
    readonly fluid_usage_per_tick: double
    /**
     * The smoke sources for this prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidEnergySourcePrototype.html#smoke Online documentation}
     */
    readonly smoke: SmokeSource[]
    readonly maximum_temperature: double
    /**
     * The fluid box for this energy source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidEnergySourcePrototype.html#fluid_box Online documentation}
     */
    readonly fluid_box: LuaFluidBoxPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFluidEnergySourcePrototype"
  }
  /**
   * Prototype of a fluid.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html Online documentation}
   */
  export interface LuaFluidPrototype extends LuaPrototypeBase {
    /**
     * Default temperature of this fluid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#default_temperature Online documentation}
     */
    readonly default_temperature: double
    /**
     * Maximum temperature this fluid can reach.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#max_temperature Online documentation}
     */
    readonly max_temperature: double
    /**
     * The amount of energy in Joules required to heat one unit of this fluid by 1°C.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#heat_capacity Online documentation}
     */
    readonly heat_capacity: double
    readonly base_color: Color
    readonly flow_color: Color
    /**
     * The temperature above which this fluid will be shown as gaseous inside tanks and pipes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#gas_temperature Online documentation}
     */
    readonly gas_temperature: double
    /**
     * A multiplier on the amount of emissions produced when this fluid is burnt in a generator. A value above `1.0` increases emissions and vice versa. The multiplier can't be negative.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#emissions_multiplier Online documentation}
     */
    readonly emissions_multiplier: double
    /**
     * The amount of energy in Joules one unit of this fluid will produce when burnt in a generator. A value of `0` means this fluid can't be used for energy generation. The value can't be negative.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#fuel_value Online documentation}
     */
    readonly fuel_value: double
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFluidPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaFluidPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFluidPrototype"
  }
  /**
   * Prototype of a font.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFontPrototype.html Online documentation}
   */
  export interface LuaFontPrototype {
    /**
     * Name of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFontPrototype.html#name Online documentation}
     */
    readonly name: string
    readonly from: string
    readonly size: int32
    readonly spacing: float
    readonly border: boolean
    readonly filtered: boolean
    /**
     * The border color, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFontPrototype.html#border_color Online documentation}
     */
    readonly border_color?: Color
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFontPrototype"
  }
  /**
   * `LuaForce` encapsulates data local to each "force" or "faction" of the game. Default forces are player, enemy and neutral. Players and mods can create additional forces (up to 64 total).
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html Online documentation}
   * @noSelf
   */
  export interface LuaForce {
    /**
     * Count entities of given type.
     *
     * This function has O(1) time complexity as entity counts are kept and maintained in the game engine.
     * @param name Prototype name of the entity.
     * @returns Number of entities of given prototype belonging to this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_entity_count Online documentation}
     */
    get_entity_count(name: EntityID): uint32
    /**
     * Disable research for this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#disable_research Online documentation}
     */
    disable_research(): void
    /**
     * Enable research for this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#enable_research Online documentation}
     */
    enable_research(): void
    /**
     * Disable all recipes and technologies. Only recipes and technologies enabled explicitly will be useable from this point.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#disable_all_prototypes Online documentation}
     */
    disable_all_prototypes(): void
    /**
     * Enables all recipes and technologies. The opposite of {@link LuaForce#disable_all_prototypes LuaForce::disable_all_prototypes}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#enable_all_prototypes Online documentation}
     */
    enable_all_prototypes(): void
    /**
     * Load the original version of all recipes from the prototypes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#reset_recipes Online documentation}
     */
    reset_recipes(): void
    /**
     * Unlock all recipes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#enable_all_recipes Online documentation}
     */
    enable_all_recipes(): void
    /**
     * Unlock all technologies.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#enable_all_technologies Online documentation}
     */
    enable_all_technologies(): void
    /**
     * Research all technologies.
     *
     * ## Raised events
     * - {@link OnResearchFinishedEvent on_research_finished} _instantly_
     * @param include_disabled_prototypes Whether technologies that are explicitly disabled in the prototype should also be researched. Defaults to `false`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#research_all_technologies Online documentation}
     */
    research_all_technologies(include_disabled_prototypes?: boolean): void
    /**
     * Load the original versions of technologies from prototypes. Preserves research state of technologies.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#reset_technologies Online documentation}
     */
    reset_technologies(): void
    /**
     * Reset everything. All technologies are set to not researched, all modifiers are set to default values.
     *
     * ## Raised events
     * - {@link OnForceResetEvent on_force_reset} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#reset Online documentation}
     */
    reset(): void
    /**
     * Reapplies all possible research effects, including unlocked recipes. Any custom changes are lost. Preserves research state of technologies.
     *
     * ## Raised events
     * - {@link OnTechnologyEffectsResetEvent on_technology_effects_reset} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#reset_technology_effects Online documentation}
     */
    reset_technology_effects(): void
    /**
     * Chart a portion of the map. The chart for the given area is refreshed; it creates chart for any parts of the given area that haven't been charted yet.
     * @param area The area on the given surface to chart.
     * @example
     * -- Charts a 2048x2048 rectangle centered around the origin.
     * game.player.force.chart(game.player.surface, {{x = -1024, y = -1024}, {x = 1024, y = 1024}})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#chart Online documentation}
     */
    chart(surface: SurfaceIdentification, area: BoundingBoxWrite | BoundingBoxArray): void
    /**
     * Erases chart data for this force.
     * @param surface Which surface to erase chart data for or if not provided all surfaces charts are erased.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#clear_chart Online documentation}
     */
    clear_chart(surface?: SurfaceIdentification): void
    /**
     * Force a rechart of the whole chart.
     * @param surface Which surface to rechart or all if not given.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#rechart Online documentation}
     */
    rechart(surface?: SurfaceIdentification): void
    /**
     * Chart all generated chunks.
     * @param surface Which surface to chart or all if not given.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#chart_all Online documentation}
     */
    chart_all(surface?: SurfaceIdentification): void
    /**
     * Copies all of the given changeable values (except charts) from the given force to this force.
     * @param force The force to copy from.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#copy_from Online documentation}
     */
    copy_from(force: ForceID): void
    /**
     * Copies the given surface's chart from the given force to this force.
     * @param source_force The force to copy from
     * @param source_surface The surface to copy from.
     * @param destination_surface The surface to copy to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#copy_chart Online documentation}
     */
    copy_chart(
      source_force: ForceID,
      source_surface: SurfaceIdentification,
      destination_surface: SurfaceIdentification,
    ): void
    /**
     * Has a chunk been charted?
     * @param chunk_position Position of the chunk.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_chunk_charted Online documentation}
     */
    is_chunk_charted(surface: SurfaceIdentification, chunk_position: ChunkPosition | ChunkPositionArray): boolean
    /**
     * Is the given chunk currently charted and visible (not covered by fog of war) on the map.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_chunk_visible Online documentation}
     */
    is_chunk_visible(surface: SurfaceIdentification, chunk_position: ChunkPosition | ChunkPositionArray): boolean
    /**
     * Has a chunk been requested for charting?
     * @param chunk_position Position of the chunk.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_chunk_requested_for_charting Online documentation}
     */
    is_chunk_requested_for_charting(
      surface: SurfaceIdentification,
      chunk_position: ChunkPosition | ChunkPositionArray,
    ): boolean
    /**
     * Cancels pending chart requests for the given surface or all surfaces.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#cancel_charting Online documentation}
     */
    cancel_charting(surface?: SurfaceIdentification): void
    /**
     * @param ammo Ammo category
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_ammo_damage_modifier Online documentation}
     */
    get_ammo_damage_modifier(ammo: string): double
    /**
     * @param ammo Ammo category
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_ammo_damage_modifier Online documentation}
     */
    set_ammo_damage_modifier(ammo: string, modifier: double): void
    /**
     * @param ammo Ammo category
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_gun_speed_modifier Online documentation}
     */
    get_gun_speed_modifier(ammo: string): double
    /**
     * @param ammo Ammo category
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_gun_speed_modifier Online documentation}
     */
    set_gun_speed_modifier(ammo: string, modifier: double): void
    /**
     * @param turret Turret prototype name
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_turret_attack_modifier Online documentation}
     */
    get_turret_attack_modifier(turret: EntityID): double
    /**
     * @param turret Turret prototype name
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_turret_attack_modifier Online documentation}
     */
    set_turret_attack_modifier(turret: EntityID, modifier: double): void
    /**
     * Add `other` force to this force's cease fire list. Forces on the cease fire list won't be targeted for attack.
     *
     * ## Raised events
     * - {@link OnForceCeaseFireChangedEvent on_force_cease_fire_changed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_cease_fire Online documentation}
     */
    set_cease_fire(other: ForceID, cease_fire: boolean): void
    /**
     * Is `other` force in this force's cease fire list?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_cease_fire Online documentation}
     */
    get_cease_fire(other: ForceID): boolean
    /**
     * Add `other` force to this force's friends list. Friends have unrestricted access to buildings and turrets won't fire at them.
     *
     * ## Raised events
     * - {@link OnForceFriendsChangedEvent on_force_friends_changed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_friend Online documentation}
     */
    set_friend(other: ForceID, friend: boolean): void
    /**
     * Is `other` force in this force's friends list.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_friend Online documentation}
     */
    get_friend(other: ForceID): boolean
    /**
     * Is pathfinder busy? When the pathfinder is busy, it won't accept any more pathfinding requests.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_pathfinder_busy Online documentation}
     */
    is_pathfinder_busy(): boolean
    /**
     * Kill all units and flush the pathfinder.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#kill_all_units Online documentation}
     */
    kill_all_units(): void
    /**
     * @param position Position to find a network for
     * @param surface Surface to search on
     * @returns The found network or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#find_logistic_network_by_position Online documentation}
     */
    find_logistic_network_by_position(
      position: MapPosition | MapPositionArray,
      surface: SurfaceIdentification,
    ): LuaLogisticNetwork | nil
    /**
     * @param position The new position on the given surface.
     * @param surface Surface to set the spawn position for.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_spawn_position Online documentation}
     */
    set_spawn_position(position: MapPosition | MapPositionArray, surface: SurfaceIdentification): void
    get_spawn_position(surface: SurfaceIdentification): MapPosition
    /**
     * @param surface Surface to set hidden for.
     * @param hidden Whether to hide the surface or not.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_surface_hidden Online documentation}
     */
    set_surface_hidden(surface: SurfaceIdentification, hidden: boolean): void
    get_surface_hidden(surface: SurfaceIdentification): boolean
    /**
     * @param chunk_position The chunk position to unchart.
     * @param surface Surface to unchart on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#unchart_chunk Online documentation}
     */
    unchart_chunk(chunk_position: ChunkPosition | ChunkPositionArray, surface: SurfaceIdentification): void
    /**
     * Gets the count of a given item launched in rockets.
     * @param item The item to get
     * @returns The count of the item that has been launched.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_item_launched Online documentation}
     */
    get_item_launched(item: ItemID): uint32
    /**
     * Sets the count of a given item launched in rockets.
     * @param item The item to set
     * @param count The count to set
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_item_launched Online documentation}
     */
    set_item_launched(item: ItemID, count: uint32): void
    /**
     * Print text to the chat console of all players on this force.
     *
     * By default, messages that are identical to a message sent in the last 60 ticks are not printed again.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#print Online documentation}
     */
    print(message: LocalisedString, print_settings?: PrintSettings): void
    /**
     * Adds a custom chart tag to the given surface and returns the new tag or `nil` if the given position isn't valid for a chart tag.
     *
     * The chunk must be charted for a tag to be valid at that location.
     *
     * ## Raised events
     * - {@link OnChartTagAddedEvent on_chart_tag_added}? _instantly_ Raised if the chart tag was successfully added.
     * @param surface Which surface to add the tag to.
     * @param tag The tag to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#add_chart_tag Online documentation}
     */
    add_chart_tag(surface: SurfaceIdentification, tag: ChartTagSpec): LuaCustomChartTag | nil
    /**
     * Finds all custom chart tags within a given area on the given surface. If no area is given all custom chart tags on the surface are returned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#find_chart_tags Online documentation}
     */
    find_chart_tags(surface: SurfaceIdentification, area?: BoundingBoxWrite | BoundingBoxArray): LuaCustomChartTag[]
    /**
     * Resets evolution for this force to zero.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#reset_evolution Online documentation}
     */
    reset_evolution(): void
    /**
     * Play a sound for every player in this force.
     *
     * The sound is not played if its location is not {@link LuaForce#chart charted} for this force.
     * @param sound_specification The sound to play.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#play_sound Online documentation}
     */
    play_sound(sound_specification: PlaySoundSpecification): void
    /**
     * Gets if the given recipe is explicitly disabled from being hand crafted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_hand_crafting_disabled_for_recipe Online documentation}
     */
    get_hand_crafting_disabled_for_recipe(recipe: RecipeID): boolean
    /**
     * Sets if the given recipe can be hand-crafted. This is used to explicitly disable hand crafting a recipe - it won't allow hand-crafting otherwise not hand-craftable recipes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_hand_crafting_disabled_for_recipe Online documentation}
     */
    set_hand_crafting_disabled_for_recipe(recipe: RecipeID, hand_crafting_disabled: boolean): void
    /**
     * Add this technology to the back of the research queue if the queue is enabled. Otherwise, set this technology to be researched now.
     *
     * ## Raised events
     * - {@link OnResearchStartedEvent on_research_started}? _instantly_ Raised if the technology was successfully added.
     * @returns Whether the technology was successfully added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#add_research Online documentation}
     */
    add_research(technology: TechnologyID): boolean
    /**
     * Stop the research currently in progress. This will remove any dependent technologies from the research queue.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#cancel_current_research Online documentation}
     */
    cancel_current_research(): void
    /**
     * Gets the linked inventory for the given prototype and link ID if it exists or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_linked_inventory Online documentation}
     */
    get_linked_inventory(prototype: EntityID, link_id: uint32): LuaInventory | nil
    /**
     * Is this force a friend? This differs from `get_friend` in that it is always true for neutral force. This is equivalent to checking the `friend` ForceCondition.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_friend Online documentation}
     */
    is_friend(other: ForceID): boolean
    /**
     * Is this force an enemy? This differs from `get_cease_fire` in that it is always false for neutral force. This is equivalent to checking the `enemy` ForceCondition.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_enemy Online documentation}
     */
    is_enemy(other: ForceID): boolean
    /**
     * Locks the planet to not be accessible to this force.
     * @param name Name of the planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#lock_space_location Online documentation}
     */
    lock_space_location(name: SpaceLocationID): void
    /**
     * Unlocks the planet to be accessible to this force.
     * @param name Name of the planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#unlock_space_location Online documentation}
     */
    unlock_space_location(name: SpaceLocationID): void
    /**
     * Is the specified planet unlocked for this force?
     * @param name Name of the planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_space_location_unlocked Online documentation}
     */
    is_space_location_unlocked(name: SpaceLocationID): void
    /**
     * Locks the quality to not be accessible to this force.
     * @param quality Name of the quality.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#lock_quality Online documentation}
     */
    lock_quality(quality: QualityID): void
    /**
     * Unlocks the quality to be accessible to this force.
     * @param quality Name of the quality.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#unlock_quality Online documentation}
     */
    unlock_quality(quality: QualityID): void
    /**
     * Is the specified quality unlocked for this force?
     * @param quality Name of the quality.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_quality_unlocked Online documentation}
     */
    is_quality_unlocked(quality: QualityID): void
    /**
     * Locks the space platforms, which disables the space platforms button
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#lock_space_platforms Online documentation}
     */
    lock_space_platforms(): void
    /**
     * Unlocks the space platforms, which enables the space platforms button
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#unlock_space_platforms Online documentation}
     */
    unlock_space_platforms(): void
    /**
     * Are the space platforms unlocked? This basically just controls the availability of the space platforms button.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#is_space_platforms_unlocked Online documentation}
     */
    is_space_platforms_unlocked(): boolean
    /**
     * Creates a new space platform on this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#create_space_platform Online documentation}
     */
    create_space_platform(params: {
      /**
       * The platform name. If not provided, a random name will be used.
       */
      readonly name?: string
      /**
       * The planet that the platform will orbit.
       */
      readonly planet: SpaceLocationID
      /**
       * The starter pack required to build the platform.
       */
      readonly starter_pack: ItemWithQualityID
    }): LuaSpacePlatform | nil
    /**
     * Fetches the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_evolution_factor Online documentation}
     */
    get_evolution_factor(surface?: SurfaceIdentification): double
    /**
     * Fetches the pollution part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_evolution_factor_by_pollution Online documentation}
     */
    get_evolution_factor_by_pollution(surface?: SurfaceIdentification): double
    /**
     * Fetches the time part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_evolution_factor_by_time Online documentation}
     */
    get_evolution_factor_by_time(surface?: SurfaceIdentification): double
    /**
     * Fetches the spawner kill part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_evolution_factor_by_killing_spawners Online documentation}
     */
    get_evolution_factor_by_killing_spawners(surface?: SurfaceIdentification): double
    /**
     * Sets the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_evolution_factor Online documentation}
     */
    set_evolution_factor(factor: double, surface?: SurfaceIdentification): void
    /**
     * Sets the pollution part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_evolution_factor_by_pollution Online documentation}
     */
    set_evolution_factor_by_pollution(factor: double, surface?: SurfaceIdentification): void
    /**
     * Sets the time part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_evolution_factor_by_time Online documentation}
     */
    set_evolution_factor_by_time(factor: double, surface?: SurfaceIdentification): void
    /**
     * Sets the spawner kill part of the evolution factor of this force on the given surface.
     * @param surface Defaults to "nauvis".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#set_evolution_factor_by_killing_spawners Online documentation}
     */
    set_evolution_factor_by_killing_spawners(factor: double, surface?: SurfaceIdentification): void
    /**
     * The item production statistics for this force for the given surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_item_production_statistics Online documentation}
     */
    get_item_production_statistics(surface: SurfaceIdentification): LuaFlowStatistics
    /**
     * The fluid production statistics for this force for the given surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_fluid_production_statistics Online documentation}
     */
    get_fluid_production_statistics(surface: SurfaceIdentification): LuaFlowStatistics
    /**
     * The kill counter statistics for this force for the given surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_kill_count_statistics Online documentation}
     */
    get_kill_count_statistics(surface: SurfaceIdentification): LuaFlowStatistics
    /**
     * The entity build statistics for this force (built and mined) for the given surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_entity_build_count_statistics Online documentation}
     */
    get_entity_build_count_statistics(surface: SurfaceIdentification): LuaFlowStatistics
    /**
     * Gets the names of the current logistic groups.
     * @param type Defaults to `defines.logistic_group_type.with_trash`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_logistic_groups Online documentation}
     */
    get_logistic_groups(type?: defines.logistic_group_type): string[]
    /**
     * Gets the information about the given logistic group.
     * @param type Defaults to `defines.logistic_group_type.with_trash`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_logistic_group Online documentation}
     */
    get_logistic_group(name: string, type?: defines.logistic_group_type): LogisticGroup | nil
    /**
     * Creates the given group if it doesn't already exist.
     * @param type Defaults to `defines.logistic_group_type.with_trash`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#create_logistic_group Online documentation}
     */
    create_logistic_group(name: string, type?: defines.logistic_group_type): void
    /**
     * Deletes the given logistic group if it exists.
     * @param type Defaults to `defines.logistic_group_type.with_trash`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#delete_logistic_group Online documentation}
     */
    delete_logistic_group(name: string, type?: defines.logistic_group_type): void
    /**
     * Gets the raw chart data for a given chunk as a binary string.
     *
     * The pixel data is returned in RGB565 format (2 bytes per pixel).
     *
     * Returns `nil` if the chunk has not been charted for this force.
     * @returns The raw pixel data.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#get_chunk_chart Online documentation}
     */
    get_chunk_chart(surface: SurfaceIdentification, chunk_position: ChunkPosition | ChunkPositionArray): string | nil
    /**
     * Trigger the "scripted" {@link ResearchTrigger research trigger} of a technology, researching it. Does nothing if the technology does not have a "scripted" research trigger.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#script_trigger_research Online documentation}
     */
    script_trigger_research(technology: TechnologyID): void
    /**
     * Name of the force.
     * @example
     * game.player.print(game.player.force.name) -- => "player"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#name Online documentation}
     */
    readonly name: string
    /**
     * Technologies owned by this force, indexed by `name`.
     * @example
     * -- Researches the technology for the player's force
     * game.player.force.technologies["steel-processing"].researched = true
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#technologies Online documentation}
     */
    readonly technologies: LuaCustomTable<string, LuaTechnology>
    /**
     * Recipes available to this force, indexed by `name`.
     * @example
     * -- Prints the category of the given recipe
     * game.player.print(game.player.force.recipes["transport-belt"].category)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#recipes Online documentation}
     */
    readonly recipes: LuaCustomTable<string, LuaRecipe>
    /**
     * Multiplier of the manual mining speed. Default value is `0`. The actual mining speed will be multiplied by `1 + manual_mining_speed_modifier`.
     * @example
     * -- Double the player's mining speed
     * game.player.force.manual_mining_speed_modifier = 1
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#manual_mining_speed_modifier Online documentation}
     */
    manual_mining_speed_modifier: double
    /**
     * Multiplier of the manual crafting speed. Default value is `0`. The actual crafting speed will be multiplied by `1 + manual_crafting_speed_modifier`.
     * @example
     * -- Double the player's crafting speed
     * game.player.force.manual_crafting_speed_modifier = 1
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#manual_crafting_speed_modifier Online documentation}
     */
    manual_crafting_speed_modifier: double
    laboratory_speed_modifier: double
    laboratory_productivity_bonus: double
    worker_robots_speed_modifier: double
    worker_robots_battery_modifier: double
    worker_robots_storage_bonus: double
    /**
     * The currently ongoing technology research, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#current_research Online documentation}
     */
    readonly current_research?: LuaTechnology
    /**
     * Progress of current research, as a number in range `[0, 1]`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#research_progress Online documentation}
     */
    research_progress: double
    /**
     * The previous research, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#previous_research Online documentation}
     */
    previous_research?: LuaTechnology
    /**
     * The inserter stack size bonus for non stack inserters
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#inserter_stack_size_bonus Online documentation}
     */
    inserter_stack_size_bonus: double
    /**
     * Number of items that can be transferred by bulk inserters. When writing to this value, it must be >= 0 and <= 254.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#bulk_inserter_capacity_bonus Online documentation}
     */
    bulk_inserter_capacity_bonus: uint32
    /**
     * Belt stack size bonus.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#belt_stack_size_bonus Online documentation}
     */
    belt_stack_size_bonus: uint32
    /**
     * Number of character trash slots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#character_trash_slot_count Online documentation}
     */
    character_trash_slot_count: double
    /**
     * Maximum number of follower robots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#maximum_following_robot_count Online documentation}
     */
    maximum_following_robot_count: uint32
    /**
     * Additional lifetime for following robots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#following_robots_lifetime_modifier Online documentation}
     */
    following_robots_lifetime_modifier: double
    /**
     * When an entity dies, a ghost will be placed for automatic reconstruction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#create_ghost_on_entity_death Online documentation}
     */
    create_ghost_on_entity_death: boolean
    circuit_network_enabled: boolean
    /**
     * When true, cliffs will be marked for deconstruction when trying to force-build things that collide.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#cliff_deconstruction_enabled Online documentation}
     */
    cliff_deconstruction_enabled: boolean
    mining_with_fluid: boolean
    rail_support_on_deep_oil_ocean: boolean
    rail_planner_allow_elevated_rails: boolean
    /**
     * When true, cars/tanks that support logistics will be able to use them.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#vehicle_logistics Online documentation}
     */
    vehicle_logistics: boolean
    /**
     * Players belonging to this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#players Online documentation}
     */
    readonly players: LuaPlayer[]
    /**
     * Enables some higher-level AI behaviour for this force. When set to `true`, biters belonging to this force will automatically expand into new territories, build new spawners, and form unit groups. By default, this value is `true` for the enemy force and `false` for all others.
     *
     * Setting this to `false` does not turn off biters' AI. They will still move around and attack players who come close.
     *
     * It is necessary for a force to be AI controllable in order to be able to create unit groups or build bases from scripts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#ai_controllable Online documentation}
     */
    ai_controllable: boolean
    /**
     * List of logistic networks, grouped by surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#logistic_networks Online documentation}
     */
    readonly logistic_networks: Record<string, LuaLogisticNetwork[]>
    /**
     * Modifies the running speed of all characters in this force by the given value as a percentage. Setting the running modifier to `0.5` makes the character run 50% faster. The minimum value of `-1` reduces the movement speed by 100%, resulting in a speed of `0`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#character_running_speed_modifier Online documentation}
     */
    character_running_speed_modifier: double
    artillery_range_modifier: double
    beacon_distribution_modifier: double
    character_build_distance_bonus: uint32
    character_item_drop_distance_bonus: uint32
    character_reach_distance_bonus: uint32
    character_resource_reach_distance_bonus: double
    character_item_pickup_distance_bonus: double
    character_loot_pickup_distance_bonus: double
    /**
     * The number of additional inventory slots the character main inventory has.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#character_inventory_slots_bonus Online documentation}
     */
    character_inventory_slots_bonus: uint32
    /**
     * The time, in ticks, before a deconstruction order is removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#deconstruction_time_to_live Online documentation}
     */
    deconstruction_time_to_live: uint32
    character_health_bonus: double
    max_successful_attempts_per_tick_per_construction_queue: uint32
    max_failed_attempts_per_tick_per_construction_queue: uint32
    /**
     * `true` if character requester logistics is enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#character_logistic_requests Online documentation}
     */
    character_logistic_requests: boolean
    /**
     * The number of rockets launched.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#rockets_launched Online documentation}
     */
    rockets_launched: uint32
    /**
     * All of the items that have been launched in rockets.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#items_launched Online documentation}
     */
    readonly items_launched: Record<string, ItemCountType>
    /**
     * The connected players belonging to this force.
     *
     * This is primarily useful when you want to do some action against all online players of this force.
     *
     * This does *not* index using player index. See {@link LuaPlayer#index LuaPlayer::index} on each player instance for the player index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#connected_players Online documentation}
     */
    readonly connected_players: LuaPlayer[]
    mining_drill_productivity_bonus: double
    train_braking_force_bonus: double
    /**
     * If friendly fire is enabled for this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#friendly_fire Online documentation}
     */
    friendly_fire: boolean
    /**
     * If sharing chart data is enabled for this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#share_chart Online documentation}
     */
    share_chart: boolean
    /**
     * This force's index in {@link LuaGameScript#forces LuaGameScript::forces} (unique ID). It is assigned when a force is created, and remains so until it is {@link OnForcesMergedEvent merged} (ie. deleted). Indexes of merged forces can be reused.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#index Online documentation}
     */
    readonly index: ForceIndex
    /**
     * The research queue of this force. The first technology in the array is the currently active one. Reading this attribute gives an array of {@link LuaTechnology}.
     *
     * To write to this, the entire table must be written. Providing an empty table or `nil` will empty the research queue and cancel the current research.  Writing to this when the research queue is disabled will simply set the last research in the table as the current research.
     *
     * This only allows mods to queue research that this force is able to research in the first place. As an example, an already researched technology or one whose prerequisites are not fulfilled will not be queued, but dropped silently instead.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#research_queue Online documentation}
     */
    get research_queue(): LuaTechnologyPrototype[] | nil
    set research_queue(value: readonly TechnologyID[] | nil)
    /**
     * Whether research is enabled for this force, see {@link LuaForce#enable_research LuaForce::enable_research} and {@link LuaForce#disable_research LuaForce::disable_research}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#research_enabled Online documentation}
     */
    readonly research_enabled: boolean
    /**
     * The space platforms that belong to this force mapped by their index value.
     *
     * This will include platforms that are pending deletion.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#platforms Online documentation}
     */
    readonly platforms: Record<uint32, LuaSpacePlatform>
    /**
     * Custom color for this force. If specified, will take priority over other sources of the force color. Writing `nil` clears custom color. Will return `nil` if it was not specified or if was set to `{0,0,0,0}`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#custom_color Online documentation}
     */
    get custom_color(): Color | nil
    set custom_color(value: Color | ColorArray | nil)
    /**
     * Effective color of this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaForce.html#color Online documentation}
     */
    readonly color: Color
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaForce"
  }
  /**
   * Prototype of a fuel category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFuelCategoryPrototype.html Online documentation}
   */
  export interface LuaFuelCategoryPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFuelCategoryPrototype"
  }
  /**
   * Control behavior for furnaces.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html Online documentation}
   */
  export interface LuaFurnaceControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the furnace reads its ingredients contents, product contents and materials in crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_read_contents Online documentation}
     */
    circuit_read_contents: boolean
    /**
     * `true` if the read contents should include items in crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#include_in_crafting Online documentation}
     */
    include_in_crafting: boolean
    /**
     * `true` if the read contents should include fuel (content of energy source)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#include_fuel Online documentation}
     */
    include_fuel: boolean
    /**
     * `true` if the furnace outputs ingredients of current recipe as a signals to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_read_ingredients Online documentation}
     */
    circuit_read_ingredients: boolean
    /**
     * `true` if the the furnace sends a signal when the recipe finishes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_read_recipe_finished Online documentation}
     */
    circuit_read_recipe_finished: boolean
    /**
     * The signal sent when the furnace finishes a recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_recipe_finished_signal Online documentation}
     */
    get circuit_recipe_finished_signal(): SignalID | nil
    set circuit_recipe_finished_signal(value: SignalIDWrite | nil)
    /**
     * `true` if the the furnace sends a signal when it is working.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_read_working Online documentation}
     */
    circuit_read_working: boolean
    /**
     * The signal sent when the furnace is working.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaFurnaceControlBehavior.html#circuit_working_signal Online documentation}
     */
    get circuit_working_signal(): SignalID | nil
    set circuit_working_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaFurnaceControlBehavior"
  }
  /**
   * Main toplevel type, provides access to most of the API though its members. An instance of LuaGameScript is available as the global object named `game`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html Online documentation}
   * @noSelf
   */
  export interface LuaGameScript {
    /**
     * Set scenario state. Any parameters not provided do not change the current state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#set_game_state Online documentation}
     */
    set_game_state(params: {
      readonly game_finished?: boolean
      readonly player_won?: boolean
      readonly next_level?: string
      readonly can_continue?: boolean
    }): void
    /**
     * Reset scenario state (game_finished, player_won, etc.).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#reset_game_state Online documentation}
     */
    reset_game_state(): void
    /**
     * Set winning ending information for the current scenario.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#set_win_ending_info Online documentation}
     */
    set_win_ending_info(params: {
      readonly title: LocalisedString
      readonly message?: LocalisedString
      readonly bullet_points?: readonly LocalisedString[]
      readonly final_message?: LocalisedString
      readonly image_path?: string
    }): void
    /**
     * Set losing ending information for the current scenario.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#set_lose_ending_info Online documentation}
     */
    set_lose_ending_info(params: {
      readonly title: LocalisedString
      readonly message?: LocalisedString
      readonly bullet_points?: readonly LocalisedString[]
      readonly final_message?: LocalisedString
      readonly image_path?: string
    }): void
    /**
     * Gets an entity by its {@link LuaEntity#name_tag name tag}. Entity name tags can also be set in the entity "extra settings" GUI in the map editor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_entity_by_tag Online documentation}
     */
    get_entity_by_tag(tag: string): LuaEntity | nil
    /**
     * Show an in-game message dialog.
     *
     * Can only be used when the map contains exactly one player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#show_message_dialog Online documentation}
     */
    show_message_dialog(params: {
      /**
       * What the dialog should say
       */
      readonly text: LocalisedString
      /**
       * Path to an image to show on the dialog
       */
      readonly image?: string
      /**
       * If specified, dialog will show an arrow pointing to this place. When not specified, the arrow will point to the player's position. (Use `point_to={type="nowhere"}` to remove the arrow entirely.) The dialog itself will be placed near the arrow's target.
       */
      readonly point_to?: GuiArrowSpecification
      /**
       * The gui style to use for this speech bubble. Must be of type speech_bubble.
       */
      readonly style?: string
      /**
       * Must be of type flow_style.
       */
      readonly wrapper_frame_style?: string
    }): void
    /**
     * Is this the demo version of Factorio?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#is_demo Online documentation}
     */
    is_demo(): boolean
    /**
     * Forces a reload of the scenario script from the original scenario location.
     *
     * This disables the replay if replay is enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#reload_script Online documentation}
     */
    reload_script(): void
    /**
     * Forces a reload of all mods.
     *
     * This will act like saving and loading from the mod(s) perspective.
     *
     * This will do nothing if run in multiplayer.
     *
     * This disables the replay if replay is enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#reload_mods Online documentation}
     */
    reload_mods(): void
    /**
     * Saves the current configuration of Atlas to a file. This will result in huge file containing all of the game graphics moved to as small space as possible.
     *
     * Exists mainly for debugging reasons.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#save_atlas Online documentation}
     */
    save_atlas(): void
    /**
     * Run internal consistency checks. Allegedly prints any errors it finds.
     *
     * Exists mainly for debugging reasons.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#check_consistency Online documentation}
     */
    check_consistency(): void
    /**
     * Regenerate autoplacement of some entities on all surfaces. This can be used to autoplace newly-added entities.
     *
     * All specified entity prototypes must be autoplacable.
     * @param entities Prototype names of entity or entities to autoplace.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#regenerate_entity Online documentation}
     */
    regenerate_entity(entities: string | readonly string[]): void
    /**
     * Take a screenshot of the game and save it to the `script-output` folder, located in the game's {@linkplain https://wiki.factorio.com/User_data_directory user data directory}. The name of the image file can be specified via the `path` parameter.
     *
     * If Factorio is running headless, this function will do nothing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#take_screenshot Online documentation}
     */
    take_screenshot(params: {
      /**
       * The player to focus on. Defaults to the local player.
       */
      readonly player?: PlayerIdentification
      /**
       * If defined, the screenshot will only be taken for this player.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If defined, the screenshot will be taken on this surface.
       */
      readonly surface?: SurfaceIdentification
      /**
       * If defined, the screenshot will be centered on this position. Otherwise, the screenshot will center on `player`.
       */
      readonly position?: MapPosition | MapPositionArray
      /**
       * The maximum allowed resolution is 16384x16384 (8192x8192 when `anti_alias` is `true`), but the maximum recommended resolution is 4096x4096 (resp. 2048x2048). The `x` value of the position is used as the width, the `y` value as the height.
       */
      readonly resolution?: TilePosition | TilePositionArray
      /**
       * The map zoom to take the screenshot at. Defaults to `1`.
       */
      readonly zoom?: double
      /**
       * The name of the image file. It should include a file extension indicating the desired format. Supports `.png`, `.jpg` /`.jpeg`, `.tga` and `.bmp`. Providing a directory path (ex. `"save/here/screenshot.png"`) will create the necessary folder structure in `script-output`. Defaults to `"screenshot.png"`.
       */
      readonly path?: string
      /**
       * Whether to include GUIs in the screenshot or not. Defaults to `false`.
       */
      readonly show_gui?: boolean
      /**
       * Whether to include entity info ("Alt mode") or not. Defaults to `false`.
       */
      readonly show_entity_info?: boolean
      /**
       * When `true` and when `player` is specified, the building preview for the item in the player's cursor will also be rendered. Defaults to `false`.
       */
      readonly show_cursor_building_preview?: boolean
      /**
       * Whether to render in double resolution and downscale the result (including GUI). Defaults to `false`.
       */
      readonly anti_alias?: boolean
      /**
       * If `true` cloud shadows on ground won't be rendered. Defaults to `false`.
       */
      readonly hide_clouds?: boolean
      /**
       * If `true` fog effect and foreground space dust effect won't be rendered. Defaults to `false`.
       */
      readonly hide_fog?: boolean
      /**
       * The `.jpg` render quality as a percentage (from 0% to 100% inclusive), if used. A lower value means a more compressed image. Defaults to `80`.
       */
      readonly quality?: int32
      /**
       * Whether to save the screenshot even during replay playback. Defaults to `false`.
       */
      readonly allow_in_replay?: boolean
      /**
       * Overrides the current surface daytime for the duration of screenshot rendering.
       */
      readonly daytime?: double
      /**
       * Overrides the tick of water animation, if animated water is enabled.
       */
      readonly water_tick?: uint32
      /**
       * Screenshot requests are processed in between game update and render. The game may skip rendering (ie. drop frames) if the previous frame has not finished rendering or the game simulation starts to fall below 60 updates per second. If `force_render` is set to `true`, the game won't drop frames and process the screenshot request at the end of the update in which the request was created. This is not honored on multiplayer clients that are catching up to server. Defaults to `false`.
       */
      readonly force_render?: boolean
    }): void
    /**
     * Forces the screenshot saving system to wait until all queued screenshots have been written to disk.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#set_wait_for_screenshots_to_finish Online documentation}
     */
    set_wait_for_screenshots_to_finish(): void
    /**
     * Take a screenshot of the technology screen and save it to the `script-output` folder, located in the game's {@linkplain https://wiki.factorio.com/User_data_directory user data directory}. The name of the image file can be specified via the `path` parameter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#take_technology_screenshot Online documentation}
     */
    take_technology_screenshot(params: {
      /**
       * The name of the image file. It should include a file extension indicating the desired format. Supports `.png`, `.jpg` /`.jpeg`, `.tga` and `.bmp`. Providing a directory path (ex. `"save/here/screenshot.png"`) will create the necessary folder structure in `script-output`. Defaults to `"technology-screenshot.png"`.
       */
      readonly path?: string
      /**
       * The screenshot will be taken for this player.
       */
      readonly player: PlayerIdentification
      /**
       * The technology to highlight.
       */
      readonly selected_technology?: TechnologyID
      /**
       * If `true`, disabled technologies will be skipped. Their successors will be attached to the disabled technology's parents. Defaults to `false`.
       */
      readonly skip_disabled?: boolean
      /**
       * The `.jpg` render quality as a percentage (from 0% to 100% inclusive), if used. A lower value means a more compressed image. Defaults to `80`.
       */
      readonly quality?: int32
    }): void
    /**
     * Remove players who are currently not connected from the map.
     *
     * ## Raised events
     * - {@link OnPrePlayerRemovedEvent on_pre_player_removed} _instantly_
     * - {@link OnPlayerRemovedEvent on_player_removed} _instantly_
     * @param players List of players to remove. If not specified, remove all offline players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#remove_offline_players Online documentation}
     */
    remove_offline_players(players?: readonly PlayerIdentification[]): void
    /**
     * Force a CRC check. Tells all peers to calculate their current CRC, which are then compared to each other. If a mismatch is detected, the game desyncs and some peers are forced to reconnect.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#force_crc Online documentation}
     */
    force_crc(): void
    /**
     * Create a new force.
     *
     * The game currently supports a maximum of 64 forces, including the three built-in forces. This means that a maximum of 61 new forces may be created. Force names must be unique.
     *
     * ## Raised events
     * - {@link OnForceCreatedEvent on_force_created} _instantly_
     * @param force Name of the new force
     * @returns The force that was just created
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#create_force Online documentation}
     */
    create_force(force: string): LuaForce
    /**
     * Marks two forces to be merged together. All players and entities in the source force will be reassigned to the target force. The source force will then be destroyed. Importantly, this does not merge technologies or bonuses, which are instead retained from the target force.
     *
     * The three built-in forces (player, enemy and neutral) can't be destroyed, meaning they can't be used as the source argument to this function.
     *
     * The source force is not removed until the end of the current tick, or if called during the {@link OnForcesMergingEvent on_forces_merging} or {@link OnForcesMergedEvent on_forces_merged} event, the end of the next tick.
     *
     * ## Raised events
     * - {@link OnForcesMergingEvent on_forces_merging} _future_tick_
     * - {@link OnForcesMergedEvent on_forces_merged} _future_tick_
     * @param source The force to remove.
     * @param destination The force to reassign all entities to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#merge_forces Online documentation}
     */
    merge_forces(source: ForceID, destination: ForceID): void
    /**
     * Create a new surface.
     *
     * The game currently supports a maximum of 4 294 967 295 surfaces, including the default surface. Surface names must be unique.
     *
     * ## Raised events
     * - {@link OnSurfaceCreatedEvent on_surface_created} _instantly_
     * @param name Name of the new surface.
     * @param settings Map generation settings.
     * @returns The surface that was just created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#create_surface Online documentation}
     */
    create_surface(name: string, settings?: MapGenSettingsWrite): LuaSurface
    /**
     * Instruct the server to save the map. Only actually saves when in multiplayer.
     * @param name Save file name. If not specified, the currently running save is overwritten. If there is no current save, no save is made.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#server_save Online documentation}
     */
    server_save(name?: string): void
    /**
     * Instruct the game to perform an auto-save.
     *
     * Only the server will save in multiplayer. In single player a standard auto-save is triggered.
     * @param name The autosave name if any. Saves will be named _autosave-*name* when provided.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#auto_save Online documentation}
     */
    auto_save(name?: string): void
    /**
     * Deletes the given surface and all entities on it if possible.
     *
     * ## Raised events
     * - {@link OnPreSurfaceDeletedEvent on_pre_surface_deleted} _future_tick_
     * - {@link OnSurfaceDeletedEvent on_surface_deleted} _future_tick_
     * @param surface The surface to be deleted. Currently the primary surface (1, 'nauvis') cannot be deleted.
     * @returns If the surface was queued to be deleted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#delete_surface Online documentation}
     */
    delete_surface(surface: SurfaceIdentification): boolean
    /**
     * Disables replay saving for the current save file. Once done there's no way to re-enable replay saving for the save file without loading an old save.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#disable_replay Online documentation}
     */
    disable_replay(): void
    /**
     * Print text to the chat console all players.
     *
     * By default, messages that are identical to a message sent in the last 60 ticks are not printed again.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#print Online documentation}
     */
    print(message: LocalisedString, print_settings?: PrintSettings): void
    /**
     * Creates a deterministic standalone random generator with the given seed or if a seed is not provided the initial map seed is used.
     *
     * *Make sure* you actually want to use this over math.random(...) as this provides entirely different functionality over math.random(...).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#create_random_generator Online documentation}
     */
    create_random_generator(seed?: uint32): LuaRandomGenerator
    /**
     * Play a sound for every player in the game.
     *
     * The sound is not played if its location is not {@link LuaForce#chart charted} for that player.
     * @param sound_specification The sound to play.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#play_sound Online documentation}
     */
    play_sound(sound_specification: PlaySoundSpecification): void
    /**
     * Kicks the given player from this multiplayer game. Does nothing if this is a single player game or if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnPlayerKickedEvent on_player_kicked} _instantly_
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to kick.
     * @param reason The reason given if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#kick_player Online documentation}
     */
    kick_player(player: PlayerIdentification, reason?: string): void
    /**
     * Bans the given player from this multiplayer game. Does nothing if this is a single player game of if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnPlayerBannedEvent on_player_banned} _instantly_
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to ban.
     * @param reason The reason given if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#ban_player Online documentation}
     */
    ban_player(player: PlayerIdentification | string, reason?: string): void
    /**
     * Unbans the given player from this multiplayer game. Does nothing if this is a single player game of if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnPlayerUnbannedEvent on_player_unbanned} _instantly_
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to unban.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#unban_player Online documentation}
     */
    unban_player(player: PlayerIdentification | string): void
    /**
     * Purges the given players messages from the game. Does nothing if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to purge.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#purge_player Online documentation}
     */
    purge_player(player: PlayerIdentification): void
    /**
     * Mutes the given player. Does nothing if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnPlayerMutedEvent on_player_muted} _instantly_
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to mute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#mute_player Online documentation}
     */
    mute_player(player: PlayerIdentification): void
    /**
     * Unmutes the given player. Does nothing if the player running this isn't an admin.
     *
     * ## Raised events
     * - {@link OnPlayerUnmutedEvent on_player_unmuted} _instantly_
     * - {@link OnConsoleCommandEvent on_console_command} _instantly_
     * @param player The player to unmute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#unmute_player Online documentation}
     */
    unmute_player(player: PlayerIdentification): void
    /**
     * Whether the save is loaded as a multiplayer map.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#is_multiplayer Online documentation}
     */
    is_multiplayer(): boolean
    /**
     * Gets the map exchange string for the map generation settings that were used to create this map.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_map_exchange_string Online documentation}
     */
    get_map_exchange_string(): string
    /**
     * Gets the given player or returns `nil` if no player is found.
     * @param player The player index or name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_player Online documentation}
     */
    get_player(player: PlayerIndex | string): LuaPlayer | nil
    /**
     * Gets the given surface or returns `nil` if no surface is found.
     *
     * This is a shortcut for {@link LuaGameScript#surfaces LuaGameScript::surfaces}.
     * @param surface The surface index or name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_surface Online documentation}
     */
    get_surface(surface: SurfaceIndex | string): LuaSurface | nil
    /**
     * Creates a {@link LuaProfiler}, which is used for measuring script performance.
     *
     * LuaProfiler cannot be serialized.
     * @param stopped Create the timer stopped
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#create_profiler Online documentation}
     */
    create_profiler(stopped?: boolean): LuaProfiler
    /**
     * Creates an inventory that is not owned by any game object.
     *
     * It can be resized later with {@link LuaInventory#resize LuaInventory::resize}.
     *
     * Make sure to destroy it when you are done with it using {@link LuaInventory#destroy LuaInventory::destroy}.
     * @param size The number of slots the inventory initially has.
     * @param gui_title The title of the GUI that is shown when this inventory is opened.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#create_inventory Online documentation}
     */
    create_inventory(size: uint16, gui_title?: LocalisedString): LuaInventory
    /**
     * Gets the inventories created through {@link LuaGameScript#create_inventory LuaGameScript::create_inventory}.
     *
     * Inventories created through console commands will be owned by `"core"`.
     * @param mod The mod whose inventories to get. If not provided all inventories are returned.
     * @returns A mapping of mod name to array of inventories owned by that mod.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_script_inventories Online documentation}
     */
    get_script_inventories(mod?: string): Record<string, LuaInventory[]>
    /**
     * Resets the amount of time played for this map.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#reset_time_played Online documentation}
     */
    reset_time_played(): void
    /**
     * The pollution statistics for this the given surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_pollution_statistics Online documentation}
     */
    get_pollution_statistics(surface: SurfaceIdentification): LuaFlowStatistics
    /**
     * Returns vehicles in game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_vehicles Online documentation}
     */
    get_vehicles(params: {
      readonly unit_number?: UnitNumber
      readonly force?: ForceID
      readonly surface?: SurfaceIdentification
      readonly type?: EntityID | readonly EntityID[]
      readonly is_moving?: boolean
      readonly has_passenger?: boolean
    }): LuaEntity[]
    /**
     * Returns entity with a specified unit number or nil if entity with such number was not found or prototype does not have {@link EntityPrototypeFlags#get_by_unit_number EntityPrototypeFlags::get-by-unit-number} flag set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#get_entity_by_unit_number Online documentation}
     */
    get_entity_by_unit_number(unit_number: UnitNumber): LuaEntity | nil
    /**
     * Whether players who are not {@link LuaPlayer#admin admins} can access all debug settings. Set this to false to disallow access to most debug settings for non-admins.
     *
     * The following debug settings are always available to all players: `"show-fps"`, `"show-clock"`, `"show-time-to-next-autosave"`, `"show-detailed-info"`, `"show-time-usage"`, `"show-entity-time-usage"`, `"show-gpu-time-usage"`, `"show-sprite-counts"`, `"show-particle-counts"`, `"show-collector-navmesh-time-usage"`, `"show-lua-object-statistics"`, `"show-heat-buffer-info"`, `"show-multiplayer-waiting-icon"`, `"show-multiplayer-statistics"`, `"show-multiplayer-server-name"`, `"show-debug-info-in-tooltips"`, `"show-resistances-in-tooltips-always"`, `"hide-mod-guis"`, `"show-tile-grid"`, `"show-blueprint-grid"`, `"show-intermediate-volume-of-working-sounds"`, `"show-decorative-names"`, `"allow-increased-zoom"`, `"show-train-no-path-details"`, `"show-entity-tick"`, `"show-update-tick"`
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#allow_debug_settings Online documentation}
     */
    allow_debug_settings: boolean
    /**
     * This property is only populated inside {@link LuaCommandProcessor custom command} handlers and when writing {@linkplain https://wiki.factorio.com/Console#Scripting_and_cheat_commands Lua console commands}. Returns the player that is typing the command, `nil` in all other instances.
     *
     * See {@link LuaGameScript#players LuaGameScript::players} for accessing all players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#player Online documentation}
     */
    readonly player?: LuaPlayer
    /**
     * Get a table of all the players that currently exist. This sparse table allows you to find players by indexing it with either their `name` or `index`. Iterating this table with `pairs()` will provide the `index`es as the keys. Iterating with `ipairs()` will not work at all.
     *
     * If only a single player is required, {@link LuaGameScript#get_player LuaGameScript::get_player} should be used instead, as it avoids the unnecessary overhead of passing the whole table to Lua.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#players Online documentation}
     */
    readonly players: LuaCustomTable<PlayerIndex | string, LuaPlayer, PlayerIndex>
    /**
     * The currently active set of map settings. Even though this property is marked as read-only, the members of the dictionary that is returned can be modified mid-game.
     *
     * This does not contain difficulty settings, use {@link LuaGameScript#difficulty_settings LuaGameScript::difficulty_settings} instead.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#map_settings Online documentation}
     */
    readonly map_settings: MapSettings
    /**
     * The currently active set of difficulty settings. Even though this property is marked as read-only, the members of the dictionary that is returned can be modified mid-game.
     * @example
     * -- This will set the technology price multiplier to 12.
     * game.difficulty_settings.technology_price_multiplier = 12
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#difficulty_settings Online documentation}
     */
    readonly difficulty_settings: DifficultySettings
    /**
     * Current scenario difficulty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#difficulty Online documentation}
     */
    readonly difficulty: defines.difficulty
    /**
     * Get a table of all the forces that currently exist. This sparse table allows you to find forces by indexing it with either their `name` or `index`. Iterating this table with `pairs()` will provide the `name`s as the keys. Iterating with `ipairs()` will not work at all.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#forces Online documentation}
     */
    readonly forces: LuaCustomTable<ForceIndex | string, LuaForce, string>
    /**
     * Whether a console command has been used.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#console_command_used Online documentation}
     */
    readonly console_command_used: boolean
    /**
     * Simulation-related functions, or `nil` if the current game is not a simulation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#simulation Online documentation}
     */
    readonly simulation: LuaSimulation | nil
    /**
     * Current map tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#tick Online documentation}
     */
    readonly tick: MapTick
    /**
     * The number of ticks since this game was created using either "new game" or "new game from scenario". Notably, this number progresses even when the game is {@link LuaGameScript#tick_paused tick_paused}.
     *
     * This differs from {@link LuaGameScript#tick LuaGameScript::tick} in that creating a game from a scenario always starts with this value at `0`, even if the scenario has its own level data where the `tick` has progressed past `0`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#ticks_played Online documentation}
     */
    readonly ticks_played: MapTick
    /**
     * If the tick has been paused. This means that entity update has been paused.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#tick_paused Online documentation}
     */
    tick_paused: boolean
    /**
     * The number of ticks to be run while the tick is paused.
     *
     * When {@link LuaGameScript#tick_paused LuaGameScript::tick_paused} is true, ticks_to_run behaves the following way: While this is > 0, the entity update is running normally and this value is decremented every tick. When this reaches 0, the game will pause again.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#ticks_to_run Online documentation}
     */
    ticks_to_run: uint32
    /**
     * True while the victory screen is shown.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#finished Online documentation}
     */
    readonly finished: boolean
    /**
     * True after players finished the game and clicked "continue".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#finished_but_continuing Online documentation}
     */
    readonly finished_but_continuing: boolean
    /**
     * Speed to update the map at. 1.0 is normal speed -- 60 UPS. Minimum value is 0.01.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#speed Online documentation}
     */
    speed: float
    /**
     * Get a table of all the surfaces that currently exist. This sparse table allows you to find surfaces by indexing it with either their `name` or `index`. Iterating this table with `pairs()` will provide the `name`s as the keys. Iterating with `ipairs()` will not work at all.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#surfaces Online documentation}
     */
    readonly surfaces: LuaCustomTable<SurfaceIndex | string, LuaSurface, string>
    readonly planets: LuaCustomTable<string, LuaPlanet>
    /**
     * The players that are currently online.
     *
     * This does *not* index using player index. See {@link LuaPlayer#index LuaPlayer::index} on each player instance for the player index. This is primarily useful when you want to do some action against all online players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#connected_players Online documentation}
     */
    readonly connected_players: LuaPlayer[]
    readonly permissions: LuaPermissionGroups
    /**
     * Array of the names of all the backers that supported the game development early on. These are used as names for labs, locomotives, radars, roboports, and train stops.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#backer_names Online documentation}
     */
    readonly backer_names: LuaCustomTable<uint32, string>
    /**
     * The default map gen settings for this save.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#default_map_gen_settings Online documentation}
     */
    readonly default_map_gen_settings: MapGenSettings
    /**
     * Determines if enemy land mines are completely invisible or not.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#enemy_has_vision_on_land_mines Online documentation}
     */
    enemy_has_vision_on_land_mines: boolean
    /**
     * True by default. Can be used to disable autosaving. Make sure to turn it back on soon after.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#autosave_enabled Online documentation}
     */
    autosave_enabled: boolean
    /**
     * True by default. Can be used to disable the highlighting of resource patches when they are hovered on the map.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#draw_resource_selection Online documentation}
     */
    draw_resource_selection: boolean
    readonly train_manager: LuaTrainManager
    /**
     * Records contained in the "game blueprints" tab of the blueprint library.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#blueprints Online documentation}
     */
    readonly blueprints: LuaRecord[]
    /**
     * True by default. Can be used to prevent the game engine from printing certain messages.
     *
     * {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#technology_notifications_enabled > Prevented messages:}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#technology_notifications_enabled Online documentation}
     */
    technology_notifications_enabled: boolean
    /**
     * If the tips are allowed to be activated in this scenario, it is false by default.
     *
     * Can't be modified in a simulation (menu screen, tips and tricks simulation, factoriopedia simulation etc.)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGameScript.html#allow_tip_activation Online documentation}
     */
    allow_tip_activation: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaGameScript"
  }
  /**
   * An abstract base class for behaviors that support switching the entity on or off based on some condition.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html Online documentation}
   */
  export interface LuaGenericOnOffControlBehavior extends LuaControlBehavior {
    /**
     * If the entity is currently disabled because of the control behavior.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html#disabled Online documentation}
     */
    readonly disabled: boolean
    /**
     * `true` if this entity enable/disable state is controlled by circuit condition
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html#circuit_enable_disable Online documentation}
     */
    circuit_enable_disable: boolean
    /**
     * The circuit condition. Writing `nil` clears the circuit condition.
     * @example
     * -- Tell an entity to be active (for example a lamp to be lit) when it receives a
     * -- circuit signal of more than 4 chain signals.
     * a_behavior.circuit_condition = {
     *   comparator=">",
     *   first_signal={type="item", name="rail-chain-signal"},
     *   constant=4
     * }
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html#circuit_condition Online documentation}
     */
    get circuit_condition(): CircuitConditionDefinition | nil
    set circuit_condition(value: CircuitConditionDefinitionWrite | nil)
    /**
     * `true` if this should connect to the logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html#connect_to_logistic_network Online documentation}
     */
    connect_to_logistic_network: boolean
    /**
     * The logistic condition. Writing `nil` clears the logistic condition.
     * @example
     * -- Tell an entity to be active (for example a lamp to be lit) when the logistics
     * -- network it's connected to has more than four chain signals.
     * a_behavior.logistic_condition = {
     *   comparator=">",
     *   first_signal={type="item", name="rail-chain-signal"},
     *   constant=4
     * }
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGenericOnOffControlBehavior.html#logistic_condition Online documentation}
     */
    get logistic_condition(): CircuitConditionDefinition | nil
    set logistic_condition(value: CircuitConditionDefinitionWrite | nil)
  }
  /**
   * Item group or subgroup.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html Online documentation}
   */
  export interface LuaGroup {
    readonly name: string
    /**
     * Localised name of the group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly type: "item-group" | "item-subgroup"
    /**
     * The parent group.
     *
     * _Can only be used if this is ItemSubGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#group Online documentation}
     */
    readonly group: LuaGroup
    /**
     * Subgroups of this group.
     *
     * _Can only be used if this is ItemGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#subgroups Online documentation}
     */
    readonly subgroups: LuaGroup[]
    /**
     * The additional order value used in recipe ordering.
     *
     * _Can only be used if this is ItemGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#order_in_recipe Online documentation}
     */
    readonly order_in_recipe: string
    /**
     * The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#order Online documentation}
     */
    readonly order: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaGroup"
  }
  export interface BaseGroup {
    readonly name: string
    /**
     * Localised name of the group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly type: "item-group" | "item-subgroup"
    /**
     * The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#order Online documentation}
     */
    readonly order: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaGroup"
  }
  export interface ItemSubGroup extends BaseGroup {
    /**
     * The parent group.
     *
     * _Can only be used if this is ItemSubGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#group Online documentation}
     */
    readonly group: LuaGroup
  }
  export interface ItemGroup extends BaseGroup {
    /**
     * Subgroups of this group.
     *
     * _Can only be used if this is ItemGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#subgroups Online documentation}
     */
    readonly subgroups: LuaGroup[]
    /**
     * The additional order value used in recipe ordering.
     *
     * _Can only be used if this is ItemGroup_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGroup.html#order_in_recipe Online documentation}
     */
    readonly order_in_recipe: string
  }
  /**
   * The root of the GUI. This type houses the root elements, `top`, `left`, `center`,  `goal`, and `screen`, to which other elements can be added to be displayed on screen.
   *
   * Every player can have a different GUI state.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html Online documentation}
   */
  export interface LuaGui {
    /**
     * The player who owns this gui.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#player Online documentation}
     */
    readonly player: LuaPlayer
    /**
     * The children GUI elements mapped by name <> element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#children Online documentation}
     */
    readonly children: Record<string, LuaGuiElement>
    /**
     * The top part of the GUI. It is a flow element inside a scroll pane element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#top Online documentation}
     */
    readonly top: LuaGuiElement
    /**
     * The left part of the GUI. It is a flow element inside a scroll pane element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#left Online documentation}
     */
    readonly left: LuaGuiElement
    /**
     * The center part of the GUI. It is a flow element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#center Online documentation}
     */
    readonly center: LuaGuiElement
    /**
     * The flow used in the objectives window. It is a flow element. The objectives window is only visible when the flow is not empty or the objective text is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#goal Online documentation}
     */
    readonly goal: LuaGuiElement
    /**
     * For showing a GUI somewhere on the entire screen. It is an empty-widget element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#screen Online documentation}
     */
    readonly screen: LuaGuiElement
    /**
     * For showing a GUI somewhere relative to one of the game GUIs. It is an empty-widget element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGui.html#relative Online documentation}
     */
    readonly relative: LuaGuiElement
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaGui"
  }
  /**
   * Common attributes to all variants of {@link GuiSpec}.
   */
  export interface BaseGuiSpec {
    /**
     * The kind of element to add, which potentially has its own attributes as listed below.
     */
    readonly type: GuiElementType
    /**
     * Name of the child element. It must be unique within the parent element.
     */
    readonly name?: string
    /**
     * Text displayed on the child element. For frames, this is their title. For other elements, like buttons or labels, this is the content. Whilst this attribute may be used on all elements, it doesn't make sense for tables and flows as they won't display it.
     */
    readonly caption?: LocalisedString
    /**
     * Tooltip of the child element.
     */
    readonly tooltip?: LocalisedString
    /**
     * Elem tooltip of the child element. Will be displayed above `tooltip`.
     */
    readonly elem_tooltip?: ElemID
    /**
     * Whether the child element is enabled. Defaults to `true`.
     */
    readonly enabled?: boolean
    /**
     * Whether the child element is visible. Defaults to `true`.
     */
    readonly visible?: boolean
    /**
     * Whether the child element is locked. Defaults to `false`.
     */
    readonly locked?: boolean
    /**
     * Whether the child element is ignored by interaction. Defaults to `false`.
     */
    readonly ignored_by_interaction?: boolean
    /**
     * The name of the style prototype to apply to the new element.
     */
    readonly style?: string
    /**
     * {@link Tags} associated with the child element.
     */
    readonly tags?: Tags
    /**
     * Location in its parent that the child element should slot into. By default, the child will be appended onto the end.
     */
    readonly index?: uint32
    /**
     * Where to position the child element when in the `relative` element.
     */
    readonly anchor?: GuiAnchor
    /**
     * How the element should interact with game controllers. Defaults to {@link defines.game_controller_interaction.normal}.
     */
    readonly game_controller_interaction?: defines.game_controller_interaction
    /**
     * Whether this element will raise {@link OnGuiHoverEvent on_gui_hover} and {@link OnGuiLeaveEvent on_gui_leave}. Defaults to `false`.
     */
    readonly raise_hover_events?: boolean
  }
  /**
   * `"button"` variant of {@link GuiSpec}.
   */
  export interface ButtonGuiSpec extends BaseGuiSpec {
    readonly type: "button"
    /**
     * Which mouse buttons the button responds to. Defaults to `"left-and-right"`.
     */
    readonly mouse_button_filter?: MouseButtonFlagsWrite
    /**
     * Whether the button will automatically toggle when clicked. Defaults to `false`.
     */
    readonly auto_toggle?: boolean
    /**
     * The initial toggled state of the button. Defaults to `false`.
     */
    readonly toggled?: boolean
  }
  /**
   * `"flow"` variant of {@link GuiSpec}.
   */
  export interface FlowGuiSpec extends BaseGuiSpec {
    readonly type: "flow"
    /**
     * The initial direction of the flow's layout. Defaults to `"horizontal"`.
     */
    readonly direction?: GuiDirection
  }
  /**
   * `"frame"` variant of {@link GuiSpec}.
   */
  export interface FrameGuiSpec extends BaseGuiSpec {
    readonly type: "frame"
    /**
     * The initial direction of the frame's layout. Defaults to `"horizontal"`.
     */
    readonly direction?: GuiDirection
  }
  /**
   * `"table"` variant of {@link GuiSpec}.
   */
  export interface TableGuiSpec extends BaseGuiSpec {
    readonly type: "table"
    /**
     * Number of columns. This can't be changed after the table is created.
     */
    readonly column_count: uint32
    /**
     * Whether the table should draw vertical grid lines. Defaults to `false`.
     */
    readonly draw_vertical_lines?: boolean
    /**
     * Whether the table should draw horizontal grid lines. Defaults to `false`.
     */
    readonly draw_horizontal_lines?: boolean
    /**
     * Whether the table should draw a single horizontal grid line after the headers. Defaults to `false`.
     */
    readonly draw_horizontal_line_after_headers?: boolean
    /**
     * Whether the content of the table should be vertically centered. Defaults to `true`.
     */
    readonly vertical_centering?: boolean
  }
  /**
   * `"textfield"` variant of {@link GuiSpec}.
   */
  export interface TextFieldGuiSpec extends BaseGuiSpec {
    readonly type: "textfield"
    /**
     * The initial text contained in the textfield.
     */
    readonly text?: string
    /**
     * Defaults to `false`.
     */
    readonly numeric?: boolean
    /**
     * Defaults to `false`.
     */
    readonly allow_decimal?: boolean
    /**
     * Defaults to `false`.
     */
    readonly allow_negative?: boolean
    /**
     * Defaults to `false`.
     */
    readonly is_password?: boolean
    /**
     * Defaults to `false`.
     */
    readonly lose_focus_on_confirm?: boolean
    /**
     * Whether to add the rich text icon selector to the text field. This attribute can't be changed after creating the widget. Defaults to `false`.
     */
    readonly icon_selector?: boolean
  }
  /**
   * `"progressbar"` variant of {@link GuiSpec}.
   */
  export interface ProgressBarGuiSpec extends BaseGuiSpec {
    readonly type: "progressbar"
    /**
     * The initial value of the progressbar, in the range `[0, 1]`. Defaults to `0`.
     */
    readonly value?: double
  }
  /**
   * `"checkbox"` variant of {@link GuiSpec}.
   */
  export interface CheckboxGuiSpec extends BaseGuiSpec {
    readonly type: "checkbox"
    /**
     * The initial checked-state of the checkbox.
     */
    readonly state: boolean
  }
  /**
   * `"radiobutton"` variant of {@link GuiSpec}.
   */
  export interface RadioButtonGuiSpec extends BaseGuiSpec {
    readonly type: "radiobutton"
    /**
     * The initial checked-state of the radiobutton.
     */
    readonly state: boolean
  }
  /**
   * `"sprite-button"` variant of {@link GuiSpec}.
   */
  export interface SpriteButtonGuiSpec extends BaseGuiSpec {
    readonly type: "sprite-button"
    /**
     * Path to the image to display on the button.
     */
    readonly sprite?: SpritePath
    /**
     * Path to the image to display on the button when it is hovered.
     */
    readonly hovered_sprite?: SpritePath
    /**
     * Path to the image to display on the button when it is clicked.
     */
    readonly clicked_sprite?: SpritePath
    /**
     * The name of the quality shown on the button.
     */
    readonly quality?: string
    /**
     * The number shown on the button.
     */
    readonly number?: double
    /**
     * Formats small numbers as percentages. Defaults to `false`.
     */
    readonly show_percent_for_small_numbers?: boolean
    /**
     * The mouse buttons that the button responds to. Defaults to `"left-and-right"`.
     */
    readonly mouse_button_filter?: MouseButtonFlagsWrite
    /**
     * Whether the button will automatically toggle when clicked. Defaults to `false`.
     */
    readonly auto_toggle?: boolean
    /**
     * The initial toggled state of the button. Defaults to `false`.
     */
    readonly toggled?: boolean
  }
  /**
   * `"sprite"` variant of {@link GuiSpec}.
   */
  export interface SpriteGuiSpec extends BaseGuiSpec {
    readonly type: "sprite"
    /**
     * Path to the image to display.
     */
    readonly sprite?: SpritePath
    /**
     * Whether the widget should resize according to the sprite in it. Defaults to `true`.
     */
    readonly resize_to_sprite?: boolean
  }
  /**
   * `"scroll-pane"` variant of {@link GuiSpec}.
   */
  export interface ScrollPaneGuiSpec extends BaseGuiSpec {
    readonly type: "scroll-pane"
    /**
     * Policy of the horizontal scroll bar. Defaults to `"auto"`.
     */
    readonly horizontal_scroll_policy?: ScrollPolicy
    /**
     * Policy of the vertical scroll bar. Defaults to `"auto"`.
     */
    readonly vertical_scroll_policy?: ScrollPolicy
  }
  /**
   * `"drop-down"` variant of {@link GuiSpec}.
   */
  export interface DropDownGuiSpec extends BaseGuiSpec {
    readonly type: "drop-down"
    /**
     * The initial items in the dropdown.
     */
    readonly items?: readonly LocalisedString[]
    /**
     * The index of the initially selected item. Defaults to 0.
     */
    readonly selected_index?: uint32
  }
  /**
   * `"line"` variant of {@link GuiSpec}.
   */
  export interface LineGuiSpec extends BaseGuiSpec {
    readonly type: "line"
    /**
     * The initial direction of the line. Defaults to `"horizontal"`.
     */
    readonly direction?: GuiDirection
  }
  /**
   * `"list-box"` variant of {@link GuiSpec}.
   */
  export interface ListBoxGuiSpec extends BaseGuiSpec {
    readonly type: "list-box"
    /**
     * The initial items in the listbox.
     */
    readonly items?: readonly LocalisedString[]
    /**
     * The index of the initially selected item. Defaults to 0.
     */
    readonly selected_index?: uint32
  }
  /**
   * `"camera"` variant of {@link GuiSpec}.
   */
  export interface CameraGuiSpec extends BaseGuiSpec {
    readonly type: "camera"
    /**
     * The position the camera centers on.
     */
    readonly position: MapPosition | MapPositionArray
    /**
     * The surface that the camera will render. Defaults to the player's current surface.
     */
    readonly surface_index?: SurfaceIndex
    /**
     * The initial camera zoom. Defaults to `0.75`.
     */
    readonly zoom?: double
  }
  /**
   * `"choose-elem-button"` variant of {@link GuiSpec}.
   */
  export interface ChooseElemButtonGuiSpec extends BaseGuiSpec {
    readonly type: "choose-elem-button"
    /**
     * The type of the button.
     */
    readonly elem_type: ElemType
    /**
     * If type is `"item"` - the default value for the button.
     */
    readonly item?: string
    /**
     * If type is `"tile"` - the default value for the button.
     */
    readonly tile?: string
    /**
     * If type is `"entity"` - the default value for the button.
     */
    readonly entity?: string
    /**
     * If type is `"signal"` - the default value for the button.
     */
    readonly signal?: SignalIDWrite
    /**
     * If type is `"fluid"` - the default value for the button.
     */
    readonly fluid?: string
    /**
     * If type is `"recipe"` - the default value for the button.
     */
    readonly recipe?: string
    /**
     * If type is `"decorative"` - the default value for the button.
     */
    readonly decorative?: string
    /**
     * If type is `"item-group"` - the default value for the button.
     */
    readonly "item-group"?: string
    /**
     * If type is `"achievement"` - the default value for the button.
     */
    readonly achievement?: string
    /**
     * If type is `"equipment"` - the default value for the button.
     */
    readonly equipment?: string
    /**
     * If type is `"technology"` - the default value for the button.
     */
    readonly technology?: string
    /**
     * If type is `"asteroid-chunk"` - the default value for the button.
     */
    readonly "asteroid-chunk"?: string
    /**
     * If type is `"space-location"` - the default value for the button.
     */
    readonly "space-location"?: string
    /**
     * If type is `"item-with-quality"` - the default value for the button.
     */
    readonly "item-with-quality"?: PrototypeWithQuality
    /**
     * If type is `"entity-with-quality"` - the default value for the button.
     */
    readonly "entity-with-quality"?: PrototypeWithQuality
    /**
     * If type is `"recipe-with-quality"` - the default value for the button.
     */
    readonly "recipe-with-quality"?: PrototypeWithQuality
    /**
     * If type is `"equipment-with-quality"` - the default value for the button.
     */
    readonly "equipment-with-quality"?: PrototypeWithQuality
    /**
     * Filters describing what to show in the selection window. The applicable filter depends on the `elem_type`.
     */
    readonly elem_filters?: PrototypeFilterWrite
  }
  /**
   * `"text-box"` variant of {@link GuiSpec}.
   */
  export interface TextBoxGuiSpec extends BaseGuiSpec {
    readonly type: "text-box"
    /**
     * The initial text contained in the text-box.
     */
    readonly text?: string
    /**
     * Whether to add the rich text icon selector to the text box. This attribute can't be changed after creating the widget. Defaults to `false`.
     */
    readonly icon_selector?: boolean
  }
  /**
   * `"slider"` variant of {@link GuiSpec}.
   */
  export interface SliderGuiSpec extends BaseGuiSpec {
    readonly type: "slider"
    /**
     * The minimum value for the slider. Defaults to `0`.
     */
    readonly minimum_value?: double
    /**
     * The maximum value for the slider. Defaults to `30`.
     */
    readonly maximum_value?: double
    /**
     * The initial value for the slider. Defaults to `minimum_value`.
     */
    readonly value?: double
    /**
     * The minimum value the slider can move. Defaults to `1`.
     */
    readonly value_step?: double
    /**
     * Defaults to `true`.
     */
    readonly discrete_values?: boolean
  }
  /**
   * `"minimap"` variant of {@link GuiSpec}.
   */
  export interface MinimapGuiSpec extends BaseGuiSpec {
    readonly type: "minimap"
    /**
     * The position the minimap centers on. Defaults to the player's current position.
     */
    readonly position?: MapPosition | MapPositionArray
    /**
     * The surface the camera will render. Defaults to the player's current surface.
     */
    readonly surface_index?: SurfaceIndex
    /**
     * The player index the map should use. Defaults to the current player.
     */
    readonly chart_player_index?: uint32
    /**
     * The force this minimap should use. Defaults to the player's current force.
     */
    readonly force?: string
    /**
     * The initial camera zoom. Defaults to `0.75`.
     */
    readonly zoom?: double
  }
  /**
   * `"tab"` variant of {@link GuiSpec}.
   */
  export interface TabGuiSpec extends BaseGuiSpec {
    readonly type: "tab"
    /**
     * The text to display after the normal tab text (designed to work with numbers).
     */
    readonly badge_text?: LocalisedString
  }
  /**
   * `"switch"` variant of {@link GuiSpec}.
   */
  export interface SwitchGuiSpec extends BaseGuiSpec {
    readonly type: "switch"
    /**
     * If set to "none", `allow_none_state` must be `true`. Defaults to `"left"`.
     */
    readonly switch_state?: SwitchState
    /**
     * Whether the switch can be set to a middle state. Defaults to `false`.
     */
    readonly allow_none_state?: boolean
    readonly left_label_caption?: LocalisedString
    readonly left_label_tooltip?: LocalisedString
    readonly right_label_caption?: LocalisedString
    readonly right_label_tooltip?: LocalisedString
  }
  /**
   * Variants of {@link GuiSpec} with no additional attributes.
   */
  export interface OtherGuiSpec extends BaseGuiSpec {
    readonly type: "label" | "entity-preview" | "empty-widget" | "tabbed-pane"
  }
  export type GuiSpec =
    | ButtonGuiSpec
    | FlowGuiSpec
    | FrameGuiSpec
    | TableGuiSpec
    | TextFieldGuiSpec
    | ProgressBarGuiSpec
    | CheckboxGuiSpec
    | RadioButtonGuiSpec
    | SpriteButtonGuiSpec
    | SpriteGuiSpec
    | ScrollPaneGuiSpec
    | DropDownGuiSpec
    | LineGuiSpec
    | ListBoxGuiSpec
    | CameraGuiSpec
    | ChooseElemButtonGuiSpec
    | TextBoxGuiSpec
    | SliderGuiSpec
    | MinimapGuiSpec
    | TabGuiSpec
    | SwitchGuiSpec
    | OtherGuiSpec
  export interface GuiElementIndexer {
    /**
     * The indexing operator. Gets children by name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#index_operator Online documentation}
     */
    readonly [name: string]: LuaGuiElement | nil
  }
  /**
   * @noSelf
   */
  export interface BaseGuiElement {
    /**
     * Add a new child element to this GuiElement.
     *
     * Base attributes: {@link BaseGuiSpec}
     *
     * Other attributes may be specified depending on `type`:
     * - `"button"`: {@link ButtonGuiSpec}
     * - `"flow"`: {@link FlowGuiSpec}
     * - `"frame"`: {@link FrameGuiSpec}
     * - `"table"`: {@link TableGuiSpec}
     * - `"textfield"`: {@link TextFieldGuiSpec}
     * - `"progressbar"`: {@link ProgressBarGuiSpec}
     * - `"checkbox"`: {@link CheckboxGuiSpec}
     * - `"radiobutton"`: {@link RadioButtonGuiSpec}
     * - `"sprite-button"`: {@link SpriteButtonGuiSpec}
     * - `"sprite"`: {@link SpriteGuiSpec}
     * - `"scroll-pane"`: {@link ScrollPaneGuiSpec}
     * - `"drop-down"`: {@link DropDownGuiSpec}
     * - `"line"`: {@link LineGuiSpec}
     * - `"list-box"`: {@link ListBoxGuiSpec}
     * - `"camera"`: {@link CameraGuiSpec}
     * - `"choose-elem-button"`: {@link ChooseElemButtonGuiSpec}
     * - `"text-box"`: {@link TextBoxGuiSpec}
     * - `"slider"`: {@link SliderGuiSpec}
     * - `"minimap"`: {@link MinimapGuiSpec}
     * - `"tab"`: {@link TabGuiSpec}
     * - `"switch"`: {@link SwitchGuiSpec}
     * @returns The GUI element that was added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#add Online documentation}
     */
    add<Type extends GuiElementType>(
      element: GuiSpec & {
        type: Type
      },
    ): Extract<
      LuaGuiElement,
      {
        type: Type
      }
    >
    /**
     * Remove children of this element. Any {@link LuaGuiElement} objects referring to the destroyed elements become invalid after this operation.
     * @example
     * game.player.gui.top.clear()
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#clear Online documentation}
     */
    clear(): void
    /**
     * Remove this element, along with its children. Any {@link LuaGuiElement} objects referring to the destroyed elements become invalid after this operation.
     *
     * The top-level GUI elements - {@link LuaGui#top LuaGui::top}, {@link LuaGui#left LuaGui::left}, {@link LuaGui#center LuaGui::center} and {@link LuaGui#screen LuaGui::screen} - can't be destroyed.
     * @example
     * game.player.gui.top.greeting.destroy()
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * The mod that owns this Gui element or `nil` if it's owned by the scenario script.
     *
     * This has a not-super-expensive, but non-free cost to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_mod Online documentation}
     */
    get_mod(): string | nil
    /**
     * Gets the index that this element has in its parent element.
     *
     * This iterates through the children of the parent of this element, meaning this has a non-free cost to get, but is faster than doing the equivalent in Lua.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_index_in_parent Online documentation}
     */
    get_index_in_parent(): uint32
    /**
     * Swaps the children at the given indices in this element.
     * @param index_1 The index of the first child.
     * @param index_2 The index of the second child.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#swap_children Online documentation}
     */
    swap_children(index_1: uint32, index_2: uint32): void
    /**
     * Focuses this GUI element if possible.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#focus Online documentation}
     */
    focus(): void
    /**
     * Moves this GUI element to the "front" so it will draw over other elements.
     *
     * Only works for elements in {@link LuaGui#screen LuaGui::screen}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#bring_to_front Online documentation}
     */
    bring_to_front(): void
    /**
     * The index of this GUI element (unique amongst the GUI elements of a LuaPlayer).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#index Online documentation}
     */
    readonly index: GuiElementIndex
    /**
     * The GUI this element is a child of.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#gui Online documentation}
     */
    readonly gui: LuaGui
    /**
     * The direct parent of this element. `nil` if this is a top-level element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#parent Online documentation}
     */
    readonly parent?: LuaGuiElement
    /**
     * The name of this element. `""` if no name was set.
     * @example
     * game.player.gui.top.greeting.name == "greeting"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#name Online documentation}
     */
    name: string
    /**
     * The text displayed on this element. For frames, this is the "heading". For other elements, like buttons or labels, this is the content.
     *
     * Whilst this attribute may be used on all elements without producing an error, it doesn't make sense for tables and flows as they won't display it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#caption Online documentation}
     */
    caption: LocalisedString
    /**
     * The style of this element. When read, this evaluates to a {@link LuaStyle}. For writing, it only accepts a string that specifies the textual identifier (prototype name) of the desired style.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#style Online documentation}
     */
    set style(style: LuaStyle | string)
    get style(): LuaStyle
    /**
     * Sets whether this GUI element is visible or completely hidden, taking no space in the layout.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#visible Online documentation}
     */
    visible: boolean
    /**
     * Names of all the children of this element. These are the identifiers that can be used to access the child as an attribute of this element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#children_names Online documentation}
     */
    readonly children_names: string[]
    /**
     * Index into {@link LuaGameScript#players LuaGameScript::players} specifying the player who owns this element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#player_index Online documentation}
     */
    readonly player_index: PlayerIndex
    /**
     * The text to display when hovering over this element. Writing `""` or `nil` will disable the tooltip.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#tooltip Online documentation}
     */
    tooltip: LocalisedString | nil
    /**
     * The element tooltip to display when hovering over this element, or `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#elem_tooltip Online documentation}
     */
    elem_tooltip?: ElemID
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: GuiElementType
    /**
     * The child-elements of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#children Online documentation}
     */
    readonly children: LuaGuiElement[]
    /**
     * The location of this widget when stored in {@link LuaGui#screen LuaGui::screen}. `nil` if not set or not in {@link LuaGui#screen LuaGui::screen}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#location Online documentation}
     */
    get location(): GuiLocation | nil
    set location(value: GuiLocation | GuiLocationArray | nil)
    /**
     * How this element should interact with game controllers.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#game_controller_interaction Online documentation}
     */
    game_controller_interaction: defines.game_controller_interaction
    /**
     * Whether this GUI element is enabled. Disabled GUI elements don't trigger events when clicked.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#enabled Online documentation}
     */
    enabled: boolean
    /**
     * Whether this GUI element is ignored by interaction. This makes clicks on this element 'go through' to the GUI element or even the game surface below it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#ignored_by_interaction Online documentation}
     */
    ignored_by_interaction: boolean
    /**
     * The anchor for this relative widget, if any. Setting `nil` clears the anchor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#anchor Online documentation}
     */
    anchor?: GuiAnchor
    /**
     * The tags associated with this LuaGuiElement.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#tags Online documentation}
     */
    tags: Tags
    /**
     * Whether this element will raise {@link OnGuiHoverEvent on_gui_hover} and {@link OnGuiLeaveEvent on_gui_leave}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#raise_hover_events Online documentation}
     */
    raise_hover_events: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaGuiElement"
  }
  export interface ButtonGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "button"
    /**
     * Whether this button will automatically toggle when clicked.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#auto_toggle Online documentation}
     */
    auto_toggle: boolean
    /**
     * Whether this button is currently toggled. When a button is toggled, it will use the `selected_graphical_set` and `selected_font_color` defined in its style.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#toggled Online documentation}
     */
    toggled: boolean
    /**
     * The mouse button filters for this button or sprite-button.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#mouse_button_filter Online documentation}
     */
    get mouse_button_filter(): MouseButtonFlags
    set mouse_button_filter(value: MouseButtonFlagsWrite)
  }
  export type ButtonGuiElement = ButtonGuiElementMembers & GuiElementIndexer
  export interface SpriteButtonGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "sprite-button"
    /**
     * The sprite to display on this sprite-button or sprite in the default state.
     *
     * _Can only be used if this is sprite-button or sprite_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#sprite Online documentation}
     */
    sprite: SpritePath
    /**
     * The sprite to display on this sprite-button when it is hovered.
     *
     * _Can only be used if this is sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#hovered_sprite Online documentation}
     */
    hovered_sprite: SpritePath
    /**
     * The sprite to display on this sprite-button when it is clicked.
     *
     * _Can only be used if this is sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#clicked_sprite Online documentation}
     */
    clicked_sprite: SpritePath
    /**
     * The quality to be shown in the bottom left corner of this sprite-button, or `nil` to show nothing.
     *
     * _Can only be used if this is sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#quality Online documentation}
     */
    get quality(): LuaQualityPrototype | nil
    set quality(value: QualityID | nil)
    /**
     * The number to be shown in the bottom right corner of this sprite-button, or `nil` to show nothing.
     *
     * _Can only be used if this is sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#number Online documentation}
     */
    number?: double
    /**
     * Related to the number to be shown in the bottom right corner of this sprite-button. When set to `true`, numbers that are non-zero and smaller than one are shown as a percentage rather than the value. For example, `0.5` will be shown as `50%` instead.
     *
     * _Can only be used if this is sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#show_percent_for_small_numbers Online documentation}
     */
    show_percent_for_small_numbers: boolean
    /**
     * Whether this button will automatically toggle when clicked.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#auto_toggle Online documentation}
     */
    auto_toggle: boolean
    /**
     * Whether this button is currently toggled. When a button is toggled, it will use the `selected_graphical_set` and `selected_font_color` defined in its style.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#toggled Online documentation}
     */
    toggled: boolean
    /**
     * The mouse button filters for this button or sprite-button.
     *
     * _Can only be used if this is button or sprite-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#mouse_button_filter Online documentation}
     */
    get mouse_button_filter(): MouseButtonFlags
    set mouse_button_filter(value: MouseButtonFlagsWrite)
  }
  export type SpriteButtonGuiElement = SpriteButtonGuiElementMembers & GuiElementIndexer
  export interface CheckboxGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "checkbox"
    /**
     * Is this checkbox or radiobutton checked?
     *
     * _Can only be used if this is checkbox or radiobutton_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#state Online documentation}
     */
    state: boolean
  }
  export type CheckboxGuiElement = CheckboxGuiElementMembers & GuiElementIndexer
  export interface FlowGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "flow"
    /**
     * Direction of this element's layout.
     *
     * _Can only be used if this is frame, flow or line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#direction Online documentation}
     */
    readonly direction: GuiDirection
    /**
     * The `frame` that is being moved when dragging this GUI element, if any. This element needs to be a child of the `drag_target` at some level.
     *
     * Only top-level elements in {@link LuaGui#screen LuaGui::screen} can be `drag_target`s.
     *
     * _Can only be used if this is flow, frame, label, table or empty-widget_
     * @example
     * -- This creates a frame that contains a dragging handle which can move the frame.
     * local frame = player.gui.screen.add{type="frame", direction="vertical"}
     * local dragger = frame.add{type="empty-widget", style="draggable_space"}
     * dragger.style.size = {128, 24}
     * dragger.drag_target = frame
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#drag_target Online documentation}
     */
    drag_target?: FrameGuiElement
  }
  export type FlowGuiElement = FlowGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface FrameGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "frame"
    /**
     * Forces this frame to re-auto-center. Only works on frames stored directly in {@link LuaGui#screen LuaGui::screen}.
     *
     * ## Raised events
     * - {@link OnGuiLocationChangedEvent on_gui_location_changed} _future_tick_
     *
     * _Can only be used if this is frame_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#force_auto_center Online documentation}
     */
    force_auto_center(): void
    /**
     * Direction of this element's layout.
     *
     * _Can only be used if this is frame, flow or line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#direction Online documentation}
     */
    readonly direction: GuiDirection
    /**
     * Whether this frame auto-centers on window resize when stored in {@link LuaGui#screen LuaGui::screen}.
     *
     * _Can only be used if this is frame_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#auto_center Online documentation}
     */
    auto_center: boolean
    /**
     * The `frame` that is being moved when dragging this GUI element, if any. This element needs to be a child of the `drag_target` at some level.
     *
     * Only top-level elements in {@link LuaGui#screen LuaGui::screen} can be `drag_target`s.
     *
     * _Can only be used if this is flow, frame, label, table or empty-widget_
     * @example
     * -- This creates a frame that contains a dragging handle which can move the frame.
     * local frame = player.gui.screen.add{type="frame", direction="vertical"}
     * local dragger = frame.add{type="empty-widget", style="draggable_space"}
     * dragger.style.size = {128, 24}
     * dragger.drag_target = frame
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#drag_target Online documentation}
     */
    drag_target?: FrameGuiElement
  }
  export type FrameGuiElement = FrameGuiElementMembers & GuiElementIndexer
  export interface LabelGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "label"
    /**
     * The `frame` that is being moved when dragging this GUI element, if any. This element needs to be a child of the `drag_target` at some level.
     *
     * Only top-level elements in {@link LuaGui#screen LuaGui::screen} can be `drag_target`s.
     *
     * _Can only be used if this is flow, frame, label, table or empty-widget_
     * @example
     * -- This creates a frame that contains a dragging handle which can move the frame.
     * local frame = player.gui.screen.add{type="frame", direction="vertical"}
     * local dragger = frame.add{type="empty-widget", style="draggable_space"}
     * dragger.style.size = {128, 24}
     * dragger.drag_target = frame
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#drag_target Online documentation}
     */
    drag_target?: FrameGuiElement
  }
  export type LabelGuiElement = LabelGuiElementMembers & GuiElementIndexer
  export interface LineGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "line"
    /**
     * Direction of this element's layout.
     *
     * _Can only be used if this is frame, flow or line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#direction Online documentation}
     */
    readonly direction: GuiDirection
  }
  export type LineGuiElement = LineGuiElementMembers & GuiElementIndexer
  export interface ProgressBarGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "progressbar"
    /**
     * How much this progress bar is filled. It is a value in the range `[0, 1]`.
     *
     * _Can only be used if this is progressbar_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#value Online documentation}
     */
    value: double
  }
  export type ProgressBarGuiElement = ProgressBarGuiElementMembers & GuiElementIndexer
  export interface TableGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "table"
    /**
     * Whether this table should draw vertical grid lines.
     *
     * _Can only be used if this is table_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#draw_vertical_lines Online documentation}
     */
    draw_vertical_lines: boolean
    /**
     * Whether this table should draw horizontal grid lines.
     *
     * _Can only be used if this is table_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#draw_horizontal_lines Online documentation}
     */
    draw_horizontal_lines: boolean
    /**
     * Whether this table should draw a horizontal grid line below the first table row.
     *
     * _Can only be used if this is table_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#draw_horizontal_line_after_headers Online documentation}
     */
    draw_horizontal_line_after_headers: boolean
    /**
     * The number of columns in this table.
     *
     * _Can only be used if this is table_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#column_count Online documentation}
     */
    readonly column_count: uint32
    /**
     * Whether the content of this table should be vertically centered. Overrides {@link LuaStyle#column_alignments LuaStyle::column_alignments}. Defaults to `true`.
     *
     * _Can only be used if this is table_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#vertical_centering Online documentation}
     */
    vertical_centering: boolean
    /**
     * The `frame` that is being moved when dragging this GUI element, if any. This element needs to be a child of the `drag_target` at some level.
     *
     * Only top-level elements in {@link LuaGui#screen LuaGui::screen} can be `drag_target`s.
     *
     * _Can only be used if this is flow, frame, label, table or empty-widget_
     * @example
     * -- This creates a frame that contains a dragging handle which can move the frame.
     * local frame = player.gui.screen.add{type="frame", direction="vertical"}
     * local dragger = frame.add{type="empty-widget", style="draggable_space"}
     * dragger.style.size = {128, 24}
     * dragger.drag_target = frame
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#drag_target Online documentation}
     */
    drag_target?: FrameGuiElement
  }
  export type TableGuiElement = TableGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface TextFieldGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "textfield"
    /**
     * Selects all the text in this textbox.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#select_all Online documentation}
     */
    select_all(): void
    /**
     * Selects a range of text in this textbox.
     *
     * _Can only be used if this is textfield or text-box_
     * @param start_index The index of the first character to select
     * @param end_index The index of the last character to select
     * @example
     * -- Select the characters "amp" from "example":
     * textbox.select(3, 5)
     * @example
     * -- Move the cursor to the start of the text box:
     * textbox.select(1, 0)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#select Online documentation}
     */
    select(start_index: int32, end_index: int32): void
    /**
     * The text contained in this textfield or text-box.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#text Online documentation}
     */
    text: string
    /**
     * Whether this textfield is limited to only numeric characters.
     *
     * _Can only be used if this is textfield_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#numeric Online documentation}
     */
    numeric: boolean
    /**
     * Whether this textfield (when in numeric mode) allows decimal numbers.
     *
     * _Can only be used if this is textfield_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#allow_decimal Online documentation}
     */
    allow_decimal: boolean
    /**
     * Whether this textfield (when in numeric mode) allows negative numbers.
     *
     * _Can only be used if this is textfield_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#allow_negative Online documentation}
     */
    allow_negative: boolean
    /**
     * Whether this textfield displays as a password field, which renders all characters as `*`.
     *
     * _Can only be used if this is textfield_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#is_password Online documentation}
     */
    is_password: boolean
    /**
     * Whether this textfield loses focus after {@link defines.events.on_gui_confirmed} is fired.
     *
     * _Can only be used if this is textfield_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#lose_focus_on_confirm Online documentation}
     */
    lose_focus_on_confirm: boolean
    /**
     * Whether this textfield or text-box was created with an icon selector.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#icon_selector Online documentation}
     */
    readonly icon_selector: boolean
  }
  export type TextFieldGuiElement = TextFieldGuiElementMembers & GuiElementIndexer
  export interface RadioButtonGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "radiobutton"
    /**
     * Is this checkbox or radiobutton checked?
     *
     * _Can only be used if this is checkbox or radiobutton_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#state Online documentation}
     */
    state: boolean
  }
  export type RadioButtonGuiElement = RadioButtonGuiElementMembers & GuiElementIndexer
  export interface SpriteGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "sprite"
    /**
     * The sprite to display on this sprite-button or sprite in the default state.
     *
     * _Can only be used if this is sprite-button or sprite_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#sprite Online documentation}
     */
    sprite: SpritePath
    /**
     * Whether the sprite widget should resize according to the sprite in it. Defaults to `true`.
     *
     * _Can only be used if this is sprite_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#resize_to_sprite Online documentation}
     */
    resize_to_sprite: boolean
  }
  export type SpriteGuiElement = SpriteGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface ScrollPaneGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "scroll-pane"
    /**
     * Scrolls this scroll bar to the top.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_top Online documentation}
     */
    scroll_to_top(): void
    /**
     * Scrolls this scroll bar to the bottom.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_bottom Online documentation}
     */
    scroll_to_bottom(): void
    /**
     * Scrolls this scroll bar to the left.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_left Online documentation}
     */
    scroll_to_left(): void
    /**
     * Scrolls this scroll bar to the right.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_right Online documentation}
     */
    scroll_to_right(): void
    /**
     * Scrolls this scroll bar such that the specified GUI element is visible to the player.
     *
     * _Can only be used if this is scroll-pane_
     * @param element The element to scroll to.
     * @param scroll_mode Where the element should be positioned in the scroll-pane. Defaults to `"in-view"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_element Online documentation}
     */
    scroll_to_element(element: LuaGuiElement, scroll_mode?: "in-view" | "top-third"): void
    /**
     * Policy of the horizontal scroll bar.
     *
     * _Can only be used if this is scroll-pane_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#horizontal_scroll_policy Online documentation}
     */
    horizontal_scroll_policy: ScrollPolicy
    /**
     * Policy of the vertical scroll bar.
     *
     * _Can only be used if this is scroll-pane_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#vertical_scroll_policy Online documentation}
     */
    vertical_scroll_policy: ScrollPolicy
  }
  export type ScrollPaneGuiElement = ScrollPaneGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface DropDownGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "drop-down"
    /**
     * Removes the items in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#clear_items Online documentation}
     */
    clear_items(): void
    /**
     * Gets the item at the given index from this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index to get
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_item Online documentation}
     */
    get_item(index: uint32): LocalisedString
    /**
     * Sets the given string at the given index in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index whose text to replace.
     * @param string The text to set at the given index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#set_item Online documentation}
     */
    set_item(index: uint32, string: LocalisedString): void
    /**
     * Inserts a string at the end or at the given index of this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param string The text to insert.
     * @param index The index at which to insert the item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#add_item Online documentation}
     */
    add_item(string: LocalisedString, index?: uint32): void
    /**
     * Removes the item at the given index from this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#remove_item Online documentation}
     */
    remove_item(index: uint32): void
    /**
     * Closes the dropdown list if this is a dropdown and it is open.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#close_dropdown Online documentation}
     */
    close_dropdown(): void
    /**
     * The items in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#items Online documentation}
     */
    items: LocalisedString[]
    /**
     * The selected index for this dropdown or listbox. Returns `0` if none is selected.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#selected_index Online documentation}
     */
    selected_index: uint32
  }
  export type DropDownGuiElement = DropDownGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface ListBoxGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "list-box"
    /**
     * Removes the items in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#clear_items Online documentation}
     */
    clear_items(): void
    /**
     * Gets the item at the given index from this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index to get
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_item Online documentation}
     */
    get_item(index: uint32): LocalisedString
    /**
     * Sets the given string at the given index in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index whose text to replace.
     * @param string The text to set at the given index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#set_item Online documentation}
     */
    set_item(index: uint32, string: LocalisedString): void
    /**
     * Inserts a string at the end or at the given index of this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param string The text to insert.
     * @param index The index at which to insert the item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#add_item Online documentation}
     */
    add_item(string: LocalisedString, index?: uint32): void
    /**
     * Removes the item at the given index from this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @param index The index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#remove_item Online documentation}
     */
    remove_item(index: uint32): void
    /**
     * Scrolls the scroll bar such that the specified listbox item is visible to the player.
     *
     * _Can only be used if this is list-box_
     * @param index The item index to scroll to.
     * @param scroll_mode Where the item should be positioned in the list-box. Defaults to `"in-view"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_item Online documentation}
     */
    scroll_to_item(index: int32, scroll_mode?: "in-view" | "top-third"): void
    /**
     * The items in this dropdown or listbox.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#items Online documentation}
     */
    items: LocalisedString[]
    /**
     * The selected index for this dropdown or listbox. Returns `0` if none is selected.
     *
     * _Can only be used if this is drop-down or list-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#selected_index Online documentation}
     */
    selected_index: uint32
  }
  export type ListBoxGuiElement = ListBoxGuiElementMembers & GuiElementIndexer
  export interface CameraGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "camera"
    /**
     * The position this camera or minimap is focused on, if any.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#position Online documentation}
     */
    get position(): MapPosition
    set position(value: MapPosition | MapPositionArray)
    /**
     * The surface index this camera or minimap is using.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#surface_index Online documentation}
     */
    surface_index: SurfaceIndex
    /**
     * The zoom this camera or minimap is using. This value must be positive.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#zoom Online documentation}
     */
    zoom: double
    /**
     * The entity associated with this entity-preview, camera, minimap, if any.
     *
     * _Can only be used if this is entity-preview, camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#entity Online documentation}
     */
    entity?: LuaEntity
  }
  export type CameraGuiElement = CameraGuiElementMembers & GuiElementIndexer
  export interface ChooseElemButtonGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "choose-elem-button"
    /**
     * The elem type of this choose-elem-button.
     *
     * _Can only be used if this is choose-elem-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#elem_type Online documentation}
     */
    readonly elem_type: ElemType
    /**
     * The elem value of this choose-elem-button, if any.
     *
     * The `"signal"` type operates with {@link SignalID}.
     *
     * The `"with-quality"` types operate with {@link PrototypeWithQuality}.
     *
     * The remaining types use strings.
     *
     * _Can only be used if this is choose-elem-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#elem_value Online documentation}
     */
    get elem_value(): this["elem_type"] extends "signal"
      ? SignalID | nil
      : this["elem_type"] extends "with-quality"
        ? PrototypeWithQualityRead | nil
        : string | nil
    set elem_value(
      value: this["elem_type"] extends "signal"
        ? SignalIDWrite | nil
        : this["elem_type"] extends "with-quality"
          ? PrototypeWithQuality | nil
          : string | nil,
    )
    /**
     * The elem filters of this choose-elem-button, if any. The compatible type of filter is determined by `elem_type`.
     *
     * Writing to this field does not change or clear the currently selected element.
     *
     * _Can only be used if this is choose-elem-button_
     * @example
     * -- This will configure a choose-elem-button of type "entity" to only show items of type "furnace".
     * button.elem_filters = {{filter = "type", type = "furnace"}}
     * @example
     * -- Then, there are some types of filters that work on a specific kind of attribute. The following will configure a
     * --   choose-elem-button of type "entity" to only show entities that have their `hidden` property set to `true`.
     * button.elem_filters = {{filter = "hidden"}}
     * @example
     * -- Lastly, these filters can be combined at will, taking care to specify how they should be combined (either "and" or "or").
     * --   The following will filter for any entities that are "furnaces" and that are not "hidden".
     * button.elem_filters = {{filter = "type", type = "furnace"}, {filter = "hidden", invert = true, mode = "and"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#elem_filters Online documentation}
     */
    get elem_filters(): PrototypeFilter | nil
    set elem_filters(value: PrototypeFilterWrite | nil)
    /**
     * Whether this choose-elem-button can be changed by the player.
     *
     * _Can only be used if this is choose-elem-button_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#locked Online documentation}
     */
    locked: boolean
  }
  export type ChooseElemButtonGuiElement = ChooseElemButtonGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface TextBoxGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "text-box"
    /**
     * Scrolls this scroll bar to the top.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_top Online documentation}
     */
    scroll_to_top(): void
    /**
     * Scrolls this scroll bar to the bottom.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_bottom Online documentation}
     */
    scroll_to_bottom(): void
    /**
     * Scrolls this scroll bar to the left.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_left Online documentation}
     */
    scroll_to_left(): void
    /**
     * Scrolls this scroll bar to the right.
     *
     * _Can only be used if this is scroll-pane or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#scroll_to_right Online documentation}
     */
    scroll_to_right(): void
    /**
     * Selects all the text in this textbox.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#select_all Online documentation}
     */
    select_all(): void
    /**
     * Selects a range of text in this textbox.
     *
     * _Can only be used if this is textfield or text-box_
     * @param start_index The index of the first character to select
     * @param end_index The index of the last character to select
     * @example
     * -- Select the characters "amp" from "example":
     * textbox.select(3, 5)
     * @example
     * -- Move the cursor to the start of the text box:
     * textbox.select(1, 0)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#select Online documentation}
     */
    select(start_index: int32, end_index: int32): void
    /**
     * The text contained in this textfield or text-box.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#text Online documentation}
     */
    text: string
    /**
     * Whether the contents of this text-box are selectable. Defaults to `true`.
     *
     * _Can only be used if this is text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#selectable Online documentation}
     */
    selectable: boolean
    /**
     * Whether this text-box will word-wrap automatically. Defaults to `false`.
     *
     * _Can only be used if this is text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#word_wrap Online documentation}
     */
    word_wrap: boolean
    /**
     * Whether this text-box is read-only. Defaults to `false`.
     *
     * _Can only be used if this is text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#read_only Online documentation}
     */
    read_only: boolean
    /**
     * Whether this textfield or text-box was created with an icon selector.
     *
     * _Can only be used if this is textfield or text-box_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#icon_selector Online documentation}
     */
    readonly icon_selector: boolean
  }
  export type TextBoxGuiElement = TextBoxGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface SliderGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "slider"
    /**
     * Gets this sliders minimum value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_slider_minimum Online documentation}
     */
    get_slider_minimum(): double
    /**
     * Gets this sliders maximum value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_slider_maximum Online documentation}
     */
    get_slider_maximum(): double
    /**
     * Sets this sliders minimum and maximum values. The minimum can't be >= the maximum.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#set_slider_minimum_maximum Online documentation}
     */
    set_slider_minimum_maximum(minimum: double, maximum: double): void
    /**
     * Gets the minimum distance this slider can move.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_slider_value_step Online documentation}
     */
    get_slider_value_step(): double
    /**
     * Returns whether this slider only allows discrete values.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#get_slider_discrete_values Online documentation}
     */
    get_slider_discrete_values(): boolean
    /**
     * Sets the minimum distance this slider can move. The minimum distance can't be > (max - min).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#set_slider_value_step Online documentation}
     */
    set_slider_value_step(value: double): void
    /**
     * Sets whether this slider only allows discrete values.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#set_slider_discrete_values Online documentation}
     */
    set_slider_discrete_values(value: boolean): void
    /**
     * The value of this slider element.
     *
     * _Can only be used if this is slider_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#slider_value Online documentation}
     */
    slider_value: double
  }
  export type SliderGuiElement = SliderGuiElementMembers & GuiElementIndexer
  export interface MinimapGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "minimap"
    /**
     * The position this camera or minimap is focused on, if any.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#position Online documentation}
     */
    get position(): MapPosition
    set position(value: MapPosition | MapPositionArray)
    /**
     * The surface index this camera or minimap is using.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#surface_index Online documentation}
     */
    surface_index: SurfaceIndex
    /**
     * The zoom this camera or minimap is using. This value must be positive.
     *
     * _Can only be used if this is camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#zoom Online documentation}
     */
    zoom: double
    /**
     * The player index this minimap is using.
     *
     * _Can only be used if this is minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#minimap_player_index Online documentation}
     */
    minimap_player_index: uint32
    /**
     * The force this minimap is using, if any.
     *
     * _Can only be used if this is minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#force Online documentation}
     */
    force?: string
    /**
     * The entity associated with this entity-preview, camera, minimap, if any.
     *
     * _Can only be used if this is entity-preview, camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#entity Online documentation}
     */
    entity?: LuaEntity
  }
  export type MinimapGuiElement = MinimapGuiElementMembers & GuiElementIndexer
  export interface EntityPreviewGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "entity-preview"
    /**
     * The entity associated with this entity-preview, camera, minimap, if any.
     *
     * _Can only be used if this is entity-preview, camera or minimap_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#entity Online documentation}
     */
    entity?: LuaEntity
  }
  export type EntityPreviewGuiElement = EntityPreviewGuiElementMembers & GuiElementIndexer
  export interface EmptyWidgetGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "empty-widget"
    /**
     * The `frame` that is being moved when dragging this GUI element, if any. This element needs to be a child of the `drag_target` at some level.
     *
     * Only top-level elements in {@link LuaGui#screen LuaGui::screen} can be `drag_target`s.
     *
     * _Can only be used if this is flow, frame, label, table or empty-widget_
     * @example
     * -- This creates a frame that contains a dragging handle which can move the frame.
     * local frame = player.gui.screen.add{type="frame", direction="vertical"}
     * local dragger = frame.add{type="empty-widget", style="draggable_space"}
     * dragger.style.size = {128, 24}
     * dragger.drag_target = frame
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#drag_target Online documentation}
     */
    drag_target?: FrameGuiElement
  }
  export type EmptyWidgetGuiElement = EmptyWidgetGuiElementMembers & GuiElementIndexer
  /**
   * @noSelf
   */
  export interface TabbedPaneGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "tabbed-pane"
    /**
     * Adds the given tab and content widgets to this tabbed pane as a new tab.
     *
     * _Can only be used if this is tabbed-pane_
     * @param tab The tab to add, must be a GUI element of type "tab".
     * @param content The content to show when this tab is selected. Can be any type of GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#add_tab Online documentation}
     */
    add_tab(tab: LuaGuiElement, content: LuaGuiElement): void
    /**
     * Removes the given tab and its associated content from this tabbed pane.
     *
     * Removing a tab does not destroy the tab or the tab contents. It just removes them from the view.
     *
     * _Can only be used if this is tabbed-pane_
     * @param tab The tab to remove or `nil` to remove all tabs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#remove_tab Online documentation}
     */
    remove_tab(tab?: LuaGuiElement): void
    /**
     * The selected tab index for this tabbed pane, if any.
     *
     * _Can only be used if this is tabbed-pane_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#selected_tab_index Online documentation}
     */
    selected_tab_index?: uint32
    /**
     * The tabs and contents being shown in this tabbed-pane.
     *
     * _Can only be used if this is tabbed-pane_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#tabs Online documentation}
     */
    readonly tabs: TabAndContent[]
  }
  export type TabbedPaneGuiElement = TabbedPaneGuiElementMembers & GuiElementIndexer
  export interface TabGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "tab"
    /**
     * The text to display after the normal tab text (designed to work with numbers)
     *
     * _Can only be used if this is tab_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#badge_text Online documentation}
     */
    badge_text: LocalisedString
  }
  export type TabGuiElement = TabGuiElementMembers & GuiElementIndexer
  export interface SwitchGuiElementMembers extends BaseGuiElement {
    /**
     * The type of this GUI element.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#type Online documentation}
     */
    readonly type: "switch"
    /**
     * The switch state for this switch.
     *
     * If {@link LuaGuiElement#allow_none_state LuaGuiElement::allow_none_state} is false this can't be set to `"none"`.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#switch_state Online documentation}
     */
    switch_state: SwitchState
    /**
     * Whether the `"none"` state is allowed for this switch.
     *
     * This can't be set to false if the current switch_state is 'none'.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#allow_none_state Online documentation}
     */
    allow_none_state: boolean
    /**
     * The text shown for the left switch label.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#left_label_caption Online documentation}
     */
    left_label_caption: LocalisedString
    /**
     * The tooltip shown on the left switch label.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#left_label_tooltip Online documentation}
     */
    left_label_tooltip: LocalisedString
    /**
     * The text shown for the right switch label.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#right_label_caption Online documentation}
     */
    right_label_caption: LocalisedString
    /**
     * The tooltip shown on the right switch label.
     *
     * _Can only be used if this is switch_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html#right_label_tooltip Online documentation}
     */
    right_label_tooltip: LocalisedString
  }
  export type SwitchGuiElement = SwitchGuiElementMembers & GuiElementIndexer
  type GuiElementMembers =
    | ButtonGuiElementMembers
    | SpriteButtonGuiElementMembers
    | CheckboxGuiElementMembers
    | FlowGuiElementMembers
    | FrameGuiElementMembers
    | LabelGuiElementMembers
    | LineGuiElementMembers
    | ProgressBarGuiElementMembers
    | TableGuiElementMembers
    | TextFieldGuiElementMembers
    | RadioButtonGuiElementMembers
    | SpriteGuiElementMembers
    | ScrollPaneGuiElementMembers
    | DropDownGuiElementMembers
    | ListBoxGuiElementMembers
    | CameraGuiElementMembers
    | ChooseElemButtonGuiElementMembers
    | TextBoxGuiElementMembers
    | SliderGuiElementMembers
    | MinimapGuiElementMembers
    | EntityPreviewGuiElementMembers
    | EmptyWidgetGuiElementMembers
    | TabbedPaneGuiElementMembers
    | TabGuiElementMembers
    | SwitchGuiElementMembers
  /**
   * An element of a custom GUI. This type is used to represent {@link GuiElementType any kind} of a GUI element - labels, buttons and frames are all instances of this type. Just like {@link LuaEntity}, different kinds of elements support different attributes; attempting to access an attribute on an element that doesn't support it (for instance, trying to access the `column_count` of a `textfield`) will result in a runtime error.
   *
   * For information on all supported GUI elements, see {@link GuiElementType}.
   *
   * Each GUI element allows access to its children by having them as attributes. Thus, one can use the `parent.child` syntax to refer to children. Lua also supports the `parent["child"]` syntax to refer to the same element. This can be used in cases where the child has a name that isn't a valid Lua identifier.
   * @example
   * -- This will add a label called "greeting" to the top flow.
   * -- Immediately after, it will change its text to illustrate accessing child elements.
   * game.player.gui.top.add{type="label", name="greeting", caption="Hi"}
   * game.player.gui.top.greeting.caption = "Hello there!"
   * game.player.gui.top["greeting"].caption = "Actually, never mind, I don't like your face"
   * @example
   * -- This will add a tabbed-pane and 2 tabs with contents.
   * local tabbed_pane = game.player.gui.top.add{type="tabbed-pane"}
   * local tab1 = tabbed_pane.add{type="tab", caption="Tab 1"}
   * local tab2 = tabbed_pane.add{type="tab", caption="Tab 2"}
   * local label1 = tabbed_pane.add{type="label", caption="Label 1"}
   * local label2 = tabbed_pane.add{type="label", caption="Label 2"}
   * tabbed_pane.add_tab(tab1, label1)
   * tabbed_pane.add_tab(tab2, label2)
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaGuiElement.html Online documentation}
   */
  type LuaGuiElement = GuiElementMembers & GuiElementIndexer
  /**
   * Prototype of a heat buffer.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHeatBufferPrototype.html Online documentation}
   */
  export interface LuaHeatBufferPrototype {
    readonly max_temperature: double
    readonly default_temperature: double
    readonly specific_heat: double
    readonly max_transfer: double
    readonly min_temperature_gradient: double
    readonly min_working_temperature: double
    readonly minimum_glow_temperature: double
    readonly connections: HeatConnection[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaHeatBufferPrototype"
  }
  /**
   * Prototype of a heat energy source.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHeatEnergySourcePrototype.html Online documentation}
   */
  export interface LuaHeatEnergySourcePrototype {
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. Multiplying it by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHeatEnergySourcePrototype.html#emissions_per_joule Online documentation}
     */
    readonly emissions_per_joule: Record<string, double>
    readonly render_no_network_icon: boolean
    readonly render_no_power_icon: boolean
    readonly max_temperature: double
    readonly default_temperature: double
    readonly specific_heat: double
    readonly max_transfer: double
    readonly min_temperature_gradient: double
    readonly min_working_temperature: double
    readonly minimum_glow_temperature: double
    readonly connections: HeatConnection[]
    readonly heat_buffer_prototype: LuaHeatBufferPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaHeatEnergySourcePrototype"
  }
  /**
   * Provides various helper and utility functions. It is accessible through the global object named `helpers` in all stages (settings, prototype and runtime).
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html Online documentation}
   * @noSelf
   */
  export interface LuaHelpers {
    /**
     * Convert a table to a JSON string
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#table_to_json Online documentation}
     */
    table_to_json(data: table): string
    /**
     * Convert a JSON string to a table.
     * @param json The string to convert.
     * @returns The returned object, or `nil` if the JSON string was invalid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#json_to_table Online documentation}
     */
    json_to_table(json: string): AnyBasic | nil
    /**
     * Write a file to the `script-output` folder, located in the game's {@linkplain https://wiki.factorio.com/User_data_directory user data directory}. The name and file extension of the file can be specified via the `filename` parameter.
     * @param filename The name of the file. Providing a directory path (ex. `"save/here/example.txt"`) will create the necessary folder structure in `script-output`.
     * @param data The content to write to the file.
     * @param append If `true`, `data` will be appended to the end of the file. Defaults to `false`, which will overwrite any pre-existing file with the new `data`.
     * @param for_player If given, the file will only be written for this `player_index`. Providing `0` will only write to the server's output if present. `for_player` cannot be used in settings and prototype stages.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#write_file Online documentation}
     */
    write_file(filename: string, data: LocalisedString, append?: boolean, for_player?: uint32): void
    /**
     * Send data to a UDP port on localhost for a specified player, if enabled.
     *
     * This must be enabled per-instance with `--enable-lua-udp`.
     * @param port Destination port number (localhost only)
     * @param data The content to send.
     * @param for_player If given, the packet will only be sent from this `player_index`. Providing `0` will only send from the server if present. `for_player` cannot be used in settings and prototype stages.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#send_udp Online documentation}
     */
    send_udp(port: uint16, data: LocalisedString, for_player?: uint32): void
    /**
     * Dispatch {@link defines.events.on_udp_packet_received} events for any new packets received by the specified player or the server.
     *
     * This must be enabled per-instance with `--enable-lua-udp`.
     *
     * UDP socket when enabled requests 256KB of receive buffer from the operating system. If there is more data than this between two subsequent calls of this method, data will be lost. That also applies to periods when the game is paused or is being saved as in those case the game update is not happening.
     *
     * Note: lua event is not raised immediately as the UDP packet needs to be introduced into game state by means of input actions. Please keep incoming traffic as small as possible as in case of multiplayer game with many players, all this data will have to go through the multiplayer server and be distributed to all clients.
     *
     * Not available in settings and prototype stages.
     * @param for_player If given, packets will only be read from this `player_index`. Providing `0` will only read from the server if present.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#recv_udp Online documentation}
     */
    recv_udp(for_player?: uint32): void
    /**
     * Remove a file or directory in the `script-output` folder, located in the game's {@linkplain https://wiki.factorio.com/User_data_directory user data directory}. Can be used to remove files created by {@link LuaHelpers#write_file LuaHelpers::write_file}.
     * @param path The path to the file or directory to remove, relative to `script-output`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#remove_path Online documentation}
     */
    remove_path(path: string): void
    /**
     * Converts the given direction into the string version of the direction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#direction_to_string Online documentation}
     */
    direction_to_string(direction: defines.direction): string
    /**
     * Evaluate an expression, substituting variables as provided.
     * @param expression The expression to evaluate.
     * @param variables Variables to be substituted.
     * @example
     * -- Calculate the number of research units required to unlock mining productivity level 10
     * local formula = game.forces["player"].technologies["mining-productivity-4"].research_unit_count_formula
     * local units = helpers.evaluate_expression(formula, { L = 10, l = 10 })
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#evaluate_expression Online documentation}
     */
    evaluate_expression(expression: MathExpression, variables?: Record<string, double>): double
    /**
     * Deflates and base64 encodes the given string.
     * @param string The string to encode.
     * @returns The encoded string or `nil` if the encode failed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#encode_string Online documentation}
     */
    encode_string(string: string): string | nil
    /**
     * Base64 decodes and inflates the given string.
     * @param string The string to decode.
     * @returns The decoded string or `nil` if the decode failed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#decode_string Online documentation}
     */
    decode_string(string: string): string | nil
    /**
     * Convert a map exchange string to map gen settings and map settings.
     *
     * Not available in settings and prototype stages.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#parse_map_exchange_string Online documentation}
     */
    parse_map_exchange_string(map_exchange_string: string): MapExchangeStringData
    /**
     * Goes over all items, entities, tiles, recipes, technologies among other things and logs if the locale is incorrect.
     *
     * Also prints true/false if called from the console.
     *
     * Not available in settings and prototype stages.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#check_prototype_translations Online documentation}
     */
    check_prototype_translations(): void
    /**
     * Checks if the given SoundPath is valid.
     *
     * Not available in settings and prototype stages.
     * @param sound_path Path to the sound.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#is_valid_sound_path Online documentation}
     */
    is_valid_sound_path(sound_path: SoundPath): boolean
    /**
     * Checks if the given SpritePath is valid and contains a loaded sprite. The existence of the image is not checked for paths of type `file`.
     *
     * Not available in settings and prototype stages.
     * @param sprite_path Path to the image.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#is_valid_sprite_path Online documentation}
     */
    is_valid_sprite_path(sprite_path: SpritePath): boolean
    /**
     * Creates a {@link LuaProfiler}, which is used for measuring script performance.
     *
     * LuaProfiler cannot be serialized.
     *
     * Not available in settings and prototype stages.
     * @param stopped Create the timer stopped
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#create_profiler Online documentation}
     */
    create_profiler(stopped?: boolean): LuaProfiler
    /**
     * Compares 2 version strings.
     * @param first First version string to compare.
     * @param second Second version string to compare.
     * @returns -1 if first is smaller than second, 0 if first equal second, 1 if first is greater than second.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#compare_versions Online documentation}
     */
    compare_versions(first: string, second: string): int32
    /**
     * Converts the given string to lowercase and returns it. Unlike `string.lower()`, this function supports {@linkplain https://factorio.com/blog/post/fff-436 non-Latin characters}.
     * @returns The input string converted to lowercase.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#multilingual_to_lower Online documentation}
     */
    multilingual_to_lower(input: string): string
    /**
     * Current version of game
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaHelpers.html#game_version Online documentation}
     */
    readonly game_version: string
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaHelpers"
  }
  /**
   * Control behavior for inserters.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html Online documentation}
   */
  export interface LuaInserterControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if filters are set from circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html#circuit_set_filters Online documentation}
     */
    circuit_set_filters: boolean
    /**
     * `true` if the contents of the inserter hand should be sent to the circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html#circuit_read_hand_contents Online documentation}
     */
    circuit_read_hand_contents: boolean
    /**
     * The hand read mode for the inserter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html#circuit_hand_read_mode Online documentation}
     */
    circuit_hand_read_mode: defines.control_behavior.inserter.hand_read_mode
    /**
     * If the stack size of the inserter is set through the circuit network or not.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html#circuit_set_stack_size Online documentation}
     */
    circuit_set_stack_size: boolean
    /**
     * The signal used to set the stack size of the inserter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInserterControlBehavior.html#circuit_stack_control_signal Online documentation}
     */
    get circuit_stack_control_signal(): SignalID | nil
    set circuit_stack_control_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaInserterControlBehavior"
  }
  /**
   * A storage of item stacks.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html Online documentation}
   * @noSelf
   */
  export interface LuaInventory extends ReadonlyArray<LuaItemStack> {
    /**
     * Clear this inventory of all items so that it becomes empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#clear Online documentation}
     */
    clear(): void
    /**
     * Can at least some items be inserted?
     * @param items Items that would be inserted.
     * @returns `true` if at least a part of the given items could be inserted into this inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#can_insert Online documentation}
     */
    can_insert(items: ItemStackIdentification): boolean
    /**
     * Insert items into this inventory.
     * @param items Items to insert.
     * @returns Number of items actually inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#insert Online documentation}
     */
    insert(items: ItemStackIdentification): uint32
    /**
     * Remove items from this inventory.
     * @param items Items to remove.
     * @returns Number of items actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#remove Online documentation}
     */
    remove(items: ItemStackIdentification): uint32
    /**
     * Get the number of all or some items in this inventory.
     * @param item The item to count. If not specified, count all items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_item_count Online documentation}
     */
    get_item_count(item?: ItemWithQualityID): uint32
    /**
     * Get the number of items in this inventory that match provided filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_item_count_filtered Online documentation}
     */
    get_item_count_filtered(filter: ItemFilterWrite): uint32
    /**
     * Get the number of all or some items in this inventory, aggregated by quality.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_item_quality_counts Online documentation}
     */
    get_item_quality_counts(item?: ItemID): Record<string, uint32>
    /**
     * Does this inventory contain nothing?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#is_empty Online documentation}
     */
    is_empty(): boolean
    /**
     * Is every stack in this inventory full? Ignores stacks blocked by the current bar.
     *
     * For the input slots of crafting machines that allow counts larger than the item stack size, this may return true even when more items can still be inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#is_full Online documentation}
     */
    is_full(): boolean
    /**
     * Get counts of all items in this inventory.
     * @returns List of all items in the inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_contents Online documentation}
     */
    get_contents(): ItemWithQualityCounts
    /**
     * Does this inventory support a bar? Bar is the draggable red thing, found for example on chests, that limits the portion of the inventory that may be manipulated by machines.
     *
     * "Supporting a bar" doesn't mean that the bar is set to some nontrivial value. Supporting a bar means the inventory supports having this limit at all. The character's inventory is an example of an inventory without a bar; the wooden chest's inventory is an example of one with a bar.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#supports_bar Online documentation}
     */
    supports_bar(): boolean
    /**
     * Get the current bar. This is the index at which the red area starts.
     *
     * Only useable if this inventory supports having a bar.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_bar Online documentation}
     */
    get_bar(): uint32
    /**
     * Set the current bar.
     *
     * Only useable if this inventory supports having a bar.
     * @param bar The new limit. Omitting this parameter or passing `nil` will clear the limit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#set_bar Online documentation}
     */
    set_bar(bar?: uint32): void
    /**
     * If this inventory supports filters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#supports_filters Online documentation}
     */
    supports_filters(): boolean
    /**
     * If this inventory supports filters and has at least 1 filter set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#is_filtered Online documentation}
     */
    is_filtered(): boolean
    /**
     * If the given inventory slot filter can be set to the given filter.
     * @param index The item stack index
     * @param filter The item filter
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#can_set_filter Online documentation}
     */
    can_set_filter(index: uint32, filter: ItemFilterWrite): boolean
    /**
     * Gets the filter for the given item stack index.
     * @param index The item stack index
     * @returns The current filter or `nil` if none.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_filter Online documentation}
     */
    get_filter(index: uint32): ItemFilter | nil
    /**
     * Sets the filter for the given item stack index.
     *
     * Some inventory slots don't allow some filters (gun ammo can't be filtered for non-ammo).
     * @param index The item stack index.
     * @param filter The new filter. `nil` erases any existing filter.
     * @returns If the filter was allowed to be set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#set_filter Online documentation}
     */
    set_filter(index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Finds the first LuaItemStack in the inventory that matches the given item name.
     * @param item The item to find
     * @returns The first matching stack, or `nil` if none match.
     * @returns The stack index of the matching stack, if any is found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#find_item_stack Online documentation}
     */
    find_item_stack(item: ItemWithQualityID): LuaMultiReturn<[LuaItemStack | nil, uint32 | nil]>
    /**
     * Finds the first empty stack. Filtered slots are excluded unless a filter item is given.
     * @param item If given, empty stacks that are filtered for this item will be included.
     * @returns The first empty stack, or `nil` if there aren't any empty stacks.
     * @returns The stack index of the matching stack, if any is found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#find_empty_stack Online documentation}
     */
    find_empty_stack(item?: ItemWithQualityID): LuaMultiReturn<[LuaItemStack | nil, uint32 | nil]>
    /**
     * Counts the number of empty stacks.
     * @param include_filtered If true, filtered slots will be included. Defaults to false.
     * @param include_bar If true, slots blocked by the current bar will be included. Defaults to true.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#count_empty_stacks Online documentation}
     */
    count_empty_stacks(include_filtered?: boolean, include_bar?: boolean): uint32
    /**
     * Gets the number of the given item that can be inserted into this inventory.
     *
     * This is a "best guess" number; things like assembling machine filtered slots, module slots, items with durability, and items with mixed health will cause the result to be inaccurate. The main use for this is in checking how many of a basic item can fit into a basic inventory.
     *
     * This accounts for the 'bar' on the inventory.
     * @param item The item to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#get_insertable_count Online documentation}
     */
    get_insertable_count(item: ItemWithQualityID): uint32
    /**
     * Sorts and merges the items in this inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#sort_and_merge Online documentation}
     */
    sort_and_merge(): void
    /**
     * Resizes the inventory.
     *
     * Items in slots beyond the new capacity are deleted.
     *
     * Only inventories created by {@link LuaGameScript#create_inventory LuaGameScript::create_inventory} can be resized.
     *
     * ## Raised events
     * - {@link OnPreScriptInventoryResizedEvent on_pre_script_inventory_resized} _instantly_
     * - {@link OnScriptInventoryResizedEvent on_script_inventory_resized} _instantly_
     * @param size New size of a inventory
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#resize Online documentation}
     */
    resize(size: uint16): void
    /**
     * Destroys this inventory.
     *
     * Only inventories created by {@link LuaGameScript#create_inventory LuaGameScript::create_inventory} can be destroyed this way.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Get the number of slots in this inventory.
     * @example
     * -- Will print the number of slots in the player's main inventory.
     * game.player.print(#game.player.get_main_inventory())
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#length_operator Online documentation}
     */
    readonly length: uint32
    /**
     * The indexing operator.
     * @example
     * -- Will get the first item in the player's inventory.
     * game.player.get_main_inventory()[1]
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#index_operator Online documentation}
     */
    readonly [index: number]: LuaItemStack
    /**
     * The inventory index this inventory uses, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#index Online documentation}
     */
    readonly index?: defines.inventory
    /**
     * Name of this inventory, if any. Names match keys of {@link defines.inventory}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#name Online documentation}
     */
    readonly name?: string
    /**
     * The entity that owns this inventory, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#entity_owner Online documentation}
     */
    readonly entity_owner?: LuaEntity
    /**
     * The player that owns this inventory, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#player_owner Online documentation}
     */
    readonly player_owner?: LuaPlayer
    /**
     * The equipment that owns this inventory, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#equipment_owner Online documentation}
     */
    readonly equipment_owner?: LuaEquipment
    /**
     * The mod that owns this inventory, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#mod_owner Online documentation}
     */
    readonly mod_owner?: string
    /**
     * Gives a total weight of all items currently in this inventory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#weight Online documentation}
     */
    readonly weight: Weight
    /**
     * Gives a maximum weight of items that can be inserted into this inventory.
     *
     * _Can only be used if this is InventoryWithWeightLimit_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaInventory.html#max_weight Online documentation}
     */
    readonly max_weight?: Weight
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaInventory"
  }
  /**
   * A reference to an item with data. In contrast to LuaItemStack, this is binding to a specific item data even if it would move between entities or inventories.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html Online documentation}
   */
  export interface LuaItem extends LuaItemCommon {
    /**
     * Type of the item prototype
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html#type Online documentation}
     */
    readonly type: ItemType
    /**
     * Name of the item prototype
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html#name Online documentation}
     */
    readonly name: string
    /**
     * Item prototype of this item
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html#prototype Online documentation}
     */
    readonly prototype: LuaItemPrototype
    /**
     * The quality of this item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * Object representing the item stack this item is located in right now. If its not possible to locate the item stack holding this item, a nil will be returned
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItem.html#item_stack Online documentation}
     */
    readonly item_stack?: LuaItemStack
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaItem"
  }
  /**
   * Common methods related to usage of item with data. It is useful when LuaItemStack contains item with data or in general with LuaItem as it can only point at an item with data.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html Online documentation}
   * @noSelf
   */
  export interface LuaItemCommon {
    /**
     * Access the inner inventory of an item.
     * @param inventory Index of the inventory to access, which can only be {@link defines.inventory.item_main}.
     * @returns `nil` if there is no inventory with the given index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_inventory Online documentation}
     */
    get_inventory(inventory: defines.inventory): LuaInventory | nil
    /**
     * Clears this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_blueprint Online documentation}
     */
    clear_blueprint(): void
    /**
     * Is this blueprint item setup? I.e. is it a non-empty blueprint?
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint_setup Online documentation}
     */
    is_blueprint_setup(): boolean
    /**
     * Build this blueprint at the given location.
     *
     * Built entities can be come invalid between the building of the blueprint and the function returning if by_player or raise_built is used and one of those events invalidates the entity.
     *
     * _Can only be used if this is BlueprintItem_
     * @returns Array of created ghosts
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#build_blueprint Online documentation}
     */
    build_blueprint(params: {
      /**
       * Surface to build on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the building
       */
      readonly force: ForceID
      /**
       * The position to build at
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The direction to use when building
       */
      readonly direction?: defines.direction
      /**
       * If `normal`, blueprint will not be built if any one thing can't be built. If `forced`, anything that can be built is built and obstructing nature entities will be deconstructed. If `superforced`, all obstructions will be deconstructed and the blueprint will be built.
       */
      readonly build_mode?: defines.build_mode
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any. If provided {@link defines.events.on_built_entity} will also be fired on successful entity creation.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If true; {@link defines.events.script_raised_built} will be fired on successful entity creation. Note: this is ignored if by_player is provided.
       */
      readonly raise_built?: boolean
    }): LuaEntity[]
    /**
     * Sets up this blueprint using the found blueprintable entities/tiles on the surface.
     *
     * _Can only be used if this is BlueprintItem_
     * @returns The blueprint entity index to source entity mapping.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#create_blueprint Online documentation}
     */
    create_blueprint(params: {
      /**
       * Surface to create from
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the creation
       */
      readonly force: ForceID
      /**
       * The bounding box
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * When true, blueprintable tiles are always included in the blueprint. When false they're only included if no entities exist in the setup area. Defaults to false.
       */
      readonly always_include_tiles?: boolean
      /**
       * When true, entities are included in the blueprint. Defaults to true.
       */
      readonly include_entities?: boolean
      /**
       * When true, modules are included in the blueprint. Defaults to true.
       */
      readonly include_modules?: boolean
      /**
       * When true, station names are included in the blueprint. Defaults to false.
       */
      readonly include_station_names?: boolean
      /**
       * When true, trains are included in the blueprint. Defaults to false.
       */
      readonly include_trains?: boolean
      /**
       * When true, train fuel is included in the blueprint, Defaults to true.
       */
      readonly include_fuel?: boolean
    }): Record<uint32, LuaEntity>
    /**
     * Gets the tags for the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_tags Online documentation}
     */
    get_blueprint_entity_tags(index: uint32): Tags
    /**
     * Sets the tags on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entity_tags Online documentation}
     */
    set_blueprint_entity_tags(index: uint32, tags: Tags): void
    /**
     * Gets the given tag on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index.
     * @param tag The tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_tag Online documentation}
     */
    get_blueprint_entity_tag(index: uint32, tag: string): AnyBasic | nil
    /**
     * Sets the given tag on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index.
     * @param tag The tag to set.
     * @param value The tag value to set or `nil` to clear the tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entity_tag Online documentation}
     */
    set_blueprint_entity_tag(index: uint32, tag: string, value: AnyBasic | nil): void
    /**
     * The entities in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entities Online documentation}
     */
    get_blueprint_entities(): BlueprintEntity[] | nil
    /**
     * Set new entities to be a part of this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @param entities The new blueprint entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entities Online documentation}
     */
    set_blueprint_entities(entities: readonly BlueprintEntityWrite[]): void
    /**
     * A list of the tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_tiles Online documentation}
     */
    get_blueprint_tiles(): Tile[] | nil
    /**
     * Set specific tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @param tiles Tiles to be a part of the blueprint.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_tiles Online documentation}
     */
    set_blueprint_tiles(tiles: readonly TileWrite[]): void
    /**
     * Gets the number of entities in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_count Online documentation}
     */
    get_blueprint_entity_count(): uint32
    /**
     * Gets the tag with the given name or returns `nil` if it doesn't exist.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_tag Online documentation}
     */
    get_tag(tag_name: string): AnyBasic | nil
    /**
     * Sets the tag with the given name and value.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_tag Online documentation}
     */
    set_tag(tag_name: string, tag: AnyBasic): void
    /**
     * Removes a tag with the given name.
     *
     * _Can only be used if this is ItemWithTags_
     * @returns If the tag existed and was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#remove_tag Online documentation}
     */
    remove_tag(tag: string): boolean
    /**
     * Gets the entity filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_entity_filter Online documentation}
     */
    get_entity_filter(index: uint32): ItemFilter | nil
    /**
     * Sets the entity filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (meaning it was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_entity_filter Online documentation}
     */
    set_entity_filter(index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Gets the tile filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_tile_filter Online documentation}
     */
    get_tile_filter(index: uint32): string | nil
    /**
     * Sets the tile filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (meaning it was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_tile_filter Online documentation}
     */
    set_tile_filter(index: uint32, filter: string | LuaTilePrototype | LuaTile | nil): boolean
    /**
     * Deconstruct the given area with this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#deconstruct_area Online documentation}
     */
    deconstruct_area(params: {
      /**
       * Surface to deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Cancel deconstruct the given area with this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#cancel_deconstruct_area Online documentation}
     */
    cancel_deconstruct_area(params: {
      /**
       * Surface to cancel deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for canceling deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the cancel deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Clears all settings/filters on this deconstruction item resetting it to default values.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_deconstruction_item Online documentation}
     */
    clear_deconstruction_item(): void
    /**
     * Clears all settings/filters on this upgrade item resetting it to default values.
     *
     * _Can only be used if this is UpgradeItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_upgrade_item Online documentation}
     */
    clear_upgrade_item(): void
    /**
     * Gets the filter at the given index for this upgrade item. Note that sources (`"from"` type) that are undefined will read as `{type = "item"}`, while destinations (`"to"` type) that are undefined will read as `nil`.
     *
     * In contrast to {@link LuaItemCommon#set_mapper LuaItemCommon::set_mapper}, indices past the upgrade item's current size are considered to be out of bounds.
     *
     * _Can only be used if this is UpgradeItem_
     * @param index The index of the mapper to read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_mapper Online documentation}
     */
    get_mapper(index: uint32, type: "from" | "to"): UpgradeMapperSource | UpgradeMapperDestination | nil
    /**
     * Sets the module filter at the given index for this upgrade item.
     *
     * In contrast to {@link LuaItemCommon#get_mapper LuaItemCommon::get_mapper}, indices past the upgrade item's current size are valid and expand the list of mappings accordingly, if within reasonable bounds.
     *
     * _Can only be used if this is UpgradeItem_
     * @param index The index of the mapper to set.
     * @param mapper The mapper to set. Set `nil` to clear the mapper.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_mapper Online documentation}
     */
    set_mapper(
      index: uint32,
      type: "from" | "to",
      mapper: UpgradeMapperSourceWrite | UpgradeMapperDestination | nil,
    ): void
    /**
     * If this is a blueprint item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint Online documentation}
     */
    readonly is_blueprint: boolean
    /**
     * If this is a blueprint book item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint_book Online documentation}
     */
    readonly is_blueprint_book: boolean
    /**
     * If this is an item with label item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_label Online documentation}
     */
    readonly is_item_with_label: boolean
    /**
     * If this is an item with inventory item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_inventory Online documentation}
     */
    readonly is_item_with_inventory: boolean
    /**
     * If this is an item with entity data item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_entity_data Online documentation}
     */
    readonly is_item_with_entity_data: boolean
    /**
     * If this is a selection tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_selection_tool Online documentation}
     */
    readonly is_selection_tool: boolean
    /**
     * If this is an item with tags item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_tags Online documentation}
     */
    readonly is_item_with_tags: boolean
    /**
     * If this is a deconstruction tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_deconstruction_item Online documentation}
     */
    readonly is_deconstruction_item: boolean
    /**
     * If this is a upgrade item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_upgrade_item Online documentation}
     */
    readonly is_upgrade_item: boolean
    /**
     * If this is a tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_tool Online documentation}
     */
    readonly is_tool: boolean
    /**
     * If this is an ammo item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_ammo Online documentation}
     */
    readonly is_ammo: boolean
    /**
     * If this is an armor item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_armor Online documentation}
     */
    readonly is_armor: boolean
    /**
     * If this is a repair tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_repair_tool Online documentation}
     */
    readonly is_repair_tool: boolean
    /**
     * The unique identifier for this item, if any. Note that this ID stays the same no matter where the item is moved to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#item_number Online documentation}
     */
    readonly item_number?: uint64
    /**
     * Icons of this blueprint item, blueprint book, deconstruction item or upgrade planner. An item that doesn't have icons returns `nil` on read and throws error on write.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#preview_icons Online documentation}
     */
    get preview_icons(): BlueprintSignalIcon[] | nil
    set preview_icons(value: readonly BlueprintSignalIconWrite[] | nil)
    /**
     * The equipment grid of this item, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#grid Online documentation}
     */
    readonly grid?: LuaEquipmentGrid
    /**
     * The location of this item if it can be found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#owner_location Online documentation}
     */
    readonly owner_location: ItemLocationData
    /**
     * The snapping grid size in this blueprint item. `nil` if snapping is not enabled.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_snap_to_grid Online documentation}
     */
    get blueprint_snap_to_grid(): TilePosition | nil
    set blueprint_snap_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * The offset from the absolute grid. `nil` if absolute snapping is not enabled.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_position_relative_to_grid Online documentation}
     */
    get blueprint_position_relative_to_grid(): TilePosition | nil
    set blueprint_position_relative_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * If absolute snapping is enabled on this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_absolute_snapping Online documentation}
     */
    blueprint_absolute_snapping: boolean
    /**
     * The description for this blueprint or blueprint book
     *
     * _Can only be used if this is BlueprintItem or BlueprintBookItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * List of raw materials required to build this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#cost_to_build Online documentation}
     */
    readonly cost_to_build: ItemWithQualityCounts
    /**
     * The default icons for a blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#default_icons Online documentation}
     */
    readonly default_icons: BlueprintSignalIcon[]
    /**
     * The active blueprint index for this blueprint book. `nil` if this blueprint book is empty.
     *
     * _Can only be used if this is BlueprintBookItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#active_index Online documentation}
     */
    active_index?: uint32
    /**
     * The current label for this item, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#label Online documentation}
     */
    label?: string
    /**
     * The current label color for this item, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#label_color Online documentation}
     */
    get label_color(): Color | nil
    set label_color(value: Color | ColorArray | nil)
    /**
     * Whether the label for this item can be manually changed. When false the label can only be changed through the API.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#allow_manual_label_change Online documentation}
     */
    allow_manual_label_change: boolean
    /**
     * If this is an item with entity data, get the stored entity label.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_label Online documentation}
     */
    entity_label?: string
    /**
     * If this is an item with entity data, get the stored entity color.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_color Online documentation}
     */
    get entity_color(): Color | nil
    set entity_color(value: Color | ColorArray | nil)
    /**
     * If this is an item with entity data, get the stored logistic filters.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_logistic_sections Online documentation}
     */
    get entity_logistic_sections(): LogisticSections
    set entity_logistic_sections(value: LogisticSectionsWrite)
    /**
     * If this is an item with entity data, get the stored request from buffer state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_request_from_buffers Online documentation}
     */
    entity_request_from_buffers: boolean
    /**
     * If this is an item with entity data, get the stored vehicle logistics enabled state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_logistics_enabled Online documentation}
     */
    entity_logistics_enabled: boolean
    /**
     * If this is an item with entity data, get the stored enable logistics while moving state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_enable_logistics_while_moving Online documentation}
     */
    entity_enable_logistics_while_moving: boolean
    /**
     * If this is an item with entity data, get the stored driver is gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_driver_is_gunner Online documentation}
     */
    entity_driver_is_gunner: boolean
    /**
     * If this is an item with entity data, get the stored auto target without gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_auto_target_without_gunner Online documentation}
     */
    entity_auto_target_without_gunner: boolean
    /**
     * If this is an item with entity data, get the stored auto target with gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_auto_target_with_gunner Online documentation}
     */
    entity_auto_target_with_gunner: boolean
    /**
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tags Online documentation}
     */
    tags: Tags
    /**
     * The custom description this item-with-tags. This is shown over the normal item description if this is set to a non-empty value.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#custom_description Online documentation}
     */
    custom_description: LocalisedString
    /**
     * The number of entity filters this deconstruction item supports.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filter_count Online documentation}
     */
    readonly entity_filter_count: uint32
    /**
     * The entity filters for this deconstruction item. The attribute is a sparse array with the keys representing the index of the filter. All prototypes in this array must not have the `"not-deconstructable"` flag set and are either a `cliff` or marked as `minable`.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filters Online documentation}
     */
    get entity_filters(): ItemFilter[]
    set entity_filters(value: readonly ItemFilterWrite[])
    /**
     * The number of tile filters this deconstruction item supports.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filter_count Online documentation}
     */
    readonly tile_filter_count: uint32
    /**
     * The tile filters for this deconstruction item. The attribute is a sparse array with the keys representing the index of the filter. Reading filters always returns an array of strings which are the tile prototype names.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filters Online documentation}
     */
    get tile_filters(): LuaTilePrototype[]
    set tile_filters(value: readonly TileID[])
    /**
     * The blacklist/whitelist entity filter mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filter_mode Online documentation}
     */
    entity_filter_mode: defines.deconstruction_item.entity_filter_mode
    /**
     * The blacklist/whitelist tile filter mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filter_mode Online documentation}
     */
    tile_filter_mode: defines.deconstruction_item.tile_filter_mode
    /**
     * The tile selection mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_selection_mode Online documentation}
     */
    tile_selection_mode: defines.deconstruction_item.tile_selection_mode
    /**
     * If this deconstruction item is set to allow trees and rocks only.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#trees_and_rocks_only Online documentation}
     */
    trees_and_rocks_only: boolean
    /**
     * The current count of mappers in the upgrade item.
     *
     * _Can only be used if this is UpgradeItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#mapper_count Online documentation}
     */
    readonly mapper_count: uint32
    /**
     * Durability of the contained item. Automatically capped at the item's maximum durability.
     *
     * _Can only be used if this is Tool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#durability Online documentation}
     */
    durability: double
    /**
     * Number of bullets left in the magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#ammo Online documentation}
     */
    ammo: uint32
  }
  /**
   * @noSelf
   */
  export interface BaseItemCommon {
    /**
     * Access the inner inventory of an item.
     * @param inventory Index of the inventory to access, which can only be {@link defines.inventory.item_main}.
     * @returns `nil` if there is no inventory with the given index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_inventory Online documentation}
     */
    get_inventory(inventory: defines.inventory): LuaInventory | nil
    /**
     * If this is a blueprint item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint Online documentation}
     */
    readonly is_blueprint: boolean
    /**
     * If this is a blueprint book item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint_book Online documentation}
     */
    readonly is_blueprint_book: boolean
    /**
     * If this is an item with label item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_label Online documentation}
     */
    readonly is_item_with_label: boolean
    /**
     * If this is an item with inventory item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_inventory Online documentation}
     */
    readonly is_item_with_inventory: boolean
    /**
     * If this is an item with entity data item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_entity_data Online documentation}
     */
    readonly is_item_with_entity_data: boolean
    /**
     * If this is a selection tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_selection_tool Online documentation}
     */
    readonly is_selection_tool: boolean
    /**
     * If this is an item with tags item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_item_with_tags Online documentation}
     */
    readonly is_item_with_tags: boolean
    /**
     * If this is a deconstruction tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_deconstruction_item Online documentation}
     */
    readonly is_deconstruction_item: boolean
    /**
     * If this is a upgrade item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_upgrade_item Online documentation}
     */
    readonly is_upgrade_item: boolean
    /**
     * If this is a tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_tool Online documentation}
     */
    readonly is_tool: boolean
    /**
     * If this is an ammo item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_ammo Online documentation}
     */
    readonly is_ammo: boolean
    /**
     * If this is an armor item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_armor Online documentation}
     */
    readonly is_armor: boolean
    /**
     * If this is a repair tool item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_repair_tool Online documentation}
     */
    readonly is_repair_tool: boolean
    /**
     * The unique identifier for this item, if any. Note that this ID stays the same no matter where the item is moved to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#item_number Online documentation}
     */
    readonly item_number?: uint64
    /**
     * Icons of this blueprint item, blueprint book, deconstruction item or upgrade planner. An item that doesn't have icons returns `nil` on read and throws error on write.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#preview_icons Online documentation}
     */
    get preview_icons(): BlueprintSignalIcon[] | nil
    set preview_icons(value: readonly BlueprintSignalIconWrite[] | nil)
    /**
     * The equipment grid of this item, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#grid Online documentation}
     */
    readonly grid?: LuaEquipmentGrid
    /**
     * The location of this item if it can be found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#owner_location Online documentation}
     */
    readonly owner_location: ItemLocationData
  }
  /**
   * @noSelf
   */
  export interface BlueprintItemCommon extends BaseItemCommon {
    /**
     * Clears this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_blueprint Online documentation}
     */
    clear_blueprint(): void
    /**
     * Is this blueprint item setup? I.e. is it a non-empty blueprint?
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#is_blueprint_setup Online documentation}
     */
    is_blueprint_setup(): boolean
    /**
     * Build this blueprint at the given location.
     *
     * Built entities can be come invalid between the building of the blueprint and the function returning if by_player or raise_built is used and one of those events invalidates the entity.
     *
     * _Can only be used if this is BlueprintItem_
     * @returns Array of created ghosts
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#build_blueprint Online documentation}
     */
    build_blueprint(params: {
      /**
       * Surface to build on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the building
       */
      readonly force: ForceID
      /**
       * The position to build at
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The direction to use when building
       */
      readonly direction?: defines.direction
      /**
       * If `normal`, blueprint will not be built if any one thing can't be built. If `forced`, anything that can be built is built and obstructing nature entities will be deconstructed. If `superforced`, all obstructions will be deconstructed and the blueprint will be built.
       */
      readonly build_mode?: defines.build_mode
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any. If provided {@link defines.events.on_built_entity} will also be fired on successful entity creation.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If true; {@link defines.events.script_raised_built} will be fired on successful entity creation. Note: this is ignored if by_player is provided.
       */
      readonly raise_built?: boolean
    }): LuaEntity[]
    /**
     * Sets up this blueprint using the found blueprintable entities/tiles on the surface.
     *
     * _Can only be used if this is BlueprintItem_
     * @returns The blueprint entity index to source entity mapping.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#create_blueprint Online documentation}
     */
    create_blueprint(params: {
      /**
       * Surface to create from
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the creation
       */
      readonly force: ForceID
      /**
       * The bounding box
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * When true, blueprintable tiles are always included in the blueprint. When false they're only included if no entities exist in the setup area. Defaults to false.
       */
      readonly always_include_tiles?: boolean
      /**
       * When true, entities are included in the blueprint. Defaults to true.
       */
      readonly include_entities?: boolean
      /**
       * When true, modules are included in the blueprint. Defaults to true.
       */
      readonly include_modules?: boolean
      /**
       * When true, station names are included in the blueprint. Defaults to false.
       */
      readonly include_station_names?: boolean
      /**
       * When true, trains are included in the blueprint. Defaults to false.
       */
      readonly include_trains?: boolean
      /**
       * When true, train fuel is included in the blueprint, Defaults to true.
       */
      readonly include_fuel?: boolean
    }): Record<uint32, LuaEntity>
    /**
     * Gets the tags for the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_tags Online documentation}
     */
    get_blueprint_entity_tags(index: uint32): Tags
    /**
     * Sets the tags on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entity_tags Online documentation}
     */
    set_blueprint_entity_tags(index: uint32, tags: Tags): void
    /**
     * Gets the given tag on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index.
     * @param tag The tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_tag Online documentation}
     */
    get_blueprint_entity_tag(index: uint32, tag: string): AnyBasic | nil
    /**
     * Sets the given tag on the given blueprint entity index in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @param index The entity index.
     * @param tag The tag to set.
     * @param value The tag value to set or `nil` to clear the tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entity_tag Online documentation}
     */
    set_blueprint_entity_tag(index: uint32, tag: string, value: AnyBasic | nil): void
    /**
     * The entities in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entities Online documentation}
     */
    get_blueprint_entities(): BlueprintEntity[] | nil
    /**
     * Set new entities to be a part of this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @param entities The new blueprint entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_entities Online documentation}
     */
    set_blueprint_entities(entities: readonly BlueprintEntityWrite[]): void
    /**
     * A list of the tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_tiles Online documentation}
     */
    get_blueprint_tiles(): Tile[] | nil
    /**
     * Set specific tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @param tiles Tiles to be a part of the blueprint.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_blueprint_tiles Online documentation}
     */
    set_blueprint_tiles(tiles: readonly TileWrite[]): void
    /**
     * Gets the number of entities in this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_blueprint_entity_count Online documentation}
     */
    get_blueprint_entity_count(): uint32
    /**
     * The snapping grid size in this blueprint item. `nil` if snapping is not enabled.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_snap_to_grid Online documentation}
     */
    get blueprint_snap_to_grid(): TilePosition | nil
    set blueprint_snap_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * The offset from the absolute grid. `nil` if absolute snapping is not enabled.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_position_relative_to_grid Online documentation}
     */
    get blueprint_position_relative_to_grid(): TilePosition | nil
    set blueprint_position_relative_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * If absolute snapping is enabled on this blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_absolute_snapping Online documentation}
     */
    blueprint_absolute_snapping: boolean
    /**
     * The description for this blueprint or blueprint book
     *
     * _Can only be used if this is BlueprintItem or BlueprintBookItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * List of raw materials required to build this blueprint.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#cost_to_build Online documentation}
     */
    readonly cost_to_build: ItemWithQualityCounts
    /**
     * The default icons for a blueprint item.
     *
     * _Can only be used if this is BlueprintItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#default_icons Online documentation}
     */
    readonly default_icons: BlueprintSignalIcon[]
  }
  /**
   * @noSelf
   */
  export interface ItemWithTagsItemCommon extends BaseItemCommon {
    /**
     * Gets the tag with the given name or returns `nil` if it doesn't exist.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_tag Online documentation}
     */
    get_tag(tag_name: string): AnyBasic | nil
    /**
     * Sets the tag with the given name and value.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_tag Online documentation}
     */
    set_tag(tag_name: string, tag: AnyBasic): void
    /**
     * Removes a tag with the given name.
     *
     * _Can only be used if this is ItemWithTags_
     * @returns If the tag existed and was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#remove_tag Online documentation}
     */
    remove_tag(tag: string): boolean
    /**
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tags Online documentation}
     */
    tags: Tags
    /**
     * The custom description this item-with-tags. This is shown over the normal item description if this is set to a non-empty value.
     *
     * _Can only be used if this is ItemWithTags_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#custom_description Online documentation}
     */
    custom_description: LocalisedString
  }
  /**
   * @noSelf
   */
  export interface DeconstructionItemCommon extends BaseItemCommon {
    /**
     * Gets the entity filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_entity_filter Online documentation}
     */
    get_entity_filter(index: uint32): ItemFilter | nil
    /**
     * Sets the entity filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (meaning it was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_entity_filter Online documentation}
     */
    set_entity_filter(index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Gets the tile filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_tile_filter Online documentation}
     */
    get_tile_filter(index: uint32): string | nil
    /**
     * Sets the tile filter at the given index for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (meaning it was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_tile_filter Online documentation}
     */
    set_tile_filter(index: uint32, filter: string | LuaTilePrototype | LuaTile | nil): boolean
    /**
     * Deconstruct the given area with this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#deconstruct_area Online documentation}
     */
    deconstruct_area(params: {
      /**
       * Surface to deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Cancel deconstruct the given area with this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#cancel_deconstruct_area Online documentation}
     */
    cancel_deconstruct_area(params: {
      /**
       * Surface to cancel deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for canceling deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the cancel deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Clears all settings/filters on this deconstruction item resetting it to default values.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_deconstruction_item Online documentation}
     */
    clear_deconstruction_item(): void
    /**
     * The number of entity filters this deconstruction item supports.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filter_count Online documentation}
     */
    readonly entity_filter_count: uint32
    /**
     * The entity filters for this deconstruction item. The attribute is a sparse array with the keys representing the index of the filter. All prototypes in this array must not have the `"not-deconstructable"` flag set and are either a `cliff` or marked as `minable`.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filters Online documentation}
     */
    get entity_filters(): ItemFilter[]
    set entity_filters(value: readonly ItemFilterWrite[])
    /**
     * The number of tile filters this deconstruction item supports.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filter_count Online documentation}
     */
    readonly tile_filter_count: uint32
    /**
     * The tile filters for this deconstruction item. The attribute is a sparse array with the keys representing the index of the filter. Reading filters always returns an array of strings which are the tile prototype names.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filters Online documentation}
     */
    get tile_filters(): LuaTilePrototype[]
    set tile_filters(value: readonly TileID[])
    /**
     * The blacklist/whitelist entity filter mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_filter_mode Online documentation}
     */
    entity_filter_mode: defines.deconstruction_item.entity_filter_mode
    /**
     * The blacklist/whitelist tile filter mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_filter_mode Online documentation}
     */
    tile_filter_mode: defines.deconstruction_item.tile_filter_mode
    /**
     * The tile selection mode for this deconstruction item.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#tile_selection_mode Online documentation}
     */
    tile_selection_mode: defines.deconstruction_item.tile_selection_mode
    /**
     * If this deconstruction item is set to allow trees and rocks only.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#trees_and_rocks_only Online documentation}
     */
    trees_and_rocks_only: boolean
  }
  /**
   * @noSelf
   */
  export interface UpgradeItemCommon extends BaseItemCommon {
    /**
     * Clears all settings/filters on this upgrade item resetting it to default values.
     *
     * _Can only be used if this is UpgradeItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#clear_upgrade_item Online documentation}
     */
    clear_upgrade_item(): void
    /**
     * Gets the filter at the given index for this upgrade item. Note that sources (`"from"` type) that are undefined will read as `{type = "item"}`, while destinations (`"to"` type) that are undefined will read as `nil`.
     *
     * In contrast to {@link LuaItemCommon#set_mapper LuaItemCommon::set_mapper}, indices past the upgrade item's current size are considered to be out of bounds.
     *
     * _Can only be used if this is UpgradeItem_
     * @param index The index of the mapper to read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#get_mapper Online documentation}
     */
    get_mapper(index: uint32, type: "from" | "to"): UpgradeMapperSource | UpgradeMapperDestination | nil
    /**
     * Sets the module filter at the given index for this upgrade item.
     *
     * In contrast to {@link LuaItemCommon#get_mapper LuaItemCommon::get_mapper}, indices past the upgrade item's current size are valid and expand the list of mappings accordingly, if within reasonable bounds.
     *
     * _Can only be used if this is UpgradeItem_
     * @param index The index of the mapper to set.
     * @param mapper The mapper to set. Set `nil` to clear the mapper.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#set_mapper Online documentation}
     */
    set_mapper(
      index: uint32,
      type: "from" | "to",
      mapper: UpgradeMapperSourceWrite | UpgradeMapperDestination | nil,
    ): void
    /**
     * The current count of mappers in the upgrade item.
     *
     * _Can only be used if this is UpgradeItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#mapper_count Online documentation}
     */
    readonly mapper_count: uint32
  }
  export interface BlueprintBookItemCommon extends BaseItemCommon {
    /**
     * The description for this blueprint or blueprint book
     *
     * _Can only be used if this is BlueprintItem or BlueprintBookItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * The active blueprint index for this blueprint book. `nil` if this blueprint book is empty.
     *
     * _Can only be used if this is BlueprintBookItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#active_index Online documentation}
     */
    active_index?: uint32
  }
  export interface ItemWithLabelItemCommon extends BaseItemCommon {
    /**
     * The current label for this item, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#label Online documentation}
     */
    label?: string
    /**
     * The current label color for this item, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#label_color Online documentation}
     */
    get label_color(): Color | nil
    set label_color(value: Color | ColorArray | nil)
    /**
     * Whether the label for this item can be manually changed. When false the label can only be changed through the API.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#allow_manual_label_change Online documentation}
     */
    allow_manual_label_change: boolean
  }
  export interface ItemWithEntityDataItemCommon extends BaseItemCommon {
    /**
     * If this is an item with entity data, get the stored entity label.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_label Online documentation}
     */
    entity_label?: string
    /**
     * If this is an item with entity data, get the stored entity color.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_color Online documentation}
     */
    get entity_color(): Color | nil
    set entity_color(value: Color | ColorArray | nil)
    /**
     * If this is an item with entity data, get the stored logistic filters.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_logistic_sections Online documentation}
     */
    get entity_logistic_sections(): LogisticSections
    set entity_logistic_sections(value: LogisticSectionsWrite)
    /**
     * If this is an item with entity data, get the stored request from buffer state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_request_from_buffers Online documentation}
     */
    entity_request_from_buffers: boolean
    /**
     * If this is an item with entity data, get the stored vehicle logistics enabled state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_logistics_enabled Online documentation}
     */
    entity_logistics_enabled: boolean
    /**
     * If this is an item with entity data, get the stored enable logistics while moving state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_enable_logistics_while_moving Online documentation}
     */
    entity_enable_logistics_while_moving: boolean
    /**
     * If this is an item with entity data, get the stored driver is gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_driver_is_gunner Online documentation}
     */
    entity_driver_is_gunner: boolean
    /**
     * If this is an item with entity data, get the stored auto target without gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_auto_target_without_gunner Online documentation}
     */
    entity_auto_target_without_gunner: boolean
    /**
     * If this is an item with entity data, get the stored auto target with gunner state.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#entity_auto_target_with_gunner Online documentation}
     */
    entity_auto_target_with_gunner: boolean
  }
  export interface ToolItemCommon extends BaseItemCommon {
    /**
     * Durability of the contained item. Automatically capped at the item's maximum durability.
     *
     * _Can only be used if this is Tool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#durability Online documentation}
     */
    durability: double
  }
  export interface AmmoItemCommon extends BaseItemCommon {
    /**
     * Number of bullets left in the magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemCommon.html#ammo Online documentation}
     */
    ammo: uint32
  }
  /**
   * Prototype of an item. For example, an item prototype can be obtained from {@link LuaPrototypes#item LuaPrototypes::item} by its name: `prototypes.item["iron-plate"]`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html Online documentation}
   * @noSelf
   */
  export interface LuaItemPrototype extends LuaPrototypeBase {
    /**
     * Test whether this item prototype has a certain flag set.
     * @param flag The flag to test.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#has_flag Online documentation}
     */
    has_flag(flag: ItemPrototypeFlag): boolean
    /**
     * The number of ticks before this item spoils, or `0` if it does not spoil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_spoil_ticks Online documentation}
     */
    get_spoil_ticks(quality?: QualityID): uint32
    /**
     * The type of this ammo prototype.
     *
     * _Can only be used if this is AmmoItem_
     * @param ammo_source_type Defaults to `"default"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_ammo_type Online documentation}
     */
    get_ammo_type(ammo_source_type?: "default" | "player" | "turret" | "vehicle"): AmmoType | nil
    /**
     * The inventory size bonus for this armor prototype.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_inventory_size_bonus Online documentation}
     */
    get_inventory_size_bonus(quality?: QualityID): uint32 | nil
    /**
     * Effects of this module at the specified quality.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_module_effects Online documentation}
     */
    get_module_effects(quality?: QualityID): ModuleEffects | nil
    /**
     * The color used when doing normal selection with this selection tool prototype.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_selection_border_color Online documentation}
     */
    get_selection_border_color(selection_mode: defines.selection_mode): Color | nil
    /**
     * Flags that affect which entities will be selected.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_selection_mode_flags Online documentation}
     */
    get_selection_mode_flags(selection_mode: defines.selection_mode): SelectionModeFlags | nil
    /**
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_cursor_box_type Online documentation}
     */
    get_cursor_box_type(selection_mode: defines.selection_mode): CursorBoxRenderType | nil
    /**
     * The entity filter mode used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_filter_mode Online documentation}
     */
    get_entity_filter_mode(selection_mode: defines.selection_mode): PrototypeFilterMode | nil
    /**
     * The tile filter mode used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_tile_filter_mode Online documentation}
     */
    get_tile_filter_mode(selection_mode: defines.selection_mode): PrototypeFilterMode | nil
    /**
     * The entity filters used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_filters Online documentation}
     */
    get_entity_filters(selection_mode: defines.selection_mode): LuaEntityPrototype[] | nil
    /**
     * The entity type filters used by this selection tool indexed by entity type.
     *
     * The boolean value is meaningless and is used to allow easy lookup if a type exists in the dictionary.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_type_filters Online documentation}
     */
    get_entity_type_filters(selection_mode: defines.selection_mode): Record<string, true> | nil
    /**
     * The tile filters used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_tile_filters Online documentation}
     */
    get_tile_filters(selection_mode: defines.selection_mode): LuaTilePrototype[] | nil
    /**
     * The durability of this tool item prototype.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_durability Online documentation}
     */
    get_durability(quality?: QualityID): double | nil
    /**
     * Prototype of the entity that will be created by placing this item, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_result Online documentation}
     */
    readonly place_result?: LuaEntityPrototype
    /**
     * Prototype of the equipment that will be created by placing this item in an equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_as_equipment_result Online documentation}
     */
    readonly place_as_equipment_result?: LuaEquipmentPrototype
    /**
     * The place-as-tile result if one is defined, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_as_tile_result Online documentation}
     */
    readonly place_as_tile_result?: PlaceAsTileResult
    /**
     * Is this item allowed to stack at all?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#stackable Online documentation}
     */
    readonly stackable: boolean
    /**
     * Maximum stack size of the item specified by this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#stack_size Online documentation}
     */
    readonly stack_size: uint32
    /**
     * The fuel category, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_category Online documentation}
     */
    readonly fuel_category?: string
    /**
     * The result of burning this item as fuel, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#burnt_result Online documentation}
     */
    readonly burnt_result?: LuaItemPrototype
    /**
     * Fuel value when burned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_value Online documentation}
     */
    readonly fuel_value: float
    /**
     * The acceleration multiplier when this item is used as fuel in a vehicle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_acceleration_multiplier Online documentation}
     */
    readonly fuel_acceleration_multiplier: double
    /**
     * The fuel top speed multiplier when this item is used as fuel in a vehicle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_top_speed_multiplier Online documentation}
     */
    readonly fuel_top_speed_multiplier: double
    /**
     * The emissions multiplier if this is used as fuel.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_emissions_multiplier Online documentation}
     */
    readonly fuel_emissions_multiplier: double
    /**
     * Additional fuel acceleration multiplier per quality level.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_acceleration_multiplier_quality_bonus Online documentation}
     */
    readonly fuel_acceleration_multiplier_quality_bonus: double
    /**
     * Additional fuel top speed multiplier per quality level.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_top_speed_multiplier_quality_bonus Online documentation}
     */
    readonly fuel_top_speed_multiplier_quality_bonus: double
    /**
     * The flags for this item prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#flags Online documentation}
     */
    readonly flags: ItemPrototypeFlags
    /**
     * The results of launching this item in a rocket.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#rocket_launch_products Online documentation}
     */
    readonly rocket_launch_products: Product[]
    /**
     * How this item interacts when being sent to orbit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#send_to_orbit_mode Online documentation}
     */
    readonly send_to_orbit_mode: "not-sendable" | "manual" | "automated"
    /**
     * If this item can be mod-opened.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#can_be_mod_opened Online documentation}
     */
    readonly can_be_mod_opened: boolean
    /**
     * The spoil result of this item, if any
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#spoil_result Online documentation}
     */
    readonly spoil_result?: LuaItemPrototype
    /**
     * The result entity when planting this item as a seed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#plant_result Online documentation}
     */
    readonly plant_result?: LuaEntityPrototype
    readonly spoil_to_trigger_result?: SpoilToTriggerResult
    readonly destroyed_by_dropping_trigger?: TriggerItem[]
    /**
     * Weight of this item. More information on how item weight is determined can be found on its {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/item-weight.html auxiliary page}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#weight Online documentation}
     */
    readonly weight: Weight
    readonly ingredient_to_weight_coefficient: double
    readonly fuel_glow_color?: Color
    readonly default_import_location: LuaSpaceLocationPrototype
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaItemPrototype
    readonly moved_to_hub_when_building: boolean
    /**
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#ammo_category Online documentation}
     */
    readonly ammo_category?: LuaAmmoCategoryPrototype
    /**
     * Size of full magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#magazine_size Online documentation}
     */
    readonly magazine_size?: float
    /**
     * Amount of extra time (in ticks) it takes to reload the weapon after depleting the magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#reload_time Online documentation}
     */
    readonly reload_time?: float
    /**
     * The prototype of this armor's equipment grid, if any.
     *
     * _Can only be used if this is Armor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#equipment_grid Online documentation}
     */
    readonly equipment_grid?: LuaEquipmentGridPrototype
    /**
     * Resistances of this armor item, if any, indexed by damage type name.
     *
     * _Can only be used if this is Armor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#resistances Online documentation}
     */
    readonly resistances?: Record<string, Resistance>
    /**
     * The collision box used by character entities when wearing this armor.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#collision_box Online documentation}
     */
    readonly collision_box?: BoundingBox
    /**
     * The drawing box used by character entities when wearing this armor.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#drawing_box Online documentation}
     */
    readonly drawing_box?: BoundingBox
    /**
     * If this armor provides flight to character entities when worm.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#provides_flight Online documentation}
     */
    readonly provides_flight?: boolean
    /**
     * The capsule action for this capsule item prototype.
     *
     * _Can only be used if this is Capsule_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#capsule_action Online documentation}
     */
    readonly capsule_action?: CapsuleAction
    /**
     * _Can only be used if this is Capsule_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#radius_color Online documentation}
     */
    readonly radius_color?: Color
    /**
     * The gun attack parameters.
     *
     * _Can only be used if this is Gun_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
    /**
     * The main inventory size for item-with-inventory-prototype.
     *
     * _Can only be used if this is ItemWithInventoryPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#inventory_size Online documentation}
     */
    readonly inventory_size?: uint32
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_filters Online documentation}
     */
    readonly item_filters?: LuaItemPrototype[]
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_group_filters Online documentation}
     */
    readonly item_group_filters?: LuaGroup[]
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_subgroup_filters Online documentation}
     */
    readonly item_subgroup_filters?: LuaGroup[]
    /**
     * The filter mode used by this item with inventory.
     *
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#filter_mode Online documentation}
     */
    readonly filter_mode?: PrototypeFilterMode
    /**
     * The localised string used when the player attempts to put items into this item with inventory that aren't allowed.
     *
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#localised_filter_message Online documentation}
     */
    readonly localised_filter_message?: LocalisedString
    /**
     * The default label color used for this item with label, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#default_label_color Online documentation}
     */
    readonly default_label_color?: Color
    /**
     * If true, and this item with label has a label it is drawn in place of the normal number when held in the cursor.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#draw_label_for_cursor_render Online documentation}
     */
    readonly draw_label_for_cursor_render?: boolean
    /**
     * The repairing speed if this is a repairing tool.
     *
     * _Can only be used if this is RepairTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#speed Online documentation}
     */
    readonly speed?: float
    /**
     * Effects of this module.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#module_effects Online documentation}
     */
    readonly module_effects?: ModuleEffects
    /**
     * The name of a {@link LuaModuleCategoryPrototype}. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules of the same category with higher tier modules.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#category Online documentation}
     */
    readonly category?: string
    /**
     * Tier of the module inside its category. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules with higher tier modules if they have the same category.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tier Online documentation}
     */
    readonly tier?: uint32
    /**
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#requires_beacon_alt_mode Online documentation}
     */
    readonly requires_beacon_alt_mode?: boolean
    /**
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#beacon_tint Online documentation}
     */
    readonly beacon_tint?: Color[]
    /**
     * Prototypes of all rails possible to be used by this rail planner prototype.
     *
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#rails Online documentation}
     */
    readonly rails?: LuaEntityPrototype[]
    /**
     * The rail support used by this rail planner.
     *
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#support Online documentation}
     */
    readonly support?: LuaEntityPrototype
    /**
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#manual_length_limit Online documentation}
     */
    readonly manual_length_limit?: double
    /**
     * If tiles area always included when doing selection with this selection tool prototype.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#always_include_tiles Online documentation}
     */
    readonly always_include_tiles?: boolean
    /**
     * If this selection tool skips things covered by fog of war.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#skip_fog_of_war Online documentation}
     */
    readonly skip_fog_of_war?: boolean
    /**
     * The number of entity filters this deconstruction item has.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#entity_filter_slots Online documentation}
     */
    readonly entity_filter_slots?: uint32
    /**
     * The number of tile filters this deconstruction item has.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tile_filter_slots Online documentation}
     */
    readonly tile_filter_slots?: uint32
    /**
     * The durability message key used when displaying the durability of this tool.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#durability_description_key Online documentation}
     */
    readonly durability_description_key?: string
    /**
     * The durability message key used when displaying the durability of this tool in Factoriopedia.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#factoriopedia_durability_description_key Online documentation}
     */
    readonly factoriopedia_durability_description_key?: string
    /**
     * The durability message value used when displaying the durability of this tool.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#durability_description_value Online documentation}
     */
    readonly durability_description_value?: string
    /**
     * If this tool item has infinite durability.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#infinite Online documentation}
     */
    readonly infinite?: boolean
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#trigger Online documentation}
     */
    readonly trigger?: TriggerItem
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#surface Online documentation}
     */
    readonly surface?: LuaSurfacePrototype
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#create_electric_network Online documentation}
     */
    readonly create_electric_network?: boolean
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tiles Online documentation}
     */
    readonly tiles?: SpacePlatformTileDefinition[]
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#initial_items Online documentation}
     */
    readonly initial_items?: ItemProduct[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaItemPrototype"
  }
  /**
   * @noSelf
   */
  export interface BaseItemPrototype extends LuaPrototypeBase {
    /**
     * Test whether this item prototype has a certain flag set.
     * @param flag The flag to test.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#has_flag Online documentation}
     */
    has_flag(flag: ItemPrototypeFlag): boolean
    /**
     * The number of ticks before this item spoils, or `0` if it does not spoil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_spoil_ticks Online documentation}
     */
    get_spoil_ticks(quality?: QualityID): uint32
    /**
     * Prototype of the entity that will be created by placing this item, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_result Online documentation}
     */
    readonly place_result?: LuaEntityPrototype
    /**
     * Prototype of the equipment that will be created by placing this item in an equipment grid, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_as_equipment_result Online documentation}
     */
    readonly place_as_equipment_result?: LuaEquipmentPrototype
    /**
     * The place-as-tile result if one is defined, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#place_as_tile_result Online documentation}
     */
    readonly place_as_tile_result?: PlaceAsTileResult
    /**
     * Is this item allowed to stack at all?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#stackable Online documentation}
     */
    readonly stackable: boolean
    /**
     * Maximum stack size of the item specified by this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#stack_size Online documentation}
     */
    readonly stack_size: uint32
    /**
     * The fuel category, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_category Online documentation}
     */
    readonly fuel_category?: string
    /**
     * The result of burning this item as fuel, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#burnt_result Online documentation}
     */
    readonly burnt_result?: LuaItemPrototype
    /**
     * Fuel value when burned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_value Online documentation}
     */
    readonly fuel_value: float
    /**
     * The acceleration multiplier when this item is used as fuel in a vehicle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_acceleration_multiplier Online documentation}
     */
    readonly fuel_acceleration_multiplier: double
    /**
     * The fuel top speed multiplier when this item is used as fuel in a vehicle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_top_speed_multiplier Online documentation}
     */
    readonly fuel_top_speed_multiplier: double
    /**
     * The emissions multiplier if this is used as fuel.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_emissions_multiplier Online documentation}
     */
    readonly fuel_emissions_multiplier: double
    /**
     * Additional fuel acceleration multiplier per quality level.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_acceleration_multiplier_quality_bonus Online documentation}
     */
    readonly fuel_acceleration_multiplier_quality_bonus: double
    /**
     * Additional fuel top speed multiplier per quality level.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#fuel_top_speed_multiplier_quality_bonus Online documentation}
     */
    readonly fuel_top_speed_multiplier_quality_bonus: double
    /**
     * The flags for this item prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#flags Online documentation}
     */
    readonly flags: ItemPrototypeFlags
    /**
     * The results of launching this item in a rocket.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#rocket_launch_products Online documentation}
     */
    readonly rocket_launch_products: Product[]
    /**
     * How this item interacts when being sent to orbit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#send_to_orbit_mode Online documentation}
     */
    readonly send_to_orbit_mode: "not-sendable" | "manual" | "automated"
    /**
     * If this item can be mod-opened.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#can_be_mod_opened Online documentation}
     */
    readonly can_be_mod_opened: boolean
    /**
     * The spoil result of this item, if any
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#spoil_result Online documentation}
     */
    readonly spoil_result?: LuaItemPrototype
    /**
     * The result entity when planting this item as a seed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#plant_result Online documentation}
     */
    readonly plant_result?: LuaEntityPrototype
    readonly spoil_to_trigger_result?: SpoilToTriggerResult
    readonly destroyed_by_dropping_trigger?: TriggerItem[]
    /**
     * Weight of this item. More information on how item weight is determined can be found on its {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/item-weight.html auxiliary page}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#weight Online documentation}
     */
    readonly weight: Weight
    readonly ingredient_to_weight_coefficient: double
    readonly fuel_glow_color?: Color
    readonly default_import_location: LuaSpaceLocationPrototype
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaItemPrototype
    readonly moved_to_hub_when_building: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaItemPrototype"
  }
  /**
   * @noSelf
   */
  export interface AmmoItemPrototype extends BaseItemPrototype {
    /**
     * The type of this ammo prototype.
     *
     * _Can only be used if this is AmmoItem_
     * @param ammo_source_type Defaults to `"default"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_ammo_type Online documentation}
     */
    get_ammo_type(ammo_source_type?: "default" | "player" | "turret" | "vehicle"): AmmoType | nil
    /**
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#ammo_category Online documentation}
     */
    readonly ammo_category?: LuaAmmoCategoryPrototype
    /**
     * Size of full magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#magazine_size Online documentation}
     */
    readonly magazine_size?: float
    /**
     * Amount of extra time (in ticks) it takes to reload the weapon after depleting the magazine.
     *
     * _Can only be used if this is AmmoItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#reload_time Online documentation}
     */
    readonly reload_time?: float
  }
  /**
   * @noSelf
   */
  export interface ArmorItemPrototype extends BaseItemPrototype {
    /**
     * The inventory size bonus for this armor prototype.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_inventory_size_bonus Online documentation}
     */
    get_inventory_size_bonus(quality?: QualityID): uint32 | nil
    /**
     * The prototype of this armor's equipment grid, if any.
     *
     * _Can only be used if this is Armor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#equipment_grid Online documentation}
     */
    readonly equipment_grid?: LuaEquipmentGridPrototype
    /**
     * Resistances of this armor item, if any, indexed by damage type name.
     *
     * _Can only be used if this is Armor_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#resistances Online documentation}
     */
    readonly resistances?: Record<string, Resistance>
    /**
     * The collision box used by character entities when wearing this armor.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#collision_box Online documentation}
     */
    readonly collision_box?: BoundingBox
    /**
     * The drawing box used by character entities when wearing this armor.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#drawing_box Online documentation}
     */
    readonly drawing_box?: BoundingBox
    /**
     * If this armor provides flight to character entities when worm.
     *
     * _Can only be used if this is ArmorPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#provides_flight Online documentation}
     */
    readonly provides_flight?: boolean
  }
  /**
   * @noSelf
   */
  export interface ModuleItemPrototype extends BaseItemPrototype {
    /**
     * Effects of this module at the specified quality.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_module_effects Online documentation}
     */
    get_module_effects(quality?: QualityID): ModuleEffects | nil
    /**
     * Effects of this module.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#module_effects Online documentation}
     */
    readonly module_effects?: ModuleEffects
    /**
     * The name of a {@link LuaModuleCategoryPrototype}. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules of the same category with higher tier modules.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#category Online documentation}
     */
    readonly category?: string
    /**
     * Tier of the module inside its category. Used when upgrading modules: Ctrl + click modules into an entity and it will replace lower tier modules with higher tier modules if they have the same category.
     *
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tier Online documentation}
     */
    readonly tier?: uint32
    /**
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#requires_beacon_alt_mode Online documentation}
     */
    readonly requires_beacon_alt_mode?: boolean
    /**
     * _Can only be used if this is ModuleItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#beacon_tint Online documentation}
     */
    readonly beacon_tint?: Color[]
  }
  /**
   * @noSelf
   */
  export interface SelectionToolItemPrototype extends BaseItemPrototype {
    /**
     * The color used when doing normal selection with this selection tool prototype.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_selection_border_color Online documentation}
     */
    get_selection_border_color(selection_mode: defines.selection_mode): Color | nil
    /**
     * Flags that affect which entities will be selected.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_selection_mode_flags Online documentation}
     */
    get_selection_mode_flags(selection_mode: defines.selection_mode): SelectionModeFlags | nil
    /**
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_cursor_box_type Online documentation}
     */
    get_cursor_box_type(selection_mode: defines.selection_mode): CursorBoxRenderType | nil
    /**
     * The entity filter mode used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_filter_mode Online documentation}
     */
    get_entity_filter_mode(selection_mode: defines.selection_mode): PrototypeFilterMode | nil
    /**
     * The tile filter mode used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_tile_filter_mode Online documentation}
     */
    get_tile_filter_mode(selection_mode: defines.selection_mode): PrototypeFilterMode | nil
    /**
     * The entity filters used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_filters Online documentation}
     */
    get_entity_filters(selection_mode: defines.selection_mode): LuaEntityPrototype[] | nil
    /**
     * The entity type filters used by this selection tool indexed by entity type.
     *
     * The boolean value is meaningless and is used to allow easy lookup if a type exists in the dictionary.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_entity_type_filters Online documentation}
     */
    get_entity_type_filters(selection_mode: defines.selection_mode): Record<string, true> | nil
    /**
     * The tile filters used by this selection tool.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_tile_filters Online documentation}
     */
    get_tile_filters(selection_mode: defines.selection_mode): LuaTilePrototype[] | nil
    /**
     * If tiles area always included when doing selection with this selection tool prototype.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#always_include_tiles Online documentation}
     */
    readonly always_include_tiles?: boolean
    /**
     * If this selection tool skips things covered by fog of war.
     *
     * _Can only be used if this is SelectionTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#skip_fog_of_war Online documentation}
     */
    readonly skip_fog_of_war?: boolean
  }
  /**
   * @noSelf
   */
  export interface ToolItemPrototype extends BaseItemPrototype {
    /**
     * The durability of this tool item prototype.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#get_durability Online documentation}
     */
    get_durability(quality?: QualityID): double | nil
    /**
     * The durability message key used when displaying the durability of this tool.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#durability_description_key Online documentation}
     */
    readonly durability_description_key?: string
    /**
     * The durability message key used when displaying the durability of this tool in Factoriopedia.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#factoriopedia_durability_description_key Online documentation}
     */
    readonly factoriopedia_durability_description_key?: string
    /**
     * The durability message value used when displaying the durability of this tool.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#durability_description_value Online documentation}
     */
    readonly durability_description_value?: string
    /**
     * If this tool item has infinite durability.
     *
     * _Can only be used if this is ToolItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#infinite Online documentation}
     */
    readonly infinite?: boolean
  }
  export interface CapsuleItemPrototype extends BaseItemPrototype {
    /**
     * The capsule action for this capsule item prototype.
     *
     * _Can only be used if this is Capsule_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#capsule_action Online documentation}
     */
    readonly capsule_action?: CapsuleAction
    /**
     * _Can only be used if this is Capsule_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#radius_color Online documentation}
     */
    readonly radius_color?: Color
  }
  export interface GunItemPrototype extends BaseItemPrototype {
    /**
     * The gun attack parameters.
     *
     * _Can only be used if this is Gun_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#attack_parameters Online documentation}
     */
    readonly attack_parameters?: AttackParameters
  }
  export interface ItemWithInventoryItemPrototype extends BaseItemPrototype {
    /**
     * The main inventory size for item-with-inventory-prototype.
     *
     * _Can only be used if this is ItemWithInventoryPrototype_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#inventory_size Online documentation}
     */
    readonly inventory_size?: uint32
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_filters Online documentation}
     */
    readonly item_filters?: LuaItemPrototype[]
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_group_filters Online documentation}
     */
    readonly item_group_filters?: LuaGroup[]
    /**
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#item_subgroup_filters Online documentation}
     */
    readonly item_subgroup_filters?: LuaGroup[]
    /**
     * The filter mode used by this item with inventory.
     *
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#filter_mode Online documentation}
     */
    readonly filter_mode?: PrototypeFilterMode
    /**
     * The localised string used when the player attempts to put items into this item with inventory that aren't allowed.
     *
     * _Can only be used if this is ItemWithInventory_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#localised_filter_message Online documentation}
     */
    readonly localised_filter_message?: LocalisedString
  }
  export interface ItemWithLabelItemPrototype extends BaseItemPrototype {
    /**
     * The default label color used for this item with label, if any.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#default_label_color Online documentation}
     */
    readonly default_label_color?: Color
    /**
     * If true, and this item with label has a label it is drawn in place of the normal number when held in the cursor.
     *
     * _Can only be used if this is ItemWithLabel_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#draw_label_for_cursor_render Online documentation}
     */
    readonly draw_label_for_cursor_render?: boolean
  }
  export interface RepairToolItemPrototype extends BaseItemPrototype {
    /**
     * The repairing speed if this is a repairing tool.
     *
     * _Can only be used if this is RepairTool_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#speed Online documentation}
     */
    readonly speed?: float
  }
  export interface RailPlannerItemPrototype extends BaseItemPrototype {
    /**
     * Prototypes of all rails possible to be used by this rail planner prototype.
     *
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#rails Online documentation}
     */
    readonly rails?: LuaEntityPrototype[]
    /**
     * The rail support used by this rail planner.
     *
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#support Online documentation}
     */
    readonly support?: LuaEntityPrototype
    /**
     * _Can only be used if this is RailPlanner_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#manual_length_limit Online documentation}
     */
    readonly manual_length_limit?: double
  }
  export interface DeconstructionItemPrototype extends BaseItemPrototype {
    /**
     * The number of entity filters this deconstruction item has.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#entity_filter_slots Online documentation}
     */
    readonly entity_filter_slots?: uint32
    /**
     * The number of tile filters this deconstruction item has.
     *
     * _Can only be used if this is DeconstructionItem_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tile_filter_slots Online documentation}
     */
    readonly tile_filter_slots?: uint32
  }
  export interface SpacePlatformStarterPackItemPrototype extends BaseItemPrototype {
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#trigger Online documentation}
     */
    readonly trigger?: TriggerItem
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#surface Online documentation}
     */
    readonly surface?: LuaSurfacePrototype
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#create_electric_network Online documentation}
     */
    readonly create_electric_network?: boolean
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#tiles Online documentation}
     */
    readonly tiles?: SpacePlatformTileDefinition[]
    /**
     * _Can only be used if this is SpacePlatformStarterPack_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemPrototype.html#initial_items Online documentation}
     */
    readonly initial_items?: ItemProduct[]
  }
  /**
   * A reference to an item and count owned by some external entity.
   *
   * In most instances this is a simple reference as in: it points at a specific slot in an inventory and not the item in the slot.
   *
   * In the instance this references an item on a {@link LuaTransportLine} the reference is only guaranteed to stay valid (and refer to the same item) as long as nothing changes the transport line.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html Online documentation}
   * @noSelf
   */
  export interface LuaItemStack extends LuaItemCommon {
    /**
     * Add ammo to this ammo item.
     *
     * _Can only be used if this is AmmoItem_
     * @param amount Amount of ammo to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#add_ammo Online documentation}
     */
    add_ammo(amount: float): void
    /**
     * Remove ammo from this ammo item.
     *
     * _Can only be used if this is AmmoItem_
     * @param amount Amount of ammo to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#drain_ammo Online documentation}
     */
    drain_ammo(amount: float): void
    /**
     * Add durability to this tool item.
     *
     * _Can only be used if this is ToolItem_
     * @param amount Amount of durability to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#add_durability Online documentation}
     */
    add_durability(amount: double): void
    /**
     * Remove durability from this tool item.
     *
     * _Can only be used if this is ToolItem_
     * @param amount Amount of durability to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#drain_durability Online documentation}
     */
    drain_durability(amount: double): void
    /**
     * Use the capsule item with the entity as the source, targeting the given position.
     * @param entity The entity to use the capsule item with.
     * @param target_position The position to use the capsule item with.
     * @returns Array of the entities that were created by the capsule action.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#use_capsule Online documentation}
     */
    use_capsule(entity: LuaEntity, target_position: MapPosition | MapPositionArray): LuaEntity[]
    /**
     * Would a call to {@link LuaItemStack#set_stack LuaItemStack::set_stack} succeed?
     * @param stack Stack that would be set, possibly `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#can_set_stack Online documentation}
     */
    can_set_stack(stack?: ItemStackIdentification): boolean
    /**
     * Set this item stack to another item stack.
     * @param stack Item stack to set it to. Omitting this parameter or passing `nil` will clear this item stack, as if {@link LuaItemStack#clear LuaItemStack::clear} was called.
     * @returns Whether the stack was set successfully. Returns `false` if this stack was not {@link LuaItemStack#can_set_stack valid for write}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#set_stack Online documentation}
     */
    set_stack(stack?: ItemStackIdentification): boolean
    /**
     * Transfers the given item stack into this item stack.
     * @returns `true` if the full stack (or requested amount) was transferred.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#transfer_stack Online documentation}
     */
    transfer_stack(stack: ItemStackIdentification, amount?: uint32): boolean
    /**
     * Export a supported item (blueprint, blueprint-book, deconstruction-planner, upgrade-planner, item-with-tags) to a string.
     * @returns The exported string
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#export_stack Online documentation}
     */
    export_stack(): string
    /**
     * Import a supported item (blueprint, blueprint-book, deconstruction-planner, upgrade-planner, item-with-tags) from a string.
     * @param data The string to import
     * @returns 0 if the import succeeded with no errors. -1 if the import succeeded with errors. 1 if the import failed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#import_stack Online documentation}
     */
    import_stack(data: string): int32
    /**
     * Swaps this item stack with the given item stack if allowed.
     * @returns Whether the 2 stacks were swapped successfully.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#swap_stack Online documentation}
     */
    swap_stack(stack: LuaItemStack): boolean
    /**
     * Clear this item stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#clear Online documentation}
     */
    clear(): void
    /**
     * Creates the equipment grid for this item if it doesn't exist and this is an item-with-entity-data that supports equipment grids.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#create_grid Online documentation}
     */
    create_grid(): LuaEquipmentGrid
    /**
     * Spoils this item if the item can spoil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil Online documentation}
     */
    spoil(): void
    /**
     * Is this valid for reading? Differs from the usual `valid` in that `valid` will be `true` even if the item stack is blank but the entity that holds it is still valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#valid_for_read Online documentation}
     */
    readonly valid_for_read: boolean
    /**
     * Prototype of the item held in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#prototype Online documentation}
     */
    readonly prototype: LuaItemPrototype
    /**
     * Prototype name of the item held in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#name Online documentation}
     */
    readonly name: string
    /**
     * Type of the item prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#type Online documentation}
     */
    readonly type: ItemType
    /**
     * Number of items in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#count Online documentation}
     */
    count: uint32
    /**
     * How much health the item has, as a number in range `[0, 1]`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#health Online documentation}
     */
    health: float
    /**
     * The quality of this item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * The tick this item spoils, or `0` if it does not spoil. When writing, setting to anything < the current game tick will spoil the item instantly.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil_tick Online documentation}
     */
    spoil_tick: MapTick
    /**
     * The percent spoiled this item is if it spoils. `0` in the case of the item not spoiling.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil_percent Online documentation}
     */
    spoil_percent: double
    /**
     * If the item has additional data, returns LuaItem pointing at the extra data, otherwise returns nil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#item Online documentation}
     */
    readonly item?: LuaItem
    /**
     * If this is a module
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#is_module Online documentation}
     */
    readonly is_module: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaItemStack"
  }
  /**
   * @noSelf
   */
  export interface BaseItemStack extends LuaItemCommon {
    /**
     * Use the capsule item with the entity as the source, targeting the given position.
     * @param entity The entity to use the capsule item with.
     * @param target_position The position to use the capsule item with.
     * @returns Array of the entities that were created by the capsule action.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#use_capsule Online documentation}
     */
    use_capsule(entity: LuaEntity, target_position: MapPosition | MapPositionArray): LuaEntity[]
    /**
     * Would a call to {@link LuaItemStack#set_stack LuaItemStack::set_stack} succeed?
     * @param stack Stack that would be set, possibly `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#can_set_stack Online documentation}
     */
    can_set_stack(stack?: ItemStackIdentification): boolean
    /**
     * Set this item stack to another item stack.
     * @param stack Item stack to set it to. Omitting this parameter or passing `nil` will clear this item stack, as if {@link LuaItemStack#clear LuaItemStack::clear} was called.
     * @returns Whether the stack was set successfully. Returns `false` if this stack was not {@link LuaItemStack#can_set_stack valid for write}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#set_stack Online documentation}
     */
    set_stack(stack?: ItemStackIdentification): boolean
    /**
     * Transfers the given item stack into this item stack.
     * @returns `true` if the full stack (or requested amount) was transferred.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#transfer_stack Online documentation}
     */
    transfer_stack(stack: ItemStackIdentification, amount?: uint32): boolean
    /**
     * Export a supported item (blueprint, blueprint-book, deconstruction-planner, upgrade-planner, item-with-tags) to a string.
     * @returns The exported string
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#export_stack Online documentation}
     */
    export_stack(): string
    /**
     * Import a supported item (blueprint, blueprint-book, deconstruction-planner, upgrade-planner, item-with-tags) from a string.
     * @param data The string to import
     * @returns 0 if the import succeeded with no errors. -1 if the import succeeded with errors. 1 if the import failed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#import_stack Online documentation}
     */
    import_stack(data: string): int32
    /**
     * Swaps this item stack with the given item stack if allowed.
     * @returns Whether the 2 stacks were swapped successfully.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#swap_stack Online documentation}
     */
    swap_stack(stack: LuaItemStack): boolean
    /**
     * Clear this item stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#clear Online documentation}
     */
    clear(): void
    /**
     * Spoils this item if the item can spoil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil Online documentation}
     */
    spoil(): void
    /**
     * Is this valid for reading? Differs from the usual `valid` in that `valid` will be `true` even if the item stack is blank but the entity that holds it is still valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#valid_for_read Online documentation}
     */
    readonly valid_for_read: boolean
    /**
     * Prototype of the item held in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#prototype Online documentation}
     */
    readonly prototype: LuaItemPrototype
    /**
     * Prototype name of the item held in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#name Online documentation}
     */
    readonly name: string
    /**
     * Type of the item prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#type Online documentation}
     */
    readonly type: ItemType
    /**
     * Number of items in this stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#count Online documentation}
     */
    count: uint32
    /**
     * How much health the item has, as a number in range `[0, 1]`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#health Online documentation}
     */
    health: float
    /**
     * The quality of this item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#quality Online documentation}
     */
    readonly quality: LuaQualityPrototype
    /**
     * The tick this item spoils, or `0` if it does not spoil. When writing, setting to anything < the current game tick will spoil the item instantly.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil_tick Online documentation}
     */
    spoil_tick: MapTick
    /**
     * The percent spoiled this item is if it spoils. `0` in the case of the item not spoiling.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#spoil_percent Online documentation}
     */
    spoil_percent: double
    /**
     * If the item has additional data, returns LuaItem pointing at the extra data, otherwise returns nil.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#item Online documentation}
     */
    readonly item?: LuaItem
    /**
     * If this is a module
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#is_module Online documentation}
     */
    readonly is_module: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaItemStack"
  }
  /**
   * @noSelf
   */
  export interface AmmoItemStack extends BaseItemStack {
    /**
     * Add ammo to this ammo item.
     *
     * _Can only be used if this is AmmoItem_
     * @param amount Amount of ammo to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#add_ammo Online documentation}
     */
    add_ammo(amount: float): void
    /**
     * Remove ammo from this ammo item.
     *
     * _Can only be used if this is AmmoItem_
     * @param amount Amount of ammo to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#drain_ammo Online documentation}
     */
    drain_ammo(amount: float): void
  }
  /**
   * @noSelf
   */
  export interface ToolItemStack extends BaseItemStack {
    /**
     * Add durability to this tool item.
     *
     * _Can only be used if this is ToolItem_
     * @param amount Amount of durability to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#add_durability Online documentation}
     */
    add_durability(amount: double): void
    /**
     * Remove durability from this tool item.
     *
     * _Can only be used if this is ToolItem_
     * @param amount Amount of durability to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#drain_durability Online documentation}
     */
    drain_durability(amount: double): void
  }
  /**
   * @noSelf
   */
  export interface ItemWithEntityDataItemStack extends BaseItemStack {
    /**
     * Creates the equipment grid for this item if it doesn't exist and this is an item-with-entity-data that supports equipment grids.
     *
     * _Can only be used if this is ItemWithEntityData_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaItemStack.html#create_grid Online documentation}
     */
    create_grid(): LuaEquipmentGrid
  }
  /**
   * Control behavior for lamps.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLampControlBehavior.html Online documentation}
   */
  export interface LuaLampControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the lamp should set the color from the circuit network signals.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLampControlBehavior.html#use_colors Online documentation}
     */
    use_colors: boolean
    color_mode: defines.control_behavior.lamp.color_mode
    get red_signal(): SignalID | nil
    set red_signal(value: SignalIDWrite | nil)
    get green_signal(): SignalID | nil
    set green_signal(value: SignalIDWrite | nil)
    get blue_signal(): SignalID | nil
    set blue_signal(value: SignalIDWrite | nil)
    get rgb_signal(): SignalID | nil
    set rgb_signal(value: SignalIDWrite | nil)
    /**
     * The color the lamp is showing, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLampControlBehavior.html#color Online documentation}
     */
    readonly color?: Color
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLampControlBehavior"
  }
  /**
   * A lazily loaded value. For performance reasons, we sometimes return a custom lazily-loaded value type instead of the native Lua value. This custom type lazily constructs the necessary value when {@link LuaLazyLoadedValue#get LuaLazyLoadedValue::get} is called, therefore preventing its unnecessary construction in some cases.
   *
   * An instance of LuaLazyLoadedValue is only valid during the event it was created from and cannot be saved.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLazyLoadedValue.html Online documentation}
   * @noSelf
   */
  export interface LuaLazyLoadedValue<T> {
    /**
     * Gets the value of this lazy loaded value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLazyLoadedValue.html#get Online documentation}
     */
    get(): T
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLazyLoadedValue"
  }
  /**
   * Control behavior for loaders.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLoaderControlBehavior.html Online documentation}
   */
  export interface LuaLoaderControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if filters are set from circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLoaderControlBehavior.html#circuit_set_filters Online documentation}
     */
    circuit_set_filters: boolean
    /**
     * `true` if the transfers between loader's belt and container should be pulsed to the circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLoaderControlBehavior.html#circuit_read_transfers Online documentation}
     */
    circuit_read_transfers: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLoaderControlBehavior"
  }
  /**
   * Logistic cell of a particular {@link LuaEntity}. A "Logistic Cell" is the given name for settings and properties used by what would normally be seen as a "Roboport". A logistic cell however doesn't have to be attached to the roboport entity (the character has one for the personal roboport).
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html Online documentation}
   * @noSelf
   */
  export interface LuaLogisticCell {
    /**
     * Is a given position within the logistic range of this cell?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#is_in_logistic_range Online documentation}
     */
    is_in_logistic_range(position: MapPosition | MapPositionArray): boolean
    /**
     * Is a given position within the construction range of this cell?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#is_in_construction_range Online documentation}
     */
    is_in_construction_range(position: MapPosition | MapPositionArray): boolean
    /**
     * Are two cells neighbours?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#is_neighbour_with Online documentation}
     */
    is_neighbour_with(other: LuaLogisticCell): boolean
    /**
     * Logistic radius of this cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#logistic_radius Online documentation}
     */
    readonly logistic_radius: float
    /**
     * Logistic connection distance of this cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#logistics_connection_distance Online documentation}
     */
    readonly logistics_connection_distance: float
    /**
     * Construction radius of this cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#construction_radius Online documentation}
     */
    readonly construction_radius: float
    /**
     * Number of stationed logistic robots in this cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#stationed_logistic_robot_count Online documentation}
     */
    readonly stationed_logistic_robot_count: uint32
    /**
     * Number of stationed construction robots in this cell.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#stationed_construction_robot_count Online documentation}
     */
    readonly stationed_construction_robot_count: uint32
    /**
     * `true` if this is a mobile cell. The logistic cell created by roboport equipment considered is mobile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#mobile Online documentation}
     */
    readonly mobile: boolean
    /**
     * `true` if this cell is active.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#transmitting Online documentation}
     */
    readonly transmitting: boolean
    /**
     * Radius at which the robots hover when waiting to be charged.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#charge_approach_distance Online documentation}
     */
    readonly charge_approach_distance: float
    /**
     * Number of robots currently charging.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#charging_robot_count Online documentation}
     */
    readonly charging_robot_count: uint32
    /**
     * Number of robots waiting to charge.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#to_charge_robot_count Online documentation}
     */
    readonly to_charge_robot_count: uint32
    /**
     * This cell's owner.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    /**
     * The network that owns this cell, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#logistic_network Online documentation}
     */
    readonly logistic_network?: LuaLogisticNetwork
    /**
     * Neighbouring cells.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#neighbours Online documentation}
     */
    readonly neighbours: LuaLogisticCell[]
    /**
     * Robots currently being charged.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#charging_robots Online documentation}
     */
    readonly charging_robots: LuaEntity[]
    /**
     * Robots waiting to charge.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticCell.html#to_charge_robots Online documentation}
     */
    readonly to_charge_robots: LuaEntity[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticCell"
  }
  /**
   * Control behavior for logistic chests.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticContainerControlBehavior.html Online documentation}
   */
  export interface LuaLogisticContainerControlBehavior extends LuaControlBehavior {
    /**
     * The circuit mode of operations for the logistic container. Can only be set on containers whose {@link LuaEntityPrototype#logistic_mode logistic_mode} is set to `"requester"` or `"buffer"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticContainerControlBehavior.html#circuit_exclusive_mode_of_operation Online documentation}
     */
    circuit_exclusive_mode_of_operation: defines.control_behavior.logistic_container.exclusive_mode
    /**
     * Whether the circuit condition is in effect
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticContainerControlBehavior.html#circuit_condition_enabled Online documentation}
     */
    circuit_condition_enabled: boolean
    /**
     * The circuit condition for the logistic container.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticContainerControlBehavior.html#circuit_condition Online documentation}
     */
    get circuit_condition(): CircuitConditionDefinition
    set circuit_condition(value: CircuitConditionDefinitionWrite)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticContainerControlBehavior"
  }
  /**
   * A single logistic network of a given force on a given surface.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html Online documentation}
   * @noSelf
   */
  export interface LuaLogisticNetwork {
    /**
     * Count given or all items in the network or given members.
     * @param item Item name to count. If not given, gives counts of all items in the network.
     * @param member Logistic members to check. If not given, gives count in the entire network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#get_item_count Online documentation}
     */
    get_item_count(item?: ItemWithQualityID, member?: "storage" | "providers"): int32
    /**
     * Get item counts for the entire network, similar to how {@link LuaInventory#get_contents LuaInventory::get_contents} does.
     * @param member Logistic members to check. If not given, gives item counts for the entire network.
     * @returns List of all items in the network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#get_contents Online documentation}
     */
    get_contents(member?: "storage" | "providers"): ItemWithQualityCounts
    /**
     * Remove items from the logistic network. This will actually remove the items from some logistic chests.
     * @param item What to remove.
     * @param members Which logistic members to remove from. If not specified, removes from the network in the usual order.
     * @returns Number of items removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#remove_item Online documentation}
     */
    remove_item(
      item: ItemStackIdentification,
      members?: "active-provider" | "passive-provider" | "buffer" | "storage",
    ): uint32
    /**
     * Insert items into the logistic network. This will actually insert the items into some logistic chests.
     * @param item What to insert.
     * @param members Which logistic members to insert the items to. `"storage-empty"` inserts into storage chests that are completely empty, `"storage-empty-slot"` inserts into storage chests that have an empty slot. If not specified, inserts items into the logistic network in the usual order.
     * @returns Number of items actually inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#insert Online documentation}
     */
    insert(
      item: ItemStackIdentification,
      members?: "storage" | "storage-empty" | "storage-empty-slot" | "requester",
    ): uint32
    /**
     * Find logistic cell closest to a given position.
     * @returns `nil` if no cell was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#find_cell_closest_to Online documentation}
     */
    find_cell_closest_to(position: MapPosition | MapPositionArray): LuaLogisticCell | nil
    /**
     * Find the 'best' logistic point with this item ID and from the given position or from given chest type.
     * @returns `nil` if no point was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#select_pickup_point Online documentation}
     */
    select_pickup_point(params: {
      /**
       * Name of the item to pick up.
       */
      readonly name: ItemWithQualityID
      /**
       * When given, it will find the storage 'best' storage point from this position.
       */
      readonly position?: MapPosition | MapPositionArray
      /**
       * Whether to consider buffer chests or not. Defaults to false. Only considered if selecting with position.
       */
      readonly include_buffers?: boolean
      /**
       * When given, it will find from only the specific type of member. If not specified, selects with normal priorities. Not considered if position is specified.
       */
      readonly members?: "active-provider" | "passive-provider" | "buffer" | "storage"
    }): LuaLogisticPoint | nil
    /**
     * Find a logistic point to drop the specific item stack.
     * @returns `nil` if no point was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#select_drop_point Online documentation}
     */
    select_drop_point(params: {
      /**
       * Name of the item to drop off.
       */
      readonly stack: ItemStackIdentification
      /**
       * When given, it will find from only the specific type of member. If not specified, selects with normal priorities.
       */
      readonly members?: "storage" | "storage-empty" | "storage-empty-slot" | "requester"
    }): LuaLogisticPoint | nil
    /**
     * Can the network satisfy a request for a given item and count.
     * @param item Item name to check.
     * @param count Count to check. Defaults to 1.
     * @param include_buffers Should buffers be considered? Defaults to false.
     * @returns Whether the network can satisfy the request.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#can_satisfy_request Online documentation}
     */
    can_satisfy_request(item: ItemWithQualityID, count?: uint32, include_buffers?: boolean): boolean
    /**
     * Get the amount of items of the given type indexed by the storage member.
     * @param item Item name to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#get_supply_counts Online documentation}
     */
    get_supply_counts(item: ItemWithQualityID): LogisticsNetworkSupplyCounts
    /**
     * Gets the logistic points with of the given type indexed by the storage member.
     * @param item Item name to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#get_supply_points Online documentation}
     */
    get_supply_points(item: ItemWithQualityID): LogisticsNetworkSupplyPoints
    /**
     * The unique logistic network ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#network_id Online documentation}
     */
    readonly network_id: uint32
    /**
     * The custom logistic network name set by the player or by script, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#custom_name Online documentation}
     */
    custom_name?: string
    /**
     * The force this logistic network belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * Number of logistic robots available for a job.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#available_logistic_robots Online documentation}
     */
    readonly available_logistic_robots: uint32
    /**
     * The total number of logistic robots in the network (idle and active + in roboports).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#all_logistic_robots Online documentation}
     */
    readonly all_logistic_robots: uint32
    /**
     * Number of construction robots available for a job.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#available_construction_robots Online documentation}
     */
    readonly available_construction_robots: uint32
    /**
     * The total number of construction robots in the network (idle and active + in roboports).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#all_construction_robots Online documentation}
     */
    readonly all_construction_robots: uint32
    /**
     * Maximum number of robots the network can work with. Currently only used for the personal roboport.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#robot_limit Online documentation}
     */
    readonly robot_limit: uint32
    /**
     * All cells in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#cells Online documentation}
     */
    readonly cells: LuaLogisticCell[]
    /**
     * All entities that have logistic provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#providers Online documentation}
     */
    readonly providers: LuaEntity[]
    /**
     * All entities that have empty logistic provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#empty_providers Online documentation}
     */
    readonly empty_providers: LuaEntity[]
    /**
     * All entities that have logistic requester points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#requesters Online documentation}
     */
    readonly requesters: LuaEntity[]
    /**
     * All entities that have logistic storage points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#storages Online documentation}
     */
    readonly storages: LuaEntity[]
    /**
     * All other entities that have logistic points in this network (inserters mostly).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#logistic_members Online documentation}
     */
    readonly logistic_members: LuaEntity[]
    /**
     * All things that have provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#provider_points Online documentation}
     */
    readonly provider_points: LuaLogisticPoint[]
    /**
     * All passive provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#passive_provider_points Online documentation}
     */
    readonly passive_provider_points: LuaLogisticPoint[]
    /**
     * All active provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#active_provider_points Online documentation}
     */
    readonly active_provider_points: LuaLogisticPoint[]
    /**
     * All things that have empty provider points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#empty_provider_points Online documentation}
     */
    readonly empty_provider_points: LuaLogisticPoint[]
    /**
     * All things that have requester points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#requester_points Online documentation}
     */
    readonly requester_points: LuaLogisticPoint[]
    /**
     * All things that have storage points in this network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#storage_points Online documentation}
     */
    readonly storage_points: LuaLogisticPoint[]
    /**
     * All robots in this logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#robots Online documentation}
     */
    readonly robots: LuaEntity[]
    /**
     * All construction robots in this logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#construction_robots Online documentation}
     */
    readonly construction_robots: LuaEntity[]
    /**
     * All logistic robots in this logistic network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticNetwork.html#logistic_robots Online documentation}
     */
    readonly logistic_robots: LuaEntity[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticNetwork"
  }
  /**
   * Logistic point of a particular {@link LuaEntity}. A "Logistic point" is the name given for settings and properties used by requester, provider, and storage points in a given logistic network. These "points" don't have to be a logistic container but often are. One other entity that can own several points is the "character" character type entity.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html Online documentation}
   * @noSelf
   */
  export interface LuaLogisticPoint {
    /**
     * Adds a new logistic section to this logistic point if possible.
     * @param group The group to assign this section to.
     * @returns The added logistic section.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#add_section Online documentation}
     */
    add_section(group?: string): LuaLogisticSection | nil
    /**
     * Removes the given logistic section if possible. Removal may fail if the section index is out of range or the section is not {@link LuaLogisticSection#is_manual manual}.
     * @param section_index Index of the section
     * @returns Whether section was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#remove_section Online documentation}
     */
    remove_section(section_index: uint32): boolean
    /**
     * Gets section on the selected index, if it exists
     * @param section_index Index of the section
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#get_section Online documentation}
     */
    get_section(section_index: uint32): LuaLogisticSection
    /**
     * The {@link LuaEntity} owner of this LuaLogisticPoint.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    readonly logistic_network: LuaLogisticNetwork
    /**
     * The Logistic member index of this logistic point.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#logistic_member_index Online documentation}
     */
    readonly logistic_member_index: defines.logistic_member_index
    /**
     * The logistic filters for this logistic point, if this uses any.
     *
     * The returned array will always have an entry for each filter and will be indexed in sequence when not `nil`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#filters Online documentation}
     */
    readonly filters?: CompiledLogisticFilter[]
    /**
     * The logistic mode.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#mode Online documentation}
     */
    readonly mode: defines.logistic_mode
    /**
     * The force of this logistic point.
     *
     * This will always be the same as the {@link LuaLogisticPoint#owner LuaLogisticPoint::owner} force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * Items targeted to be picked up from this logistic point by robots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#targeted_items_pickup Online documentation}
     */
    readonly targeted_items_pickup: ItemWithQualityCounts
    /**
     * Items targeted to be dropped off into this logistic point by robots.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#targeted_items_deliver Online documentation}
     */
    readonly targeted_items_deliver: ItemWithQualityCounts
    /**
     * If this logistic point is using the exact mode. In exact mode robots never over-deliver requests.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#exact Online documentation}
     */
    readonly exact: boolean
    /**
     * Whether this logistic point is set to trash unrequested items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#trash_not_requested Online documentation}
     */
    trash_not_requested: boolean
    /**
     * Whether this logistic point is active, related to disabling logistics on player/spidertron.
     *
     * When the logistic point is disabled it won't request and auto trash will do nothing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#enabled Online documentation}
     */
    enabled: boolean
    /**
     * All logistic sections of this logistic point.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#sections Online documentation}
     */
    readonly sections: LuaLogisticSection[]
    /**
     * Amount of logistic sections this logistic point has.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticPoint.html#sections_count Online documentation}
     */
    readonly sections_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticPoint"
  }
  /**
   * Logistic section of a particular {@link LuaLogisticPoint} or {@link LuaConstantCombinatorControlBehavior}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html Online documentation}
   * @noSelf
   */
  export interface LuaLogisticSection {
    /**
     * Sets logistic request and auto-trash slot to the given value.
     *
     * This will silently fail if personal logistics are not researched yet.
     *
     * This can only be called when the section {@link LuaLogisticSection#is_manual is manual}.
     *
     * ## Raised events
     * - {@link OnEntityLogisticSlotChangedEvent on_entity_logistic_slot_changed}? _instantly_ Raised if setting of logistic slot was successful.
     * @param slot_index Index of a slot to set.
     * @param filter The details of the filter to set.
     * @returns The existing index for the given filter or nil if the filter was successfully set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#set_slot Online documentation}
     */
    set_slot(slot_index: LogisticFilterIndex, filter: LogisticFilterWrite): LogisticFilterIndex | nil
    /**
     * Gets current settings of logistic request and auto-trash from the given slot.
     * @param slot_index Index of a slot to read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#get_slot Online documentation}
     */
    get_slot(slot_index: LogisticFilterIndex): LogisticFilter
    /**
     * Clears the logistic request and auto-trash from the given slot.
     *
     * This can only be called when the section {@link LuaLogisticSection#is_manual is manual}.
     * @param slot_index Index of a slot to clear.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#clear_slot Online documentation}
     */
    clear_slot(slot_index: LogisticFilterIndex): void
    /**
     * The {@link LuaEntity} owner of this LuaLogisticSection.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    /**
     * The section index of this section.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#index Online documentation}
     */
    readonly index: uint32
    /**
     * The logistic filters for this section.
     *
     * This can only be written to when the section {@link LuaLogisticSection#is_manual is manual}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#filters Online documentation}
     */
    get filters(): LogisticFilter[]
    set filters(value: readonly LogisticFilterWrite[])
    /**
     * Amount of filters this section has
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#filters_count Online documentation}
     */
    readonly filters_count: uint32
    /**
     * The group this section belongs to.
     *
     * An empty string when in no group.
     *
     * This can only be written to when the section {@link LuaLogisticSection#is_manual is manual}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#group Online documentation}
     */
    group: string
    /**
     * The type of this logistic section. Sections that are not manual are controlled by game itself and may not be allowed to be changed by script.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#type Online documentation}
     */
    readonly type: defines.logistic_section_type
    /**
     * Shortcut to check whether {@link LuaLogisticSection#type LuaLogisticSection::type} is equal to {@link defines.logistic_section_type.manual manual}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#is_manual Online documentation}
     */
    readonly is_manual: boolean
    /**
     * Whether this section is active. This can only be written to when the section {@link LuaLogisticSection#is_manual is manual}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#active Online documentation}
     */
    active: boolean
    /**
     * Multiplier applied to all filters before they are used by game. This can only be written to when the section {@link LuaLogisticSection#is_manual is manual}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSection.html#multiplier Online documentation}
     */
    multiplier: float
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticSection"
  }
  /**
   * Logistic sections of an entity.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html Online documentation}
   * @noSelf
   */
  export interface LuaLogisticSections {
    /**
     * Adds a new logistic section if possible.
     * @param group The group to assign this section to.
     * @returns Logistic section if added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html#add_section Online documentation}
     */
    add_section(group?: string): LuaLogisticSection | nil
    /**
     * Removes the given logistic section if possible. Removal may fail if the section index is out of range or the section is not {@link LuaLogisticSection#is_manual manual}.
     * @param section_index Index of the section.
     * @returns Whether section was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html#remove_section Online documentation}
     */
    remove_section(section_index: uint32): boolean
    /**
     * Gets section on the selected index, if it exists.
     * @param section_index Index of the section.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html#get_section Online documentation}
     */
    get_section(section_index: uint32): LuaLogisticSection | nil
    /**
     * All logistic sections of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html#sections Online documentation}
     */
    readonly sections: LuaLogisticSection[]
    /**
     * Amount of logistic sections this entity has.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaLogisticSections.html#sections_count Online documentation}
     */
    readonly sections_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaLogisticSections"
  }
  /**
   * Control behavior for mining drills.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaMiningDrillControlBehavior.html Online documentation}
   */
  export interface LuaMiningDrillControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if this drill should send the resources in the field to the circuit network.
     *
     * Which resources depends on {@link LuaMiningDrillControlBehavior#resource_read_mode LuaMiningDrillControlBehavior::resource_read_mode}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaMiningDrillControlBehavior.html#circuit_read_resources Online documentation}
     */
    circuit_read_resources: boolean
    /**
     * If the mining drill should send just the resources in its area or the entire field it's on to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaMiningDrillControlBehavior.html#resource_read_mode Online documentation}
     */
    resource_read_mode: defines.control_behavior.mining_drill.resource_read_mode
    /**
     * The resource entities that the mining drill will send information about to the circuit network or an empty array.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaMiningDrillControlBehavior.html#resource_read_targets Online documentation}
     */
    readonly resource_read_targets: LuaEntity[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaMiningDrillControlBehavior"
  }
  /**
   * Arbitrary data provided by mods.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModData.html Online documentation}
   * @noSelf
   */
  export interface LuaModData extends LuaPrototypeBase {
    /**
     * Provides partial access to the data.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModData.html#get Online documentation}
     */
    get(key: string): AnyBasic | nil
    readonly data_type: string
    /**
     * Provides full data of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModData.html#data Online documentation}
     */
    readonly data: Record<string, AnyBasic>
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaModData"
  }
  /**
   * Prototype of a mod setting.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html Online documentation}
   */
  export interface LuaModSettingPrototype extends LuaPrototypeBase {
    /**
     * The mod that owns this setting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#mod Online documentation}
     */
    readonly mod: string
    readonly setting_type: "startup" | "runtime-global" | "runtime-per-user"
    /**
     * The default value of this setting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#default_value Online documentation}
     */
    readonly default_value: boolean | double | int32 | string | Color
    /**
     * The minimum value for this setting. `nil` if this setting type doesn't support a minimum.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#minimum_value Online documentation}
     */
    readonly minimum_value?: double | int32
    /**
     * The maximum value for this setting. `nil` if this setting type doesn't support a maximum.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#maximum_value Online documentation}
     */
    readonly maximum_value?: double | int32
    /**
     * The allowed values for this setting. `nil` if this setting doesn't use the a fixed set of values.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#allowed_values Online documentation}
     */
    readonly allowed_values?: string[] | int32[] | double[]
    /**
     * Whether this string setting allows blank values. `nil` if not a string setting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#allow_blank Online documentation}
     */
    readonly allow_blank?: boolean
    /**
     * Whether this string setting auto-trims values. `nil` if not a string setting
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModSettingPrototype.html#auto_trim Online documentation}
     */
    readonly auto_trim?: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaModSettingPrototype"
  }
  /**
   * Prototype of a module category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaModuleCategoryPrototype.html Online documentation}
   */
  export interface LuaModuleCategoryPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaModuleCategoryPrototype"
  }
  /**
   * Prototype of a named noise expression.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaNamedNoiseExpression.html Online documentation}
   */
  export interface LuaNamedNoiseExpression extends LuaPrototypeBase {
    /**
     * Name of the property that this expression is intended to provide a value for, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaNamedNoiseExpression.html#intended_property Online documentation}
     */
    readonly intended_property: string
    /**
     * The expression itself.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaNamedNoiseExpression.html#expression Online documentation}
     */
    readonly expression: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaNamedNoiseExpression"
  }
  /**
   * Prototype of a named noise function.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaNamedNoiseFunction.html Online documentation}
   */
  export interface LuaNamedNoiseFunction extends LuaPrototypeBase {
    readonly expression: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaNamedNoiseFunction"
  }
  /**
   * Prototype of an optimized particle.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaParticlePrototype.html Online documentation}
   */
  export interface LuaParticlePrototype extends LuaPrototypeBase {
    readonly regular_trigger_effect: TriggerEffectItem
    readonly ended_in_water_trigger_effect: TriggerEffectItem
    readonly ended_on_ground_trigger_effect: TriggerEffectItem
    readonly render_layer: RenderLayer
    readonly render_layer_when_on_ground: RenderLayer
    readonly fade_out_time: uint32
    readonly life_time: uint32
    readonly regular_trigger_effect_frequency: uint32
    readonly movement_modifier_when_on_ground: float
    readonly movement_modifier: float
    readonly vertical_acceleration: float
    readonly mining_particle_frame_speed: float
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaParticlePrototype"
  }
  /**
   * A permission group that defines what players in this group are allowed to do.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html Online documentation}
   * @noSelf
   */
  export interface LuaPermissionGroup {
    /**
     * Adds the given player to this group.
     * @returns Whether the player was added.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#add_player Online documentation}
     */
    add_player(player: PlayerIdentification): boolean
    /**
     * Removes the given player from this group.
     * @returns Whether the player was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#remove_player Online documentation}
     */
    remove_player(player: PlayerIdentification): boolean
    /**
     * Whether this group allows the given action.
     * @param action The action in question.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#allows_action Online documentation}
     */
    allows_action(action: defines.input_action): boolean
    /**
     * Sets whether this group allows the performance the given action.
     * @param action The action in question.
     * @param allow_action Whether to allow the specified action.
     * @returns Whether the value was successfully applied.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#set_allows_action Online documentation}
     */
    set_allows_action(action: defines.input_action, allow_action: boolean): boolean
    /**
     * Destroys this group.
     * @returns Whether the group was successfully destroyed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#destroy Online documentation}
     */
    destroy(): boolean
    /**
     * The name of this group. Setting the name to `nil` or an empty string sets the name to the default value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#name Online documentation}
     */
    name: string | nil
    /**
     * The players in this group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#players Online documentation}
     */
    readonly players: LuaPlayer[]
    /**
     * The group ID
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroup.html#group_id Online documentation}
     */
    readonly group_id: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPermissionGroup"
  }
  /**
   * All permission groups.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroups.html Online documentation}
   * @noSelf
   */
  export interface LuaPermissionGroups {
    /**
     * Creates a new permission group.
     * @returns `nil` if the calling player doesn't have permission to make groups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroups.html#create_group Online documentation}
     */
    create_group(name?: string): LuaPermissionGroup | nil
    /**
     * Gets the permission group with the given name or group ID.
     * @returns `nil` if there is no matching group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroups.html#get_group Online documentation}
     */
    get_group(group: string | uint32): LuaPermissionGroup | nil
    /**
     * All of the permission groups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPermissionGroups.html#groups Online documentation}
     */
    readonly groups: LuaPermissionGroup[]
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPermissionGroups"
  }
  /**
   * The runtime values of a planet
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html Online documentation}
   * @noSelf
   */
  export interface LuaPlanet {
    /**
     * Creates the associated surface if one doesn't already exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#create_surface Online documentation}
     */
    create_surface(): LuaSurface
    /**
     * Associates the given surface with this planet. Surface must not already be associated with a planet and the planet must not already have an associated surface.
     *
     * Planet must not be using {@link LuaSpaceLocationPrototype#entities_require_heating entities_require_heating}.
     * @param surface The surface to be associated.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#associate_surface Online documentation}
     */
    associate_surface(surface: SurfaceIdentification): void
    /**
     * Resets the map gen settings on this planet to the default from-prototype state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#reset_map_gen_settings Online documentation}
     */
    reset_map_gen_settings(): void
    /**
     * Gets the built space platforms orbiting this planet on the given force.
     *
     * Note, this does not include platforms that have not yet been built.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#get_space_platforms Online documentation}
     */
    get_space_platforms(force: ForceID): LuaSpacePlatform[]
    /**
     * The planets name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#name Online documentation}
     */
    readonly name: string
    readonly prototype: LuaSpaceLocationPrototype
    /**
     * The surface for this planet if one currently exists.
     *
     * Planets do not default generate their surface. {@link LuaPlanet#create_surface LuaPlanet::create_surface} can be used to force the surface to exist.
     *
     * {@link LuaPlanet#associate_surface LuaPlanet::associate_surface} can be used to create an association with an existing surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlanet.html#surface Online documentation}
     */
    readonly surface?: LuaSurface
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPlanet"
  }
  /**
   * A player in the game. Pay attention that a player may or may not have a character, which is the {@link LuaEntity} of the little guy running around the world doing things.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html Online documentation}
   * @noSelf
   */
  export interface LuaPlayer extends LuaControl {
    /**
     * Setup the screen to be shown when the game is finished.
     * @param message Message to be shown.
     * @param file Path to image to be shown.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_ending_screen_data Online documentation}
     */
    set_ending_screen_data(message: LocalisedString, file?: string): void
    /**
     * Print text to the chat console.
     *
     * By default, messages that are identical to a message sent in the last 60 ticks are not printed again.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#print Online documentation}
     */
    print(message: LocalisedString, print_settings?: PrintSettings): void
    /**
     * Clear the chat console.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_console Online documentation}
     */
    clear_console(): void
    /**
     * Get the current goal description, as a localised string.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_goal_description Online documentation}
     */
    get_goal_description(): LocalisedString
    /**
     * Set the text in the goal window (top left).
     * @param text The text to display. Lines can be delimited with `\n`. Passing an empty string or omitting this parameter entirely will make the goal window disappear.
     * @param only_update When `true`, won't play the "goal updated" sound.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_goal_description Online documentation}
     */
    set_goal_description(text?: LocalisedString, only_update?: boolean): void
    /**
     * Set the controller type of the player.
     *
     * Setting a player to {@link defines.controllers.editor} auto promotes the player to admin and enables cheat mode. Setting a player to {@link defines.controllers.editor} also requires the calling player be an admin.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_controller Online documentation}
     */
    set_controller(params: {
      /**
       * Which controller to use.
       */
      readonly type: defines.controllers
      /**
       * Entity to control. Mandatory when `type` is {@link defines.controllers.character}, ignored otherwise.
       */
      readonly character?: LuaEntity
      /**
       * List of waypoints for the cutscene controller. This parameter is mandatory when `type` is {@link defines.controllers.cutscene}.
       */
      readonly waypoints?: readonly CutsceneWaypoint[]
      /**
       * If specified and `type` is {@link defines.controllers.cutscene}, the cutscene will start at this position. If not given the start position will be the player position.
       */
      readonly start_position?: MapPosition | MapPositionArray
      /**
       * If specified and `type` is {@link defines.controllers.cutscene}, the cutscene will start at this zoom level. If not given the start zoom will be the player's zoom.
       */
      readonly start_zoom?: double
      /**
       * If specified and `type` is {@link defines.controllers.cutscene}, it is the time in ticks it will take for the camera to pan from the final waypoint back to the starting position. If not given the camera will not pan back to the start position/zoom.
       */
      readonly final_transition_time?: uint32
      /**
       * If specified and `type` is {@link defines.controllers.cutscene}, the game will switch to chart-mode (map zoomed out) rendering when the zoom level is less than this value.
       */
      readonly chart_mode_cutoff?: double
      /**
       * If specified and `type` is {@link defines.controllers.remote}, the position the remote controller will be centered on.
       */
      readonly position?: MapPosition | MapPositionArray
      /**
       * If specified and `type` is {@link defines.controllers.remote}, the surface the remote controller will be put on.
       */
      readonly surface?: SurfaceIdentification
    }): void
    /**
     * Start/end wire dragging at the specified location, wire type is based on the cursor contents
     * @returns `true` if the action did something
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#drag_wire Online documentation}
     */
    drag_wire(params: {
      /**
       * Position at which cursor was clicked. Used only to decide which side of arithmetic combinator, decider combinator or power switch is to be connected. Entity itself to be connected is based on the player's selected entity.
       */
      readonly position: MapPosition | MapPositionArray
    }): boolean
    /**
     * Disable recipe groups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#disable_recipe_groups Online documentation}
     */
    disable_recipe_groups(): void
    /**
     * Enable recipe groups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#enable_recipe_groups Online documentation}
     */
    enable_recipe_groups(): void
    /**
     * Disable recipe subgroups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#disable_recipe_subgroups Online documentation}
     */
    disable_recipe_subgroups(): void
    /**
     * Enable recipe subgroups.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#enable_recipe_subgroups Online documentation}
     */
    enable_recipe_subgroups(): void
    /**
     * Print entity statistics to the player's console.
     * @param entities Entity prototypes to get statistics for. If not specified or empty, display statistics for all entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#print_entity_statistics Online documentation}
     */
    print_entity_statistics(entities?: readonly EntityWithQualityID[]): void
    /**
     * Print construction robot job counts to the player's console.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#print_robot_jobs Online documentation}
     */
    print_robot_jobs(): void
    /**
     * Print LuaObject counts per mod.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#print_lua_object_statistics Online documentation}
     */
    print_lua_object_statistics(): void
    /**
     * Unlock the achievements of the given player. This has any effect only when this is the local player, the achievement isn't unlocked so far and the achievement is of the type "achievement".
     * @param name name of the achievement to unlock
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#unlock_achievement Online documentation}
     */
    unlock_achievement(name: string): void
    /**
     * Invokes the "clear cursor" action on the player as if the user pressed it.
     *
     * ## Raised events
     * - {@link OnPlayerCursorStackChangedEvent on_player_cursor_stack_changed}? _current_tick_ Raised when the cursor was successfully cleared.
     * @returns Whether the cursor is now empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_cursor Online documentation}
     */
    clear_cursor(): boolean
    /**
     * Creates and attaches a character entity to this player.
     *
     * The player must not have a character already connected and must be online (see {@link LuaPlayer#connected LuaPlayer::connected}).
     * @param character The character to create else the default is used.
     * @returns Whether the character was created.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#create_character Online documentation}
     */
    create_character(character?: EntityWithQualityID): boolean
    /**
     * Adds an alert to this player for the given entity of the given alert type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#add_alert Online documentation}
     */
    add_alert(entity: LuaEntity, type: defines.alert_type): void
    /**
     * Adds a custom alert to this player.
     * @param entity If the alert is clicked, the map will open at the position of this entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#add_custom_alert Online documentation}
     */
    add_custom_alert(entity: LuaEntity, icon: SignalIDWrite, message: LocalisedString, show_on_map: boolean): void
    /**
     * Removes all alerts matching the given filters or if an empty filters table is given all alerts are removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#remove_alert Online documentation}
     */
    remove_alert(params: {
      readonly entity?: LuaEntity
      readonly prototype?: EntityID
      readonly position?: MapPosition | MapPositionArray
      readonly type?: defines.alert_type
      readonly surface?: SurfaceIdentification
      readonly icon?: SignalIDWrite
      readonly message?: LocalisedString
    }): void
    /**
     * Get all alerts matching the given filters, or all alerts if no filters are given.
     * @returns A mapping of surface index to an array of arrays of {@link Alert alerts} indexed by the {@link defines.alert_type alert type}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_alerts Online documentation}
     */
    get_alerts(params: {
      readonly entity?: LuaEntity
      readonly prototype?: LuaEntityPrototype
      readonly position?: MapPosition | MapPositionArray
      readonly type?: defines.alert_type
      readonly surface?: SurfaceIdentification
    }): Record<uint32, Record<defines.alert_type, Alert[]>>
    /**
     * Mutes alerts for the given alert category.
     * @returns Whether the alert type was muted (false if it was already muted).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#mute_alert Online documentation}
     */
    mute_alert(alert_type: defines.alert_type): boolean
    /**
     * Unmutes alerts for the given alert category.
     * @returns Whether the alert type was unmuted (false if it was wasn't muted).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#unmute_alert Online documentation}
     */
    unmute_alert(alert_type: defines.alert_type): boolean
    /**
     * If the given alert type is currently muted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#is_alert_muted Online documentation}
     */
    is_alert_muted(alert_type: defines.alert_type): boolean
    /**
     * Enables alerts for the given alert category.
     * @returns Whether the alert type was enabled (false if it was already enabled).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#enable_alert Online documentation}
     */
    enable_alert(alert_type: defines.alert_type): boolean
    /**
     * Disables alerts for the given alert category.
     * @returns Whether the alert type was disabled (false if it was already disabled).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#disable_alert Online documentation}
     */
    disable_alert(alert_type: defines.alert_type): boolean
    /**
     * If the given alert type is currently enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#is_alert_enabled Online documentation}
     */
    is_alert_enabled(alert_type: defines.alert_type): boolean
    /**
     * Adds a pin to this player for the given pin specification. Either entity, player, or surface and position must be defined.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#add_pin Online documentation}
     */
    add_pin(params: {
      readonly label?: string
      /**
       * Defaults to `16`.
       */
      readonly preview_distance?: uint16
      /**
       * Defaults to `true`.
       */
      readonly always_visible?: boolean
      /**
       * The entity to pin.
       */
      readonly entity?: LuaEntity
      /**
       * The player to pin.
       */
      readonly player?: PlayerIdentification
      /**
       * The surface to create the pin on.
       */
      readonly surface?: SurfaceIdentification
      /**
       * Where to create the pin. Required when surface is defined.
       */
      readonly position?: MapPosition | MapPositionArray
    }): void
    /**
     * Invokes the "smart pipette" action on the player as if the user pressed it. This method is deprecated in favor of {@link LuaPlayer#pipette LuaPlayer::pipette} and should not be used.
     *
     * ## Raised events
     * - {@link OnPlayerPipetteEvent on_player_pipette}? _instantly_ Raised if the entity was successfully pipetted.
     * @param allow_ghost Defaults to false.
     * @returns Whether the smart pipette found something to place.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#pipette_entity Online documentation}
     */
    pipette_entity(entity: EntityWithQualityID, allow_ghost?: boolean): boolean
    /**
     * Invokes the "smart pipette" action on the player as if the user pressed it.
     *
     * ## Raised events
     * - {@link OnPlayerPipetteEvent on_player_pipette}? _instantly_ Raised if an item was successfully put into the cursor.
     * @param allow_ghost Defaults to false.
     * @returns Whether the smart pipette found something to put into the cursor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#pipette Online documentation}
     */
    pipette(id: PipetteID, quality?: QualityID, allow_ghost?: boolean): boolean
    /**
     * Checks if this player can build what ever is in the cursor on the surface the player is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#can_build_from_cursor Online documentation}
     */
    can_build_from_cursor(params: {
      /**
       * Where the entity would be placed
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Direction the entity would be placed
       */
      readonly direction?: defines.direction
      /**
       * Whether to flip the blueprint horizontally. Defaults to `false`.
       */
      readonly flip_horizontal?: boolean
      /**
       * Whether to flip the blueprint vertically. Defaults to `false`.
       */
      readonly flip_vertical?: boolean
      /**
       * Which build mode should be used instead of normal build. Defaults to `defines.build_mode.normal`.
       */
      readonly build_mode?: defines.build_mode
      /**
       * The size for building terrain if building terrain. Defaults to `2`.
       */
      readonly terrain_building_size?: uint32
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
    }): boolean
    /**
     * Builds whatever is in the cursor on the surface the player is on. The cursor stack will automatically be reduced as if the player built normally.
     *
     * ## Raised events
     * - {@link OnPreBuildEvent on_pre_build}? _instantly_ Raised if the cursor was successfully built.
     * - {@link OnBuiltEntityEvent on_built_entity}? _instantly_ Raised if the cursor was successfully built.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#build_from_cursor Online documentation}
     */
    build_from_cursor(params: {
      /**
       * Where the entity would be placed
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Direction the entity would be placed
       */
      readonly direction?: defines.direction
      /**
       * Whether to mirror the entity
       */
      readonly mirror?: boolean
      /**
       * Whether to flip the blueprint horizontally. Defaults to `false`.
       */
      readonly flip_horizontal?: boolean
      /**
       * Whether to flip the blueprint vertically. Defaults to `false`.
       */
      readonly flip_vertical?: boolean
      /**
       * Which build mode should be used instead of normal build. Defaults to `defines.build_mode.normal`.
       */
      readonly build_mode?: defines.build_mode
      /**
       * The size for building terrain if building terrain. Defaults to `2`.
       */
      readonly terrain_building_size?: uint32
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
    }): void
    /**
     * Clears the blinking of the inventory based on insertion of items
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_inventory_highlights Online documentation}
     */
    clear_inventory_highlights(): void
    /**
     * Uses the current item in the cursor if it's a capsule or does nothing if not.
     * @param position Where the item would be used.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#use_from_cursor Online documentation}
     */
    use_from_cursor(position: MapPosition | MapPositionArray): void
    /**
     * Play a sound for this player.
     *
     * The sound is not played if its location is not {@link LuaForce#chart charted} for this player.
     * @param sound_specification The sound to play.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#play_sound Online documentation}
     */
    play_sound(sound_specification: PlaySoundSpecification): void
    /**
     * The characters associated with this player.
     *
     * The array will always be empty when the player is disconnected (see {@link LuaPlayer#connected LuaPlayer::connected}) regardless of there being associated characters.
     *
     * Characters associated with this player will be logged off when this player disconnects but are not controlled by any player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_associated_characters Online documentation}
     */
    get_associated_characters(): LuaEntity[]
    /**
     * Associates a character with this player.
     *
     * The character must not be connected to any controller.
     *
     * If this player is currently disconnected (see {@link LuaPlayer#connected LuaPlayer::connected}) the character will be immediately "logged off".
     *
     * See {@link LuaPlayer#get_associated_characters LuaPlayer::get_associated_characters} for more information.
     * @param character The character entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#associate_character Online documentation}
     */
    associate_character(character: LuaEntity): void
    /**
     * Disassociates a character from this player. This is functionally the same as setting {@link LuaEntity#associated_player LuaEntity::associated_player} to `nil`.
     *
     * See {@link LuaPlayer#get_associated_characters LuaPlayer::get_associated_characters} for more information.
     * @param character The character entity
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#disassociate_character Online documentation}
     */
    disassociate_character(character: LuaEntity): void
    /**
     * Swaps this player's character with another player's character.
     * @param player The player to swap characters with.
     * @returns `true` if the swap was successful.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#swap_characters Online documentation}
     */
    swap_characters(player: PlayerIdentification): boolean
    /**
     * Spawn flying text that is only visible to this player. Either `position` or `create_at_cursor` are required. When `create_at_cursor` is `true`, all parameters other than `text` are ignored.
     *
     * If no custom `speed` is set and the text is longer than 25 characters, its `time_to_live` and `speed` are dynamically adjusted to give the player more time to read it.
     *
     * Local flying text is not saved, which means it will disappear after a save/load-cycle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#create_local_flying_text Online documentation}
     */
    create_local_flying_text(params: {
      /**
       * The flying text to show.
       */
      readonly text: LocalisedString
      /**
       * The location on the map at which to show the flying text.
       */
      readonly position?: MapPosition | MapPositionArray
      /**
       * The surface which this text will be shown on. Defaults to player surface.
       */
      readonly surface?: SurfaceIdentification
      /**
       * If `true`, the flying text is created at the player's cursor. Defaults to `false`.
       */
      readonly create_at_cursor?: boolean
      /**
       * The color of the flying text. Defaults to white text.
       */
      readonly color?: Color | ColorArray
      /**
       * The amount of ticks that the flying text will be shown for. Defaults to `80`.
       */
      readonly time_to_live?: uint32
      /**
       * The speed at which the text rises upwards in tiles/second. Can't be a negative value.
       */
      readonly speed?: double
    }): void
    /**
     * Clear any active flying texts for this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_local_flying_texts Online documentation}
     */
    clear_local_flying_texts(): void
    /**
     * Gets the quick bar filter for the given slot or `nil`.
     * @param index The slot index. 1 for the first slot of page one, 2 for slot two of page one, 11 for the first slot of page 2, etc.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_quick_bar_slot Online documentation}
     */
    get_quick_bar_slot(index: uint32): ItemFilter | nil
    /**
     * Sets the quick bar filter for the given slot. If a {@link LuaItemStack} is provided, the slot will be set to that particular item instance if it has extra data, for example a specific blueprint or spidertron remote. Otherwise, it will be set to all items of that prototype, for example iron plates.
     * @param index The slot index. 1 for the first slot of page one, 2 for slot two of page one, 11 for the first slot of page 2, etc.
     * @param filter The filter or `nil` to clear it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_quick_bar_slot Online documentation}
     */
    set_quick_bar_slot(index: uint32, filter: LuaItemStack | ItemWithQualityID | nil): void
    /**
     * Gets which quick bar page is being used for the given screen page or `nil` if not known.
     * @param index The screen page. Index 1 is the top row in the gui. Index can go beyond the visible number of bars on the screen to account for the interface config setting change.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_active_quick_bar_page Online documentation}
     */
    get_active_quick_bar_page(index: uint32): uint8 | nil
    /**
     * Sets which quick bar page is being used for the given screen page.
     * @param screen_index The screen page. Index 1 is the top row in the gui. Index can go beyond the visible number of bars on the screen to account for the interface config setting change.
     * @param page_index The new quick bar page.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_active_quick_bar_page Online documentation}
     */
    set_active_quick_bar_page(screen_index: uint32, page_index: uint32): void
    /**
     * Jump to the specified cutscene waypoint. Only works when the player is viewing a cutscene.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#jump_to_cutscene_waypoint Online documentation}
     */
    jump_to_cutscene_waypoint(waypoint_index: uint32): void
    /**
     * Exit the current cutscene. Errors if not in a cutscene.
     *
     * ## Raised events
     * - {@link OnCutsceneCancelledEvent on_cutscene_cancelled}? _instantly_ Raised if the cutscene was successfully cancelled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#exit_cutscene Online documentation}
     */
    exit_cutscene(): void
    /**
     * Exit remote view if possible. Exiting will fail if the player is in a rocket or in a platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#exit_remote_view Online documentation}
     */
    exit_remote_view(): void
    /**
     * Is a custom Lua shortcut currently toggled?
     * @param prototype_name Prototype name of the custom shortcut.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#is_shortcut_toggled Online documentation}
     */
    is_shortcut_toggled(prototype_name: string): boolean
    /**
     * Is a custom Lua shortcut currently available?
     * @param prototype_name Prototype name of the custom shortcut.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#is_shortcut_available Online documentation}
     */
    is_shortcut_available(prototype_name: string): boolean
    /**
     * Toggle or untoggle a custom Lua shortcut
     * @param prototype_name Prototype name of the custom shortcut.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_shortcut_toggled Online documentation}
     */
    set_shortcut_toggled(prototype_name: string, toggled: boolean): void
    /**
     * Make a custom Lua shortcut available or unavailable.
     * @param prototype_name Prototype name of the custom shortcut.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_shortcut_available Online documentation}
     */
    set_shortcut_available(prototype_name: string, available: boolean): void
    /**
     * Asks the player if they would like to connect to the given server.
     *
     * This only does anything when used on a multiplayer peer. Single player and server hosts will ignore the prompt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#connect_to_server Online documentation}
     */
    connect_to_server(params: {
      /**
       * The server (address:port) if port is not given the default Factorio port is used.
       */
      readonly address: string
      /**
       * The name of the server.
       */
      readonly name?: LocalisedString
      readonly description?: LocalisedString
      /**
       * The password if different from the one used to join this game. Note, if the current password is not empty but the one required to join the new server is an empty string should be given for this field.
       */
      readonly password?: string
    }): void
    /**
     * Toggles this player into or out of the map editor. Does nothing if this player isn't an admin or if the player doesn't have permission to use the map editor.
     *
     * ## Raised events
     * - {@link OnPrePlayerToggledMapEditorEvent on_pre_player_toggled_map_editor}? _instantly_ Raised if the map editor was successfully toggled.
     * - {@link OnPlayerToggledMapEditorEvent on_player_toggled_map_editor}? _instantly_ Raised if the map editor was successfully toggled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#toggle_map_editor Online documentation}
     */
    toggle_map_editor(): void
    /**
     * Requests a translation for the given localised string. If the request is successful, the {@link OnStringTranslatedEvent on_string_translated} event will be fired with the results.
     *
     * Does nothing if this player is not connected (see {@link LuaPlayer#connected LuaPlayer::connected}).
     *
     * ## Raised events
     * - {@link OnStringTranslatedEvent on_string_translated}? _future_tick_ Raised if the request was successfully sent.
     * @returns The unique ID for the requested translation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#request_translation Online documentation}
     */
    request_translation(localised_string: LocalisedString): uint32 | nil
    /**
     * Requests translation for the given set of localised strings. If the request is successful, a {@link OnStringTranslatedEvent on_string_translated} event will be fired for each string with the results.
     *
     * Does nothing if this player is not connected (see {@link LuaPlayer#connected LuaPlayer::connected}).
     *
     * ## Raised events
     * - {@link OnStringTranslatedEvent on_string_translated}? _future_tick_ Raised if the request was successfully sent.
     * @returns The unique IDs for the requested translations.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#request_translations Online documentation}
     */
    request_translations(localised_strings: readonly LocalisedString[]): uint32[] | nil
    /**
     * Gets the filter for this map editor infinity filters at the given index or `nil` if the filter index doesn't exist or is empty.
     * @param index The index to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_infinity_inventory_filter Online documentation}
     */
    get_infinity_inventory_filter(index: uint32): InfinityInventoryFilter | nil
    /**
     * Sets the filter for this map editor infinity filters at the given index.
     * @param index The index to set.
     * @param filter The new filter or `nil` to clear the filter.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_infinity_inventory_filter Online documentation}
     */
    set_infinity_inventory_filter(index: uint32, filter: InfinityInventoryFilterWrite | nil): void
    /**
     * Clears all recipe notifications for this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_recipe_notifications Online documentation}
     */
    clear_recipe_notifications(): void
    /**
     * Adds the given recipe to the list of recipe notifications for this player.
     * @param recipe Recipe to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#add_recipe_notification Online documentation}
     */
    add_recipe_notification(recipe: RecipeID): void
    /**
     * Clears the given recipe from the list of recipe notifications for this player.
     * @param recipe Recipe to clear.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_recipe_notification Online documentation}
     */
    clear_recipe_notification(recipe: RecipeID): void
    /**
     * Get all recipes that currently have recipe notifications for this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#get_recipe_notifications Online documentation}
     */
    get_recipe_notifications(): LuaRecipePrototype[]
    /**
     * Adds the given blueprint to this player's clipboard queue.
     * @param blueprint The blueprint to add.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#add_to_clipboard Online documentation}
     */
    add_to_clipboard(blueprint: LuaItemStack): void
    /**
     * Gets a copy of the currently selected blueprint in the clipboard queue into the player's cursor, as if the player activated Paste.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#activate_paste Online documentation}
     */
    activate_paste(): void
    /**
     * Starts selection with selection tool from the specified position. Does nothing if the player's cursor is not a selection tool.
     * @param position The position to start selection from.
     * @param selection_mode The type of selection to start.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#start_selection Online documentation}
     */
    start_selection(position: MapPosition | MapPositionArray, selection_mode: defines.selection_mode): void
    /**
     * Clears the player's selection tool selection position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#clear_selection Online documentation}
     */
    clear_selection(): void
    /**
     * Enters the given space platform if possible.
     * @returns If the player entered the platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#enter_space_platform Online documentation}
     */
    enter_space_platform(space_platform: LuaSpacePlatform): boolean
    /**
     * Ejects this player from the current space platform if in a platform. The player is left on the platform at the position of the hub.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#leave_space_platform Online documentation}
     */
    leave_space_platform(): void
    /**
     * Ejects this player from the current space platform and lands on the current planet.
     * @returns If the player successfully landed on the planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#land_on_planet Online documentation}
     */
    land_on_planet(): boolean
    /**
     * Sets the zoom limits for a specific controller type. To reset a controller's zoom limits to default, pass an empty table for `zoom_limits`.
     * @param controller_type The type of the controller to set the zoom limits for.
     * @param zoom_limits The new zoom limits. See {@link LuaPlayer#zoom_limits LuaPlayer::zoom_limits} for usage information.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#set_zoom_limits Online documentation}
     */
    set_zoom_limits(controller_type: defines.controllers, zoom_limits: ZoomLimits): void
    /**
     * The surface this player's physical controller is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#physical_surface Online documentation}
     */
    readonly physical_surface: LuaSurface
    /**
     * Unique ID associated with the surface this player's physical controller is currently on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#physical_surface_index Online documentation}
     */
    readonly physical_surface_index: uint32
    /**
     * The current position of this player's physical controller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#physical_position Online documentation}
     */
    readonly physical_position: MapPosition
    /**
     * The current vehicle of this player's physical controller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#physical_vehicle Online documentation}
     */
    readonly physical_vehicle?: LuaEntity
    /**
     * The character attached to this player, if any. Returns `nil` when the player is disconnected (see {@link LuaPlayer#connected LuaPlayer::connected}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#character Online documentation}
     */
    character?: LuaEntity
    /**
     * When in a cutscene; the character this player would be using once the cutscene is over, if any. Returns `nil` when the player is disconnected (see {@link LuaPlayer#connected LuaPlayer::connected}).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#cutscene_character Online documentation}
     */
    readonly cutscene_character?: LuaEntity
    /**
     * This player's index in {@link LuaGameScript#players LuaGameScript::players} (unique ID). It is assigned when a player is created, and remains so (even when the player is not {@link LuaPlayer#connected connected}) until the player is irreversibly {@link OnPlayerRemovedEvent removed}. Indexes of removed players can be reused.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#index Online documentation}
     */
    readonly index: PlayerIndex
    readonly gui: LuaGui
    /**
     * `true` if the player opened itself. I.e. if they opened the character or god-controller GUI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#opened_self Online documentation}
     */
    readonly opened_self: boolean
    readonly controller_type: defines.controllers
    /**
     * The player's "physical" controller. When a player is in the remote controller, this specifies the controller they will return to. When the player is not in the remote controller, this is equivalent to {@link LuaPlayer#controller_type LuaPlayer::controller_type}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#physical_controller_type Online documentation}
     */
    readonly physical_controller_type: defines.controllers
    /**
     * The stashed controller type, if any. This is mainly useful when a player is in the map editor.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#stashed_controller_type Online documentation}
     */
    readonly stashed_controller_type?: defines.controllers
    /**
     * All SpiderVehicles currently selected by the player, if they are holding a spidertron remote.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#spidertron_remote_selection Online documentation}
     */
    spidertron_remote_selection?: LuaEntity[]
    /**
     * The current player controller's zoom level. Must be positive. The baseline zoom level is 1. Values greater than 1 will zoom in closer to the world and values between 0 and 1 will zoom out away from the world.
     *
     * Writing values outside the current zoom limits is always valid, but read values will always be clamped to the range defined by {@link LuaPlayer#zoom_limits LuaPlayer::zoom_limits}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#zoom Online documentation}
     */
    zoom: double
    /**
     * The player's current controller's zoom limits.
     *
     * Reading this field creates a copy, so modifying the returned table's fields directly will not alter the player's zoom limits. To change the zoom limits for the player's current controller, set the entire field to the desired {@link ZoomLimits} table.
     *
     * Zoom limits are defined and remembered per controller type. If you set the zoom limits of the character controller, then every time the player uses the character controller, it will remember and use the zoom limits previously set. However, other controller types will not use the character controller zoom limits; each controller type must have its zoom limits defined separately.
     *
     * To set the zoom limits of ANY controller type, not just the currently active one, use {@link LuaPlayer#set_zoom_limits LuaPlayer::set_zoom_limits}.
     * @example
     * -- Lets the player zoom in to 4x the standard zoom level. (3x is the default for most controllers.)
     * -- Increases the player zoom out level so that they can view approximately 800 tiles across.
     * -- Sets furthest_game_view to furthest so that all zoom levels are rendered in game view, never chart (map) view.
     * game.player.zoom_limits = {
     *   closest = { zoom = 4 },
     *   furthest = { distance = 800, max_distance = 1000 },
     *   furthest_game_view = { distance = 800, max_distance = 1000 }
     * }
     * @example
     * -- Resets the closest and furthest_game_view limits to their defaults.
     * -- Increases the furthest a player can zoom out to approximately 400 tiles across. There's a hard zoom limit at
     * -- 800 tiles (either vertically or horizontally, whichever is more).
     * game.player.zoom_limits = {
     *   furthest = { distance = 400, max_distance = 800 }
     * }
     * @example
     * -- Sets the closest that the player can zoom in to 3x (the default for most controllers).
     * -- Sets the furthest that the player can view in game view to some number GREATER than
     * -- closest, guaranteeing that the player can only view the chart. However, this does NOT mean that the player
     * -- can interact with the game as if in remote view if they are not explicitly using remote view.
     * game.player.zoom_limits = {
     *   closest = { zoom = 3 },
     *   furthest_game_view = { zoom = 4 }
     * }
     * @example
     * -- Save a copy of whatever zoom limits any script has previously set.
     * local custom_limits = game.player.zoom_limits
     * -- Resets all zoom limits to default.
     * game.player.zoom_limits = {}
     * -- Save a copy of whatever the default zoom limits are for the current controller.
     * local default_limits = game.player.zoom_limits
     * -- Set the zoom limits to a modification of the engine-default closest zoom limit (or 6 if the engine-default is
     * -- not a fixed zoom value), the furthest limit previously defined by script (or the engine default if not
     * -- previously set by a script), and some arbitrary value for `furthest_game_view`.
     * game.player.zoom_limits = {
     *   closest = { zoom = (default_limits.furthest.zoom or 3.0) * 2 },
     *   furthest = custom_limits.furthest,
     *   furthest_game_view = { zoom = 0.25 }
     * }
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#zoom_limits Online documentation}
     */
    zoom_limits: ZoomLimits
    /**
     * The entity being centered on in remote view.
     *
     * When writing, the player will be switched to remote view (if not already in it) and centered on the given entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#centered_on Online documentation}
     */
    centered_on?: LuaEntity
    /**
     * The player's game view settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#game_view_settings Online documentation}
     */
    game_view_settings: GameViewSettings
    /**
     * `true` if the minimap is visible.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#minimap_enabled Online documentation}
     */
    minimap_enabled: boolean
    /**
     * The color associated with the player. This will be used to tint the player's character as well as their buildings and vehicles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * The color used when this player talks in game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#chat_color Online documentation}
     */
    get chat_color(): Color
    set chat_color(value: Color | ColorArray)
    /**
     * The player's username.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#name Online documentation}
     */
    readonly name: string
    /**
     * The tag that is shown after the player in chat, on the map and above multiplayer selection rectangles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#tag Online documentation}
     */
    tag: string
    /**
     * `true` if the player is currently connected to the game.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#connected Online documentation}
     */
    readonly connected: boolean
    /**
     * `true` if the player is an admin.
     *
     * Trying to change player admin status from the console when you aren't an admin does nothing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#admin Online documentation}
     */
    admin: boolean
    /**
     * The source entity used during entity settings copy-paste, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#entity_copy_source Online documentation}
     */
    readonly entity_copy_source?: LuaEntity
    /**
     * How many ticks since the last action of this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#afk_time Online documentation}
     */
    readonly afk_time: uint32
    /**
     * How many ticks did this player spend playing this save (all sessions combined).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#online_time Online documentation}
     */
    readonly online_time: uint32
    /**
     * At what tick this player was last online.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#last_online Online documentation}
     */
    readonly last_online: uint32
    /**
     * The permission group this player is part of, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#permission_group Online documentation}
     */
    permission_group?: LuaPermissionGroup
    /**
     * The current per-player settings for the this player, indexed by prototype name. Returns the same structure as {@link LuaSettings#get_player_settings LuaSettings::get_player_settings}. This table becomes invalid if its associated player does.
     *
     * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
     * @example
     * -- Change the value of the "active_lifestyle" setting
     * player.mod_settings["active_lifestyle"] = {value = true}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#mod_settings Online documentation}
     */
    readonly mod_settings: LuaCustomTable<string, ModSetting>
    /**
     * The number of ticks until this player will respawn. `nil` if this player is not waiting to respawn.
     *
     * Set to `nil` to immediately respawn the player.
     *
     * Set to any positive value to trigger the respawn state for this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#ticks_to_respawn Online documentation}
     */
    ticks_to_respawn?: uint32
    /**
     * The display resolution for this player.
     *
     * During {@link OnPlayerCreatedEvent on_player_created}, this attribute will always return a resolution of `{width=1920, height=1080}`. To get the actual resolution, listen to the {@link OnPlayerDisplayResolutionChangedEvent on_player_display_resolution_changed} event raised shortly afterwards.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#display_resolution Online documentation}
     */
    readonly display_resolution: DisplayResolution
    /**
     * The display scale for this player.
     *
     * During {@link OnPlayerCreatedEvent on_player_created}, this attribute will always return a scale of `1`. To get the actual scale, listen to the {@link OnPlayerDisplayScaleChangedEvent on_player_display_scale_changed} event raised shortly afterwards.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#display_scale Online documentation}
     */
    readonly display_scale: double
    /**
     * The display density scale for this player. The display density scale is the factor of {@link LuaPlayer#display_scale LuaPlayer::display_scale} that is determined by the physical DPI of the screen that Factorio is running on. In most cases, the default value is 1. If the player is playing on a high-density display, this value may be 2 or greater.
     *
     * During {@link OnPlayerCreatedEvent on_player_created}, this attribute will always return a scale of `1`. To get the actual scale, listen to the {@link OnPlayerDisplayDensityScaleChangedEvent on_player_display_density_scale_changed} event raised shortly afterwards.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#display_density_scale Online documentation}
     */
    readonly display_density_scale: double
    /**
     * The active locale for this player.
     *
     * During {@link OnPlayerCreatedEvent on_player_created}, this attribute will be `en`. To get the actual value, listen to the {@link OnPlayerLocaleChangedEvent on_player_locale_changed} event raised shortly afterwards.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#locale Online documentation}
     */
    readonly locale: string
    /**
     * The item stack containing a blueprint to be setup.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#blueprint_to_setup Online documentation}
     */
    readonly blueprint_to_setup: LuaItemStack
    /**
     * Records contained in the player's blueprint library.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#blueprints Online documentation}
     */
    readonly blueprints: LuaRecord[]
    /**
     * The render mode of the player, like map or zoom to world.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#render_mode Online documentation}
     */
    readonly render_mode: defines.render_mode
    /**
     * The input method of the player, mouse and keyboard or game controller
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#input_method Online documentation}
     */
    readonly input_method: defines.input_method
    /**
     * If `true`, zoom-to-world noise effect will be disabled and environmental sounds will be based on zoom-to-world view instead of position of player's character.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#spectator Online documentation}
     */
    spectator: boolean
    /**
     * If `true`, circle and name of given player is rendered on the map/chart.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#show_on_map Online documentation}
     */
    show_on_map: boolean
    /**
     * If items not included in this map editor infinity inventory filters should be removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#remove_unfiltered_items Online documentation}
     */
    remove_unfiltered_items: boolean
    /**
     * The filters for this map editor infinity inventory settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#infinity_inventory_filters Online documentation}
     */
    get infinity_inventory_filters(): InfinityInventoryFilter[]
    set infinity_inventory_filters(value: readonly InfinityInventoryFilterWrite[])
    /**
     * If the main inventory will be auto sorted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#auto_sort_main_inventory Online documentation}
     */
    readonly auto_sort_main_inventory: boolean
    /**
     * The original location of the item in the cursor, marked with a hand. `nil` if the cursor stack is empty. When writing, the specified inventory slot must be empty and the cursor stack must not be empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#hand_location Online documentation}
     */
    hand_location?: ItemStackLocation
    /**
     * Returns true if the current item stack in cursor will be destroyed after clearing the cursor. Manually putting it into inventory still preserves the item. If the cursor stack is not one of the supported types (blueprint, blueprint-book, deconstruction-planner, upgrade-planner), write operation will be silently ignored.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#cursor_stack_temporary Online documentation}
     */
    cursor_stack_temporary: boolean
    /**
     * The undo and redo stack for this player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#undo_redo_stack Online documentation}
     */
    readonly undo_redo_stack: LuaUndoRedoStack
    /**
     * The wire drag target for this player, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#drag_target Online documentation}
     */
    readonly drag_target?: DragTarget
    /**
     * The player's map view settings. To write to this, use a table containing the fields that should be changed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPlayer.html#map_view_settings Online documentation}
     */
    set map_view_settings(value: MapViewSettings)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPlayer"
  }
  /**
   * Prototype of a procession inheritance group which synchronizes offsets between procession steps.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProcessionLayerInheritanceGroupPrototype.html Online documentation}
   */
  export interface LuaProcessionLayerInheritanceGroupPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaProcessionLayerInheritanceGroupPrototype"
  }
  /**
   * Prototype of a procession.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProcessionPrototype.html Online documentation}
   */
  export interface LuaProcessionPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaProcessionPrototype"
  }
  /**
   * An object used to measure script performance.
   *
   * Since performance is non-deterministic, these objects don't allow reading the raw time values from Lua. They can be used anywhere a {@link LocalisedString} is used, except for {@link LuaGuiElement#add LuaGuiElement::add}'s LocalisedString arguments, {@link LuaSurface#create_entity LuaSurface::create_entity}'s `text` argument, and {@link LuaEntity#add_market_item LuaEntity::add_market_item}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html Online documentation}
   * @noSelf
   */
  export interface LuaProfiler {
    /**
     * Resets the clock, also restarting it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html#reset Online documentation}
     */
    reset(): void
    /**
     * Stops the clock.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html#stop Online documentation}
     */
    stop(): void
    /**
     * Start the clock again, without resetting it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html#restart Online documentation}
     */
    restart(): void
    /**
     * Add the duration of another timer to this timer. Useful to reduce start/stop overhead when accumulating time onto many timers at once.
     *
     * If other is running, the time to now will be added.
     * @param other The timer to add to this timer.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html#add Online documentation}
     */
    add(other: LuaProfiler): void
    /**
     * Divides the current duration by a set value. Useful for calculating the average of many iterations.
     *
     * Does nothing if this isn't stopped.
     * @param number The number to divide by. Must be > 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProfiler.html#divide Online documentation}
     */
    divide(number: double): void
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaProfiler"
  }
  /**
   * Control behavior for programmable speakers.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProgrammableSpeakerControlBehavior.html Online documentation}
   */
  export interface LuaProgrammableSpeakerControlBehavior extends LuaControlBehavior {
    circuit_parameters: ProgrammableSpeakerCircuitParameters
    get circuit_condition(): CircuitConditionDefinition
    set circuit_condition(value: CircuitConditionDefinitionWrite)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaProgrammableSpeakerControlBehavior"
  }
  /**
   * Base for all prototype classes.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html Online documentation}
   */
  export interface LuaPrototypeBase {
    /**
     * Type of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#type Online documentation}
     */
    readonly type: string
    /**
     * Name of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#name Online documentation}
     */
    readonly name: string
    /**
     * The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#order Online documentation}
     */
    readonly order: string
    readonly localised_name: LocalisedString
    readonly localised_description: LocalisedString
    /**
     * Provides additional description used in factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#factoriopedia_description Online documentation}
     */
    readonly factoriopedia_description: LocalisedString
    /**
     * Group of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#group Online documentation}
     */
    readonly group: LuaGroup
    /**
     * Subgroup of this prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#subgroup Online documentation}
     */
    readonly subgroup: LuaGroup
    readonly hidden: boolean
    readonly hidden_in_factoriopedia: boolean
    readonly parameter: boolean
    /**
     * Extra description items in the tooltip and Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypeBase.html#custom_tooltip_fields Online documentation}
     */
    readonly custom_tooltip_fields?: CustomTooltipField[]
  }
  /**
   * Provides read-only access to prototypes. It is accessible through the global object named `prototypes`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html Online documentation}
   * @noSelf
   */
  export interface LuaPrototypes {
    /**
     * Returns a dictionary of all LuaEntityPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every entity prototype that can craft recipes involving fluids in the way some assembling machines can
     * local prototypes = prototypes.get_entity_filtered{{filter="crafting-category", crafting_category="crafting-with-fluid"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_entity_filtered Online documentation}
     */
    get_entity_filtered(filters: readonly EntityPrototypeFilterWrite[]): LuaCustomTable<string, LuaEntityPrototype>
    /**
     * Returns a dictionary of all LuaItemPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every item prototype that has a fuel top speed multiplier larger than 1.
     * local prototypes = prototypes.get_item_filtered{{filter = "fuel-top-speed-multiplier", comparison = ">", value = 1}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_item_filtered Online documentation}
     */
    get_item_filtered(filters: readonly ItemPrototypeFilterWrite[]): LuaCustomTable<string, LuaItemPrototype>
    /**
     * Returns a dictionary of all LuaEquipmentPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every equipment prototype that functions as a battery.
     * local prototypes = prototypes.get_equipment_filtered{{filter="type", type="battery-equipment"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_equipment_filtered Online documentation}
     */
    get_equipment_filtered(filters: readonly EquipmentPrototypeFilter[]): LuaCustomTable<string, LuaEquipmentPrototype>
    /**
     * Returns a dictionary of all LuaModSettingPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every mod setting prototype that belongs to the specified mod.
     * local prototypes = prototypes.get_mod_setting_filtered{{filter="mod", mod="space-exploration"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_mod_setting_filtered Online documentation}
     */
    get_mod_setting_filtered(
      filters: readonly ModSettingPrototypeFilter[],
    ): LuaCustomTable<string, LuaModSettingPrototype>
    /**
     * Returns a dictionary of all LuaAchievementPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every achievement prototype that is not allowed to be completed on the peaceful difficulty setting.
     * local prototypes = prototypes.get_achievement_filtered{{filter="allowed-without-fight", invert=true}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_achievement_filtered Online documentation}
     */
    get_achievement_filtered(
      filters: readonly AchievementPrototypeFilter[],
    ): LuaCustomTable<string, LuaAchievementPrototype>
    /**
     * Returns a dictionary of all LuaTilePrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every tile prototype that improves a player's walking speed by at least 50%.
     * local prototypes = prototypes.get_tile_filtered{{filter="walking-speed-modifier", comparison="≥", value=1.5}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_tile_filtered Online documentation}
     */
    get_tile_filtered(filters: readonly TilePrototypeFilterWrite[]): LuaCustomTable<string, LuaTilePrototype>
    /**
     * Returns a dictionary of all LuaDecorativePrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every decorative prototype that is auto-placed.
     * local prototypes = prototypes.get_decorative_filtered{{filter="autoplace"}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_decorative_filtered Online documentation}
     */
    get_decorative_filtered(
      filters: readonly DecorativePrototypeFilter[],
    ): LuaCustomTable<string, LuaDecorativePrototype>
    /**
     * Returns a dictionary of all LuaFluidPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every fluid prototype that has a heat capacity of exactly `100`.
     * local prototypes = prototypes.get_fluid_filtered{{filter="heat-capacity", comparison="=", value=100}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_fluid_filtered Online documentation}
     */
    get_fluid_filtered(filters: readonly FluidPrototypeFilterWrite[]): LuaCustomTable<string, LuaFluidPrototype>
    /**
     * Returns a dictionary of all LuaRecipePrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every recipe prototype that takes less than half a second to craft (at crafting speed `1`).
     * local prototypes = prototypes.get_recipe_filtered{{filter="energy", comparison="<", value=0.5}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_recipe_filtered Online documentation}
     */
    get_recipe_filtered(filters: readonly RecipePrototypeFilterWrite[]): LuaCustomTable<string, LuaRecipePrototype>
    /**
     * Returns a dictionary of all LuaTechnologyPrototypes that fit the given filters. The prototypes are indexed by `name`.
     * @example
     * -- Get every technology prototype that can be researched at the start of the game.
     * local prototypes = prototypes.get_technology_filtered{{filter="has-prerequisites", invert=true}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_technology_filtered Online documentation}
     */
    get_technology_filtered(
      filters: readonly TechnologyPrototypeFilterWrite[],
    ): LuaCustomTable<string, LuaTechnologyPrototype>
    /**
     * Gets the prototype history for the given type and name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#get_history Online documentation}
     */
    get_history(type: PrototypeType, name: string): PrototypeHistory
    /**
     * A dictionary containing every LuaFontPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#font Online documentation}
     */
    readonly font: LuaCustomTable<string, LuaFontPrototype>
    /**
     * A dictionary containing every MapGenPreset indexed by `name`.
     *
     * A MapGenPreset is an exact copy of the prototype table provided from the data stage.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#map_gen_preset Online documentation}
     */
    readonly map_gen_preset: LuaCustomTable<string, MapGenPreset>
    /**
     * A map of styles that {@link LuaGuiElement} can use.
     *
     * Maps from the style's name to its type, as seen on {@link import("factorio:prototype").StyleSpecification StyleSpecification}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#style Online documentation}
     */
    readonly style: LuaCustomTable<string, string>
    /**
     * All utility constants.
     *
     * See {@link import("factorio:prototype").UtilityConstants UtilityConstants} for possible values.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#utility_constants Online documentation}
     */
    readonly utility_constants: LuaCustomTable<string, AnyBasic>
    /**
     * A dictionary containing every LuaEntityPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#entity Online documentation}
     */
    readonly entity: LuaCustomTable<string, LuaEntityPrototype>
    /**
     * A dictionary containing every LuaItemPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#item Online documentation}
     */
    readonly item: LuaCustomTable<string, LuaItemPrototype>
    /**
     * A dictionary containing every LuaFluidPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#fluid Online documentation}
     */
    readonly fluid: LuaCustomTable<string, LuaFluidPrototype>
    /**
     * A dictionary containing every LuaTilePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#tile Online documentation}
     */
    readonly tile: LuaCustomTable<string, LuaTilePrototype>
    /**
     * A dictionary containing every LuaEquipmentPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#equipment Online documentation}
     */
    readonly equipment: LuaCustomTable<string, LuaEquipmentPrototype>
    /**
     * A dictionary containing every LuaDamagePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#damage Online documentation}
     */
    readonly damage: LuaCustomTable<string, LuaDamagePrototype>
    /**
     * A dictionary containing every LuaVirtualSignalPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#virtual_signal Online documentation}
     */
    readonly virtual_signal: LuaCustomTable<string, LuaVirtualSignalPrototype>
    /**
     * A dictionary containing every LuaEquipmentGridPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#equipment_grid Online documentation}
     */
    readonly equipment_grid: LuaCustomTable<string, LuaEquipmentGridPrototype>
    /**
     * A dictionary containing every LuaRecipePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#recipe Online documentation}
     */
    readonly recipe: LuaCustomTable<string, LuaRecipePrototype>
    /**
     * A dictionary containing every {@link LuaTechnologyPrototype} indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#technology Online documentation}
     */
    readonly technology: LuaCustomTable<string, LuaTechnologyPrototype>
    /**
     * A dictionary containing every LuaDecorativePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#decorative Online documentation}
     */
    readonly decorative: LuaCustomTable<string, LuaDecorativePrototype>
    /**
     * A dictionary containing every LuaParticlePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#particle Online documentation}
     */
    readonly particle: LuaCustomTable<string, LuaParticlePrototype>
    /**
     * A dictionary containing every LuaAutoplaceControlPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#autoplace_control Online documentation}
     */
    readonly autoplace_control: LuaCustomTable<string, LuaAutoplaceControlPrototype>
    /**
     * A dictionary containing every LuaModSettingPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#mod_setting Online documentation}
     */
    readonly mod_setting: LuaCustomTable<string, LuaModSettingPrototype>
    /**
     * A dictionary containing every LuaCustomInputPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#custom_input Online documentation}
     */
    readonly custom_input: LuaCustomTable<string, LuaCustomInputPrototype>
    /**
     * A dictionary containing every LuaAmmoCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#ammo_category Online documentation}
     */
    readonly ammo_category: LuaCustomTable<string, LuaAmmoCategoryPrototype>
    /**
     * A dictionary containing every LuaNamedNoiseExpression indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#named_noise_expression Online documentation}
     */
    readonly named_noise_expression: LuaCustomTable<string, LuaNamedNoiseExpression>
    /**
     * A dictionary containing every LuaNamedNoiseFunction indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#named_noise_function Online documentation}
     */
    readonly named_noise_function: LuaCustomTable<string, LuaNamedNoiseFunction>
    /**
     * A dictionary containing every ItemSubgroup indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#item_subgroup Online documentation}
     */
    readonly item_subgroup: LuaCustomTable<string, LuaGroup>
    /**
     * A dictionary containing every ItemGroup indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#item_group Online documentation}
     */
    readonly item_group: LuaCustomTable<string, LuaGroup>
    /**
     * A dictionary containing every LuaFuelCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#fuel_category Online documentation}
     */
    readonly fuel_category: LuaCustomTable<string, LuaFuelCategoryPrototype>
    /**
     * A dictionary containing every LuaResourceCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#resource_category Online documentation}
     */
    readonly resource_category: LuaCustomTable<string, LuaResourceCategoryPrototype>
    /**
     * A dictionary containing every LuaAchievementPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#achievement Online documentation}
     */
    readonly achievement: LuaCustomTable<string, LuaAchievementPrototype>
    /**
     * A dictionary containing every LuaModuleCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#module_category Online documentation}
     */
    readonly module_category: LuaCustomTable<string, LuaModuleCategoryPrototype>
    /**
     * A dictionary containing every LuaEquipmentCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#equipment_category Online documentation}
     */
    readonly equipment_category: LuaCustomTable<string, LuaEquipmentCategoryPrototype>
    /**
     * A dictionary containing every LuaTrivialSmokePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#trivial_smoke Online documentation}
     */
    readonly trivial_smoke: LuaCustomTable<string, LuaTrivialSmokePrototype>
    /**
     * A dictionary containing every LuaShortcutPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#shortcut Online documentation}
     */
    readonly shortcut: LuaCustomTable<string, LuaShortcutPrototype>
    /**
     * A dictionary containing every LuaRecipeCategoryPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#recipe_category Online documentation}
     */
    readonly recipe_category: LuaCustomTable<string, LuaRecipeCategoryPrototype>
    readonly quality: LuaCustomTable<string, LuaQualityPrototype>
    readonly surface_property: LuaCustomTable<string, LuaSurfacePropertyPrototype>
    readonly space_location: LuaCustomTable<string, LuaSpaceLocationPrototype>
    readonly space_connection: LuaCustomTable<string, LuaSpaceConnectionPrototype>
    /**
     * A dictionary containing every defined custom event, indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#custom_event Online documentation}
     */
    readonly custom_event: LuaCustomTable<string, LuaCustomEventPrototype>
    /**
     * A dictionary containing every LuaActiveTriggerPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#active_trigger Online documentation}
     */
    readonly active_trigger: LuaCustomTable<string, LuaActiveTriggerPrototype>
    /**
     * A dictionary containing every LuaAsteroidChunkPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#asteroid_chunk Online documentation}
     */
    readonly asteroid_chunk: LuaCustomTable<string, LuaAsteroidChunkPrototype>
    /**
     * A dictionary containing every LuaCollisionLayerPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#collision_layer Online documentation}
     */
    readonly collision_layer: LuaCustomTable<string, LuaCollisionLayerPrototype>
    /**
     * A dictionary containing every LuaAirbornePollutantPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#airborne_pollutant Online documentation}
     */
    readonly airborne_pollutant: LuaCustomTable<string, LuaAirbornePollutantPrototype>
    /**
     * A dictionary containing every LuaBurnerUsagePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#burner_usage Online documentation}
     */
    readonly burner_usage: LuaCustomTable<string, LuaBurnerUsagePrototype>
    /**
     * A dictionary containing every LuaModData indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#mod_data Online documentation}
     */
    readonly mod_data: LuaCustomTable<string, LuaModData>
    /**
     * A dictionary containing every LuaSurfacePrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#surface Online documentation}
     */
    readonly surface: LuaCustomTable<string, LuaSurfacePrototype>
    /**
     * A dictionary containing every LuaProcessionPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#procession Online documentation}
     */
    readonly procession: LuaCustomTable<string, LuaProcessionPrototype>
    /**
     * A dictionary containing every LuaProcessionLayerInheritanceGroupPrototype indexed by `name`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPrototypes.html#procession_layer_inheritance_group Online documentation}
     */
    readonly procession_layer_inheritance_group: LuaCustomTable<string, LuaProcessionLayerInheritanceGroupPrototype>
    readonly max_force_distraction_distance: double
    readonly max_force_distraction_chunk_distance: uint32
    readonly max_electric_pole_supply_area_distance: float
    readonly max_electric_pole_connection_distance: double
    readonly max_beacon_supply_area_distance: uint32
    readonly max_gate_activation_distance: double
    readonly max_inserter_reach_distance: double
    readonly max_pipe_to_ground_distance: uint8
    readonly max_underground_belt_distance: uint8
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPrototypes"
  }
  /**
   * Control behavior for proxy container.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProxyContainerControlBehavior.html Online documentation}
   */
  export interface LuaProxyContainerControlBehavior extends LuaControlBehavior {
    /**
     * `true` if this proxy container is sending inventory contents to a circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaProxyContainerControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaProxyContainerControlBehavior"
  }
  /**
   * Control behavior for pumps.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPumpControlBehavior.html Online documentation}
   */
  export interface LuaPumpControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the pump should set its fluid filter from the circuit network signals.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaPumpControlBehavior.html#set_filter Online documentation}
     */
    set_filter: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaPumpControlBehavior"
  }
  /**
   * Prototype of a quality.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaQualityPrototype.html Online documentation}
   */
  export interface LuaQualityPrototype extends LuaPrototypeBase {
    /**
     * The color of the prototype
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaQualityPrototype.html#color Online documentation}
     */
    readonly color: Color
    /**
     * Level basically specifies the stat-increasing value of this quality level.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaQualityPrototype.html#level Online documentation}
     */
    readonly level: uint32
    /**
     * The next higher level of the quality
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaQualityPrototype.html#next Online documentation}
     */
    readonly next: LuaQualityPrototype
    /**
     * The probability multiplier of getting the next level of quality.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaQualityPrototype.html#next_probability Online documentation}
     */
    readonly next_probability: double
    readonly draw_sprite_by_default: boolean
    readonly beacon_power_usage_multiplier: float
    readonly mining_drill_resource_drain_multiplier: float
    readonly science_pack_drain_multiplier: float
    readonly default_multiplier: double
    readonly inserter_speed_multiplier: double
    readonly fluid_wagon_capacity_multiplier: double
    readonly inventory_size_multiplier: double
    readonly lab_research_speed_multiplier: double
    readonly crafting_machine_speed_multiplier: double
    readonly crafting_machine_energy_usage_multiplier: double
    readonly logistic_cell_charging_energy_multiplier: double
    readonly tool_durability_multiplier: double
    readonly accumulator_capacity_multiplier: double
    readonly flying_robot_max_energy_multiplier: double
    readonly range_multiplier: double
    readonly equipment_grid_width_bonus: int16
    readonly equipment_grid_height_bonus: int16
    readonly electric_pole_wire_reach_bonus: float
    readonly electric_pole_supply_area_distance_bonus: float
    readonly beacon_supply_area_distance_bonus: float
    readonly mining_drill_mining_radius_bonus: float
    readonly logistic_cell_charging_station_count_bonus: uint32
    readonly asteroid_collector_collection_radius_bonus: uint32
    readonly beacon_module_slots_bonus: ItemStackIndex
    readonly crafting_machine_module_slots_bonus: ItemStackIndex
    readonly mining_drill_module_slots_bonus: ItemStackIndex
    readonly lab_module_slots_bonus: ItemStackIndex
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaQualityPrototype"
  }
  /**
   * An interface to send messages to the calling RCON interface through the global object named `rcon`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRCON.html Online documentation}
   * @noSelf
   */
  export interface LuaRCON {
    /**
     * Print text to the calling RCON interface if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRCON.html#print Online documentation}
     */
    print(message: LocalisedString): void
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRCON"
  }
  /**
   * Control behavior for radars
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRadarControlBehavior.html Online documentation}
   */
  export interface LuaRadarControlBehavior extends LuaControlBehavior {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRadarControlBehavior"
  }
  /**
   * Utility object that binds to a rail entity and rail_direction to allow easier traversal over rails
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html Online documentation}
   * @noSelf
   */
  export interface LuaRailEnd {
    /**
     * Creates a copy of this LuaRailEnd object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#make_copy Online documentation}
     */
    make_copy(): LuaRailEnd
    /**
     * Moves to opposite end on the rail this object points to
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#flip_direction Online documentation}
     */
    flip_direction(): void
    /**
     * Moves forward by 1 rail to the specified connection direction
     * @returns If the move was successful. False if there is no rail connected in given connection_direction
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#move_forward Online documentation}
     */
    move_forward(connection_direction: defines.rail_connection_direction): boolean
    /**
     * Moves forward by 1 rail in the natural direction. Natural direction is a move in the direction taken by the train over rail connection related to this rail end. If there are no trains, the natural direction is straight if straight connected rail exists, otherwise it is right if right connected rail exists, otherwise it is left if left connected rail exists. Natural direction is not defined if there are no rails connected to this end and this method will fail.
     * @returns If the move was successful. False only when there are no rails connected on this end
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#move_natural Online documentation}
     */
    move_natural(): boolean
    /**
     * Moves forward until a rail segment boundary is reached. If this rail end is at the segment boundary, it will not move at all. When a rail segment is cyclical, it will reach the rail segment boundary at some arbitrary position unless the segment boundary is well defined by presence of rail signals, train stop or other rails connecting to the rails loop.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#move_to_segment_end Online documentation}
     */
    move_to_segment_end(): void
    /**
     * Returns all possible rail extensions from this position as defined by the planner item.
     * @param planner_item Rail planner that defines possible rail extensions
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#get_rail_extensions Online documentation}
     */
    get_rail_extensions(planner_item: ItemID): RailExtensionData[]
    /**
     * Rail to which this RailEnd is binding to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#rail Online documentation}
     */
    readonly rail: LuaEntity
    /**
     * Which end of the rail this RailEnd is binding to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#direction Online documentation}
     */
    readonly direction: defines.rail_direction
    /**
     * Location of the rail end
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#location Online documentation}
     */
    readonly location: RailLocation
    /**
     * Location of an outgoing signal, which goes to the right relative to the rail end movement.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#out_signal_location Online documentation}
     */
    readonly out_signal_location: RailLocation
    /**
     * Location of the alternative outgoing signal, which goes to the right relative to the rail end movement. Not all places have alternative outgoing signal spot, so when it is not available, a nil will be given instead
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#alternative_out_signal_location Online documentation}
     */
    readonly alternative_out_signal_location?: RailLocation
    /**
     * Location of an incoming signal, which goes to the left relative to the rail end movement.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#in_signal_location Online documentation}
     */
    readonly in_signal_location: RailLocation
    /**
     * Location of the alternative incoming signal, which goes to the right relative to the rail end movement. Not all places have alternative incoming signal spot, so when it is not available, a nil will be given instead
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailEnd.html#alternative_in_signal_location Online documentation}
     */
    readonly alternative_in_signal_location?: RailLocation
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRailEnd"
  }
  /**
   * A rail path.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html Online documentation}
   */
  export interface LuaRailPath {
    /**
     * The total number of rails in this path.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#size Online documentation}
     */
    readonly size: uint32
    /**
     * The current rail index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#current Online documentation}
     */
    readonly current: uint32
    /**
     * The total path distance.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#total_distance Online documentation}
     */
    readonly total_distance: double
    /**
     * The total distance traveled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#travelled_distance Online documentation}
     */
    readonly travelled_distance: double
    /**
     * Array of the rails that this path travels over.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#rails Online documentation}
     */
    readonly rails: LuaCustomTable<uint32, LuaEntity>
    /**
     * If the path goes from the front of the train
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailPath.html#is_front Online documentation}
     */
    readonly is_front: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRailPath"
  }
  /**
   * Control behavior for rail signals and rail chain signals.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailSignalBaseControlBehavior.html Online documentation}
   */
  export interface LuaRailSignalBaseControlBehavior extends LuaControlBehavior {
    get red_signal(): SignalID | nil
    set red_signal(value: SignalIDWrite | nil)
    get orange_signal(): SignalID | nil
    set orange_signal(value: SignalIDWrite | nil)
    get green_signal(): SignalID | nil
    set green_signal(value: SignalIDWrite | nil)
    get blue_signal(): SignalID | nil
    set blue_signal(value: SignalIDWrite | nil)
    /**
     * If this will close the rail signal based off the circuit condition.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailSignalBaseControlBehavior.html#close_signal Online documentation}
     */
    close_signal: boolean
    /**
     * If this will read the rail signal state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailSignalBaseControlBehavior.html#read_signal Online documentation}
     */
    read_signal: boolean
    /**
     * The circuit condition when controlling the signal through the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRailSignalBaseControlBehavior.html#circuit_condition Online documentation}
     */
    get circuit_condition(): CircuitConditionDefinition
    set circuit_condition(value: CircuitConditionDefinitionWrite)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRailSignalBaseControlBehavior"
  }
  /**
   * A deterministic random generator independent from the core games random generator that can be seeded and re-seeded at will. This random generator can be saved and loaded and will maintain its state.
   *
   * Note this is entirely different from calling {@linkplain https://lua-api.factorio.com/2.0.75/auxiliary/libraries.html math.random}() and you should be sure you actually want to use this over calling `math.random()`. If you aren't sure if you need to use this over calling `math.random()` then you probably don't need to use this.
   * @example
   * -- Create a generator and use it to print a random number.
   * storage.generator = game.create_random_generator()
   * game.player.print(storage.generator())
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRandomGenerator.html Online documentation}
   * @noSelf
   */
  export interface LuaRandomGenerator {
    /**
     * Re-seeds the random generator with the given value.
     *
     * Seeds that are close together will produce similar results. Seeds from 0 to 341 will produce the same results.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRandomGenerator.html#re_seed Online documentation}
     */
    re_seed(seed: uint32): void
    /**
     * Generates a random number. If no parameters are given a number in the `[0, 1)` range is returned. If a single parameter is given a floored number in the `[1, N]` range is returned. If 2 parameters are given a floored number in the `[N1, N2]` range is returned.
     * @param lower Inclusive lower bound on the result
     * @param upper Inclusive upper bound on the result
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRandomGenerator.html#call_operator Online documentation}
     */
    (lower?: int32, upper?: int32): double
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRandomGenerator"
  }
  /**
   * Control behavior for Reactor
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaReactorControlBehavior.html Online documentation}
   */
  export interface LuaReactorControlBehavior extends LuaControlBehavior {
    /**
     * If this will read fuel inventory and currently burning fuel
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaReactorControlBehavior.html#read_fuel Online documentation}
     */
    read_fuel: boolean
    /**
     * If this will read temperature of the reactor
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaReactorControlBehavior.html#read_temperature Online documentation}
     */
    read_temperature: boolean
    get temperature_signal(): SignalID | nil
    set temperature_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaReactorControlBehavior"
  }
  /**
   * A crafting recipe. Recipes belong to forces (see {@link LuaForce}) because some recipes are unlocked by research, and researches are per-force.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html Online documentation}
   * @noSelf
   */
  export interface LuaRecipe {
    /**
     * Reload the recipe from the prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#reload Online documentation}
     */
    reload(): void
    /**
     * Checks if recipe has given category
     * @returns `true` if recipe has this category.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#has_category Online documentation}
     */
    has_category(category: RecipeCategoryID): boolean
    /**
     * Name of the recipe. This can be different than the name of the result items as there could be more recipes to make the same item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#name Online documentation}
     */
    readonly name: string
    /**
     * Localised name of the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly localised_description: LocalisedString
    /**
     * The prototype for this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#prototype Online documentation}
     */
    readonly prototype: LuaRecipePrototype
    /**
     * Can the recipe be used?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#enabled Online documentation}
     */
    enabled: boolean
    /**
     * Category of the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#category Online documentation}
     */
    readonly category: string
    /**
     * Additional categories of this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#additional_categories Online documentation}
     */
    readonly additional_categories: string[]
    /**
     * The ingredients to this recipe.
     * @example
     * -- The ingredients of "advanced-oil-processing" would look like this:
     * {{type="fluid", name="crude-oil", amount=100}, {type="fluid", name="water", amount=50}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#ingredients Online documentation}
     */
    readonly ingredients: Ingredient[]
    /**
     * The results/products of this recipe.
     * @example
     * -- The products of "advanced-oil-processing" would look like this:
     * {{type="fluid", name="heavy-oil", amount=25}, {type="fluid", name="light-oil", amount=45}, {type="fluid", name="petroleum-gas", amount=55}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#products Online documentation}
     */
    readonly products: Product[]
    /**
     * Is the recipe hidden? Hidden recipes don't show up in the crafting menu.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#hidden Online documentation}
     */
    readonly hidden: boolean
    /**
     * Is the recipe hidden from flow statistics?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#hidden_from_flow_stats Online documentation}
     */
    hidden_from_flow_stats: boolean
    /**
     * Energy required to execute this recipe. This directly affects the crafting time: Recipe's energy is exactly its crafting time in seconds, when crafted in an assembling machine with crafting speed exactly equal to one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#energy Online documentation}
     */
    readonly energy: double
    /**
     * The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#order Online documentation}
     */
    readonly order: string
    /**
     * Group of this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#group Online documentation}
     */
    readonly group: LuaGroup
    /**
     * Subgroup of this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#subgroup Online documentation}
     */
    readonly subgroup: LuaGroup
    /**
     * The force that owns this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * The productivity bonus for this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipe.html#productivity_bonus Online documentation}
     */
    productivity_bonus: float
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRecipe"
  }
  /**
   * Prototype of a recipe category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipeCategoryPrototype.html Online documentation}
   */
  export interface LuaRecipeCategoryPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRecipeCategoryPrototype"
  }
  /**
   * A crafting recipe prototype.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html Online documentation}
   * @noSelf
   */
  export interface LuaRecipePrototype extends LuaPrototypeBase {
    /**
     * Checks if recipe has given category
     * @returns `true` if recipe has this category.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#has_category Online documentation}
     */
    has_category(category: RecipeCategoryID): boolean
    /**
     * If this recipe prototype is enabled by default (enabled at the beginning of a game).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#enabled Online documentation}
     */
    readonly enabled: boolean
    /**
     * Category of the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#category Online documentation}
     */
    readonly category: string
    /**
     * Additional categories of the recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#additional_categories Online documentation}
     */
    readonly additional_categories: string[]
    /**
     * The ingredients to this recipe.
     * @example
     * -- The ingredients of "advanced-oil-processing" would look like this
     * {{type="fluid", name="crude-oil", amount=100}, {type="fluid", name="water", amount=50}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#ingredients Online documentation}
     */
    readonly ingredients: Ingredient[]
    /**
     * The results/products of this recipe.
     * @example
     * -- The products of "advanced-oil-processing" would look like this:
     * {{type="fluid", name="heavy-oil", amount=25}, {type="fluid", name="light-oil", amount=45}, {type="fluid", name="petroleum-gas", amount=55}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#products Online documentation}
     */
    readonly products: Product[]
    /**
     * The main product of this recipe, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#main_product Online documentation}
     */
    readonly main_product?: Product
    /**
     * Is the recipe hidden from flow statistics (item/fluid production statistics)?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#hidden_from_flow_stats Online documentation}
     */
    readonly hidden_from_flow_stats: boolean
    /**
     * Is the recipe hidden from player crafting? The recipe will still show up for selection in machines.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#hidden_from_player_crafting Online documentation}
     */
    readonly hidden_from_player_crafting: boolean
    /**
     * Should this recipe always show "Made in" in the tooltip?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#always_show_made_in Online documentation}
     */
    readonly always_show_made_in: boolean
    /**
     * Energy required to execute this recipe. This directly affects the crafting time: Recipe's energy is exactly its crafting time in seconds, when crafted in an assembling machine with crafting speed exactly equal to one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#energy Online documentation}
     */
    readonly energy: double
    /**
     * The multiplier used when this recipe is copied from an assembling machine to a requester chest. For each item in the recipe the item count * this value is set in the requester chest.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#request_paste_multiplier Online documentation}
     */
    readonly request_paste_multiplier: uint32
    /**
     * Used to determine how many extra items are put into an assembling machine before it's considered "full enough".
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#overload_multiplier Online documentation}
     */
    readonly overload_multiplier: uint32
    /**
     * The maximal productivity bonus that can be achieved with this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#maximum_productivity Online documentation}
     */
    readonly maximum_productivity: double
    /**
     * If the recipe is allowed to have the extra inserter overload bonus applied (4 * stack inserter stack size).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allow_inserter_overload Online documentation}
     */
    readonly allow_inserter_overload: boolean
    /**
     * If this recipe is enabled for the purpose of intermediate hand-crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allow_as_intermediate Online documentation}
     */
    readonly allow_as_intermediate: boolean
    /**
     * If this recipe is allowed to use intermediate recipes when hand-crafting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allow_intermediates Online documentation}
     */
    readonly allow_intermediates: boolean
    /**
     * If the amount is shown in the recipe tooltip title when the recipe produces more than 1 product.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#show_amount_in_title Online documentation}
     */
    readonly show_amount_in_title: boolean
    /**
     * If the products are always shown in the recipe tooltip.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#always_show_products Online documentation}
     */
    readonly always_show_products: boolean
    /**
     * The emissions multiplier for this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#emissions_multiplier Online documentation}
     */
    readonly emissions_multiplier: double
    /**
     * Is this recipe allowed to be broken down for the recipe tooltip "Total raw" calculations?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allow_decomposition Online documentation}
     */
    readonly allow_decomposition: boolean
    /**
     * Is this recipe unlocks the result item(s) so they're shown in filter-select GUIs.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#unlock_results Online documentation}
     */
    readonly unlock_results: boolean
    /**
     * Is this recipe is marked to be hidden from the signal GUI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#hide_from_signal_gui Online documentation}
     */
    readonly hide_from_signal_gui: boolean
    readonly hide_from_flow_stats: boolean
    readonly hide_from_player_crafting: boolean
    readonly hide_from_bonus_gui: boolean
    /**
     * The 'trash' items that this recipe might produce as a result of spoiling.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#trash Online documentation}
     */
    readonly trash?: LuaItemPrototype[]
    readonly preserve_products_in_machine_output: boolean
    readonly is_parameter: boolean
    /**
     * The allowed module effects for this recipe, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allowed_effects Online documentation}
     */
    readonly allowed_effects?: Record<string, boolean>
    /**
     * The allowed module categories for this recipe, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#allowed_module_categories Online documentation}
     */
    readonly allowed_module_categories?: Record<string, true>
    readonly effect_limitation_messages?: LocalisedString[]
    /**
     * The surface conditions required to craft this recipe.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#surface_conditions Online documentation}
     */
    readonly surface_conditions?: SurfaceCondition[]
    /**
     * Additional technologies listed under "Unlocked by" on a recipe's Factoriopedia page.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#alternative_unlock_methods Online documentation}
     */
    readonly alternative_unlock_methods?: LuaTechnologyPrototype[]
    readonly crafting_machine_tints: Color[]
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecipePrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaRecipePrototype
    readonly result_is_always_fresh: boolean
    readonly reset_freshness_on_craft: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRecipePrototype"
  }
  /**
   * A reference to a record in the blueprint library. Records in the "my blueprints" shelf are read-only, but records in the "game blueprints" shelf are read/write.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html Online documentation}
   * @noSelf
   */
  export interface LuaRecord {
    /**
     * Exports this record to a string.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#export_record Online documentation}
     */
    export_record(): string
    /**
     * Clears this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_blueprint Online documentation}
     */
    clear_blueprint(): void
    /**
     * Is this blueprint setup? I.e. is it a non-empty blueprint?
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_blueprint_setup Online documentation}
     */
    is_blueprint_setup(): boolean
    /**
     * Build this blueprint at the given location.
     *
     * Built entities can be come invalid between the building of the blueprint and the function returning if by_player or raise_built is used and one of those events invalidates the entity.
     *
     * _Can only be used if this is BlueprintRecord_
     * @returns Array of created ghosts
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#build_blueprint Online documentation}
     */
    build_blueprint(params: {
      /**
       * Surface to build on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the building
       */
      readonly force: ForceID
      /**
       * The position to build at
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The direction to use when building
       */
      readonly direction?: defines.direction
      /**
       * If `normal`, blueprint will not be built if any one thing can't be built. If `forced`, anything that can be built is built and obstructing nature entities will be deconstructed. If `superforced`, all obstructions will be deconstructed and the blueprint will be built.
       */
      readonly build_mode?: defines.build_mode
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any. If provided {@link defines.events.on_built_entity} will also be fired on successful entity creation.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If true; {@link defines.events.script_raised_built} will be fired on successful entity creation. Note: this is ignored if by_player is provided.
       */
      readonly raise_built?: boolean
    }): LuaEntity[]
    /**
     * Sets up this blueprint using the found blueprintable entities/tiles on the surface.
     *
     * _Can only be used if this is BlueprintRecord_
     * @returns The blueprint entity index to source entity mapping.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#create_blueprint Online documentation}
     */
    create_blueprint(params: {
      /**
       * Surface to create from
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the creation
       */
      readonly force: ForceID
      /**
       * The bounding box
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * When true, blueprintable tiles are always included in the blueprint. When false they're only included if no entities exist in the setup area. Defaults to false.
       */
      readonly always_include_tiles?: boolean
      /**
       * When true, entities are included in the blueprint. Defaults to true.
       */
      readonly include_entities?: boolean
      /**
       * When true, modules are included in the blueprint. Defaults to true.
       */
      readonly include_modules?: boolean
      /**
       * When true, station names are included in the blueprint. Defaults to false.
       */
      readonly include_station_names?: boolean
      /**
       * When true, trains are included in the blueprint. Defaults to false.
       */
      readonly include_trains?: boolean
      /**
       * When true, train fuel is included in the blueprint, Defaults to true.
       */
      readonly include_fuel?: boolean
    }): Record<uint32, LuaEntity>
    /**
     * Gets the tags for the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_tags Online documentation}
     */
    get_blueprint_entity_tags(index: uint32): Tags
    /**
     * Sets the tags on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entity_tags Online documentation}
     */
    set_blueprint_entity_tags(index: uint32, tags: Tags): void
    /**
     * Gets the given tag on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index.
     * @param tag The tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_tag Online documentation}
     */
    get_blueprint_entity_tag(index: uint32, tag: string): AnyBasic | nil
    /**
     * Sets the given tag on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index.
     * @param tag The tag to set.
     * @param value The tag value to set or `nil` to clear the tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entity_tag Online documentation}
     */
    set_blueprint_entity_tag(index: uint32, tag: string, value: AnyBasic | nil): void
    /**
     * The entities in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entities Online documentation}
     */
    get_blueprint_entities(): BlueprintEntity[] | nil
    /**
     * Set new entities to be a part of this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param entities The new blueprint entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entities Online documentation}
     */
    set_blueprint_entities(entities: readonly BlueprintEntityWrite[]): void
    /**
     * A list of the tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_tiles Online documentation}
     */
    get_blueprint_tiles(): Tile[] | nil
    /**
     * Set specific tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param tiles Tiles to be a part of the blueprint.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_tiles Online documentation}
     */
    set_blueprint_tiles(tiles: readonly TileWrite[]): void
    /**
     * Gets the number of entities in this blueprint blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_count Online documentation}
     */
    get_blueprint_entity_count(): uint32
    /**
     * The active index of this BlueprintBookRecord. For records in "my blueprints", the result will be the same regardless of the player, but records in "game blueprints" may have different active indices per player.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_active_index Online documentation}
     */
    get_active_index(player: PlayerIdentification): uint32
    /**
     * Gets the currently selected record of the book for the given player.
     *
     * Note: this will return a record even if the book is in a preview state.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_selected_record Online documentation}
     */
    get_selected_record(player: PlayerIdentification): LuaRecord | nil
    /**
     * Gets the entity filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_entity_filter Online documentation}
     */
    get_entity_filter(index: uint32): ItemFilter | nil
    /**
     * Sets the entity filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (ie. was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_entity_filter Online documentation}
     */
    set_entity_filter(index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Gets the tile filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_tile_filter Online documentation}
     */
    get_tile_filter(index: uint32): string | nil
    /**
     * Sets the tile filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @param filter Setting to nil erases the filter.
     * @returns Whether the new filter was successfully set (ie. was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_tile_filter Online documentation}
     */
    set_tile_filter(index: uint32, filter: string | LuaTilePrototype | LuaTile | nil): boolean
    /**
     * Deconstruct the given area with this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#deconstruct_area Online documentation}
     */
    deconstruct_area(params: {
      /**
       * Surface to deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Cancel deconstruct the given area with this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#cancel_deconstruct_area Online documentation}
     */
    cancel_deconstruct_area(params: {
      /**
       * Surface to cancel deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for canceling deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the cancel deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Clears all settings/filters on this deconstruction planner, resetting it to default values.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_deconstruction_data Online documentation}
     */
    clear_deconstruction_data(): void
    /**
     * Clears all settings/filters on this upgrade planner, resetting it to default values.
     *
     * _Can only be used if this is UpgradeRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_upgrade_data Online documentation}
     */
    clear_upgrade_data(): void
    /**
     * Gets the filter at the given index for this upgrade item. Note that sources (`"from"` type) that are undefined will read as `{type = "item"}`, while destinations (`"to"` type) that are undefined will read as `nil`.
     *
     * In contrast to {@link LuaRecord#set_mapper LuaRecord::set_mapper}, indices past the upgrade item's current size are considered to be out of bounds.
     *
     * _Can only be used if this is UpgradeRecord_
     * @param index The index of the mapper to read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_mapper Online documentation}
     */
    get_mapper(index: uint32, type: "from" | "to"): UpgradeMapperSource | UpgradeMapperDestination | nil
    /**
     * Sets the module filter at the given index for this upgrade item.
     *
     * In contrast to {@link LuaRecord#get_mapper LuaRecord::get_mapper}, indices past the upgrade item's current size are valid and expand the list of mappings accordingly, if within reasonable bounds.
     *
     * _Can only be used if this is UpgradeRecord_
     * @param index The index of the mapper to set.
     * @param mapper The mapper to set. Set `nil` to clear the mapper.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_mapper Online documentation}
     */
    set_mapper(
      index: uint32,
      type: "from" | "to",
      mapper: UpgradeMapperSourceWrite | UpgradeMapperDestination | nil,
    ): void
    /**
     * Is this record valid for writing? A record is invalid for write if it is a BlueprintRecord preview or if it is in the "My blueprints" shelf.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#valid_for_write Online documentation}
     */
    readonly valid_for_write: boolean
    /**
     * The type of this blueprint record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#type Online documentation}
     */
    readonly type: "blueprint" | "blueprint-book" | "deconstruction-planner" | "upgrade-planner"
    /**
     * The preview icons for this record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#preview_icons Online documentation}
     */
    get preview_icons(): BlueprintSignalIcon[]
    set preview_icons(value: readonly BlueprintSignalIconWrite[])
    /**
     * Checks if this record is in a preview state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_preview Online documentation}
     */
    readonly is_preview: boolean
    /**
     * Is this blueprint record a preview? A preview record must be synced by the player before entity and tile data can be read. This property is deprecated in favor of {@link LuaRecord#is_preview LuaRecord::is_preview} and should not be used.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_blueprint_preview Online documentation}
     */
    readonly is_blueprint_preview: boolean
    /**
     * The snapping grid size in this blueprint. `nil` if snapping is not enabled.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_snap_to_grid Online documentation}
     */
    get blueprint_snap_to_grid(): TilePosition | nil
    set blueprint_snap_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * The offset from the absolute grid. `nil` if absolute snapping is not enabled.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_position_relative_to_grid Online documentation}
     */
    get blueprint_position_relative_to_grid(): TilePosition | nil
    set blueprint_position_relative_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * If absolute snapping is enabled on this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_absolute_snapping Online documentation}
     */
    blueprint_absolute_snapping: boolean
    /**
     * The description for this blueprint or blueprint book.
     *
     * _Can only be used if this is BlueprintRecord or BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * List of raw materials required to build this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#cost_to_build Online documentation}
     */
    readonly cost_to_build: ItemWithQualityCounts
    /**
     * The default icons for a blueprint blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#default_icons Online documentation}
     */
    readonly default_icons: BlueprintSignalIcon[]
    /**
     * The contents of this BlueprintBookRecord. This is sparse array - it may have gaps, so using `#` will not be reliable. Use {@link LuaRecord#contents_size LuaRecord::contents_size} or `pairs()` to iterate this table.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#contents Online documentation}
     */
    readonly contents: Record<ItemStackIndex, LuaRecord>
    /**
     * The highest populated index in the contents of this BlueprintBookRecord.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#contents_size Online documentation}
     */
    readonly contents_size: ItemStackIndex
    /**
     * The entity filters for this deconstruction planner. The attribute is a sparse array with the keys representing the index of the filter. All prototypes in this array must not have the `"not-deconstructable"` flag set and are either a `cliff` or marked as `minable`.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filters Online documentation}
     */
    get entity_filters(): ItemFilter[]
    set entity_filters(value: readonly ItemFilterWrite[])
    /**
     * The tile filters for this deconstruction planner. The attribute is a sparse array with the keys representing the index of the filter. Reading filters always returns an array of strings which are the tile prototype names.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filters Online documentation}
     */
    get tile_filters(): LuaTilePrototype[]
    set tile_filters(value: readonly TileID[])
    /**
     * The blacklist/whitelist entity filter mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filter_mode Online documentation}
     */
    entity_filter_mode: defines.deconstruction_item.entity_filter_mode
    /**
     * The blacklist/whitelist tile filter mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filter_mode Online documentation}
     */
    tile_filter_mode: defines.deconstruction_item.tile_filter_mode
    /**
     * The tile selection mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_selection_mode Online documentation}
     */
    tile_selection_mode: defines.deconstruction_item.tile_selection_mode
    /**
     * If this deconstruction planner, is set to allow trees and rocks only.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#trees_and_rocks_only Online documentation}
     */
    trees_and_rocks_only: boolean
    /**
     * The number of entity filters this deconstruction planner supports.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filter_count Online documentation}
     */
    readonly entity_filter_count: uint32
    /**
     * The number of tile filters this deconstruction planner supports.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filter_count Online documentation}
     */
    readonly tile_filter_count: uint32
    /**
     * The current count of mappers in the upgrade item.
     *
     * _Can only be used if this is UpgradeRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#mapper_count Online documentation}
     */
    readonly mapper_count: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRecord"
  }
  /**
   * @noSelf
   */
  export interface BaseRecord {
    /**
     * Exports this record to a string.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#export_record Online documentation}
     */
    export_record(): string
    /**
     * Is this record valid for writing? A record is invalid for write if it is a BlueprintRecord preview or if it is in the "My blueprints" shelf.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#valid_for_write Online documentation}
     */
    readonly valid_for_write: boolean
    /**
     * The type of this blueprint record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#type Online documentation}
     */
    readonly type: "blueprint" | "blueprint-book" | "deconstruction-planner" | "upgrade-planner"
    /**
     * The preview icons for this record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#preview_icons Online documentation}
     */
    get preview_icons(): BlueprintSignalIcon[]
    set preview_icons(value: readonly BlueprintSignalIconWrite[])
    /**
     * Checks if this record is in a preview state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_preview Online documentation}
     */
    readonly is_preview: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRecord"
  }
  /**
   * @noSelf
   */
  export interface BlueprintRecord extends BaseRecord {
    /**
     * Clears this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_blueprint Online documentation}
     */
    clear_blueprint(): void
    /**
     * Is this blueprint setup? I.e. is it a non-empty blueprint?
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_blueprint_setup Online documentation}
     */
    is_blueprint_setup(): boolean
    /**
     * Build this blueprint at the given location.
     *
     * Built entities can be come invalid between the building of the blueprint and the function returning if by_player or raise_built is used and one of those events invalidates the entity.
     *
     * _Can only be used if this is BlueprintRecord_
     * @returns Array of created ghosts
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#build_blueprint Online documentation}
     */
    build_blueprint(params: {
      /**
       * Surface to build on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the building
       */
      readonly force: ForceID
      /**
       * The position to build at
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The direction to use when building
       */
      readonly direction?: defines.direction
      /**
       * If `normal`, blueprint will not be built if any one thing can't be built. If `forced`, anything that can be built is built and obstructing nature entities will be deconstructed. If `superforced`, all obstructions will be deconstructed and the blueprint will be built.
       */
      readonly build_mode?: defines.build_mode
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any. If provided {@link defines.events.on_built_entity} will also be fired on successful entity creation.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If true; {@link defines.events.script_raised_built} will be fired on successful entity creation. Note: this is ignored if by_player is provided.
       */
      readonly raise_built?: boolean
    }): LuaEntity[]
    /**
     * Sets up this blueprint using the found blueprintable entities/tiles on the surface.
     *
     * _Can only be used if this is BlueprintRecord_
     * @returns The blueprint entity index to source entity mapping.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#create_blueprint Online documentation}
     */
    create_blueprint(params: {
      /**
       * Surface to create from
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the creation
       */
      readonly force: ForceID
      /**
       * The bounding box
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * When true, blueprintable tiles are always included in the blueprint. When false they're only included if no entities exist in the setup area. Defaults to false.
       */
      readonly always_include_tiles?: boolean
      /**
       * When true, entities are included in the blueprint. Defaults to true.
       */
      readonly include_entities?: boolean
      /**
       * When true, modules are included in the blueprint. Defaults to true.
       */
      readonly include_modules?: boolean
      /**
       * When true, station names are included in the blueprint. Defaults to false.
       */
      readonly include_station_names?: boolean
      /**
       * When true, trains are included in the blueprint. Defaults to false.
       */
      readonly include_trains?: boolean
      /**
       * When true, train fuel is included in the blueprint, Defaults to true.
       */
      readonly include_fuel?: boolean
    }): Record<uint32, LuaEntity>
    /**
     * Gets the tags for the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_tags Online documentation}
     */
    get_blueprint_entity_tags(index: uint32): Tags
    /**
     * Sets the tags on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entity_tags Online documentation}
     */
    set_blueprint_entity_tags(index: uint32, tags: Tags): void
    /**
     * Gets the given tag on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index.
     * @param tag The tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_tag Online documentation}
     */
    get_blueprint_entity_tag(index: uint32, tag: string): AnyBasic | nil
    /**
     * Sets the given tag on the given blueprint entity index in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param index The entity index.
     * @param tag The tag to set.
     * @param value The tag value to set or `nil` to clear the tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entity_tag Online documentation}
     */
    set_blueprint_entity_tag(index: uint32, tag: string, value: AnyBasic | nil): void
    /**
     * The entities in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entities Online documentation}
     */
    get_blueprint_entities(): BlueprintEntity[] | nil
    /**
     * Set new entities to be a part of this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param entities The new blueprint entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_entities Online documentation}
     */
    set_blueprint_entities(entities: readonly BlueprintEntityWrite[]): void
    /**
     * A list of the tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_tiles Online documentation}
     */
    get_blueprint_tiles(): Tile[] | nil
    /**
     * Set specific tiles in this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @param tiles Tiles to be a part of the blueprint.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_blueprint_tiles Online documentation}
     */
    set_blueprint_tiles(tiles: readonly TileWrite[]): void
    /**
     * Gets the number of entities in this blueprint blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_blueprint_entity_count Online documentation}
     */
    get_blueprint_entity_count(): uint32
    /**
     * Is this blueprint record a preview? A preview record must be synced by the player before entity and tile data can be read. This property is deprecated in favor of {@link LuaRecord#is_preview LuaRecord::is_preview} and should not be used.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#is_blueprint_preview Online documentation}
     */
    readonly is_blueprint_preview: boolean
    /**
     * The snapping grid size in this blueprint. `nil` if snapping is not enabled.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_snap_to_grid Online documentation}
     */
    get blueprint_snap_to_grid(): TilePosition | nil
    set blueprint_snap_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * The offset from the absolute grid. `nil` if absolute snapping is not enabled.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_position_relative_to_grid Online documentation}
     */
    get blueprint_position_relative_to_grid(): TilePosition | nil
    set blueprint_position_relative_to_grid(value: TilePosition | TilePositionArray | nil)
    /**
     * If absolute snapping is enabled on this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_absolute_snapping Online documentation}
     */
    blueprint_absolute_snapping: boolean
    /**
     * The description for this blueprint or blueprint book.
     *
     * _Can only be used if this is BlueprintRecord or BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * List of raw materials required to build this blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#cost_to_build Online documentation}
     */
    readonly cost_to_build: ItemWithQualityCounts
    /**
     * The default icons for a blueprint blueprint.
     *
     * _Can only be used if this is BlueprintRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#default_icons Online documentation}
     */
    readonly default_icons: BlueprintSignalIcon[]
  }
  /**
   * @noSelf
   */
  export interface BlueprintBookRecord extends BaseRecord {
    /**
     * The active index of this BlueprintBookRecord. For records in "my blueprints", the result will be the same regardless of the player, but records in "game blueprints" may have different active indices per player.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_active_index Online documentation}
     */
    get_active_index(player: PlayerIdentification): uint32
    /**
     * Gets the currently selected record of the book for the given player.
     *
     * Note: this will return a record even if the book is in a preview state.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_selected_record Online documentation}
     */
    get_selected_record(player: PlayerIdentification): LuaRecord | nil
    /**
     * The description for this blueprint or blueprint book.
     *
     * _Can only be used if this is BlueprintRecord or BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#blueprint_description Online documentation}
     */
    blueprint_description: string
    /**
     * The contents of this BlueprintBookRecord. This is sparse array - it may have gaps, so using `#` will not be reliable. Use {@link LuaRecord#contents_size LuaRecord::contents_size} or `pairs()` to iterate this table.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#contents Online documentation}
     */
    readonly contents: Record<ItemStackIndex, LuaRecord>
    /**
     * The highest populated index in the contents of this BlueprintBookRecord.
     *
     * _Can only be used if this is BlueprintBookRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#contents_size Online documentation}
     */
    readonly contents_size: ItemStackIndex
  }
  /**
   * @noSelf
   */
  export interface DeconstructionRecord extends BaseRecord {
    /**
     * Gets the entity filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_entity_filter Online documentation}
     */
    get_entity_filter(index: uint32): ItemFilter | nil
    /**
     * Sets the entity filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @param filter Writing `nil` removes the filter.
     * @returns Whether the new filter was successfully set (ie. was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_entity_filter Online documentation}
     */
    set_entity_filter(index: uint32, filter: ItemFilterWrite | nil): boolean
    /**
     * Gets the tile filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_tile_filter Online documentation}
     */
    get_tile_filter(index: uint32): string | nil
    /**
     * Sets the tile filter at the given index for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @param filter Setting to nil erases the filter.
     * @returns Whether the new filter was successfully set (ie. was valid).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_tile_filter Online documentation}
     */
    set_tile_filter(index: uint32, filter: string | LuaTilePrototype | LuaTile | nil): boolean
    /**
     * Deconstruct the given area with this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#deconstruct_area Online documentation}
     */
    deconstruct_area(params: {
      /**
       * Surface to deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for the deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Cancel deconstruct the given area with this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#cancel_deconstruct_area Online documentation}
     */
    cancel_deconstruct_area(params: {
      /**
       * Surface to cancel deconstruct on
       */
      readonly surface: SurfaceIdentification
      /**
       * Force to use for canceling deconstruction
       */
      readonly force: ForceID
      /**
       * The area to deconstruct
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The player to use if any.
       */
      readonly by_player?: PlayerIdentification
      /**
       * If the cancel deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Clears all settings/filters on this deconstruction planner, resetting it to default values.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_deconstruction_data Online documentation}
     */
    clear_deconstruction_data(): void
    /**
     * The entity filters for this deconstruction planner. The attribute is a sparse array with the keys representing the index of the filter. All prototypes in this array must not have the `"not-deconstructable"` flag set and are either a `cliff` or marked as `minable`.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filters Online documentation}
     */
    get entity_filters(): ItemFilter[]
    set entity_filters(value: readonly ItemFilterWrite[])
    /**
     * The tile filters for this deconstruction planner. The attribute is a sparse array with the keys representing the index of the filter. Reading filters always returns an array of strings which are the tile prototype names.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filters Online documentation}
     */
    get tile_filters(): LuaTilePrototype[]
    set tile_filters(value: readonly TileID[])
    /**
     * The blacklist/whitelist entity filter mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filter_mode Online documentation}
     */
    entity_filter_mode: defines.deconstruction_item.entity_filter_mode
    /**
     * The blacklist/whitelist tile filter mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filter_mode Online documentation}
     */
    tile_filter_mode: defines.deconstruction_item.tile_filter_mode
    /**
     * The tile selection mode for this deconstruction planner.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_selection_mode Online documentation}
     */
    tile_selection_mode: defines.deconstruction_item.tile_selection_mode
    /**
     * If this deconstruction planner, is set to allow trees and rocks only.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#trees_and_rocks_only Online documentation}
     */
    trees_and_rocks_only: boolean
    /**
     * The number of entity filters this deconstruction planner supports.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#entity_filter_count Online documentation}
     */
    readonly entity_filter_count: uint32
    /**
     * The number of tile filters this deconstruction planner supports.
     *
     * _Can only be used if this is DeconstructionRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#tile_filter_count Online documentation}
     */
    readonly tile_filter_count: uint32
  }
  /**
   * @noSelf
   */
  export interface UpgradeRecord extends BaseRecord {
    /**
     * Clears all settings/filters on this upgrade planner, resetting it to default values.
     *
     * _Can only be used if this is UpgradeRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#clear_upgrade_data Online documentation}
     */
    clear_upgrade_data(): void
    /**
     * Gets the filter at the given index for this upgrade item. Note that sources (`"from"` type) that are undefined will read as `{type = "item"}`, while destinations (`"to"` type) that are undefined will read as `nil`.
     *
     * In contrast to {@link LuaRecord#set_mapper LuaRecord::set_mapper}, indices past the upgrade item's current size are considered to be out of bounds.
     *
     * _Can only be used if this is UpgradeRecord_
     * @param index The index of the mapper to read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#get_mapper Online documentation}
     */
    get_mapper(index: uint32, type: "from" | "to"): UpgradeMapperSource | UpgradeMapperDestination | nil
    /**
     * Sets the module filter at the given index for this upgrade item.
     *
     * In contrast to {@link LuaRecord#get_mapper LuaRecord::get_mapper}, indices past the upgrade item's current size are valid and expand the list of mappings accordingly, if within reasonable bounds.
     *
     * _Can only be used if this is UpgradeRecord_
     * @param index The index of the mapper to set.
     * @param mapper The mapper to set. Set `nil` to clear the mapper.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#set_mapper Online documentation}
     */
    set_mapper(
      index: uint32,
      type: "from" | "to",
      mapper: UpgradeMapperSourceWrite | UpgradeMapperDestination | nil,
    ): void
    /**
     * The current count of mappers in the upgrade item.
     *
     * _Can only be used if this is UpgradeRecord_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRecord.html#mapper_count Online documentation}
     */
    readonly mapper_count: uint32
  }
  /**
   * Registry of interfaces between scripts. An interface is simply a dictionary mapping names to functions. A script or mod can then register an interface with {@link LuaRemote}, after that any script can call the registered functions, provided it knows the interface name and the desired function name. An instance of LuaRemote is available through the global object named `remote`.
   * @example
   * -- Will register a remote interface containing two functions. Later, it will call these functions through `remote`.
   * remote.add_interface("human interactor",
   *   {
   *     hello = function() game.player.print("Hi!") end,
   *     bye = function(name) game.player.print("Bye " .. name) end
   *   })
   * -- Some time later, possibly in a different mod...
   * remote.call("human interactor", "hello")
   * remote.call("human interactor", "bye", "dear reader")
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRemote.html Online documentation}
   * @noSelf
   */
  export interface LuaRemote {
    /**
     * Add a remote interface.
     * @param name Name of the interface. If the name matches any existing interface, an error is thrown.
     * @param functions List of functions that are members of the new interface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRemote.html#add_interface Online documentation}
     */
    add_interface(name: string, functions: Record<string, (...args: any) => void>): void
    /**
     * Removes an interface with the given name.
     * @param name Name of the interface.
     * @returns Whether the interface was removed. `false` if the interface didn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRemote.html#remove_interface Online documentation}
     */
    remove_interface(name: string): boolean
    /**
     * Call a function of an interface.
     *
     * Providing an unknown interface or function name will result in a script error.
     * @param _interface Interface to look up `function` in.
     * @param _function Function name that belongs to the `interface`.
     * @param args Arguments to pass to the called function. Note that any arguments passed through the interface are a copy of the original, not a reference. Metatables are not retained, while references to LuaObjects stay intact. Functions cannot be passed through the interface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRemote.html#call Online documentation}
     */
    call<I extends Record<K, (...args: any) => any>, K extends keyof I>(
      _interface: string,
      _function: K,
      ...args: Parameters<I[K]>
    ): ReturnType<I[K]>
    call<T extends (...args: any) => any>(_interface: string, _function: string, ...args: Parameters<T>): ReturnType<T>
    call(_interface: string, _function: string, ...args: readonly Any[]): Any | nil
    /**
     * List of all registered interfaces. For each interface name, `remote.interfaces[name]` is a dictionary mapping the interface's registered functions to `true`.
     * @example
     * -- Assuming the "human interactor" interface is registered as above
     * game.player.print(tostring(remote.interfaces["human interactor"]["hello"]))        -- prints true
     * game.player.print(tostring(remote.interfaces["human interactor"]["nonexistent"]))  -- prints nil
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRemote.html#interfaces Online documentation}
     */
    readonly interfaces: Record<string, Record<string, true>>
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRemote"
  }
  /**
   * Reference to a single {@link LuaRendering} object.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html Online documentation}
   * @noSelf
   */
  export interface LuaRenderObject {
    /**
     * Destroys this object. Does not error when the object is invalid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Reorder this object so that it is drawn in front of the already existing objects.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#bring_to_front Online documentation}
     */
    bring_to_front(): void
    /**
     * Reorder this object so that it is drawn in the back of the already existing objects.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#move_to_back Online documentation}
     */
    move_to_back(): void
    /**
     * Set the length of the dashes and the length of the gaps in this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#set_dashes Online documentation}
     */
    set_dashes(dash_length: double, gap_length: double): void
    /**
     * Set the corners of the rectangle with this id.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#set_corners Online documentation}
     */
    set_corners(left_top: ScriptRenderTargetWrite, right_bottom: ScriptRenderTargetWrite): void
    /**
     * Unique identifier of this render object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#id Online documentation}
     */
    readonly id: uint64
    /**
     * Type of this object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#type Online documentation}
     */
    readonly type: "text" | "line" | "circle" | "rectangle" | "arc" | "polygon" | "sprite" | "light" | "animation"
    /**
     * Surface this object is rendered on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Time to live of this object. This will be 0 if the object does not expire.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#time_to_live Online documentation}
     */
    time_to_live: uint32
    /**
     * Blink interval of this object based on the internal "update tick". When zero, blinking is disabled. For other values, the object will be visible the given number of ticks and then invisible for the same duration. Objects with the same blink interval will blink synchronously. Blink interval of game alerts is 30.
     *
     * For example, when the interval is 60, the object is visible for 60 ticks and hidden for the next 60.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#blink_interval Online documentation}
     */
    blink_interval: uint16
    /**
     * Forces for which this object is rendered or `nil` if visible to all forces. Writing `nil` or empty array will make this object visible to all forces.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#forces Online documentation}
     */
    get forces(): LuaForce[] | nil
    set forces(value: ForceSet | nil)
    /**
     * Players for which this object is visible or `nil` if visible to all players. Writing `nil` or empty array will make this object visible to all players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#players Online documentation}
     */
    get players(): LuaPlayer[] | nil
    set players(value: LuaPlayer[] | readonly PlayerIdentification[] | nil)
    /**
     * If this object is rendered to anyone at all.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#visible Online documentation}
     */
    visible: boolean
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * If this object is only rendered in alt-mode.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#only_in_alt_mode Online documentation}
     */
    only_in_alt_mode: boolean
    /**
     * Whether the object is rendered in game world or on the chart (map view).
     *
     * When it is changed, the object is pushed to front of its new group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#render_mode Online documentation}
     */
    render_mode: ScriptRenderMode
    /**
     * If this object uses the target orientation.
     *
     * _Can only be used if this is Sprite, Polygon or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_target_orientation Online documentation}
     */
    use_target_orientation: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Width of the object. Value is in pixels (32 per tile).
     *
     * _Can only be used if this is Line, Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#width Online documentation}
     */
    width: float
    /**
     * Where this line is drawn from.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#from Online documentation}
     */
    get from(): ScriptRenderTarget
    set from(value: ScriptRenderTargetWrite)
    /**
     * Where this line is drawn to.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#to Online documentation}
     */
    get to(): ScriptRenderTarget
    set to(value: ScriptRenderTargetWrite)
    /**
     * Dash length of this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#dash_length Online documentation}
     */
    dash_length: double
    /**
     * Length of the gaps in this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#gap_length Online documentation}
     */
    gap_length: double
    /**
     * Starting offset to apply to dashes of this line. Cannot be greater than dash_length + gap_length.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#dash_offset Online documentation}
     */
    dash_offset: double
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Scale of the text or light.
     *
     * _Can only be used if this is Text or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#scale Online documentation}
     */
    scale: double
    /**
     * Text that is displayed by this text object.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#text Online documentation}
     */
    text: LocalisedString
    /**
     * Font of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#font Online documentation}
     */
    font: string
    /**
     * Alignment of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#alignment Online documentation}
     */
    alignment: TextAlign
    /**
     * Vertical alignment of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#vertical_alignment Online documentation}
     */
    vertical_alignment: VerticalTextAlign
    /**
     * If this text scales with player zoom.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#scale_with_zoom Online documentation}
     */
    scale_with_zoom: boolean
    /**
     * If this text parses rich text tags.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_rich_text Online documentation}
     */
    use_rich_text: boolean
    /**
     * If this circle or rectangle is filled.
     *
     * _Can only be used if this is Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#filled Online documentation}
     */
    filled: boolean
    /**
     * Radius of this circle.
     *
     * _Can only be used if this is Circle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#radius Online documentation}
     */
    radius: double
    /**
     * Where top left corner of this rectangle is drawn.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#left_top Online documentation}
     */
    get left_top(): ScriptRenderTarget
    set left_top(value: ScriptRenderTargetWrite)
    /**
     * Where bottom right corner of this rectangle is drawn.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#right_bottom Online documentation}
     */
    get right_bottom(): ScriptRenderTarget
    set right_bottom(value: ScriptRenderTargetWrite)
    /**
     * Radius of the outer edge of this arc.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#max_radius Online documentation}
     */
    max_radius: double
    /**
     * Radius of the inner edge of this arc.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#min_radius Online documentation}
     */
    min_radius: double
    /**
     * Where this arc starts. Angle in radian.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#start_angle Online documentation}
     */
    start_angle: float
    /**
     * Angle of this arc. Angle in radian.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#angle Online documentation}
     */
    angle: float
    /**
     * Vertices of this polygon.
     *
     * _Can only be used if this is Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#vertices Online documentation}
     */
    get vertices(): ScriptRenderTarget[]
    set vertices(value: readonly ScriptRenderTargetWrite[])
    /**
     * Sprite of the sprite or light.
     *
     * _Can only be used if this is Sprite or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#sprite Online documentation}
     */
    sprite: SpritePath
    /**
     * Horizontal scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#x_scale Online documentation}
     */
    x_scale: double
    /**
     * Vertical scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#y_scale Online documentation}
     */
    y_scale: double
    /**
     * Render layer of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#render_layer Online documentation}
     */
    render_layer: RenderLayer
    /**
     * Target to which this object rotates so that it faces the target. Note that `orientation` is still applied to the object. Writing `nil` will clear the orientation_target. `nil` if no target.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Polygon, Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation_target Online documentation}
     */
    get orientation_target(): ScriptRenderTarget | nil
    set orientation_target(value: ScriptRenderTargetWrite | nil)
    /**
     * Offsets the center of the sprite or animation if `orientation_target` is given. This offset will rotate together with the sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#oriented_offset Online documentation}
     */
    get oriented_offset(): Vector
    set oriented_offset(value: Vector | VectorTable)
    /**
     * Intensity of this light.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#intensity Online documentation}
     */
    intensity: float
    /**
     * Minimum darkness at which this light is rendered.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#minimum_darkness Online documentation}
     */
    minimum_darkness: float
    /**
     * If this light is rendered with the same orientation as the target entity. Note that `orientation` is still applied to the sprite.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#oriented Online documentation}
     */
    oriented: boolean
    /**
     * Animation prototype name of this animation.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation Online documentation}
     */
    animation: string
    /**
     * Animation speed of this animation. Animation speed in frames per tick.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation_speed Online documentation}
     */
    animation_speed: double
    /**
     * Animation offset of this animation. Animation offset in frames.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation_offset Online documentation}
     */
    animation_offset: double
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRenderObject"
  }
  /**
   * @noSelf
   */
  export interface BaseRenderObject {
    /**
     * Destroys this object. Does not error when the object is invalid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Reorder this object so that it is drawn in front of the already existing objects.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#bring_to_front Online documentation}
     */
    bring_to_front(): void
    /**
     * Reorder this object so that it is drawn in the back of the already existing objects.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#move_to_back Online documentation}
     */
    move_to_back(): void
    /**
     * Unique identifier of this render object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#id Online documentation}
     */
    readonly id: uint64
    /**
     * Type of this object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#type Online documentation}
     */
    readonly type: "text" | "line" | "circle" | "rectangle" | "arc" | "polygon" | "sprite" | "light" | "animation"
    /**
     * Surface this object is rendered on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Time to live of this object. This will be 0 if the object does not expire.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#time_to_live Online documentation}
     */
    time_to_live: uint32
    /**
     * Blink interval of this object based on the internal "update tick". When zero, blinking is disabled. For other values, the object will be visible the given number of ticks and then invisible for the same duration. Objects with the same blink interval will blink synchronously. Blink interval of game alerts is 30.
     *
     * For example, when the interval is 60, the object is visible for 60 ticks and hidden for the next 60.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#blink_interval Online documentation}
     */
    blink_interval: uint16
    /**
     * Forces for which this object is rendered or `nil` if visible to all forces. Writing `nil` or empty array will make this object visible to all forces.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#forces Online documentation}
     */
    get forces(): LuaForce[] | nil
    set forces(value: ForceSet | nil)
    /**
     * Players for which this object is visible or `nil` if visible to all players. Writing `nil` or empty array will make this object visible to all players.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#players Online documentation}
     */
    get players(): LuaPlayer[] | nil
    set players(value: LuaPlayer[] | readonly PlayerIdentification[] | nil)
    /**
     * If this object is rendered to anyone at all.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#visible Online documentation}
     */
    visible: boolean
    /**
     * If this object is only rendered in alt-mode.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#only_in_alt_mode Online documentation}
     */
    only_in_alt_mode: boolean
    /**
     * Whether the object is rendered in game world or on the chart (map view).
     *
     * When it is changed, the object is pushed to front of its new group.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#render_mode Online documentation}
     */
    render_mode: ScriptRenderMode
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRenderObject"
  }
  /**
   * @noSelf
   */
  export interface LineRenderObject extends BaseRenderObject {
    /**
     * Set the length of the dashes and the length of the gaps in this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#set_dashes Online documentation}
     */
    set_dashes(dash_length: double, gap_length: double): void
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Width of the object. Value is in pixels (32 per tile).
     *
     * _Can only be used if this is Line, Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#width Online documentation}
     */
    width: float
    /**
     * Where this line is drawn from.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#from Online documentation}
     */
    get from(): ScriptRenderTarget
    set from(value: ScriptRenderTargetWrite)
    /**
     * Where this line is drawn to.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#to Online documentation}
     */
    get to(): ScriptRenderTarget
    set to(value: ScriptRenderTargetWrite)
    /**
     * Dash length of this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#dash_length Online documentation}
     */
    dash_length: double
    /**
     * Length of the gaps in this line.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#gap_length Online documentation}
     */
    gap_length: double
    /**
     * Starting offset to apply to dashes of this line. Cannot be greater than dash_length + gap_length.
     *
     * _Can only be used if this is Line_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#dash_offset Online documentation}
     */
    dash_offset: double
  }
  /**
   * @noSelf
   */
  export interface RectangleRenderObject extends BaseRenderObject {
    /**
     * Set the corners of the rectangle with this id.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#set_corners Online documentation}
     */
    set_corners(left_top: ScriptRenderTargetWrite, right_bottom: ScriptRenderTargetWrite): void
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Width of the object. Value is in pixels (32 per tile).
     *
     * _Can only be used if this is Line, Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#width Online documentation}
     */
    width: float
    /**
     * If this circle or rectangle is filled.
     *
     * _Can only be used if this is Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#filled Online documentation}
     */
    filled: boolean
    /**
     * Where top left corner of this rectangle is drawn.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#left_top Online documentation}
     */
    get left_top(): ScriptRenderTarget
    set left_top(value: ScriptRenderTargetWrite)
    /**
     * Where bottom right corner of this rectangle is drawn.
     *
     * _Can only be used if this is Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#right_bottom Online documentation}
     */
    get right_bottom(): ScriptRenderTarget
    set right_bottom(value: ScriptRenderTargetWrite)
  }
  export interface TextRenderObject extends BaseRenderObject {
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Scale of the text or light.
     *
     * _Can only be used if this is Text or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#scale Online documentation}
     */
    scale: double
    /**
     * Text that is displayed by this text object.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#text Online documentation}
     */
    text: LocalisedString
    /**
     * Font of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#font Online documentation}
     */
    font: string
    /**
     * Alignment of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#alignment Online documentation}
     */
    alignment: TextAlign
    /**
     * Vertical alignment of this text.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#vertical_alignment Online documentation}
     */
    vertical_alignment: VerticalTextAlign
    /**
     * If this text scales with player zoom.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#scale_with_zoom Online documentation}
     */
    scale_with_zoom: boolean
    /**
     * If this text parses rich text tags.
     *
     * _Can only be used if this is Text_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_rich_text Online documentation}
     */
    use_rich_text: boolean
  }
  export interface CircleRenderObject extends BaseRenderObject {
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Width of the object. Value is in pixels (32 per tile).
     *
     * _Can only be used if this is Line, Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#width Online documentation}
     */
    width: float
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * If this circle or rectangle is filled.
     *
     * _Can only be used if this is Circle or Rectangle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#filled Online documentation}
     */
    filled: boolean
    /**
     * Radius of this circle.
     *
     * _Can only be used if this is Circle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#radius Online documentation}
     */
    radius: double
  }
  export interface ArcRenderObject extends BaseRenderObject {
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Radius of the outer edge of this arc.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#max_radius Online documentation}
     */
    max_radius: double
    /**
     * Radius of the inner edge of this arc.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#min_radius Online documentation}
     */
    min_radius: double
    /**
     * Where this arc starts. Angle in radian.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#start_angle Online documentation}
     */
    start_angle: float
    /**
     * Angle of this arc. Angle in radian.
     *
     * _Can only be used if this is Arc_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#angle Online documentation}
     */
    angle: float
  }
  export interface PolygonRenderObject extends BaseRenderObject {
    /**
     * If this object is being drawn on the ground, under most entities and sprites.
     *
     * In {@link LuaRenderObject#render_mode render_mode} == "chart", this value is unused.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc or Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#draw_on_ground Online documentation}
     */
    draw_on_ground: boolean
    /**
     * If this object uses the target orientation.
     *
     * _Can only be used if this is Sprite, Polygon or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_target_orientation Online documentation}
     */
    use_target_orientation: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Vertices of this polygon.
     *
     * _Can only be used if this is Polygon_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#vertices Online documentation}
     */
    get vertices(): ScriptRenderTarget[]
    set vertices(value: readonly ScriptRenderTargetWrite[])
    /**
     * Target to which this object rotates so that it faces the target. Note that `orientation` is still applied to the object. Writing `nil` will clear the orientation_target. `nil` if no target.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Polygon, Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation_target Online documentation}
     */
    get orientation_target(): ScriptRenderTarget | nil
    set orientation_target(value: ScriptRenderTargetWrite | nil)
  }
  export interface SpriteRenderObject extends BaseRenderObject {
    /**
     * If this object uses the target orientation.
     *
     * _Can only be used if this is Sprite, Polygon or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_target_orientation Online documentation}
     */
    use_target_orientation: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Sprite of the sprite or light.
     *
     * _Can only be used if this is Sprite or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#sprite Online documentation}
     */
    sprite: SpritePath
    /**
     * Horizontal scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#x_scale Online documentation}
     */
    x_scale: double
    /**
     * Vertical scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#y_scale Online documentation}
     */
    y_scale: double
    /**
     * Render layer of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#render_layer Online documentation}
     */
    render_layer: RenderLayer
    /**
     * Target to which this object rotates so that it faces the target. Note that `orientation` is still applied to the object. Writing `nil` will clear the orientation_target. `nil` if no target.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Polygon, Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation_target Online documentation}
     */
    get orientation_target(): ScriptRenderTarget | nil
    set orientation_target(value: ScriptRenderTargetWrite | nil)
    /**
     * Offsets the center of the sprite or animation if `orientation_target` is given. This offset will rotate together with the sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#oriented_offset Online documentation}
     */
    get oriented_offset(): Vector
    set oriented_offset(value: Vector | VectorTable)
  }
  export interface AnimationRenderObject extends BaseRenderObject {
    /**
     * If this object uses the target orientation.
     *
     * _Can only be used if this is Sprite, Polygon or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#use_target_orientation Online documentation}
     */
    use_target_orientation: boolean
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Horizontal scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#x_scale Online documentation}
     */
    x_scale: double
    /**
     * Vertical scale of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#y_scale Online documentation}
     */
    y_scale: double
    /**
     * Render layer of this sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#render_layer Online documentation}
     */
    render_layer: RenderLayer
    /**
     * Target to which this object rotates so that it faces the target. Note that `orientation` is still applied to the object. Writing `nil` will clear the orientation_target. `nil` if no target.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Polygon, Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation_target Online documentation}
     */
    get orientation_target(): ScriptRenderTarget | nil
    set orientation_target(value: ScriptRenderTargetWrite | nil)
    /**
     * Offsets the center of the sprite or animation if `orientation_target` is given. This offset will rotate together with the sprite or animation.
     *
     * _Can only be used if this is Sprite or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#oriented_offset Online documentation}
     */
    get oriented_offset(): Vector
    set oriented_offset(value: Vector | VectorTable)
    /**
     * Animation prototype name of this animation.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation Online documentation}
     */
    animation: string
    /**
     * Animation speed of this animation. Animation speed in frames per tick.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation_speed Online documentation}
     */
    animation_speed: double
    /**
     * Animation offset of this animation. Animation offset in frames.
     *
     * _Can only be used if this is Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#animation_offset Online documentation}
     */
    animation_offset: double
  }
  export interface LightRenderObject extends BaseRenderObject {
    /**
     * Color or tint of the object.
     *
     * _Can only be used if this is Text, Line, Circle, Rectangle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Where this object is drawn.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Circle, Arc, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#target Online documentation}
     */
    get target(): ScriptRenderTarget
    set target(value: ScriptRenderTargetWrite)
    /**
     * Orientation of this object.
     *
     * Polygon vertices that are set to an entity will ignore this.
     *
     * _Can only be used if this is Text, Polygon, Sprite, Light or Animation_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#orientation Online documentation}
     */
    orientation: RealOrientation
    /**
     * Scale of the text or light.
     *
     * _Can only be used if this is Text or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#scale Online documentation}
     */
    scale: double
    /**
     * Sprite of the sprite or light.
     *
     * _Can only be used if this is Sprite or Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#sprite Online documentation}
     */
    sprite: SpritePath
    /**
     * Intensity of this light.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#intensity Online documentation}
     */
    intensity: float
    /**
     * Minimum darkness at which this light is rendered.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#minimum_darkness Online documentation}
     */
    minimum_darkness: float
    /**
     * If this light is rendered with the same orientation as the target entity. Note that `orientation` is still applied to the sprite.
     *
     * _Can only be used if this is Light_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRenderObject.html#oriented Online documentation}
     */
    oriented: boolean
  }
  /**
   * Allows rendering of geometric shapes, text and sprites in the game world through the global object named `rendering`. Each render object is identified by an id that is universally unique for the lifetime of a whole game.
   *
   * If an entity target of an object is destroyed or changes surface, then the object is also destroyed.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html Online documentation}
   * @noSelf
   */
  export interface LuaRendering {
    /**
     * Create a line.
     * @example
     * -- Draw a white and 2 pixel wide line from {0, 0} to {2, 2}.
     * rendering.draw_line{surface = game.player.surface, from = {0, 0}, to = {2, 2}, color = {1, 1, 1}, width = 2}
     * @example
     * -- Draw a red and 3 pixel wide line from {0, 0} to {0, 5}. The line has 1 tile long dashes and gaps.
     * rendering.draw_line{surface = game.player.surface, from = {0, 0}, to = {0, 5}, color = {r = 1}, width = 3, gap_length = 1, dash_length = 1}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_line Online documentation}
     */
    draw_line(params: {
      readonly color: Color | ColorArray
      /**
       * In pixels (32 per tile).
       */
      readonly width: float
      /**
       * Length of the gaps that this line has, in tiles. Default is 0.
       */
      readonly gap_length?: double
      /**
       * Length of the dashes that this line has. Used only if gap_length > 0. Default is 0.
       */
      readonly dash_length?: double
      /**
       * Starting offset to apply to dashes. Cannot be greater than dash_length + gap_length. Default is 0.
       */
      readonly dash_offset?: double
      readonly from: ScriptRenderTargetWrite
      readonly to: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create a text.
     *
     * Not all fonts support scaling.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_text Online documentation}
     */
    draw_text(params: {
      /**
       * The text to display.
       */
      readonly text: LocalisedString
      readonly surface: SurfaceIdentification
      readonly target: ScriptRenderTargetWrite
      readonly color: Color | ColorArray
      readonly scale?: double
      /**
       * Name of font to use. Defaults to the same font as flying-text.
       */
      readonly font?: string
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Rich text does not support this option. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * The orientation of the text. Default is 0.
       */
      readonly orientation?: RealOrientation
      /**
       * Defaults to "left".
       */
      readonly alignment?: TextAlign
      /**
       * Defaults to "top".
       */
      readonly vertical_alignment?: VerticalTextAlign
      /**
       * Defaults to false. If true, the text scales with player zoom, resulting in it always being the same size on screen, and the size compared to the game world changes.
       */
      readonly scale_with_zoom?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
      /**
       * If rich text rendering is enabled. Defaults to false.
       */
      readonly use_rich_text?: boolean
    }): LuaRenderObject
    /**
     * Create a circle.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_circle Online documentation}
     */
    draw_circle(params: {
      readonly color: Color | ColorArray
      /**
       * In tiles.
       */
      readonly radius: double
      /**
       * Width of the outline, used only if filled = false. Value is in pixels (32 per tile). Defaults to 1.
       */
      readonly width?: float
      /**
       * If the circle should be filled. Defaults to false.
       */
      readonly filled?: boolean
      readonly target: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create a rectangle.
     * @example
     * -- Draw a white and 1 pixel wide square outline with the corners {0, 0} and {2, 2}.
     * rendering.draw_rectangle{surface = game.player.surface, left_top = {0, 0}, right_bottom = {2, 2}, color = {1, 1, 1}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_rectangle Online documentation}
     */
    draw_rectangle(params: {
      readonly color: Color | ColorArray
      /**
       * Width of the outline, used only if filled = false. Value is in pixels (32 per tile). Defaults to 1.
       */
      readonly width?: float
      /**
       * If the rectangle should be filled. Defaults to false.
       */
      readonly filled?: boolean
      readonly left_top: ScriptRenderTargetWrite
      readonly right_bottom: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create an arc.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_arc Online documentation}
     */
    draw_arc(params: {
      readonly color: Color | ColorArray
      /**
       * The radius of the outer edge of the arc, in tiles.
       */
      readonly max_radius: double
      /**
       * The radius of the inner edge of the arc, in tiles.
       */
      readonly min_radius: double
      /**
       * Where the arc starts, in radian.
       */
      readonly start_angle: float
      /**
       * The angle of the arc, in radian.
       */
      readonly angle: float
      readonly target: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create a triangle mesh defined by a triangle strip.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_polygon Online documentation}
     */
    draw_polygon(params: {
      readonly color: Color | ColorArray
      readonly vertices: readonly ScriptRenderTargetWrite[]
      /**
       * Acts like an offset applied to all vertices that are not set to an entity.
       */
      readonly target?: ScriptRenderTargetWrite
      /**
       * The orientation applied to all vertices. Default is 0.
       */
      readonly orientation?: RealOrientation
      /**
       * If given, the vertices (that are not set to an entity) rotate so that it faces this target. Note that `orientation` is still applied.
       */
      readonly orientation_target?: ScriptRenderTargetWrite
      /**
       * Only used if `orientation_target` is a LuaEntity.
       */
      readonly use_target_orientation?: boolean
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should be drawn below sprites and entities. Defaults to false.
       */
      readonly draw_on_ground?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create a sprite.
     * @example
     * -- This will draw an iron plate icon at the character's feet. The sprite will move together with the character.
     * rendering.draw_sprite{sprite = "item.iron-plate", target = game.player.character, surface = game.player.surface}
     * @example
     * -- This will draw an iron plate icon at the character's head. The sprite will move together with the character.
     * rendering.draw_sprite{sprite = "item.iron-plate", target = {entity = game.player.character, offset = {0, -2}}, surface = game.player.surface}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_sprite Online documentation}
     */
    draw_sprite(params: {
      readonly sprite: SpritePath
      /**
       * The orientation of the sprite. Default is 0.
       */
      readonly orientation?: RealOrientation
      /**
       * Horizontal scale of the sprite. Default is 1.
       */
      readonly x_scale?: double
      /**
       * Vertical scale of the sprite. Default is 1.
       */
      readonly y_scale?: double
      readonly tint?: Color | ColorArray
      /**
       * Render layer of the sprite. Defaults to `"arrow"`.
       */
      readonly render_layer?: RenderLayer
      /**
       * If given, the sprite rotates so that it faces this target. Note that `orientation` is still applied to the sprite.
       */
      readonly orientation_target?: ScriptRenderTargetWrite
      /**
       * Only used if `orientation_target` is a LuaEntity.
       */
      readonly use_target_orientation?: boolean
      /**
       * Offsets the center of the sprite if `orientation_target` is given. This offset will rotate together with the sprite.
       */
      readonly oriented_offset?: Vector | VectorTable
      /**
       * Center of the sprite.
       */
      readonly target: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create a light.
     *
     * The base game uses the utility sprites `light_medium` and `light_small` for lights.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_light Online documentation}
     */
    draw_light(params: {
      readonly sprite: SpritePath
      /**
       * The orientation of the light. Default is 0.
       */
      readonly orientation?: RealOrientation
      /**
       * Default is 1.
       */
      readonly scale?: float
      /**
       * Default is 1.
       */
      readonly intensity?: float
      /**
       * The minimum darkness at which this light is rendered. Default is 0.
       */
      readonly minimum_darkness?: float
      /**
       * If this light has the same orientation as the entity target, default is false. Note that `orientation` is still applied to the sprite.
       */
      readonly oriented?: boolean
      /**
       * Defaults to white (no tint).
       */
      readonly color?: Color | ColorArray
      /**
       * Center of the light.
       */
      readonly target: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Create an animation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#draw_animation Online documentation}
     */
    draw_animation(params: {
      /**
       * Name of an {@link import("factorio:prototype").AnimationPrototype AnimationPrototype}.
       */
      readonly animation: string
      /**
       * The orientation of the animation. Default is 0.
       */
      readonly orientation?: RealOrientation
      /**
       * Horizontal scale of the animation. Default is 1.
       */
      readonly x_scale?: double
      /**
       * Vertical scale of the animation. Default is 1.
       */
      readonly y_scale?: double
      readonly tint?: Color | ColorArray
      /**
       * Render layer of the animation. Defaults to `"arrow"`.
       */
      readonly render_layer?: RenderLayer
      /**
       * How many frames the animation goes forward per tick. Default is 1.
       */
      readonly animation_speed?: double
      /**
       * Offset of the animation in frames. Default is 0.
       */
      readonly animation_offset?: double
      /**
       * If given, the animation rotates so that it faces this target. Note that `orientation` is still applied to the animation.
       */
      readonly orientation_target?: ScriptRenderTargetWrite
      /**
       * Only used if `orientation_target` is a LuaEntity.
       */
      readonly use_target_orientation?: boolean
      /**
       * Offsets the center of the animation if `orientation_target` is given. This offset will rotate together with the animation.
       */
      readonly oriented_offset?: Vector | VectorTable
      /**
       * Center of the animation.
       */
      readonly target: ScriptRenderTargetWrite
      readonly surface: SurfaceIdentification
      /**
       * In ticks. Defaults to living forever.
       */
      readonly time_to_live?: uint32
      /**
       * In ticks. Defaults to 0 (no blinking). Game alerts use 30.
       */
      readonly blink_interval?: uint16
      /**
       * The forces that this object is rendered to. Passing `nil` or an empty table will render it to all forces.
       */
      readonly forces?: ForceSet
      /**
       * The players that this object is rendered to. Passing `nil` or an empty table will render it to all players.
       */
      readonly players?: readonly PlayerIdentification[]
      /**
       * If this is rendered to anyone at all. Defaults to true.
       */
      readonly visible?: boolean
      /**
       * If this should only be rendered in alt mode. Defaults to false.
       */
      readonly only_in_alt_mode?: boolean
      /**
       * Mode which this object should render in. Defaults to "game".
       */
      readonly render_mode?: ScriptRenderMode
    }): LuaRenderObject
    /**
     * Gets an array of all valid objects.
     * @param mod_name If provided, get only the render objects created by this mod. An empty string (`""`) refers to all objects not belonging to a mod, such as those created using console commands.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#get_all_objects Online documentation}
     */
    get_all_objects(mod_name?: string): LuaRenderObject[]
    /**
     * Destroys all render objects.
     * @param mod_name If provided, only the render objects created by this mod are destroyed. An empty string (`""`) refers to all objects not belonging to a mod, such as those created using console commands.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#clear Online documentation}
     */
    clear(mod_name?: string): void
    /**
     * Gives LuaRenderObject for given object ID. May return nil if object does not exist or is invalid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRendering.html#get_object_by_id Online documentation}
     */
    get_object_by_id(object_id: uint64): LuaRenderObject | nil
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRendering"
  }
  /**
   * Prototype of a resource category.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaResourceCategoryPrototype.html Online documentation}
   */
  export interface LuaResourceCategoryPrototype extends LuaPrototypeBase {
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaResourceCategoryPrototype"
  }
  /**
   * Control behavior for roboports.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRoboportControlBehavior.html Online documentation}
   */
  export interface LuaRoboportControlBehavior extends LuaControlBehavior {
    /**
     * Selects contents that are to be read from the roboport
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRoboportControlBehavior.html#read_items_mode Online documentation}
     */
    read_items_mode: defines.control_behavior.roboport.read_items_mode
    /**
     * Legacy field, please use LuaRoboportControlBehavior::read_items_mode instead. `true` if the roboport should report the logistics network content to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRoboportControlBehavior.html#read_logistics Online documentation}
     */
    read_logistics: boolean
    /**
     * `true` if the roboport should report the robot statistics to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRoboportControlBehavior.html#read_robot_stats Online documentation}
     */
    read_robot_stats: boolean
    get available_logistic_output_signal(): SignalID | nil
    set available_logistic_output_signal(value: SignalIDWrite | nil)
    get total_logistic_output_signal(): SignalID | nil
    set total_logistic_output_signal(value: SignalIDWrite | nil)
    get available_construction_output_signal(): SignalID | nil
    set available_construction_output_signal(value: SignalIDWrite | nil)
    get total_construction_output_signal(): SignalID | nil
    set total_construction_output_signal(value: SignalIDWrite | nil)
    get roboport_count_output_signal(): SignalID | nil
    set roboport_count_output_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRoboportControlBehavior"
  }
  /**
   * Control behavior for rocket silos.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRocketSiloControlBehavior.html Online documentation}
   */
  export interface LuaRocketSiloControlBehavior extends LuaControlBehavior {
    /**
     * The items read mode for the rocket silo.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaRocketSiloControlBehavior.html#read_mode Online documentation}
     */
    read_mode: defines.control_behavior.rocket_silo.read_mode
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaRocketSiloControlBehavior"
  }
  /**
   * The schedule of a particular {@link LuaTrain} or {@link LuaSpacePlatform}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html Online documentation}
   * @noSelf
   */
  export interface LuaSchedule {
    /**
     * Adds the given wait condition to the given record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#add_wait_condition Online documentation}
     */
    add_wait_condition(record_position: ScheduleRecordPosition, condition_index: uint32, type: WaitConditionType): void
    /**
     * Removes the given wait condition from the given record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#remove_wait_condition Online documentation}
     */
    remove_wait_condition(record_position: ScheduleRecordPosition, condition_index: uint32): void
    /**
     * Sets the comparison on the given wait condition.
     * @param mode `"and"`, or `"or"`
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#set_wait_condition_mode Online documentation}
     */
    set_wait_condition_mode(record_position: ScheduleRecordPosition, condition_index: uint32, mode: "and" | "or"): void
    /**
     * Changes the wait condition on the given record to the new values.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#change_wait_condition Online documentation}
     */
    change_wait_condition(
      record_position: ScheduleRecordPosition,
      condition_index: uint32,
      wait_condition: WaitConditionWrite,
    ): void
    /**
     * Adds the given record to the end of the current schedule or at the given index using the provided data.
     * @returns The index the record was added at.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#add_record Online documentation}
     */
    add_record(data: AddRecordData): uint32 | nil
    /**
     * Removes the record at the given record position, if the record position is valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#remove_record Online documentation}
     */
    remove_record(record_position: ScheduleRecordPosition): void
    /**
     * Copies the record from the given schedule at the given index into this schedule at the given index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#copy_record Online documentation}
     */
    copy_record(source_schedule: LuaSchedule, source_index: uint32, destination_index: uint32): void
    /**
     * Adds the given interrupt to the schedule if an interrupt with the given name does not already exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#add_interrupt Online documentation}
     */
    add_interrupt(interrupt: ScheduleInterruptWrite): void
    /**
     * Removes the interrupt at the given index, if the index is valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#remove_interrupt Online documentation}
     */
    remove_interrupt(index: uint32): void
    /**
     * Activates the interrupt at the given index, if the index is valid.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#activate_interrupt Online documentation}
     */
    activate_interrupt(index: uint32): void
    /**
     * Changes the interrupt at the given index to the provided values. Note, the names must match.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#change_interrupt Online documentation}
     */
    change_interrupt(index: uint32, interrupt: ScheduleInterruptWrite): void
    /**
     * @param old_name The interrupt to rename
     * @param new_name The new name - if it already exists, does nothing.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#rename_interrupt Online documentation}
     */
    rename_interrupt(old_name: string, new_name: string): void
    /**
     * Sets the train or space platform to go to a destination, including changing the train/space platform to automatic mode.
     * @param schedule_index The schedule index
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#go_to_station Online documentation}
     */
    go_to_station(schedule_index: uint32): void
    /**
     * Sets whether this train is in {@link LuaTrain#manual_mode manual mode} or this space platform is {@link LuaSpacePlatform#paused paused}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#set_stopped Online documentation}
     */
    set_stopped(stopped: boolean): void
    /**
     * Sets if unloading is allowed at the given schedule record position. Only relevant for space platforms.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#set_allow_unloading Online documentation}
     */
    set_allow_unloading(record_position: ScheduleRecordPosition, allow: boolean): void
    /**
     * @param interrupt_index The interrupt to operate on, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#drag_record Online documentation}
     */
    drag_record(from: uint32, to: uint32, interrupt_index?: uint32): void
    drag_interrupt(from: uint32, to: uint32): void
    /**
     * @param record_position The record to change.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#drag_wait_condition Online documentation}
     */
    drag_wait_condition(record_position: ScheduleRecordPosition, from: uint32, to: uint32): void
    get_record(record_position: ScheduleRecordPosition): ScheduleRecord | nil
    /**
     * @param interrupt_index If provided, gets the records for this interrupt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_records Online documentation}
     */
    get_records(interrupt_index?: uint32): ScheduleRecord[] | nil
    /**
     * @param interrupt_index If provided, the records will be set on this interrupt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#set_records Online documentation}
     */
    set_records(records: readonly ScheduleRecordWrite[], interrupt_index?: uint32): void
    /**
     * @param interrupt_index If provided, clears the records for this interrupt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#clear_records Online documentation}
     */
    clear_records(interrupt_index?: uint32): void
    get_interrupt(index: uint32): ScheduleInterrupt | nil
    get_interrupts(): ScheduleInterrupt[]
    set_interrupts(interrupts: readonly ScheduleInterruptWrite[]): void
    /**
     * Removes all interrupts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#clear_interrupts Online documentation}
     */
    clear_interrupts(): void
    /**
     * Gets the wait condition at the given record position if one exists.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_wait_condition Online documentation}
     */
    get_wait_condition(record_position: ScheduleRecordPosition, condition_index: uint32): WaitCondition | nil
    /**
     * Gets the wait conditions at the given record position if they exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_wait_conditions Online documentation}
     */
    get_wait_conditions(record_position: ScheduleRecordPosition): WaitCondition[] | nil
    /**
     * The number of wait conditions in the given schedule record.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_wait_condition_count Online documentation}
     */
    get_wait_condition_count(record_position: ScheduleRecordPosition): uint32 | nil
    /**
     * Gets if the given interrupt can be triggered inside other interrupts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_inside_interrupt Online documentation}
     */
    get_inside_interrupt(interrupt_index: uint32): boolean
    /**
     * Sets if the given interrupt can be triggered inside other interrupts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#set_inside_interrupt Online documentation}
     */
    set_inside_interrupt(interrupt_index: uint32, value: boolean): void
    /**
     * If the given index is invalid, `nil` is returned.
     * @param interrupt_index If provided, the record count in this interrupt is read.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#get_record_count Online documentation}
     */
    get_record_count(interrupt_index?: uint32): uint32 | nil
    /**
     * The owner of this schedule.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#owner Online documentation}
     */
    readonly owner?: LuaTrain | LuaSpacePlatform
    readonly interrupt_count: uint32
    /**
     * The schedule index of the current destination.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#current Online documentation}
     */
    readonly current: uint32
    readonly tick_of_last_schedule_change: MapTick
    /**
     * The time when the train or space platform was last considered active for the inactivity condition.
     *
     * Note: when writing, value must not be larger than LuaGameScript::tick
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#tick_of_last_activity Online documentation}
     */
    tick_of_last_activity: MapTick
    /**
     * How long this train or space platform has been in the current station.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#ticks_in_station Online documentation}
     */
    readonly ticks_in_station: MapTick
    /**
     * The group this schedule is part of, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSchedule.html#group Online documentation}
     */
    group?: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSchedule"
  }
  /**
   * An individual segment of a {@link LuaSegmentedUnit}. If the segment exists in a generated chunk, you can access the entity representation using {@link LuaSegment#entity LuaSegment::entity}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html Online documentation}
   */
  export interface LuaSegment {
    /**
     * The prototype for the entity representation of the segment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html#prototype Online documentation}
     */
    readonly prototype: LuaEntityPrototype
    /**
     * The segmented unit that owns the segment.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html#unit Online documentation}
     */
    readonly unit: LuaSegmentedUnit
    /**
     * The actual entity representation of the segment if it exists. A segment's entity will be automatically destroyed if the segment moves into chunks that have not yet been fully generated or onto "out-of-map" tiles. Conversely, if a segment moves into a chunk that is fully generated and onto a non-"out-of-map" tile, then its entity will be created if it doesn't exist yet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html#entity Online documentation}
     */
    readonly entity?: LuaEntity
    /**
     * The position of the segment if one has been assigned. A position may not be assigned if the unit's number of body nodes is fewer than {@link LuaSegmentedUnit#max_body_nodes LuaSegmentedUnit::max_body_nodes}.
     *
     * This position may be in an un-generated chunk. Use {@link LuaSurface#is_chunk_generated LuaSurface::is_chunk_generated} to check before attempting to access the chunk.
     *
     * If {@link LuaSegment#entity LuaSegment::entity} is non-nil, this returns that entity's {@link LuaEntity#position LuaEntity::position}. If the entity is `nil`, then reading this field calculates the entity's would-be position if it existed. This can be expensive to compute, so avoid reading this field too often unless it is really necessary.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html#position Online documentation}
     */
    readonly position?: MapPosition
    /**
     * The relative orientation of the segment if one has been assigned. An orientation may not be assigned if the unit's number of body nodes is fewer than {@link LuaSegmentedUnit#max_body_nodes LuaSegmentedUnit::max_body_nodes}.
     *
     * If {@link LuaSegment#entity LuaSegment::entity} is non-nil, this returns that entity's {@link LuaEntity#orientation LuaEntity::orientation}. If the entity is `nil`, then reading this field calculates the entity's would-be position if it existed. This can be expensive to compute, so avoid reading this field too often unless it is really necessary.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegment.html#orientation Online documentation}
     */
    readonly orientation?: RealOrientation
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSegment"
  }
  /**
   * A surface-level object composed of one {@link import("factorio:prototype").SegmentedUnitPrototype SegmentedUnitPrototype} followed by up to 63 {@link import("factorio:prototype").SegmentPrototype SegmentPrototype}s.
   *
   * This object is not an entity, and can exist on chunks that do not exist. Instead, the individual segments that compose its body will be destroyed as the unit's body crosses into un-generated or void terrain, and will be re-created when the body crosses into generated, non-void terrain.
   *
   * Use {@link LuaSurface#get_segmented_units LuaSurface::get_segmented_units} to iterate over all units on a surface, {@link LuaTerritory#get_segmented_units LuaTerritory::get_segmented_units} to iterate over all units that guard a territory, or {@link LuaEntity#segmented_unit LuaEntity::segmented_unit} to get the unit that controls any given segment entity.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html Online documentation}
   * @noSelf
   */
  export interface LuaSegmentedUnit {
    /**
     * Destroys the segmented unit.
     *
     * ## Raised events
     * - {@link ScriptRaisedDestroySegmentedUnitEvent script_raised_destroy_segmented_unit}? _instantly_ Raised if the `raise_destroy` flag was set and the unit was successfully destroyed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#destroy Online documentation}
     */
    destroy(params?: {
      /**
       * If `true`, {@link ScriptRaisedDestroySegmentedUnitEvent script_raised_destroy_segmented_unit} will be called. Defaults to `false`.
       */
      readonly raise_destroy?: boolean
    }): void
    /**
     * Immediately kills the unit.
     *
     * Unlike {@link LuaSegmentedUnit#destroy LuaSegmentedUnit::destroy}, `die` will trigger the {@link OnSegmentedUnitDiedEvent on_segmented_unit_died} event and the unit's individual segments will produce a corpse and drop loot if they have any, and if the segment entities exist at the moment of death (are not in non-generated chunks or out-of-map tiles).
     *
     * ## Raised events
     * - {@link OnSegmentedUnitDiedEvent on_segmented_unit_died} _instantly_
     * - {@link OnPostSegmentedUnitDiedEvent on_post_segmented_unit_died} _instantly_
     * @param force The force to attribute the kill to. Defaults to the `"neutral"` force.
     * @param cause The cause to attribute the kill to.
     * @param damage_type The final damage type that caused the unit to die.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#die Online documentation}
     */
    die(force?: ForceID, cause?: LuaEntity, damage_type?: DamageTypeID): void
    /**
     * Damages the unit.
     *
     * ## Raised events
     * - {@link OnSegmentedUnitDamagedEvent on_segmented_unit_damaged} _instantly_
     * @param damage The amount of damage to be done.
     * @param force The force that is doing the damage.
     * @param type The type of damage being done. Defaults to `"impact"`.
     * @param source The entity that is directly dealing the damage. This is the projectile, flame, sticker, grenade, laster beam, etc. Must be on the same surface as the entity being damaged.
     * @param cause The entity that originally triggered the events that led to this damage being dealt. This can be the player character, turret, unit, etc. that pulled the trigger. Does not need to be on the same surface as the segmented unit being damaged.
     * @returns The total damage actually applied after resistances.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#damage Online documentation}
     */
    damage(damage: float, force: ForceID, type?: DamageTypeID, source?: LuaEntity, cause?: LuaEntity): float
    /**
     * Moves the unit forward by a fixed distance according to its natural movement patterns and AI configuration. This movement occurs in addition to the unit's current speed, but affects neither {@link LuaSegmentedUnit#speed LuaSegmentedUnit::speed} nor {@link LuaSegmentedUnit#acceleration LuaSegmentedUnit::acceleration}.
     * @param distance The distance in tiles to move the segmented unit forward.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#move_forward Online documentation}
     */
    move_forward(distance: double): void
    /**
     * Clones this unit.
     *
     * ## Raised events
     * - {@link OnSegmentedUnitCreatedEvent on_segmented_unit_created}? _instantly_ Raised if a clone of the segmented unit was successfully created. {@link OnSegmentedUnitCreatedEvent cause} will be set to {@link defines.segmented_unit_created_cause script_cloned}.
     * @returns The cloned unit or `nil` if the unit cannot be cloned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#clone Online documentation}
     */
    clone(params: {
      /**
       * The destination position of the head segment. The rest of the body nodes will be copied relative to this.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The destination surface. If different from this unit's surface, then the clone will not copy the original unit's territory.
       */
      readonly surface?: LuaSurface
      /**
       * The new unit's force.
       */
      readonly force?: ForceID
      /**
       * The territory that the clone should guard. Must be on the same surface as the destination surface.
       */
      readonly territory?: LuaTerritory
    }): LuaSegmentedUnit | nil
    /**
     * Gets the nodes that define the shape of the unit's body from front to back. Segments are moved along the path these nodes create.
     *
     * The returned array will always contain at least 1 position, but will not contain more than {@link LuaSegmentedUnit#max_body_nodes LuaSegmentedUnit::max_body_nodes}.
     *
     * The returned table is a copy of the unit's actual body nodes.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#get_body_nodes Online documentation}
     */
    get_body_nodes(): MapPosition[]
    /**
     * Overwrites the segmented unit's body nodes, which are a series of points that make up the general shape of the unit. Segments are moved along the path these nodes create. For best results, adjacent nodes should be approximately 1.0 tile apart from each other.
     *
     * This array must contain at least 1 position. Positions at indexes greater than {@link LuaSegmentedUnit#max_body_nodes LuaSegmentedUnit::max_body_nodes} will be ignored.
     *
     * Segment entities may be created, destroyed, or moved as a result of setting this field's value. Any segment entities that have a {@link TriggerEffectWithCooldown}s will reduce that effect's distance cooldown. However, any effects that go off cooldown as a result will not trigger until the next game update.
     * @param nodes The new positions that make up the segmented unit's body nodes. Must not be empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#set_body_nodes Online documentation}
     */
    set_body_nodes(nodes: readonly (MapPosition | MapPositionArray)[]): void
    /**
     * Gets the state of the unit's AI.
     *
     * This method returns a copy of the internal AI state. Modifying the returned table will not affect the unit's AI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#get_ai_state Online documentation}
     */
    get_ai_state(): SegmentedUnitAIState
    /**
     * Sets the segmented unit's AI.
     * @param state The new AI state. A copy of this table used, so you can read or write to this table after calling this function without being affected by or affecting the unit's AI.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#set_ai_state Online documentation}
     */
    set_ai_state(state: SegmentedUnitAIStateWrite): void
    /**
     * The prototype of the `segmented-unit` entity that defines the traits and behaviors of the unit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#prototype Online documentation}
     */
    readonly prototype: LuaEntityPrototype
    /**
     * The surface on which the unit is located.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * The territory that the unit is protecting.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#territory Online documentation}
     */
    territory?: LuaTerritory
    /**
     * The segments that compose the unit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#segments Online documentation}
     */
    readonly segments: LuaSegment[]
    /**
     * The force that the unit belongs to. Changing this also changes the force of all segment entities.
     *
     * Always returns a {@link LuaForce}, but may be assigned to any {@link ForceID} type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#force Online documentation}
     */
    get force(): LuaForce
    set force(value: ForceID)
    /**
     * A unique number identifying this unit for the lifetime of the save. These are allocated sequentially and not re-used (until overflow). These numbers are allocated from the same pool as {@link LuaEntity#unit_number LuaEntity::unit_number}, so segmented unit numbers are unique among all segmented units and all entities with owners.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#unit_number Online documentation}
     */
    readonly unit_number: UnitNumber
    /**
     * The current health of the unit. Health is automatically clamped to be between `0` and {@link LuaSegmentedUnit#max_health LuaSegmentedUnit::max_health}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#health Online documentation}
     */
    health: float
    /**
     * The maximum health of the unit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#max_health Online documentation}
     */
    readonly max_health: float
    /**
     * The ratio of {@link LuaSegmentedUnit#health LuaSegmentedUnit::health} to {@link LuaSegmentedUnit#max_health LuaSegmentedUnit::max_health}. Values are clamped between `0` (no health) and `1` (full health) inclusive.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#health_ratio Online documentation}
     */
    health_ratio: float
    /**
     * The current instantaneous speed in tiles per map tick. Must always be greater than or equal to 0; segmented units are currently incapable of naturally moving in reverse.
     *
     * When setting this value, note that unless the unit's AI is similarly overridden by a script, the unit's speed will continuously accelerate or decelerate to match {@link LuaSegmentedUnit#target_speed LuaSegmentedUnit::target_speed}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#speed Online documentation}
     */
    speed: double
    /**
     * The speed in tiles per tick that the unit is currently attempting to reach, as determined by its AI. Must always be greater than or equal to 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#target_speed Online documentation}
     */
    readonly target_speed: double
    /**
     * The rate at which {@link LuaSegmentedUnit#speed LuaSegmentedUnit::speed} is changing over time, in tiles per tick per tick.
     *
     * This value represents unit's most recent change in speed. If its speed is not changing, the acceleration value will be 0. If it is gaining speed, the value will be positive. If it is losing speed, the value will be negative.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#acceleration Online documentation}
     */
    readonly acceleration: double
    /**
     * The maximum length of {@link LuaSegmentedUnit#get_body_nodes LuaSegmentedUnit::get_body_nodes}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#max_body_nodes Online documentation}
     */
    readonly max_body_nodes: uint32
    /**
     * The current activity mode of the unit. Setting this field can cause the segmented unit to "wake up" or force it into a lower activity mode, but not permanently. Segmented units will generally try to update their activity mode so that they are fully active whenever they are potentially being observed by players, minimally active when relevant to gameplay but not likely observed, and asleep when not relevant to gameplay.
     *
     * Will never be lower than {@link LuaSegmentedUnit#minimum_activity_mode LuaSegmentedUnit::minimum_activity_mode}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#activity_mode Online documentation}
     */
    activity_mode: defines.segmented_unit_activity_mode
    /**
     * The lowest-level activity mode that the unit is allowed to be in. Set this field to prevent the segmented unit from falling asleep or entering minimal mode. Set this field to `nil` or {@link defines.segmented_unit_activity_mode asleep} to reset this to the default and allow the engine to use whatever activity mode is appropriate.
     *
     * Performance note: it is NOT recommended to force many segmented units to be fully active or minimally active simultaneously, as they can significantly impact performance depending on how they are configured. When using this feature, remember to reset this field to allow irrelevant units to go back to sleep.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSegmentedUnit.html#minimum_activity_mode Online documentation}
     */
    minimum_activity_mode: defines.segmented_unit_activity_mode | nil
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSegmentedUnit"
  }
  /**
   * Control behavior for selector combinators.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSelectorCombinatorControlBehavior.html Online documentation}
   */
  export interface LuaSelectorCombinatorControlBehavior extends LuaCombinatorControlBehavior {
    /**
     * The selector combinator parameters. `parameters` may be `nil` in order to clear the parameters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSelectorCombinatorControlBehavior.html#parameters Online documentation}
     */
    get parameters(): SelectorCombinatorParameters | nil
    set parameters(value: SelectorCombinatorParametersWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSelectorCombinatorControlBehavior"
  }
  /**
   * Object containing the three different types of mod settings: startup settings, global runtime settings and per-player runtime settings. An instance of LuaSettings is available through the global object named `settings`.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSettings.html Online documentation}
   * @noSelf
   */
  export interface LuaSettings {
    /**
     * Gets the current per-player settings for the given player, indexed by prototype name. Returns the same structure as {@link LuaPlayer#mod_settings LuaPlayer::mod_settings}. This table becomes invalid if its associated player does.
     *
     * Even though this attribute is a getter, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
     * @example
     * -- Change the value of the "active_lifestyle" setting
     * settings.get_player_settings(player_index)["active_lifestyle"] = {value = true}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSettings.html#get_player_settings Online documentation}
     */
    get_player_settings(player: PlayerIdentification): LuaCustomTable<string, ModSetting>
    /**
     * The startup mod settings, indexed by prototype name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSettings.html#startup Online documentation}
     */
    readonly startup: {
      readonly [name: string]: ModSetting
    }
    /**
     * The current global mod settings, indexed by prototype name.
     *
     * Even though this attribute is marked as read-only, individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSettings.html#global Online documentation}
     */
    readonly global: LuaCustomTable<string, ModSetting>
    /**
     * The **default** player mod settings for this map, indexed by prototype name. Changing these settings only affects the default settings for future players joining the game.
     *
     * Individual settings can be changed by overwriting their {@link ModSetting} table. Mods can only change their own settings. Using the in-game console, all player settings can be changed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSettings.html#player_default Online documentation}
     */
    readonly player_default: LuaCustomTable<string, ModSetting>
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSettings"
  }
  /**
   * Prototype of a shortcut.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaShortcutPrototype.html Online documentation}
   */
  export interface LuaShortcutPrototype extends LuaPrototypeBase {
    readonly action: string
    /**
     * The item to create when this shortcut is used, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaShortcutPrototype.html#item_to_spawn Online documentation}
     */
    readonly item_to_spawn?: LuaItemPrototype
    /**
     * The technology that needs to be researched once (in any save) for this shortcut to be unlocked (in all saves).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaShortcutPrototype.html#technology_to_unlock Online documentation}
     */
    readonly technology_to_unlock?: LuaTechnologyPrototype
    readonly toggleable: boolean
    /**
     * The control input that is associated with this shortcut, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaShortcutPrototype.html#associated_control_input Online documentation}
     */
    readonly associated_control_input?: string
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaShortcutPrototype"
  }
  /**
   * Functions for use during simulations. This object cannot be saved, and cannot be used outside of a simulation.
   *
   * The simulation object instance can be obtained from {@link LuaGameScript#simulation LuaGameScript::simulation}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html Online documentation}
   * @noSelf
   */
  export interface LuaSimulation {
    /**
     * @returns The created player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#create_test_player Online documentation}
     */
    create_test_player(params: {
      /**
       * The name of the new player.
       */
      readonly name: string
    }): LuaPlayer
    /**
     * @returns Position of the GUI slot on the screen, if successfully found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#get_slot_position Online documentation}
     */
    get_slot_position(params: {
      readonly inventory_index: InventoryIndex
      /**
       * This index is 0-based, unlike other inventory indices.
       */
      readonly slot_index: ItemStackIndex
      /**
       * Defaults to `"character"`.
       */
      readonly inventory?: "character" | "entity"
    }): MapPosition | nil
    /**
     * @returns Center of the GUI widget on the screen, if successfully found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#get_widget_position Online documentation}
     */
    get_widget_position(params: {
      readonly type: SimulationWidgetType
      readonly data?: string
      readonly data2?: string
    }): MapPosition | nil
    /**
     * Activate the rail planner at the given position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#activate_rail_planner Online documentation}
     */
    activate_rail_planner(params?: {
      readonly position?: MapPosition | MapPositionArray
      /**
       * Defaults to `false`.
       */
      readonly ghost_mode?: boolean
      /**
       * Defaults to {@link defines.build_mode.normal normal}.
       */
      readonly build_mode?: defines.build_mode
    }): void
    /**
     * Deactivate the rail planner.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#deactivate_rail_planner Online documentation}
     */
    deactivate_rail_planner(): void
    /**
     * Move the cursor towards the given position at the given speed.
     * @returns Whether the cursor will reach the target position with this move.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#move_cursor Online documentation}
     */
    move_cursor(params: {
      readonly position: MapPosition | MapPositionArray
      /**
       * Defaults to `0.2`.
       */
      readonly speed?: double
    }): boolean
    /**
     * Send a left mouse button-down event at its current position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#mouse_down Online documentation}
     */
    mouse_down(): void
    /**
     * Send a left mouse button-up event at its current position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#mouse_up Online documentation}
     */
    mouse_up(): void
    /**
     * Send a left mouse button click event at its current position. This is equivalent to calling {@link LuaSimulation#mouse_down LuaSimulation::mouse_down}, then {@link LuaSimulation#mouse_up LuaSimulation::mouse_up}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#mouse_click Online documentation}
     */
    mouse_click(): void
    /**
     * Send a control press event at the current cursor position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#control_down Online documentation}
     */
    control_down(params: {
      /**
       * The name of the control input to press.
       */
      readonly control: string
      /**
       * Whether to show flying text of the activated control.
       */
      readonly notify: boolean
    }): void
    /**
     * Send a control release event at the current cursor position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#control_up Online documentation}
     */
    control_up(params: {
      /**
       * The name of the control input to release.
       */
      readonly control: string
    }): void
    /**
     * Send a control down and up event at the current cursor position. This is equivalent to calling {@link LuaSimulation#control_down LuaSimulation::control_down}, then {@link LuaSimulation#control_up LuaSimulation::control_up}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#control_press Online documentation}
     */
    control_press(params: {
      /**
       * The name of the control input to press and release.
       */
      readonly control: string
      /**
       * Whether to show flying text of the activated control.
       */
      readonly notify: boolean
    }): void
    /**
     * Write text as if it was typed by a player. Overwrites existing text by selecting it first.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#write Online documentation}
     */
    write(params: {
      /**
       * The text to write. Does nothing if no text is provided.
       */
      readonly text?: string
    }): void
    /**
     * Scroll the clipboard forwards by one entry.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#scroll_clipboard_forwards Online documentation}
     */
    scroll_clipboard_forwards(): void
    /**
     * Scroll the clipboard backwards by one entry.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSimulation.html#scroll_clipboard_backwards Online documentation}
     */
    scroll_clipboard_backwards(): void
    get camera_player_cursor_position(): MapPosition | nil
    set camera_player_cursor_position(value: MapPosition | MapPositionArray | nil)
    get camera_position(): MapPosition | nil
    set camera_position(value: MapPosition | MapPositionArray | nil)
    camera_surface_index?: uint32
    set hide_cursor(value: boolean)
    set camera_zoom(value: double)
    set camera_player(value: PlayerIdentification)
    set camera_player_cursor_direction(value: defines.direction)
    set camera_alt_info(value: boolean)
    set smart_belt_building(value: boolean | nil)
    set gui_tooltip_interval(value: double)
    set active_quickbars(value: uint8)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSimulation"
  }
  /**
   * Prototype of a space connection.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceConnectionPrototype.html Online documentation}
   */
  export interface LuaSpaceConnectionPrototype extends LuaPrototypeBase {
    readonly from: LuaSpaceLocationPrototype
    readonly to: LuaSpaceLocationPrototype
    readonly length: uint32
    readonly asteroid_spawn_definitions?: SpaceConnectionAsteroidSpawnDefinition[]
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceConnectionPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaSpaceConnectionPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSpaceConnectionPrototype"
  }
  /**
   * Prototype of a space location, such as a planet.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html Online documentation}
   */
  export interface LuaSpaceLocationPrototype extends LuaPrototypeBase {
    readonly position: MapPosition
    readonly solar_power_in_space: double
    readonly asteroid_spawn_influence: double
    readonly asteroid_spawn_definitions?: SpaceLocationAsteroidSpawnDefinition[]
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaSpaceLocationPrototype
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#map_seed_offset Online documentation}
     */
    readonly map_seed_offset?: uint32
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#map_gen_settings Online documentation}
     */
    readonly map_gen_settings?: MapGenSettings
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#entities_require_heating Online documentation}
     */
    readonly entities_require_heating?: boolean
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#pollutant_type Online documentation}
     */
    readonly pollutant_type?: LuaAirbornePollutantPrototype
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#player_effects Online documentation}
     */
    readonly player_effects?: TriggerItem[]
    /**
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#ticks_between_player_effects Online documentation}
     */
    readonly ticks_between_player_effects?: uint32
    /**
     * A mapping of the surface property name to the value.
     *
     * _Can only be used if this is Planet_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpaceLocationPrototype.html#surface_properties Online documentation}
     */
    readonly surface_properties?: Record<string, double>
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSpaceLocationPrototype"
  }
  /**
   * A space platform.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html Online documentation}
   * @noSelf
   */
  export interface LuaSpacePlatform {
    /**
     * Schedules this space platform for deletion.
     * @param ticks The number of ticks from now when this platform will be deleted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#destroy Online documentation}
     */
    destroy(ticks?: uint32): void
    /**
     * Cancels deletion of this space platform if it was scheduled for deletion.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#cancel_deletion Online documentation}
     */
    cancel_deletion(): void
    /**
     * Applies the starter pack for this platform if it hasn't already been applied.
     * @returns The platform hub.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#apply_starter_pack Online documentation}
     */
    apply_starter_pack(): LuaEntity | nil
    /**
     * Damages the given tile if it exists, the chunk is generated, and it is a platform foundation tile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#damage_tile Online documentation}
     */
    damage_tile(params?: {
      readonly position: TilePosition | TilePositionArray
      readonly damage: float
      readonly cause?: LuaEntity
    }): void
    /**
     * Repairs the given tile if it's damaged.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#repair_tile Online documentation}
     */
    repair_tile(position: TilePosition | TilePositionArray, amount?: float): void
    /**
     * Destroys all asteroid chunks from the given area. If no area and no position are given, then the entire surface is searched.
     * @returns The number of destroyed chunks.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#destroy_asteroid_chunks Online documentation}
     */
    destroy_asteroid_chunks(params: {
      readonly area?: BoundingBoxWrite | BoundingBoxArray
      readonly position?: MapPosition | MapPositionArray
      readonly name?: AsteroidChunkID | readonly AsteroidChunkID[]
      readonly limit?: uint32
      /**
       * If the filters should be inverted.
       */
      readonly invert?: boolean
    }): uint32
    /**
     * Creates the given asteroid chunks on this platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#create_asteroid_chunks Online documentation}
     */
    create_asteroid_chunks(asteroid_chunks: readonly AsteroidChunkWrite[]): void
    /**
     * Find asteroid chunks of a given name in a given area.
     *
     * If no filters are given, returns all asteroid chunks in the search area. If multiple filters are specified, returns only asteroid chunks matching every given filter. If no area and no position are given, the entire surface is searched.
     * @example
     * game.forces.player.platforms[1].find_asteroid_chunks_filtered{area = {{-10, -10}, {10, 10}}, name = "carbonic-asteroid"} -- gets all asteroids with the given name in the rectangle
     * game.forces.player.platforms[1].find_asteroid_chunks_filtered{area = {{-10, -10}, {10, 10}}, limit = 5}  -- gets the first 5 asteroid chunks in the rectangle
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#find_asteroid_chunks_filtered Online documentation}
     */
    find_asteroid_chunks_filtered(params: {
      readonly area?: BoundingBoxWrite | BoundingBoxArray
      readonly position?: MapPosition | MapPositionArray
      readonly name?: AsteroidChunkID | readonly AsteroidChunkID[]
      readonly limit?: uint32
      /**
       * If the filters should be inverted.
       */
      readonly invert?: boolean
    }): AsteroidChunk[]
    /**
     * Returns `true` when the space platform isn't waiting on any delivery from the planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#can_leave_current_location Online documentation}
     */
    can_leave_current_location(): boolean
    get_schedule(): LuaSchedule
    /**
     * Ejects an item into space on this space platform.
     *
     * If a LuaItemStack is provided, the actual item is ejected and removed from the source.
     * @param movement When inserters drop items into space, the {@link import("factorio:prototype").InserterPrototype#insert_position InserterPrototype::insert_position} rotated to the inserter direction is used.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#eject_item Online documentation}
     */
    eject_item(
      item: ItemStackIdentification,
      position: MapPosition | MapPositionArray,
      movement: Vector | VectorTable,
    ): void
    /**
     * Removes all ejected items from this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#clear_ejected_items Online documentation}
     */
    clear_ejected_items(): void
    /**
     * The force of this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * The name of this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#name Online documentation}
     */
    name: string
    /**
     * The unique index of this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#index Online documentation}
     */
    readonly index: uint32
    /**
     * The space location this space platform is stopped at or `nil`.
     *
     * Write operation requires a valid space location and will cancel pending item requests.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#space_location Online documentation}
     */
    space_location?: LuaSpaceLocationPrototype
    /**
     * The space location this space platform previously went through or stopped at.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#last_visited_space_location Online documentation}
     */
    readonly last_visited_space_location?: LuaSpaceLocationPrototype
    /**
     * The space connection this space platform is traveling through or `nil`.
     *
     * Write operation requires a valid space connection and it sets the distance to 0.5.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#space_connection Online documentation}
     */
    space_connection?: LuaSpaceConnectionPrototype
    /**
     * The point on space connection this platform is at or `nil`.
     *
     * It is represented as a number in range `{@link LuaSpaceConnectionPrototype#from 0, 1]`, with 0 being [LuaSpaceConnectionPrototype::from} and 1 being {@link LuaSpaceConnectionPrototype#to LuaSpaceConnectionPrototype::to}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#distance Online documentation}
     */
    distance?: double
    /**
     * The current state of this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#state Online documentation}
     */
    readonly state: defines.space_platform_state
    /**
     * When `true`, the platform has paused thrust and does not advance its schedule.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#paused Online documentation}
     */
    paused: boolean
    /**
     * The starter pack used to create this space platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#starter_pack Online documentation}
     */
    readonly starter_pack?: ItemIDAndQualityIDPair
    /**
     * The surface that belongs to this platform (if it has been created yet).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * The hub on this platform. `nil` if the platform has not had the starter pack applied or hub was destroyed but the platform not yet deleted.
     *
     * If the hub is destroyed the platform will be deleted at the end of the tick but is otherwise valid to use until that point.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#hub Online documentation}
     */
    readonly hub?: LuaEntity
    /**
     * This platform's current schedule, if any. Set to `nil` to clear.
     *
     * The schedule can't be changed by modifying the returned table. Instead, changes must be made by assigning a new table to this attribute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#schedule Online documentation}
     */
    get schedule(): PlatformSchedule | nil
    set schedule(value: PlatformScheduleWrite | nil)
    speed: double
    /**
     * If this platform is scheduled for deletion.
     *
     * Returns how many ticks are left before the platform will be deleted. 0 if not scheduled for deletion.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#scheduled_for_deletion Online documentation}
     */
    readonly scheduled_for_deletion: uint32
    /**
     * The total weight of the platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#weight Online documentation}
     */
    readonly weight: Weight
    /**
     * The damaged tiles on this platform.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#damaged_tiles Online documentation}
     */
    readonly damaged_tiles: {
      readonly position: TilePosition
      readonly damage: float
    }[]
    /**
     * All items that have been thrown overboard.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#ejected_items Online documentation}
     */
    readonly ejected_items: EjectedItem[]
    /**
     * If this platform is hidden from the remote view surface list.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatform.html#hidden Online documentation}
     */
    hidden: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSpacePlatform"
  }
  /**
   * Control behavior for space platform hubs
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html Online documentation}
   */
  export interface LuaSpacePlatformHubControlBehavior extends LuaControlBehavior {
    /**
     * `true` if this hub is sending its content to a circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * Whether the signals are used for circuit conditions in the platform's schedule
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#send_to_platform Online documentation}
     */
    send_to_platform: boolean
    /**
     * Whether current connection "from" end is sent to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#read_moving_from Online documentation}
     */
    read_moving_from: boolean
    /**
     * Whether current connection "to" end is sent to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#read_moving_to Online documentation}
     */
    read_moving_to: boolean
    /**
     * Whether current speed of space platform is sent to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#read_speed Online documentation}
     */
    read_speed: boolean
    /**
     * Signal to be transmitted with platform's current speed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#speed_signal Online documentation}
     */
    get speed_signal(): SignalID | nil
    set speed_signal(value: SignalIDWrite | nil)
    /**
     * Whether damage taken by the space platform is sent to circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#read_damage_taken Online documentation}
     */
    read_damage_taken: boolean
    /**
     * Signal to be transmitted with platform's damage taken value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSpacePlatformHubControlBehavior.html#damage_taken_signal Online documentation}
     */
    get damage_taken_signal(): SignalID | nil
    set damage_taken_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSpacePlatformHubControlBehavior"
  }
  /**
   * Control behavior for splitter.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSplitterControlBehavior.html Online documentation}
   */
  export interface LuaSplitterControlBehavior extends LuaControlBehavior {
    set_input_side: boolean
    get input_left_condition(): CircuitConditionDefinition
    set input_left_condition(value: CircuitConditionDefinitionWrite)
    get input_right_condition(): CircuitConditionDefinition
    set input_right_condition(value: CircuitConditionDefinitionWrite)
    set_output_side: boolean
    get output_left_condition(): CircuitConditionDefinition
    set output_left_condition(value: CircuitConditionDefinitionWrite)
    get output_right_condition(): CircuitConditionDefinition
    set output_right_condition(value: CircuitConditionDefinitionWrite)
    set_filter: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSplitterControlBehavior"
  }
  /**
   * Control behavior for storage tanks.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStorageTankControlBehavior.html Online documentation}
   */
  export interface LuaStorageTankControlBehavior extends LuaControlBehavior {
    /**
     * If the storage tank content is sent to circuit network
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStorageTankControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaStorageTankControlBehavior"
  }
  /**
   * Style of a GUI element. All of the attributes listed here may be `nil` if not available for a particular GUI element.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html Online documentation}
   */
  export interface LuaStyle {
    /**
     * Gui of the {@link LuaGuiElement} of this style.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#gui Online documentation}
     */
    readonly gui: LuaGui
    /**
     * Name of this style.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#name Online documentation}
     */
    readonly name: string
    /**
     * Minimal width ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#minimal_width Online documentation}
     */
    minimal_width: int32
    /**
     * Maximal width ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#maximal_width Online documentation}
     */
    maximal_width: int32
    /**
     * Minimal height ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#minimal_height Online documentation}
     */
    minimal_height: int32
    /**
     * Maximal height ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#maximal_height Online documentation}
     */
    maximal_height: int32
    /**
     * Natural width specifies the width of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#natural_width Online documentation}
     */
    natural_width: int32
    /**
     * Natural height specifies the height of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#natural_height Online documentation}
     */
    natural_height: int32
    top_padding: int32
    right_padding: int32
    bottom_padding: int32
    left_padding: int32
    top_margin: int32
    right_margin: int32
    bottom_margin: int32
    left_margin: int32
    /**
     * Horizontal align of the inner content of the widget, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_align Online documentation}
     */
    horizontal_align?: "left" | "center" | "right"
    /**
     * Vertical align of the inner content of the widget, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_align Online documentation}
     */
    vertical_align?: "top" | "center" | "bottom"
    get font_color(): Color
    set font_color(value: Color | ColorArray)
    font: string
    /**
     * Space between the table cell contents top and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#top_cell_padding Online documentation}
     */
    top_cell_padding: int32
    /**
     * Space between the table cell contents right and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#right_cell_padding Online documentation}
     */
    right_cell_padding: int32
    /**
     * Space between the table cell contents bottom and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#bottom_cell_padding Online documentation}
     */
    bottom_cell_padding: int32
    /**
     * Space between the table cell contents left and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#left_cell_padding Online documentation}
     */
    left_cell_padding: int32
    /**
     * Whether the GUI element stretches its size horizontally to other elements. `nil` if this element does not support stretching.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontally_stretchable Online documentation}
     */
    horizontally_stretchable?: boolean
    /**
     * Whether the GUI element stretches its size vertically to other elements. `nil` if this element does not support stretching.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertically_stretchable Online documentation}
     */
    vertically_stretchable?: boolean
    /**
     * Whether the GUI element can be squashed (by maximal width of some parent element) horizontally. `nil` if this element does not support squashing.
     *
     * This is mainly meant to be used for scroll-pane. The default value is false.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontally_squashable Online documentation}
     */
    horizontally_squashable?: boolean
    /**
     * Whether the GUI element can be squashed (by maximal height of some parent element) vertically. `nil` if this element does not support squashing.
     *
     * This is mainly meant to be used for scroll-pane. The default (parent) value for scroll pane is true, false otherwise.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertically_squashable Online documentation}
     */
    vertically_squashable?: boolean
    /**
     * How this GUI element handles rich text.
     *
     * _Can only be used if this is LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#rich_text_setting Online documentation}
     */
    rich_text_setting: defines.rich_text_setting
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#hovered_font_color Online documentation}
     */
    get hovered_font_color(): Color
    set hovered_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#clicked_font_color Online documentation}
     */
    get clicked_font_color(): Color
    set clicked_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle, LuaTabStyle, LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_font_color Online documentation}
     */
    get disabled_font_color(): Color
    set disabled_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#pie_progress_color Online documentation}
     */
    get pie_progress_color(): Color
    set pie_progress_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#clicked_vertical_offset Online documentation}
     */
    clicked_vertical_offset: int32
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_font_color Online documentation}
     */
    get selected_font_color(): Color
    set selected_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_hovered_font_color Online documentation}
     */
    get selected_hovered_font_color(): Color
    set selected_hovered_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_clicked_font_color Online documentation}
     */
    get selected_clicked_font_color(): Color
    set selected_clicked_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#strikethrough_color Online documentation}
     */
    get strikethrough_color(): Color
    set strikethrough_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#draw_grayscale_picture Online documentation}
     */
    draw_grayscale_picture: boolean
    /**
     * Horizontal space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle or LuaHorizontalFlowStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_spacing Online documentation}
     */
    horizontal_spacing: int32
    /**
     * Vertical space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle, LuaVerticalFlowStyle or LuaTabbedPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_spacing Online documentation}
     */
    vertical_spacing: int32
    /**
     * _Can only be used if this is LuaFrameStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#use_header_filler Online documentation}
     */
    use_header_filler: boolean
    /**
     * The thickness of the bar, not the horizontal width.
     *
     * _Can only be used if this is LuaProgressBarStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#bar_width Online documentation}
     */
    bar_width: uint32
    /**
     * _Can only be used if this is LuaProgressBarStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
    /**
     * Array containing the alignment for every column of this table element. Even though this property is marked as read-only, the alignment can be changed by indexing the LuaCustomTable, like so:
     * @example
     * table_element.style.column_alignments[1] = "center"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#column_alignments Online documentation}
     */
    readonly column_alignments: LuaCustomTable<uint32, Alignment>
    /**
     * _Can only be used if this is LabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#single_line Online documentation}
     */
    single_line: boolean
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_top_padding_when_activated Online documentation}
     */
    extra_top_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_bottom_padding_when_activated Online documentation}
     */
    extra_bottom_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_left_padding_when_activated Online documentation}
     */
    extra_left_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_right_padding_when_activated Online documentation}
     */
    extra_right_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_top_margin_when_activated Online documentation}
     */
    extra_top_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_bottom_margin_when_activated Online documentation}
     */
    extra_bottom_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_left_margin_when_activated Online documentation}
     */
    extra_left_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_right_margin_when_activated Online documentation}
     */
    extra_right_margin_when_activated: int32
    /**
     * Sets `extra_top/right/bottom/left_padding_when_activated` to this value.
     *
     * An array with two values sets top/bottom padding to the first value and left/right padding to the second value. An array with four values sets top, right, bottom, left padding respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_padding_when_activated Online documentation}
     */
    set extra_padding_when_activated(value: int32 | StyleValuesArray)
    /**
     * Sets `extra_top/right/bottom/left_margin_when_activated` to this value.
     *
     * An array with two values sets top/bottom margin to the first value and left/right margin to the second value. An array with four values sets top, right, bottom, left margin respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_margin_when_activated Online documentation}
     */
    set extra_margin_when_activated(value: int32 | StyleValuesArray)
    /**
     * _Can only be used if this is ImageStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#stretch_image_to_widget_size Online documentation}
     */
    stretch_image_to_widget_size: boolean
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#badge_font Online documentation}
     */
    badge_font: string
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#badge_horizontal_spacing Online documentation}
     */
    badge_horizontal_spacing: int32
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#default_badge_font_color Online documentation}
     */
    get default_badge_font_color(): Color
    set default_badge_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_badge_font_color Online documentation}
     */
    get selected_badge_font_color(): Color
    set selected_badge_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_badge_font_color Online documentation}
     */
    get disabled_badge_font_color(): Color
    set disabled_badge_font_color(value: Color | ColorArray)
    /**
     * Sets both minimal and maximal width to the given value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#width Online documentation}
     */
    set width(value: int32)
    /**
     * Sets both minimal and maximal height to the given value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#height Online documentation}
     */
    set height(value: int32)
    /**
     * Sets both width and height to the given value. Also accepts an array with two values, setting width to the first and height to the second one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#size Online documentation}
     */
    set size(value: int32 | SizeArray)
    /**
     * Sets top/right/bottom/left paddings to this value.
     *
     * An array with two values sets top/bottom padding to the first value and left/right padding to the second value. An array with four values sets top, right, bottom, left padding respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#padding Online documentation}
     */
    set padding(value: int32 | StyleValuesArray)
    /**
     * Sets top/right/bottom/left margins to this value.
     *
     * An array with two values sets top/bottom margin to the first value and left/right margin to the second value. An array with four values sets top, right, bottom, left margin respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#margin Online documentation}
     */
    set margin(value: int32 | StyleValuesArray)
    /**
     * Space between the table cell contents and border. Sets top/right/bottom/left cell paddings to this value.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#cell_padding Online documentation}
     */
    set cell_padding(value: int32)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaStyle"
  }
  export interface BaseStyle {
    /**
     * Gui of the {@link LuaGuiElement} of this style.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#gui Online documentation}
     */
    readonly gui: LuaGui
    /**
     * Name of this style.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#name Online documentation}
     */
    readonly name: string
    /**
     * Minimal width ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#minimal_width Online documentation}
     */
    minimal_width: int32
    /**
     * Maximal width ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#maximal_width Online documentation}
     */
    maximal_width: int32
    /**
     * Minimal height ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#minimal_height Online documentation}
     */
    minimal_height: int32
    /**
     * Maximal height ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#maximal_height Online documentation}
     */
    maximal_height: int32
    /**
     * Natural width specifies the width of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#natural_width Online documentation}
     */
    natural_width: int32
    /**
     * Natural height specifies the height of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#natural_height Online documentation}
     */
    natural_height: int32
    top_padding: int32
    right_padding: int32
    bottom_padding: int32
    left_padding: int32
    top_margin: int32
    right_margin: int32
    bottom_margin: int32
    left_margin: int32
    /**
     * Horizontal align of the inner content of the widget, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_align Online documentation}
     */
    horizontal_align?: "left" | "center" | "right"
    /**
     * Vertical align of the inner content of the widget, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_align Online documentation}
     */
    vertical_align?: "top" | "center" | "bottom"
    get font_color(): Color
    set font_color(value: Color | ColorArray)
    font: string
    /**
     * Whether the GUI element stretches its size horizontally to other elements. `nil` if this element does not support stretching.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontally_stretchable Online documentation}
     */
    horizontally_stretchable?: boolean
    /**
     * Whether the GUI element stretches its size vertically to other elements. `nil` if this element does not support stretching.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertically_stretchable Online documentation}
     */
    vertically_stretchable?: boolean
    /**
     * Whether the GUI element can be squashed (by maximal width of some parent element) horizontally. `nil` if this element does not support squashing.
     *
     * This is mainly meant to be used for scroll-pane. The default value is false.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontally_squashable Online documentation}
     */
    horizontally_squashable?: boolean
    /**
     * Whether the GUI element can be squashed (by maximal height of some parent element) vertically. `nil` if this element does not support squashing.
     *
     * This is mainly meant to be used for scroll-pane. The default (parent) value for scroll pane is true, false otherwise.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertically_squashable Online documentation}
     */
    vertically_squashable?: boolean
    /**
     * Array containing the alignment for every column of this table element. Even though this property is marked as read-only, the alignment can be changed by indexing the LuaCustomTable, like so:
     * @example
     * table_element.style.column_alignments[1] = "center"
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#column_alignments Online documentation}
     */
    readonly column_alignments: LuaCustomTable<uint32, Alignment>
    /**
     * Sets both minimal and maximal width to the given value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#width Online documentation}
     */
    set width(value: int32)
    /**
     * Sets both minimal and maximal height to the given value.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#height Online documentation}
     */
    set height(value: int32)
    /**
     * Sets both width and height to the given value. Also accepts an array with two values, setting width to the first and height to the second one.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#size Online documentation}
     */
    set size(value: int32 | SizeArray)
    /**
     * Sets top/right/bottom/left paddings to this value.
     *
     * An array with two values sets top/bottom padding to the first value and left/right padding to the second value. An array with four values sets top, right, bottom, left padding respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#padding Online documentation}
     */
    set padding(value: int32 | StyleValuesArray)
    /**
     * Sets top/right/bottom/left margins to this value.
     *
     * An array with two values sets top/bottom margin to the first value and left/right margin to the second value. An array with four values sets top, right, bottom, left margin respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#margin Online documentation}
     */
    set margin(value: int32 | StyleValuesArray)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaStyle"
  }
  export interface TableStyle extends BaseStyle {
    /**
     * Space between the table cell contents top and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#top_cell_padding Online documentation}
     */
    top_cell_padding: int32
    /**
     * Space between the table cell contents right and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#right_cell_padding Online documentation}
     */
    right_cell_padding: int32
    /**
     * Space between the table cell contents bottom and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#bottom_cell_padding Online documentation}
     */
    bottom_cell_padding: int32
    /**
     * Space between the table cell contents left and border.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#left_cell_padding Online documentation}
     */
    left_cell_padding: int32
    /**
     * Horizontal space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle or LuaHorizontalFlowStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_spacing Online documentation}
     */
    horizontal_spacing: int32
    /**
     * Vertical space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle, LuaVerticalFlowStyle or LuaTabbedPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_spacing Online documentation}
     */
    vertical_spacing: int32
    /**
     * Space between the table cell contents and border. Sets top/right/bottom/left cell paddings to this value.
     *
     * _Can only be used if this is LuaTableStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#cell_padding Online documentation}
     */
    set cell_padding(value: int32)
  }
  export interface LabelStyle extends BaseStyle {
    /**
     * How this GUI element handles rich text.
     *
     * _Can only be used if this is LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#rich_text_setting Online documentation}
     */
    rich_text_setting: defines.rich_text_setting
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#hovered_font_color Online documentation}
     */
    get hovered_font_color(): Color
    set hovered_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#clicked_font_color Online documentation}
     */
    get clicked_font_color(): Color
    set clicked_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle, LuaTabStyle, LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_font_color Online documentation}
     */
    get disabled_font_color(): Color
    set disabled_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#single_line Online documentation}
     */
    single_line: boolean
  }
  export interface TextBoxStyle extends BaseStyle {
    /**
     * How this GUI element handles rich text.
     *
     * _Can only be used if this is LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#rich_text_setting Online documentation}
     */
    rich_text_setting: defines.rich_text_setting
    /**
     * _Can only be used if this is LuaButtonStyle, LuaTabStyle, LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_font_color Online documentation}
     */
    get disabled_font_color(): Color
    set disabled_font_color(value: Color | ColorArray)
  }
  export interface ButtonStyle extends BaseStyle {
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#hovered_font_color Online documentation}
     */
    get hovered_font_color(): Color
    set hovered_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle or LuaLabelStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#clicked_font_color Online documentation}
     */
    get clicked_font_color(): Color
    set clicked_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle, LuaTabStyle, LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_font_color Online documentation}
     */
    get disabled_font_color(): Color
    set disabled_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#pie_progress_color Online documentation}
     */
    get pie_progress_color(): Color
    set pie_progress_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#clicked_vertical_offset Online documentation}
     */
    clicked_vertical_offset: int32
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_font_color Online documentation}
     */
    get selected_font_color(): Color
    set selected_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_hovered_font_color Online documentation}
     */
    get selected_hovered_font_color(): Color
    set selected_hovered_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_clicked_font_color Online documentation}
     */
    get selected_clicked_font_color(): Color
    set selected_clicked_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#strikethrough_color Online documentation}
     */
    get strikethrough_color(): Color
    set strikethrough_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is LuaButtonStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#draw_grayscale_picture Online documentation}
     */
    draw_grayscale_picture: boolean
  }
  export interface TabStyle extends BaseStyle {
    /**
     * _Can only be used if this is LuaButtonStyle, LuaTabStyle, LuaLabelStyle or LuaTextBoxStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_font_color Online documentation}
     */
    get disabled_font_color(): Color
    set disabled_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#badge_font Online documentation}
     */
    badge_font: string
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#badge_horizontal_spacing Online documentation}
     */
    badge_horizontal_spacing: int32
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#default_badge_font_color Online documentation}
     */
    get default_badge_font_color(): Color
    set default_badge_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#selected_badge_font_color Online documentation}
     */
    get selected_badge_font_color(): Color
    set selected_badge_font_color(value: Color | ColorArray)
    /**
     * _Can only be used if this is TabStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#disabled_badge_font_color Online documentation}
     */
    get disabled_badge_font_color(): Color
    set disabled_badge_font_color(value: Color | ColorArray)
  }
  export interface FlowStyle extends BaseStyle {
    /**
     * Horizontal space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle or LuaHorizontalFlowStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_spacing Online documentation}
     */
    horizontal_spacing: int32
    /**
     * Vertical space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle, LuaVerticalFlowStyle or LuaTabbedPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_spacing Online documentation}
     */
    vertical_spacing: int32
  }
  export interface HorizontalFlowStyle extends BaseStyle {
    /**
     * Horizontal space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle or LuaHorizontalFlowStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#horizontal_spacing Online documentation}
     */
    horizontal_spacing: int32
  }
  export interface VerticalFlowStyle extends BaseStyle {
    /**
     * Vertical space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle, LuaVerticalFlowStyle or LuaTabbedPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_spacing Online documentation}
     */
    vertical_spacing: int32
  }
  export interface TabbedPaneStyle extends BaseStyle {
    /**
     * Vertical space between individual cells.
     *
     * _Can only be used if this is LuaTableStyle, LuaFlowStyle, LuaVerticalFlowStyle or LuaTabbedPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#vertical_spacing Online documentation}
     */
    vertical_spacing: int32
  }
  export interface FrameStyle extends BaseStyle {
    /**
     * _Can only be used if this is LuaFrameStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#use_header_filler Online documentation}
     */
    use_header_filler: boolean
  }
  export interface ProgressBarStyle extends BaseStyle {
    /**
     * The thickness of the bar, not the horizontal width.
     *
     * _Can only be used if this is LuaProgressBarStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#bar_width Online documentation}
     */
    bar_width: uint32
    /**
     * _Can only be used if this is LuaProgressBarStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#color Online documentation}
     */
    get color(): Color
    set color(value: Color | ColorArray)
  }
  export interface ScrollPaneStyle extends BaseStyle {
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_top_padding_when_activated Online documentation}
     */
    extra_top_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_bottom_padding_when_activated Online documentation}
     */
    extra_bottom_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_left_padding_when_activated Online documentation}
     */
    extra_left_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_right_padding_when_activated Online documentation}
     */
    extra_right_padding_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_top_margin_when_activated Online documentation}
     */
    extra_top_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_bottom_margin_when_activated Online documentation}
     */
    extra_bottom_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_left_margin_when_activated Online documentation}
     */
    extra_left_margin_when_activated: int32
    /**
     * _Can only be used if this is ScrollPaneStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_right_margin_when_activated Online documentation}
     */
    extra_right_margin_when_activated: int32
    /**
     * Sets `extra_top/right/bottom/left_padding_when_activated` to this value.
     *
     * An array with two values sets top/bottom padding to the first value and left/right padding to the second value. An array with four values sets top, right, bottom, left padding respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_padding_when_activated Online documentation}
     */
    set extra_padding_when_activated(value: int32 | StyleValuesArray)
    /**
     * Sets `extra_top/right/bottom/left_margin_when_activated` to this value.
     *
     * An array with two values sets top/bottom margin to the first value and left/right margin to the second value. An array with four values sets top, right, bottom, left margin respectively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#extra_margin_when_activated Online documentation}
     */
    set extra_margin_when_activated(value: int32 | StyleValuesArray)
  }
  export interface ImageStyle extends BaseStyle {
    /**
     * _Can only be used if this is ImageStyle_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaStyle.html#stretch_image_to_widget_size Online documentation}
     */
    stretch_image_to_widget_size: boolean
  }
  /**
   * Common attributes to all variants of {@link SurfaceCreateEntity}.
   */
  export interface BaseSurfaceCreateEntity {
    /**
     * The entity prototype name to create.
     */
    readonly name: EntityID
    /**
     * Where to create the entity.
     */
    readonly position: MapPosition | MapPositionArray
    /**
     * Desired orientation of the entity after creation.
     */
    readonly direction?: defines.direction
    /**
     * Whether this entity is mirrored. Defaults to `false`.
     */
    readonly mirror?: boolean
    /**
     * Quality of the entity to be created. Defaults to `normal`.
     */
    readonly quality?: QualityID
    /**
     * Force of the entity, default is enemy.
     */
    readonly force?: ForceID
    /**
     * Entity with health for the new entity to target.
     */
    readonly target?: LuaEntity | (MapPosition | MapPositionArray)
    /**
     * Source entity. Used for beams, projectiles, and highlight-boxes.
     */
    readonly source?: LuaEntity | (MapPosition | MapPositionArray)
    /**
     * Cause entity / force. The entity or force that triggered the chain of events that led to this entity being created. Used for beams, projectiles, stickers, etc. so that the damage receiver can know which entity or force to retaliate against. Defaults to the value of `source`.
     */
    readonly cause?: LuaEntity | ForceID
    /**
     * If false the exact position given is used to instead of snapping to the normal entity grid. This only applies if the entity normally snaps to the grid.
     */
    readonly snap_to_grid?: boolean
    /**
     * If true, building will attempt to simulate fast-replace building. Defaults to `false`.
     */
    readonly fast_replace?: boolean
    /**
     * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
     */
    readonly undo_index?: uint32
    /**
     * If given set the last_user to this player. If fast_replace is true simulate fast replace using this player. Also the player whose undo queue this action should be added to.
     */
    readonly player?: PlayerIdentification
    /**
     * If fast_replace is true simulate fast replace using this character.
     */
    readonly character?: LuaEntity
    /**
     * If false while fast_replace is true and player is nil any items from fast-replacing will be deleted instead of dropped on the ground. Defaults to `true`.
     */
    readonly spill?: boolean
    /**
     * If true; {@link defines.events.script_raised_built} will be fired on successful entity creation. Defaults to `false`.
     */
    readonly raise_built?: boolean
    /**
     * If false, the building effect smoke will not be shown around the new entity. Defaults to `true`.
     */
    readonly create_build_effect_smoke?: boolean
    /**
     * If true, entity types that have {@link LuaEntityPrototype#spawn_decorations spawn_decoration} property will apply triggers defined in the property. Defaults to `false`.
     */
    readonly spawn_decorations?: boolean
    /**
     * If true, any characters that are in the way of the entity are teleported out of the way.
     */
    readonly move_stuck_players?: boolean
    /**
     * If provided, the entity will attempt to pull stored values from this item (for example; creating a spidertron from a previously named and mined spidertron)
     */
    readonly item?: LuaItemStack
    /**
     * If true, colliding ghosts and corpses will not be removed by the creation of some entity types. Defaults to `false`.
     */
    readonly preserve_ghosts_and_corpses?: boolean
    /**
     * If true, plants created will register in any in-range agricultural towers.
     */
    readonly register_plant?: boolean
    /**
     * Used by entities with a burner energy source.
     */
    readonly burner_fuel_inventory?: BlueprintInventoryWithFiltersWrite
  }
  /**
   * `"accumulator"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AccumulatorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: AccumulatorBlueprintControlBehaviorWrite
  }
  /**
   * `"agricultural-tower"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AgriculturalTowerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: AgriculturalTowerBlueprintControlBehaviorWrite
  }
  /**
   * `"ammo-turret"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AmmoTurretSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly "priority-list"?: readonly SlotFilter[]
    /**
     * Defaults to `false`.
     */
    readonly "ignore-unprioritised"?: boolean
    readonly control_behavior?: TurretBlueprintControlBehaviorWrite
  }
  /**
   * `"arithmetic-combinator"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ArithmeticCombinatorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly player_description?: string
    readonly control_behavior?: ArithmeticCombinatorBlueprintControlBehaviorWrite
  }
  /**
   * `"artillery-flare"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ArtilleryFlareSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly movement: Vector | VectorTable
    readonly height: float
    readonly vertical_speed: float
    readonly frame_speed: float
  }
  /**
   * `"artillery-projectile"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ArtilleryProjectileSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to 1.
     */
    readonly speed?: double
  }
  /**
   * `"artillery-turret"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ArtilleryTurretSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly artillery_auto_targeting?: boolean
    readonly control_behavior?: ArtilleryTurretBlueprintControlBehaviorWrite
  }
  /**
   * `"artillery-wagon"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ArtilleryWagonSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    /**
     * The orientation of this rolling stock.
     */
    readonly orientation?: RealOrientation
    /**
     * The color of this rolling stock, if it supports colors.
     */
    readonly color?: Color | ColorArray
    readonly copy_color_from_train_stop?: boolean
    readonly artillery_auto_targeting?: boolean
  }
  /**
   * `"assembling-machine"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AssemblingMachineSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly recipe?: string
    readonly recipe_quality?: string
    readonly control_behavior?: AssemblingMachineBlueprintControlBehaviorWrite
  }
  /**
   * `"asteroid"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AsteroidSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly velocity?: Vector | VectorTable
  }
  /**
   * `"asteroid-collector"` variant of {@link SurfaceCreateEntity}.
   */
  export interface AsteroidCollectorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly "result-inventory"?: BlueprintInventory
    readonly "chunk-filter"?: readonly SlotFilter[]
    readonly control_behavior?: AsteroidCollectorBlueprintControlBehaviorWrite
  }
  /**
   * `"beam"` variant of {@link SurfaceCreateEntity}.
   */
  export interface BeamSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Absolute target position that can be used instead of target entity (entity has precedence if both entity and position are defined).
     */
    readonly target_position?: MapPosition | MapPositionArray
    /**
     * Absolute source position that can be used instead of source entity (entity has precedence if both entity and position are defined).
     */
    readonly source_position?: MapPosition | MapPositionArray
    /**
     * If set, beam will be destroyed when distance between source and target is greater than this value.
     */
    readonly max_length?: uint32
    /**
     * If set, beam will be destroyed after this value of ticks.
     */
    readonly duration?: uint32
    /**
     * Source position will be offset by this value when rendering the beam.
     */
    readonly source_offset?: Vector | VectorTable
  }
  /**
   * `"car"` variant of {@link SurfaceCreateEntity}.
   */
  export interface CarSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    readonly trunk_inventory?: BlueprintInventoryWithFiltersWrite
    readonly ammo_inventory?: BlueprintInventoryWithFiltersWrite
    readonly driver_is_main_gunner?: boolean
    readonly selected_gun_index?: ItemStackIndex
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly orientation?: RealOrientation
  }
  /**
   * `"cargo-landing-pad"` variant of {@link SurfaceCreateEntity}.
   */
  export interface CargoLandingPadSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly bar?: uint32
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly control_behavior?: CargoLandingPadBlueprintControlBehavior
  }
  /**
   * `"cargo-wagon"` variant of {@link SurfaceCreateEntity}.
   */
  export interface CargoWagonSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    /**
     * The orientation of this rolling stock.
     */
    readonly orientation?: RealOrientation
    /**
     * The color of this rolling stock, if it supports colors.
     */
    readonly color?: Color | ColorArray
    readonly copy_color_from_train_stop?: boolean
    readonly inventory?: BlueprintInventoryWithFiltersWrite
  }
  /**
   * `"character-corpse"` variant of {@link SurfaceCreateEntity}.
   */
  export interface CharacterCorpseSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly inventory_size?: uint32
    readonly player_index?: PlayerIndex
    readonly color?: Color | ColorArray
  }
  /**
   * `"cliff"` variant of {@link SurfaceCreateEntity}.
   */
  export interface CliffSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * If not specified, `direction` will be used instead.
     */
    readonly cliff_orientation?: CliffOrientation
  }
  /**
   * `"constant-combinator"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ConstantCombinatorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly player_description?: string
    readonly control_behavior?: ConstantCombinatorBlueprintControlBehaviorWrite
  }
  /**
   * `"container"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ContainerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Inventory index where the red limiting bar should be set.
     */
    readonly bar?: uint32
    readonly control_behavior?: ContainerBlueprintControlBehavior
  }
  /**
   * `"decider-combinator"` variant of {@link SurfaceCreateEntity}.
   */
  export interface DeciderCombinatorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly player_description?: string
    readonly control_behavior?: DeciderCombinatorBlueprintControlBehaviorWrite
  }
  /**
   * `"deconstructible-tile-proxy"` variant of {@link SurfaceCreateEntity}.
   */
  export interface DeconstructibleTileProxySurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly proxy_type?: "cover" | "foundation"
  }
  /**
   * `"display-panel"` variant of {@link SurfaceCreateEntity}.
   */
  export interface DisplayPanelSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly text?: LocalisedString
    readonly icon?: SignalIDWrite
    readonly always_show?: boolean
    readonly show_in_chart?: boolean
    readonly control_behavior?: DisplayPanelBlueprintControlBehaviorWrite
  }
  /**
   * `"electric-energy-interface"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ElectricEnergyInterfaceSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly power_production?: double
    readonly power_usage?: double
    readonly buffer_size?: double
  }
  /**
   * `"electric-pole"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ElectricPoleSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * True by default. If set to false, created electric pole will not auto connect to neighbour electric poles.
     */
    readonly auto_connect?: boolean
  }
  /**
   * `"electric-turret"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ElectricTurretSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly "priority-list"?: readonly SlotFilter[]
    /**
     * Defaults to `false`.
     */
    readonly "ignore-unprioritised"?: boolean
    readonly control_behavior?: TurretBlueprintControlBehaviorWrite
  }
  /**
   * `"entity-ghost"` variant of {@link SurfaceCreateEntity}.
   */
  export interface EntityGhostSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The prototype name of the entity contained in the ghost.
     */
    readonly inner_name: string
    /**
     * The {@link LuaEntity#tags LuaEntity::tags} associated with this entity ghost.
     */
    readonly tags?: Tags
  }
  /**
   * `"tile-ghost"` variant of {@link SurfaceCreateEntity}.
   */
  export interface TileGhostSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The prototype name of the tile contained in the ghost.
     */
    readonly inner_name: string
  }
  /**
   * `"fire"` variant of {@link SurfaceCreateEntity}.
   */
  export interface FireSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * With how many small flames should the fire on ground be created. Defaults to the initial flame count of the prototype.
     */
    readonly initial_ground_flame_count?: uint8
  }
  /**
   * `"fluid-turret"` variant of {@link SurfaceCreateEntity}.
   */
  export interface FluidTurretSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly "priority-list"?: readonly SlotFilter[]
    /**
     * Defaults to `false`.
     */
    readonly "ignore-unprioritised"?: boolean
    readonly control_behavior?: TurretBlueprintControlBehaviorWrite
  }
  /**
   * `"fluid-wagon"` variant of {@link SurfaceCreateEntity}.
   */
  export interface FluidWagonSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    /**
     * The orientation of this rolling stock.
     */
    readonly orientation?: RealOrientation
    /**
     * The color of this rolling stock, if it supports colors.
     */
    readonly color?: Color | ColorArray
    readonly copy_color_from_train_stop?: boolean
  }
  /**
   * `"furnace"` variant of {@link SurfaceCreateEntity}.
   */
  export interface FurnaceSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: FurnaceBlueprintControlBehaviorWrite
  }
  /**
   * `"highlight-box"` variant of {@link SurfaceCreateEntity}.
   */
  export interface HighlightBoxSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The bounding box defining the highlight box using absolute map coordinates. If specified, the general `position` parameter still needs to be present, but will be ignored. If not specified, the game falls back to the `source` parameter first, then the `target` parameter second. One of these three parameters need to be specified.
     */
    readonly bounding_box?: BoundingBoxWrite | BoundingBoxArray
    /**
     * Specifies the graphical appearance (color) of the highlight box. Defaults to `"electricity"`.
     */
    readonly box_type?: CursorBoxRenderType
    /**
     * The player to render the highlight box for. If not provided, it will be rendered for all players.
     */
    readonly render_player_index?: uint32
    /**
     * The blink interval for this highlight box. Makes it be shown every `blink_interval` ticks. Defaults to `0` (constantly shown).
     */
    readonly blink_interval?: uint32
    /**
     * The amount of time in ticks that the highlight box will exist for. Defaults to existing forever.
     */
    readonly time_to_live?: uint32
  }
  /**
   * `"infinity-cargo-wagon"` variant of {@link SurfaceCreateEntity}.
   */
  export interface InfinityCargoWagonSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    /**
     * The orientation of this rolling stock.
     */
    readonly orientation?: RealOrientation
    /**
     * The color of this rolling stock, if it supports colors.
     */
    readonly color?: Color | ColorArray
    readonly copy_color_from_train_stop?: boolean
    readonly inventory?: BlueprintInventoryWithFiltersWrite
    readonly infinity_settings?: BlueprintInfinityInventorySettingsWrite
  }
  /**
   * `"infinity-container"` variant of {@link SurfaceCreateEntity}.
   */
  export interface InfinityContainerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly bar?: uint32
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly infinity_settings?: BlueprintInfinityInventorySettingsWrite
    readonly control_behavior?: LogisticContainerBlueprintControlBehaviorWrite
  }
  /**
   * `"infinity-pipe"` variant of {@link SurfaceCreateEntity}.
   */
  export interface InfinityPipeSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly infinity_settings?: InfinityPipeFilter
  }
  /**
   * `"inserter"` variant of {@link SurfaceCreateEntity}.
   */
  export interface InserterSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly filters?: readonly BlueprintItemFilterWrite[]
    readonly filter_mode?: "blacklist" | "whitelist"
    /**
     * Defaults to `false`.
     */
    readonly use_filters?: boolean
    /**
     * Used only if {@link import("factorio:prototype").InserterPrototype#allow_custom_vectors InserterPrototype::allow_custom_vectors} is true.
     */
    readonly drop_position?: Vector | VectorTable
    /**
     * Used only if {@link import("factorio:prototype").InserterPrototype#allow_custom_vectors InserterPrototype::allow_custom_vectors} is true.
     */
    readonly pickup_position?: Vector | VectorTable
    readonly override_stack_size?: uint8
    readonly spoil_priority?: "spoiled-first" | "fresh-first"
    readonly control_behavior?: InserterBlueprintControlBehaviorWrite
  }
  /**
   * `"item-entity"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ItemEntitySurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The stack of items to create. Either the name of an item, which will create a full stack, or a detailed item stack definition.
     */
    readonly stack: string | ItemStackDefinition
  }
  /**
   * `"item-request-proxy"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ItemRequestProxySurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The target items are to be delivered to.
     */
    readonly target: LuaEntity
    /**
     * The stacks of items to be delivered to target entity from logistic network.
     */
    readonly modules: readonly BlueprintInsertPlan[]
    /**
     * Specification of items to be removed from the target entity by the logistic network.
     */
    readonly removal_plan?: readonly BlueprintInsertPlan[]
  }
  /**
   * `"lamp"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LampSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to white.
     */
    readonly color?: Color | ColorArray
    /**
     * Defaults to false.
     */
    readonly always_on?: boolean
    readonly control_behavior?: LampBlueprintControlBehaviorWrite
  }
  /**
   * `"lane-splitter"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LaneSplitterSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly filter?: ItemFilterWrite
    readonly input_priority?: SplitterPriority
    readonly output_priority?: SplitterPriority
  }
  /**
   * `"linked-belt"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LinkedBeltSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly type?: BeltConnectionType
  }
  /**
   * `"linked-container"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LinkedContainerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly link_id?: uint32
  }
  /**
   * `"loader"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LoaderSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to `"input"`.
     */
    readonly type?: BeltConnectionType
    readonly filters?: readonly SlotFilter[]
    readonly filter_mode?: PrototypeFilterMode
    readonly belt_stack_size_override?: uint8
    readonly control_behavior?: LoaderBlueprintControlBehaviorWrite
  }
  /**
   * `"loader-1x1"` variant of {@link SurfaceCreateEntity}.
   */
  export interface Loader1x1SurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to `"input"`.
     */
    readonly type?: BeltConnectionType
    readonly filters?: readonly SlotFilter[]
    readonly filter_mode?: PrototypeFilterMode
    readonly belt_stack_size_override?: uint8
    readonly control_behavior?: LoaderBlueprintControlBehaviorWrite
  }
  /**
   * `"locomotive"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LocomotiveSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    /**
     * The orientation of this rolling stock.
     */
    readonly orientation?: RealOrientation
    /**
     * The color of this rolling stock, if it supports colors.
     */
    readonly color?: Color | ColorArray
    readonly copy_color_from_train_stop?: boolean
    /**
     * Whether the locomotive should snap to an adjacent train stop. Defaults to true.
     */
    readonly snap_to_train_stop?: boolean
  }
  /**
   * `"logistic-container"` variant of {@link SurfaceCreateEntity}.
   */
  export interface LogisticContainerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly bar?: uint32
    readonly request_filters?: readonly SlotFilter[]
    readonly control_behavior?: LogisticContainerBlueprintControlBehaviorWrite
  }
  /**
   * `"mining-drill"` variant of {@link SurfaceCreateEntity}.
   */
  export interface MiningDrillSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly filter?: BlueprintMiningDrillFilter
    readonly control_behavior?: MiningDrillBlueprintControlBehaviorWrite
  }
  /**
   * `"particle"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ParticleSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly movement: Vector | VectorTable
    readonly height: float
    readonly vertical_speed: float
    readonly frame_speed: float
  }
  /**
   * `"plant"` variant of {@link SurfaceCreateEntity}.
   */
  export interface PlantSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * The tick the plant will be fully grown. If not specified, the plants normal growth time is used.
     */
    readonly tick_grown?: uint32
  }
  /**
   * `"power-switch"` variant of {@link SurfaceCreateEntity}.
   */
  export interface PowerSwitchSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly switch_state?: boolean
    readonly control_behavior?: PowerSwitchBlueprintControlBehaviorWrite
  }
  /**
   * `"programmable-speaker"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ProgrammableSpeakerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly parameters?: ProgrammableSpeakerParametersWrite
    readonly alert_parameters?: ProgrammableSpeakerAlertParametersWrite
    readonly control_behavior?: ProgrammableSpeakerBlueprintControlBehaviorWrite
  }
  /**
   * `"projectile"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ProjectileSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to 0.
     */
    readonly speed?: double
    /**
     * Defaults to 1000.
     */
    readonly max_range?: double
    readonly base_damage_modifiers?: TriggerModifierData
    readonly bonus_damage_modifiers?: TriggerModifierData
  }
  /**
   * `"proxy-container"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ProxyContainerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: ProxyContainerBlueprintControlBehavior
  }
  /**
   * `"pump"` variant of {@link SurfaceCreateEntity}.
   */
  export interface PumpSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly fluid_filter?: string
    readonly control_behavior?: PumpBlueprintControlBehaviorWrite
  }
  /**
   * `"rail-chain-signal"` variant of {@link SurfaceCreateEntity}.
   */
  export interface RailChainSignalSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to {@link defines.rail_layer.ground}.
     */
    readonly rail_layer?: defines.rail_layer
    readonly control_behavior?: RailSignalBaseBlueprintControlBehaviorWrite
  }
  /**
   * `"rail-signal"` variant of {@link SurfaceCreateEntity}.
   */
  export interface RailSignalSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to {@link defines.rail_layer.ground}.
     */
    readonly rail_layer?: defines.rail_layer
    readonly control_behavior?: RailSignalBaseBlueprintControlBehaviorWrite
  }
  /**
   * `"reactor"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ReactorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: ReactorBlueprintControlBehaviorWrite
  }
  /**
   * `"resource"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ResourceSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly amount?: uint32
    /**
     * If colliding trees are removed normally for this resource entity based off the prototype tree removal values. Default is true.
     */
    readonly enable_tree_removal?: boolean
    /**
     * If colliding cliffs are removed. Default is true.
     */
    readonly enable_cliff_removal?: boolean
    /**
     * If true, the resource entity will be placed to center of a tile as map generator would place it, otherwise standard non-resource grid alignment rules will apply. Default is true.
     */
    readonly snap_to_tile_center?: boolean
  }
  /**
   * `"roboport"` variant of {@link SurfaceCreateEntity}.
   */
  export interface RoboportSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly control_behavior?: RoboportBlueprintControlBehaviorWrite
  }
  /**
   * `"rocket-silo"` variant of {@link SurfaceCreateEntity}.
   */
  export interface RocketSiloSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly recipe?: string
    readonly recipe_quality?: string
    readonly use_transitional_requests?: boolean
    readonly launch_to_orbit_automatically?: boolean
    readonly control_behavior?: RocketSiloBlueprintControlBehavior
  }
  /**
   * `"selector-combinator"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SelectorCombinatorSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly player_description?: string
    readonly control_behavior?: SelectorCombinatorParametersWrite
  }
  /**
   * `"simple-entity-with-force"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SimpleEntityWithForceSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly render_player_index?: uint32
    readonly color?: Color | ColorArray
    readonly variation?: uint8
  }
  /**
   * `"simple-entity-with-owner"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SimpleEntityWithOwnerSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly render_player_index?: uint32
    readonly color?: Color | ColorArray
    readonly variation?: uint8
  }
  /**
   * `"space-platform-hub"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SpacePlatformHubSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly bar?: ItemStackIndex
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly request_missing_construction_materials?: boolean
    readonly control_behavior?: SpacePlatformHubBlueprintControlBehaviorWrite
  }
  /**
   * `"speech-bubble"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SpeechBubbleSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly text: LocalisedString
    readonly lifetime?: uint32
  }
  /**
   * `"splitter"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SplitterSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly filter?: ItemFilterWrite
    readonly input_priority?: SplitterPriority
    readonly output_priority?: SplitterPriority
    readonly control_behavior?: SplitterBlueprintControlBehaviorWrite
  }
  /**
   * `"spider-vehicle"` variant of {@link SurfaceCreateEntity}.
   */
  export interface SpiderVehicleSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly enable_logistics_while_moving?: boolean
    readonly grid?: readonly BlueprintEquipmentWrite[]
    readonly trunk_inventory?: BlueprintInventoryWithFiltersWrite
    readonly ammo_inventory?: BlueprintInventoryWithFiltersWrite
    readonly driver_is_main_gunner?: boolean
    readonly automatic_targeting_parameters?: VehicleAutomaticTargetingParameters
    readonly selected_gun_index?: ItemStackIndex
    readonly request_filters?: BlueprintLogisticSectionsWrite
    readonly color?: Color | ColorArray
    readonly label?: string
  }
  /**
   * `"storage-tank"` variant of {@link SurfaceCreateEntity}.
   */
  export interface StorageTankSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: StorageTankBlueprintControlBehavior
  }
  /**
   * `"stream"` variant of {@link SurfaceCreateEntity}.
   */
  export interface StreamSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Absolute target position that can be used instead of target entity (entity has precedence if both entity and position are defined).
     */
    readonly target_position?: MapPosition | MapPositionArray
    /**
     * Absolute source position that can be used instead of source entity (entity has precedence if both entity and position are defined).
     */
    readonly source_position?: MapPosition | MapPositionArray
  }
  /**
   * `"train-stop"` variant of {@link SurfaceCreateEntity}.
   */
  export interface TrainStopSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly color?: Color | ColorArray
    readonly station?: string
    readonly manual_trains_limit?: uint32
    readonly priority?: uint8
    readonly control_behavior?: TrainStopBlueprintControlBehaviorWrite
  }
  /**
   * `"transport-belt"` variant of {@link SurfaceCreateEntity}.
   */
  export interface TransportBeltSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: TransportBeltBlueprintControlBehaviorWrite
  }
  /**
   * `"turret"` variant of {@link SurfaceCreateEntity}.
   */
  export interface TurretSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly "priority-list"?: readonly SlotFilter[]
    /**
     * Defaults to `false`.
     */
    readonly "ignore-unprioritised"?: boolean
    readonly control_behavior?: TurretBlueprintControlBehaviorWrite
  }
  /**
   * `"underground-belt"` variant of {@link SurfaceCreateEntity}.
   */
  export interface UndergroundBeltSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    /**
     * Defaults to `"input"`.
     */
    readonly type?: BeltConnectionType
  }
  /**
   * `"valve"` variant of {@link SurfaceCreateEntity}.
   */
  export interface ValveSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly valve_threshold_override?: float
  }
  /**
   * `"wall"` variant of {@link SurfaceCreateEntity}.
   */
  export interface WallSurfaceCreateEntity extends BaseSurfaceCreateEntity {
    readonly control_behavior?: WallBlueprintControlBehaviorWrite
  }
  export type SurfaceCreateEntity =
    | AccumulatorSurfaceCreateEntity
    | AgriculturalTowerSurfaceCreateEntity
    | AmmoTurretSurfaceCreateEntity
    | ArithmeticCombinatorSurfaceCreateEntity
    | ArtilleryFlareSurfaceCreateEntity
    | ArtilleryProjectileSurfaceCreateEntity
    | ArtilleryTurretSurfaceCreateEntity
    | ArtilleryWagonSurfaceCreateEntity
    | AssemblingMachineSurfaceCreateEntity
    | AsteroidSurfaceCreateEntity
    | AsteroidCollectorSurfaceCreateEntity
    | BeamSurfaceCreateEntity
    | CarSurfaceCreateEntity
    | CargoLandingPadSurfaceCreateEntity
    | CargoWagonSurfaceCreateEntity
    | CharacterCorpseSurfaceCreateEntity
    | CliffSurfaceCreateEntity
    | ConstantCombinatorSurfaceCreateEntity
    | ContainerSurfaceCreateEntity
    | DeciderCombinatorSurfaceCreateEntity
    | DeconstructibleTileProxySurfaceCreateEntity
    | DisplayPanelSurfaceCreateEntity
    | ElectricEnergyInterfaceSurfaceCreateEntity
    | ElectricPoleSurfaceCreateEntity
    | ElectricTurretSurfaceCreateEntity
    | EntityGhostSurfaceCreateEntity
    | TileGhostSurfaceCreateEntity
    | FireSurfaceCreateEntity
    | FluidTurretSurfaceCreateEntity
    | FluidWagonSurfaceCreateEntity
    | FurnaceSurfaceCreateEntity
    | HighlightBoxSurfaceCreateEntity
    | InfinityCargoWagonSurfaceCreateEntity
    | InfinityContainerSurfaceCreateEntity
    | InfinityPipeSurfaceCreateEntity
    | InserterSurfaceCreateEntity
    | ItemEntitySurfaceCreateEntity
    | ItemRequestProxySurfaceCreateEntity
    | LampSurfaceCreateEntity
    | LaneSplitterSurfaceCreateEntity
    | LinkedBeltSurfaceCreateEntity
    | LinkedContainerSurfaceCreateEntity
    | LoaderSurfaceCreateEntity
    | Loader1x1SurfaceCreateEntity
    | LocomotiveSurfaceCreateEntity
    | LogisticContainerSurfaceCreateEntity
    | MiningDrillSurfaceCreateEntity
    | ParticleSurfaceCreateEntity
    | PlantSurfaceCreateEntity
    | PowerSwitchSurfaceCreateEntity
    | ProgrammableSpeakerSurfaceCreateEntity
    | ProjectileSurfaceCreateEntity
    | ProxyContainerSurfaceCreateEntity
    | PumpSurfaceCreateEntity
    | RailChainSignalSurfaceCreateEntity
    | RailSignalSurfaceCreateEntity
    | ReactorSurfaceCreateEntity
    | ResourceSurfaceCreateEntity
    | RoboportSurfaceCreateEntity
    | RocketSiloSurfaceCreateEntity
    | SelectorCombinatorSurfaceCreateEntity
    | SimpleEntityWithForceSurfaceCreateEntity
    | SimpleEntityWithOwnerSurfaceCreateEntity
    | SpacePlatformHubSurfaceCreateEntity
    | SpeechBubbleSurfaceCreateEntity
    | SplitterSurfaceCreateEntity
    | SpiderVehicleSurfaceCreateEntity
    | StorageTankSurfaceCreateEntity
    | StreamSurfaceCreateEntity
    | TrainStopSurfaceCreateEntity
    | TransportBeltSurfaceCreateEntity
    | TurretSurfaceCreateEntity
    | UndergroundBeltSurfaceCreateEntity
    | ValveSurfaceCreateEntity
    | WallSurfaceCreateEntity
  /**
   * Common attributes to all variants of {@link SurfaceCreateSegmentedUnit}.
   */
  export interface BaseSurfaceCreateSegmentedUnit {
    /**
     * The segmented-unit prototype name to create. Must be of type `"segmented-unit"`.
     */
    readonly name: EntityID
    /**
     * Quality of the entity to be created. Defaults to `normal`.
     */
    readonly quality?: QualityID
    /**
     * Force of the segmented unit. Defaults to `enemy`.
     */
    readonly force?: ForceID
    /**
     * The territory that the segmented unit is assigned to. If `nil`, the segmented unit will patrol around its spawn location. Must be located on this same surface.
     */
    readonly territory?: LuaTerritory
  }
  /**
   * `"position-and-direction"` variant of {@link SurfaceCreateSegmentedUnit}.
   */
  export interface PositionAndDirectionSurfaceCreateSegmentedUnit extends BaseSurfaceCreateSegmentedUnit {
    /**
     * The head position.
     */
    readonly position: MapPosition | MapPositionArray
    /**
     * The initial orientation of the head. Defaults to `defines.direction.north`.
     */
    readonly direction?: defines.direction
    /**
     * If `true`, will create the segmented unit so that the entire body is stretches in a straight line behind the head. If `false`, then only the head segment will be created and the remainder of the body segments will be created over time as the head moves forward. Defaults to `false`.
     */
    readonly extended?: boolean
  }
  /**
   * `"body-nodes"` variant of {@link SurfaceCreateSegmentedUnit}.
   */
  export interface BodyNodesSurfaceCreateSegmentedUnit extends BaseSurfaceCreateSegmentedUnit {
    /**
     * The body nodes that define the shape of the body. The array must contain at least one value and should have no more than {@link SegmentEngineSpecification#max_body_nodes SegmentEngineSpecification::max_body_nodes}. The nodes should be about 1 tile apart from each other, but it is not strictly required.
     */
    readonly body_nodes: readonly (MapPosition | MapPositionArray)[]
  }
  export type SurfaceCreateSegmentedUnit =
    | PositionAndDirectionSurfaceCreateSegmentedUnit
    | BodyNodesSurfaceCreateSegmentedUnit
  /**
   * A "domain" of the world. Surfaces can only be created and deleted through the API. Surfaces are uniquely identified by their name. Every game contains at least the surface "nauvis".
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html Online documentation}
   * @noSelf
   */
  export interface LuaSurface {
    /**
     * Get the pollution for a given position.
     *
     * Pollution is stored per chunk, so this will return the same value for all positions in one chunk.
     * @param position The position to poll the chunk's pollution
     * @example
     * game.surfaces[1].get_pollution({1,2})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_pollution Online documentation}
     */
    get_pollution(position: MapPosition | MapPositionArray): double
    /**
     * Set the pollution for a given position.
     *
     * Pollution changes by this are not included in pollution statistics and do not affect evolution factors (as opposed to {@link LuaSurface#pollute LuaSurface::pollute}).
     * @param position The position to set the chunk's pollution
     * @param amount New amount of pollution to be set on the chunk. Must be >= 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_pollution Online documentation}
     */
    set_pollution(position: MapPosition | MapPositionArray, amount: double): void
    /**
     * Check for collisions with terrain or other entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#can_place_entity Online documentation}
     */
    can_place_entity(params: {
      /**
       * Name of the entity prototype to check.
       */
      readonly name: EntityID
      /**
       * Where the entity would be placed.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Direction of the placed entity. Defaults to `north`.
       */
      readonly direction?: defines.direction
      /**
       * The force that would place the entity. Defaults to the `"neutral"` force.
       */
      readonly force?: ForceID
      /**
       * Which type of check should be carried out. Defaults to `ghost_revive`.
       */
      readonly build_check_type?: defines.build_check_type
      /**
       * If `true`, entities that can be marked for deconstruction are ignored. Only used if `build_check_type` is either `manual_ghost`, `script_ghost` or `blueprint_ghost`. Defaults to `false`.
       */
      readonly forced?: boolean
      /**
       * The prototype name of the entity contained in the ghost. Only used if `name` is `entity-ghost`.
       */
      readonly inner_name?: string
    }): boolean
    /**
     * If there exists an entity at the given location that can be fast-replaced with the given entity parameters.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#can_fast_replace Online documentation}
     */
    can_fast_replace(params: {
      /**
       * Name of the entity to check.
       */
      readonly name: EntityID
      /**
       * Where the entity would be placed.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Direction the entity would be placed. Defaults to `north`.
       */
      readonly direction?: defines.direction
      /**
       * The force that would place the entity. Defaults to the `"neutral"` force.
       */
      readonly force?: ForceID
    }): boolean
    /**
     * Find an entity of the given name at the given position. This checks both the exact position and the bounding box of the entity.
     * @param entity Name of the entity to look for.
     * @param position Coordinates to look at.
     * @returns `nil` if no such entity is found.
     * @example
     * game.player.selected.surface.find_entity('filter-inserter', {0,0})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_entity Online documentation}
     */
    find_entity(entity: EntityWithQualityID, position: MapPosition | MapPositionArray): LuaEntity | nil
    /**
     * Find entities in a given area.
     *
     * If no area is given all entities on the surface are returned.
     * @example
     * -- Will evaluate to a list of all entities within given area.
     * game.surfaces["nauvis"].find_entities({{-10, -10}, {10, 10}})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_entities Online documentation}
     */
    find_entities(area?: BoundingBoxWrite | BoundingBoxArray): LuaEntity[]
    /**
     * Find all entities of the given type or name in the given area.
     *
     * If no filters (`name`, `type`, `force`, etc.) are given, this returns all entities in the search area. If multiple filters are specified, only entities matching all given filters are returned.
     *
     * - If no `area` or `position` are given, the entire surface is searched.
     *
     * - If `position` is given, this returns the entities colliding with that position (i.e the given position is within the entity's collision box).
     *
     * - If `position` and `radius` are given, this returns the entities within the radius of the position. Looks for the center of entities.
     *
     * - If `area` is specified, this returns the entities colliding with that area.
     * @example
     * game.surfaces[1].find_entities_filtered{area = {{-10, -10}, {10, 10}}, type = "resource"} -- gets all resources in the rectangle
     * game.surfaces[1].find_entities_filtered{area = {{-10, -10}, {10, 10}}, name = "iron-ore"} -- gets all iron ores in the rectangle
     * game.surfaces[1].find_entities_filtered{area = {{-10, -10}, {10, 10}}, name = {"iron-ore", "copper-ore"}} -- gets all iron ore and copper ore in the rectangle
     * game.surfaces[1].find_entities_filtered{area = {{-10, -10}, {10, 10}}, force = "player"}  -- gets player owned entities in the rectangle
     * game.surfaces[1].find_entities_filtered{area = {{-10, -10}, {10, 10}}, limit = 5}  -- gets the first 5 entities in the rectangle
     * game.surfaces[1].find_entities_filtered{position = {0, 0}, radius = 10}  -- gets all entities within 10 tiles of the position [0,0].
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_entities_filtered Online documentation}
     */
    find_entities_filtered(filter: EntitySearchFilters): LuaEntity[]
    /**
     * Find all tiles of the given name in the given area.
     *
     * If no filters are given, this returns all tiles in the search area.
     *
     * If no `area` or `position` and `radius` is given, the entire surface is searched. If `position` and `radius` are given, only tiles within the radius of the position are included.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_tiles_filtered Online documentation}
     */
    find_tiles_filtered(filter: TileSearchFilters): LuaTile[]
    /**
     * Count entities of given type or name in a given area. Works just like {@link LuaSurface#find_entities_filtered LuaSurface::find_entities_filtered}, except this only returns the count. As it doesn't construct all the wrapper objects, this is more efficient if one is only interested in the number of entities.
     *
     * - If no `area` or `position` are given, the entire surface is searched.
     *
     * - If `position` is given, this returns the entities colliding with that position (i.e the given position is within the entity's collision box).
     *
     * - If `position` and `radius` are given, this returns entities in the radius of the position.
     *
     * - If `area` is specified, this returns entities colliding with that area.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#count_entities_filtered Online documentation}
     */
    count_entities_filtered(filter: EntitySearchFilters): uint32
    /**
     * Count tiles of a given name in a given area. Works just like {@link LuaSurface#find_tiles_filtered LuaSurface::find_tiles_filtered}, except this only returns the count. As it doesn't construct all the wrapper objects, this is more efficient if one is only interested in the number of tiles.
     *
     * If no `area` or `position` and `radius` is given, the entire surface is searched. If `position` and `radius` are given, only tiles within the radius of the position are included.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#count_tiles_filtered Online documentation}
     */
    count_tiles_filtered(filter: TileSearchFilters): uint32
    /**
     * Find a non-colliding position within a given radius.
     *
     * Special care needs to be taken when using a radius of `0`. The game will not stop searching until it finds a suitable position, so it is important to make sure such a position exists. One particular case where it would not be able to find a solution is running it before any chunks have been generated.
     * @param name Prototype name of the entity to find a position for. (The bounding box for the collision checking is taken from this prototype.)
     * @param center Center of the search area.
     * @param radius Max distance from `center` to search in. A radius of `0` means an infinitely-large search area.
     * @param precision The step length from the given position as it searches, in tiles. Minimum value is `0.01`.
     * @param force_to_tile_center Will only check tile centers. This can be useful when your intent is to place a building at the resulting position, as they must generally be placed at tile centers. Defaults to `false`.
     * @returns The non-colliding position. May be `nil` if no suitable position was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_non_colliding_position Online documentation}
     */
    find_non_colliding_position(
      name: EntityID,
      center: MapPosition | MapPositionArray,
      radius: double,
      precision: double,
      force_to_tile_center?: boolean,
    ): MapPosition | nil
    /**
     * Find a non-colliding position within a given rectangle.
     * @param name Prototype name of the entity to find a position for. (The bounding box for the collision checking is taken from this prototype.)
     * @param search_space The rectangle to search inside.
     * @param precision The step length from the given position as it searches, in tiles. Minimum value is 0.01.
     * @param force_to_tile_center Will only check tile centers. This can be useful when your intent is to place a building at the resulting position, as they must generally be placed at tile centers. Defaults to `false`.
     * @returns The non-colliding position. May be `nil` if no suitable position was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_non_colliding_position_in_box Online documentation}
     */
    find_non_colliding_position_in_box(
      name: EntityID,
      search_space: BoundingBoxWrite | BoundingBoxArray,
      precision: double,
      force_to_tile_center?: boolean,
    ): MapPosition | nil
    /**
     * Spill items on the ground centered at a given location.
     * @returns The created item-on-ground entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#spill_item_stack Online documentation}
     */
    spill_item_stack(params: {
      /**
       * Center of the spillage
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Stack of items to spill
       */
      readonly stack: ItemStackIdentification
      /**
       * When true, each created item will be flagged with the {@link LuaEntity#to_be_looted LuaEntity::to_be_looted} flag. Defaults to `false`.
       */
      readonly enable_looted?: boolean
      /**
       * When provided (and not `nil`) the items will be marked for deconstruction by this force.
       */
      readonly force?: ForceID
      /**
       * Whether items can be spilled onto belts. Defaults to `true`.
       */
      readonly allow_belts?: boolean
      /**
       * Max radius from the specified `position` to spill items.
       */
      readonly max_radius?: double
      /**
       * Allow spilling items at `position` if no non-colliding position is found. Note: Setting to false might cause some items not to be spilled. Defaults to `true`.
       */
      readonly use_start_position_on_failure?: boolean
      /**
       * If item on ground should be made out of an entire provided stack. Defaults to `false`.
       */
      readonly drop_full_stack?: boolean
    }): LuaEntity[]
    /**
     * Spill inventory on the ground centered at a given location.
     * @returns The created item-on-ground entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#spill_inventory Online documentation}
     */
    spill_inventory(params: {
      /**
       * Center of the spillage
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Inventory to spill
       */
      readonly inventory: LuaInventory
      /**
       * When true, each created item will be flagged with the {@link LuaEntity#to_be_looted LuaEntity::to_be_looted} flag. Defaults to `false`.
       */
      readonly enable_looted?: boolean
      /**
       * When provided (and not `nil`) the items will be marked for deconstruction by this force.
       */
      readonly force?: ForceID
      /**
       * Whether items can be spilled onto belts. Defaults to `true`.
       */
      readonly allow_belts?: boolean
      /**
       * Max radius from the specified `position` to spill items.
       */
      readonly max_radius?: double
      /**
       * Allow spilling items at `position` if no non-colliding position is found. Note: Setting to false might cause some items not to be spilled. Defaults to `true`.
       */
      readonly use_start_position_on_failure?: boolean
      /**
       * If item on ground should be made out of an entire provided stack. Defaults to `false`.
       */
      readonly drop_full_stack?: boolean
    }): LuaEntity[]
    /**
     * Find enemy units (entities with type "unit") of a given force within an area.
     *
     * This is more efficient than {@link LuaSurface#find_entities LuaSurface::find_entities}.
     * @param center Center of the search area
     * @param radius Radius of the circular search area
     * @param force Force to find enemies of. If not given, uses the player force.
     * @example
     * -- Find all units who would be interested to attack the player, within 100-tile area.
     * local enemies = game.player.surface.find_enemy_units(game.player.position, 100)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_enemy_units Online documentation}
     */
    find_enemy_units(center: MapPosition | MapPositionArray, radius: double, force?: ForceID): LuaEntity[]
    /**
     * Find units (entities with type "unit") of a given force and force condition within a given area.
     *
     * This is more efficient than {@link LuaSurface#find_entities LuaSurface::find_entities}.
     * @example
     * -- Find friendly units to "player" force
     * local friendly_units = game.player.surface.find_units({area = {{-10, -10},{10, 10}}, force = "player", condition = "friend")
     * @example
     * -- Find units of "player" force
     * local units = game.player.surface.find_units({area = {{-10, -10},{10, 10}}, force = "player", condition = "same"})
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_units Online documentation}
     */
    find_units(params: {
      /**
       * Box to find units within.
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * Force performing the search.
       */
      readonly force: ForceID
      /**
       * Only forces which meet the condition will be included in the search.
       */
      readonly condition: ForceCondition
    }): LuaEntity[]
    /**
     * Find the enemy military target ({@linkplain https://wiki.factorio.com/Military_units_and_structures military entity}) closest to the given position.
     * @returns The nearest enemy military target or `nil` if no enemy could be found within the given area.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_nearest_enemy Online documentation}
     */
    find_nearest_enemy(params: {
      /**
       * Center of the search area.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Radius of the circular search area.
       */
      readonly max_distance: double
      /**
       * The force the result will be an enemy of. Uses the player force if not specified.
       */
      readonly force?: ForceID
    }): LuaEntity | nil
    /**
     * Find the enemy entity-with-owner closest to the given position.
     * @returns The nearest enemy entity-with-owner or `nil` if no enemy could be found within the given area.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_nearest_enemy_entity_with_owner Online documentation}
     */
    find_nearest_enemy_entity_with_owner(params: {
      /**
       * Center of the search area.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Radius of the circular search area.
       */
      readonly max_distance: double
      /**
       * The force the result will be an enemy of. Uses the player force if not specified.
       */
      readonly force?: ForceID
    }): LuaEntity | nil
    /**
     * Give a command to multiple units. This will automatically select suitable units for the task.
     * @returns Number of units actually sent. May be less than `count` if not enough units were available.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_multi_command Online documentation}
     */
    set_multi_command(params: {
      readonly command: CommandWrite
      /**
       * Number of units to give the command to.
       */
      readonly unit_count: uint32
      /**
       * Force of the units this command is to be given to. If not specified, uses the enemy force.
       */
      readonly force?: ForceID
      /**
       * Radius to search for units. The search area is centered on the destination of the command. If not specified uses default value of 150.
       */
      readonly unit_search_distance?: uint32
    }): uint32
    /**
     * Create an entity on this surface.
     *
     * Base attributes: {@link BaseSurfaceCreateEntity}
     *
     * Other attributes may be specified depending on the type of entity:
     * - `"accumulator"`: {@link AccumulatorSurfaceCreateEntity}
     * - `"agricultural-tower"`: {@link AgriculturalTowerSurfaceCreateEntity}
     * - `"ammo-turret"`: {@link AmmoTurretSurfaceCreateEntity}
     * - `"arithmetic-combinator"`: {@link ArithmeticCombinatorSurfaceCreateEntity}
     * - `"artillery-flare"`: {@link ArtilleryFlareSurfaceCreateEntity}
     * - `"artillery-projectile"`: {@link ArtilleryProjectileSurfaceCreateEntity}
     * - `"artillery-turret"`: {@link ArtilleryTurretSurfaceCreateEntity}
     * - `"artillery-wagon"`: {@link ArtilleryWagonSurfaceCreateEntity}
     * - `"assembling-machine"`: {@link AssemblingMachineSurfaceCreateEntity}
     * - `"asteroid"`: {@link AsteroidSurfaceCreateEntity}
     * - `"asteroid-collector"`: {@link AsteroidCollectorSurfaceCreateEntity}
     * - `"beam"`: {@link BeamSurfaceCreateEntity}
     * - `"car"`: {@link CarSurfaceCreateEntity}
     * - `"cargo-landing-pad"`: {@link CargoLandingPadSurfaceCreateEntity}
     * - `"cargo-wagon"`: {@link CargoWagonSurfaceCreateEntity}
     * - `"character-corpse"`: {@link CharacterCorpseSurfaceCreateEntity}
     * - `"cliff"`: {@link CliffSurfaceCreateEntity}
     * - `"constant-combinator"`: {@link ConstantCombinatorSurfaceCreateEntity}
     * - `"container"`: {@link ContainerSurfaceCreateEntity}
     * - `"decider-combinator"`: {@link DeciderCombinatorSurfaceCreateEntity}
     * - `"deconstructible-tile-proxy"`: {@link DeconstructibleTileProxySurfaceCreateEntity}
     * - `"display-panel"`: {@link DisplayPanelSurfaceCreateEntity}
     * - `"electric-energy-interface"`: {@link ElectricEnergyInterfaceSurfaceCreateEntity}
     * - `"electric-pole"`: {@link ElectricPoleSurfaceCreateEntity}
     * - `"electric-turret"`: {@link ElectricTurretSurfaceCreateEntity}
     * - `"entity-ghost"`: {@link EntityGhostSurfaceCreateEntity}
     * - `"tile-ghost"`: {@link TileGhostSurfaceCreateEntity}
     * - `"fire"`: {@link FireSurfaceCreateEntity}
     * - `"fluid-turret"`: {@link FluidTurretSurfaceCreateEntity}
     * - `"fluid-wagon"`: {@link FluidWagonSurfaceCreateEntity}
     * - `"furnace"`: {@link FurnaceSurfaceCreateEntity}
     * - `"highlight-box"`: {@link HighlightBoxSurfaceCreateEntity}
     * - `"infinity-cargo-wagon"`: {@link InfinityCargoWagonSurfaceCreateEntity}
     * - `"infinity-container"`: {@link InfinityContainerSurfaceCreateEntity}
     * - `"infinity-pipe"`: {@link InfinityPipeSurfaceCreateEntity}
     * - `"inserter"`: {@link InserterSurfaceCreateEntity}
     * - `"item-entity"`: {@link ItemEntitySurfaceCreateEntity}
     * - `"item-request-proxy"`: {@link ItemRequestProxySurfaceCreateEntity}
     * - `"lamp"`: {@link LampSurfaceCreateEntity}
     * - `"lane-splitter"`: {@link LaneSplitterSurfaceCreateEntity}
     * - `"linked-belt"`: {@link LinkedBeltSurfaceCreateEntity}
     * - `"linked-container"`: {@link LinkedContainerSurfaceCreateEntity}
     * - `"loader"`: {@link LoaderSurfaceCreateEntity}
     * - `"loader-1x1"`: {@link Loader1x1SurfaceCreateEntity}
     * - `"locomotive"`: {@link LocomotiveSurfaceCreateEntity}
     * - `"logistic-container"`: {@link LogisticContainerSurfaceCreateEntity}
     * - `"mining-drill"`: {@link MiningDrillSurfaceCreateEntity}
     * - `"particle"`: {@link ParticleSurfaceCreateEntity}
     * - `"plant"`: {@link PlantSurfaceCreateEntity}
     * - `"power-switch"`: {@link PowerSwitchSurfaceCreateEntity}
     * - `"programmable-speaker"`: {@link ProgrammableSpeakerSurfaceCreateEntity}
     * - `"projectile"`: {@link ProjectileSurfaceCreateEntity}
     * - `"proxy-container"`: {@link ProxyContainerSurfaceCreateEntity}
     * - `"pump"`: {@link PumpSurfaceCreateEntity}
     * - `"rail-chain-signal"`: {@link RailChainSignalSurfaceCreateEntity}
     * - `"rail-signal"`: {@link RailSignalSurfaceCreateEntity}
     * - `"reactor"`: {@link ReactorSurfaceCreateEntity}
     * - `"resource"`: {@link ResourceSurfaceCreateEntity}
     * - `"roboport"`: {@link RoboportSurfaceCreateEntity}
     * - `"rocket-silo"`: {@link RocketSiloSurfaceCreateEntity}
     * - `"selector-combinator"`: {@link SelectorCombinatorSurfaceCreateEntity}
     * - `"simple-entity-with-force"`: {@link SimpleEntityWithForceSurfaceCreateEntity}
     * - `"simple-entity-with-owner"`: {@link SimpleEntityWithOwnerSurfaceCreateEntity}
     * - `"space-platform-hub"`: {@link SpacePlatformHubSurfaceCreateEntity}
     * - `"speech-bubble"`: {@link SpeechBubbleSurfaceCreateEntity}
     * - `"splitter"`: {@link SplitterSurfaceCreateEntity}
     * - `"spider-vehicle"`: {@link SpiderVehicleSurfaceCreateEntity}
     * - `"storage-tank"`: {@link StorageTankSurfaceCreateEntity}
     * - `"stream"`: {@link StreamSurfaceCreateEntity}
     * - `"train-stop"`: {@link TrainStopSurfaceCreateEntity}
     * - `"transport-belt"`: {@link TransportBeltSurfaceCreateEntity}
     * - `"turret"`: {@link TurretSurfaceCreateEntity}
     * - `"underground-belt"`: {@link UndergroundBeltSurfaceCreateEntity}
     * - `"valve"`: {@link ValveSurfaceCreateEntity}
     * - `"wall"`: {@link WallSurfaceCreateEntity}
     *
     * ## Raised events
     * - {@link ScriptRaisedBuiltEvent script_raised_built}? _instantly_ Raised if the `raise_built` flag was set and the entity was successfully created.
     * @returns The created entity or `nil` if the creation failed.
     * @example
     * local asm = game.surfaces[1].create_entity{name = "assembling-machine-1", position = {15, 3}, force = game.forces.player, recipe = "iron-stick"}
     * @example
     * -- Creates a filter inserter with circuit conditions and a filter
     * game.surfaces[1].create_entity{
     *   name = "filter-inserter", position = {20, 15}, force = game.player.force,
     *   conditions =
     *   {
     *     red = {name = "wood", count = 3, operator = ">"},
     *     green = {name = "iron-ore", count = 1, operator = "<"},
     *     logistics = {name = "wood", count = 3, operator = "="}
     *   },
     *   filters = {{index = 1, name = "iron-ore"}}
     * }
     * @example
     * -- Creates a requester chest already set to request 128 iron plates.
     * game.surfaces[1].create_entity{
     *   name = "requester-chest", position = {game.player.position.x+3, game.player.position.y},
     *   force = game.player.force, request_filters = {{index = 1, name = "iron-plate", count = 128}}
     * }
     * @example
     * game.surfaces[1].create_entity{name = "big-biter", position = {15, 3}, force = game.forces.player} -- Friendly biter
     * game.surfaces[1].create_entity{name = "medium-biter", position = {15, 3}, force = game.forces.enemy} -- Enemy biter
     * @example
     * -- Creates a basic inserter at the player's location facing north
     * game.surfaces[1].create_entity{name = "inserter", position = game.player.position, direction = defines.direction.north}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_entity Online documentation}
     */
    create_entity(params: SurfaceCreateEntity): LuaEntity | nil
    /**
     * Create a segmented unit on the surface. This differs from creating an entity with type `"segmented-unit"` in that this method can create the entity in non-generated chunks and with any arbitrary body shape and pre-assigned to a territory.
     *
     * Base attributes: {@link BaseSurfaceCreateSegmentedUnit}
     *
     * These attributes provide different methods of specifying the unit's spawn location:
     * - `"position-and-direction"`: {@link PositionAndDirectionSurfaceCreateSegmentedUnit}
     * - `"body-nodes"`: {@link BodyNodesSurfaceCreateSegmentedUnit}
     *
     * ## Raised events
     * - {@link OnSegmentedUnitCreatedEvent on_segmented_unit_created}? _instantly_ Raised if the segmented unit was successfully created. {@link OnSegmentedUnitCreatedEvent cause} will be set to {@link defines.segmented_unit_created_cause script_created}.
     * @returns The created segmented unit or `nil` if the creation failed or the unit was destroyed during creation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_segmented_unit Online documentation}
     */
    create_segmented_unit(params: SurfaceCreateSegmentedUnit): LuaSegmentedUnit | nil
    /**
     * Create a territory on the surface.
     *
     * ## Raised events
     * - {@link OnTerritoryCreatedEvent on_territory_created}? _instantly_ Raised if the territory was successfully created.
     * @returns The created territory or `nil` if the creation failed or the territory was destroyed during creation.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_territory Online documentation}
     */
    create_territory(params: {
      /**
       * The chunks to assign to the new territory. Must contain at least one generated chunk. Any chunks already assigned to existing territories will be removed from those territories. Any territories left with no generated chunks will be deleted from the surface as a result.
       */
      readonly chunks: readonly (ChunkPosition | ChunkPositionArray)[]
      /**
       * The path that patrolling units will follow. If `nil` or empty, one will be generated for the new territory based on `chunks`.
       */
      readonly patrol_path?: readonly (MapPosition | MapPositionArray)[]
    }): LuaTerritory | nil
    create_trivial_smoke(params: {
      /**
       * The smoke prototype name to create.
       */
      readonly name: TrivialSmokeID
      /**
       * Where to create the smoke.
       */
      readonly position: MapPosition | MapPositionArray
    }): void
    /**
     * Creates a particle at the given location
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_particle Online documentation}
     */
    create_particle(params: {
      /**
       * The particle name.
       */
      readonly name: ParticleID
      /**
       * Where to create the particle.
       */
      readonly position: MapPosition | MapPositionArray
      readonly movement: Vector | VectorTable
      readonly height: float
      readonly vertical_speed: float
      readonly frame_speed: float
    }): void
    /**
     * Create a new unit group at a given position.
     *
     * ## Raised events
     * - {@link OnUnitGroupCreatedEvent on_unit_group_created} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_unit_group Online documentation}
     */
    create_unit_group(params: {
      /**
       * Initial position of the new unit group.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * Force of the new unit group. Defaults to `"enemy"`.
       */
      readonly force?: ForceID
    }): LuaCommandable
    /**
     * Send a group to build a new base.
     *
     * The specified force must be AI-controlled; i.e. `force.ai_controllable` must be `true`.
     * @param position Location of the new base.
     * @param unit_count Number of biters to send for the base-building task.
     * @param force Force the new base will belong to. Defaults to enemy.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#build_enemy_base Online documentation}
     */
    build_enemy_base(position: MapPosition | MapPositionArray, unit_count: uint32, force?: ForceID): void
    /**
     * Get the tile at a given position. An alternative call signature for this method is passing it a single {@link TilePosition}.
     *
     * Non-integer values will result in them being rounded down.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_tile Online documentation}
     */
    get_tile(x: int32, y: int32): LuaTile
    get_tile(position: TilePosition): LuaTile
    /**
     * Set tiles at specified locations. Can automatically correct the edges around modified tiles.
     *
     * Placing a {@link LuaTilePrototype#mineable_properties mineable} tile on top of a non-mineable or {@link LuaTilePrototype#is_foundation foundation} one will turn the latter into the {@link LuaTile#hidden_tile LuaTile::hidden_tile} for that tile. Placing a mineable non-foundation tile on a mineable non-foundation one or a mineable foundation tile on a mineable foundation one will not modify the hidden tile. This restriction can however be circumvented by using {@link LuaSurface#set_hidden_tile LuaSurface::set_hidden_tile}. Placing a non-foundation tile on top of a foundation one when there already exists a hidden tile will push hidden tile to {@link LuaTile#double_hidden_tile double hidden}, and foundation tile will turn into hidden. Placing a mineable foundation tile over a mineable non-foundation tile with hidden mineable foundation tile, the hidden tile will be replaced by previously double hidden tile and double hidden tile will be erased. Placing a non-mineable tile will erase hidden and double hidden tiles.
     *
     * It is recommended to call this method once for all the tiles you want to change rather than calling it individually for every tile. As the tile correction is used after every step, calling it one by one could cause the tile correction logic to redo some of the changes. Also, many small API calls are generally more performance intensive than one big one.
     *
     * ## Raised events
     * - {@link ScriptRaisedSetTilesEvent script_raised_set_tiles}? _instantly_ Raised if the `raise_event` flag was set.
     * @param correct_tiles If `false`, the correction logic is not applied to the changed tiles. Defaults to `true`.
     * @param remove_colliding_entities Defaults to `true`.
     * @param remove_colliding_decoratives Defaults to `true`.
     * @param raise_event Defaults to `false`.
     * @param player The player whose undo queue to add these actions to.
     * @param undo_index The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_tiles Online documentation}
     */
    set_tiles(
      tiles: readonly TileWrite[],
      correct_tiles?: boolean,
      remove_colliding_entities?: boolean | "abort_on_collision",
      remove_colliding_decoratives?: boolean,
      raise_event?: boolean,
      player?: PlayerIdentification,
      undo_index?: uint32,
    ): void
    /**
     * Spawn pollution at the given position.
     * @param source Where to spawn the pollution.
     * @param amount How much pollution to add.
     * @param prototype The entity prototype to attribute the pollution change to in statistics. If not defined, the pollution change will not show up in statistics.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#pollute Online documentation}
     */
    pollute(source: MapPosition | MapPositionArray, amount: double, prototype?: EntityID): void
    /**
     * Get an iterator going over every chunk on this surface.
     *
     * Chunks may or may not be generated; use {@link LuaSurface#is_chunk_generated LuaSurface::is_chunk_generated} to check a chunk's state before accessing it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_chunks Online documentation}
     */
    get_chunks(): LuaChunkIterator
    /**
     * Is a given chunk generated?
     * @param chunk_position The chunk's position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#is_chunk_generated Online documentation}
     */
    is_chunk_generated(chunk_position: ChunkPosition | ChunkPositionArray): boolean
    /**
     * Request that the game's map generator generate chunks at the given position for the given radius on this surface. If the radius is `0`, then only the chunk at the given position is generated.
     * @param position Where to generate the new chunks.
     * @param radius The chunk radius from `position` to generate new chunks in. Defaults to `0`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#request_to_generate_chunks Online documentation}
     */
    request_to_generate_chunks(position: MapPosition | MapPositionArray, radius?: uint32): void
    /**
     * Blocks and generates all chunks that have been requested using all available threads.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#force_generate_chunk_requests Online documentation}
     */
    force_generate_chunk_requests(): void
    /**
     * Set generated status of a chunk. Useful when copying chunks.
     * @param chunk_position The chunk's position.
     * @param status The chunk's new status.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_chunk_generated_status Online documentation}
     */
    set_chunk_generated_status(
      chunk_position: ChunkPosition | ChunkPositionArray,
      status: defines.chunk_generated_status,
    ): void
    /**
     * Get all territories on the surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_territories Online documentation}
     */
    get_territories(): LuaTerritory[]
    /**
     * Get the territory that the given chunk is assigned to. If the chunk is not part of any territory or the territory for the chunk has not yet been generated, then this returns `nil`.
     * @param chunk_position The chunk's position. The chunk at this position does not need to exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_territory_for_chunk Online documentation}
     */
    get_territory_for_chunk(chunk_position: ChunkPosition | ChunkPositionArray): LuaTerritory | nil
    /**
     * Removes the given chunks from their current territories and adds them to the given territory if provided.
     *
     * This does not affect the {@link LuaTerritory#get_patrol_path LuaTerritory::get_patrol_path}. It is your responsibility to update the patrol path if needed.
     *
     * It's recommended that territory chunks are connected to each other, but this is not required.
     *
     * Territories that do not contain at least one generated chunk as a result of calling this method will be automatically deleted.
     *
     * ## Raised events
     * - {@link OnTerritoryDestroyedEvent on_territory_destroyed}? _instantly_ Raised for each territory that is destroyed as a result of calling this method.
     * @param chunk_positions The chunk positions. The chunks at these positions do not need to exist in order to be assigned to a territory.
     * @param territory The territory to associate the chunks with. If not `nil`, the territory must belong to this same surface or else an error will be produced. If `nil`, then the chunks get removed from the territory it is currently associated with and will prevent the map generator from automatically re-generate a new territory for the chunk in the future.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_territory_for_chunks Online documentation}
     */
    set_territory_for_chunks(
      chunk_positions: readonly (ChunkPosition | ChunkPositionArray)[],
      territory?: LuaTerritory,
    ): void
    /**
     * Removes the chunk from the territory it is associated with (if any) and allows the map generator to potentially generate a new territory for the chunk in the future. To prevent the game from generating a new territory for the chunk, use {@link LuaSurface#set_chunk_territory LuaSurface::set_chunk_territory} to set the chunk's territory to `nil`.
     *
     * Territories that do not contain at least one generated chunk as a result of calling this method will be automatically deleted.
     * @param chunk_positions The chunk positions. The chunks at these positions does not need to exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clear_territory_for_chunks Online documentation}
     */
    clear_territory_for_chunks(chunk_positions: readonly (ChunkPosition | ChunkPositionArray)[]): void
    /**
     * Get all segmented units that exist on the surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_segmented_units Online documentation}
     */
    get_segmented_units(): LuaSegmentedUnit[]
    /**
     * Find the logistic network that covers a given position.
     * @param force Force the logistic network should belong to.
     * @returns The found network or `nil` if no such network was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_logistic_network_by_position Online documentation}
     */
    find_logistic_network_by_position(
      position: MapPosition | MapPositionArray,
      force: ForceID,
    ): LuaLogisticNetwork | nil
    /**
     * Find the logistic network with a cell closest to a given position.
     * @param force Force the logistic network should belong to.
     * @returns The found network or `nil` if no such network was found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_closest_logistic_network_by_position Online documentation}
     */
    find_closest_logistic_network_by_position(
      position: MapPosition | MapPositionArray,
      force: ForceID,
    ): LuaLogisticNetwork | nil
    /**
     * Finds all of the logistics networks whose construction area intersects with the given position.
     * @param force Force the logistic networks should belong to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_logistic_networks_by_construction_area Online documentation}
     */
    find_logistic_networks_by_construction_area(
      position: MapPosition | MapPositionArray,
      force: ForceID,
    ): LuaLogisticNetwork[]
    /**
     * Place a deconstruction request.
     *
     * ## Raised events
     * - {@link OnMarkedForDeconstructionEvent on_marked_for_deconstruction}? _instantly_ Raised for every entity that has been successfully marked for deconstruction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#deconstruct_area Online documentation}
     */
    deconstruct_area(params: {
      /**
       * The area to mark for deconstruction.
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * The force whose bots should perform the deconstruction.
       */
      readonly force: ForceID
      /**
       * The player to set the last_user to if any.
       */
      readonly player?: PlayerIdentification
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The deconstruction item to use if any.
       */
      readonly item?: LuaItemStack
      /**
       * If the deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Cancel a deconstruction order.
     *
     * ## Raised events
     * - {@link OnCancelledDeconstructionEvent on_cancelled_deconstruction}? _instantly_ Raised for every entity whose deconstruction has been successfully cancelled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#cancel_deconstruct_area Online documentation}
     */
    cancel_deconstruct_area(params: {
      /**
       * The area to cancel deconstruction orders in.
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * The force whose deconstruction orders to cancel.
       */
      readonly force: ForceID
      /**
       * The player to set the last_user to, if any.  Also the player whose undo queue this action should be added to.
       */
      readonly player?: PlayerIdentification
      /**
       * If chunks covered by fog-of-war are skipped. Defaults to `false`.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The deconstruction item to use if any.
       */
      readonly item?: LuaItemStack
      /**
       * The index of the undo item to add this action to. An index of `0` creates a new undo item for it. Defaults to putting it into the appropriate undo item automatically if not specified.
       */
      readonly undo_index?: uint32
      /**
       * If the cancel deconstruction is super-forced. Defaults to `false`.
       */
      readonly super_forced?: boolean
    }): void
    /**
     * Place an upgrade request.
     *
     * ## Raised events
     * - {@link OnMarkedForUpgradeEvent on_marked_for_upgrade}? _instantly_ Raised for every entity that has been successfully marked for upgrade.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#upgrade_area Online documentation}
     */
    upgrade_area(params: {
      /**
       * The area to mark for upgrade.
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * The force whose bots should perform the upgrade.
       */
      readonly force: ForceID
      /**
       * The player to set the last_user to if any.
       */
      readonly player?: PlayerIdentification
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The upgrade item to use.
       */
      readonly item: LuaItemStack
    }): void
    /**
     * Cancel a upgrade order.
     *
     * ## Raised events
     * - {@link OnCancelledUpgradeEvent on_cancelled_upgrade}? _instantly_ Raised for every entity whose upgrade has been successfully cancelled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#cancel_upgrade_area Online documentation}
     */
    cancel_upgrade_area(params: {
      /**
       * The area to cancel upgrade orders in.
       */
      readonly area: BoundingBoxWrite | BoundingBoxArray
      /**
       * The force whose upgrade orders to cancel.
       */
      readonly force: ForceID
      /**
       * The player to set the last_user to if any.
       */
      readonly player?: PlayerIdentification
      /**
       * If chunks covered by fog-of-war are skipped.
       */
      readonly skip_fog_of_war?: boolean
      /**
       * The upgrade item to use.
       */
      readonly item: LuaItemStack
    }): void
    /**
     * The hidden tile name.
     * @param position The tile position.
     * @returns `nil` if there isn't one for the given position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_hidden_tile Online documentation}
     */
    get_hidden_tile(position: TilePosition | TilePositionArray): string | nil
    /**
     * The double hidden tile name or `nil` if there isn't one for the given position.
     * @param position The tile position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_double_hidden_tile Online documentation}
     */
    get_double_hidden_tile(position: TilePosition | TilePositionArray): string | nil
    /**
     * Set the hidden tile for the specified position. While during normal gameplay only {@link LuaTilePrototype#mineable_properties non-mineable} or {@link LuaTilePrototype#is_foundation foundation} tiles can become hidden, this method allows any kind of tile to be set as the hidden one.
     * @param position The tile position.
     * @param tile The new hidden tile or `nil` to clear the hidden tile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_hidden_tile Online documentation}
     */
    set_hidden_tile(position: TilePosition | TilePositionArray, tile?: TileID): void
    /**
     * Set double hidden tile for the specified position. During normal gameplay, only {@link LuaTilePrototype#mineable_properties non-mineable} tiles can become double hidden.
     *
     * Does nothing if hidden tile at specified position does not exist.
     * @param position The tile position.
     * @param tile The new double hidden tile or `nil` to clear the double hidden tile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_double_hidden_tile Online documentation}
     */
    set_double_hidden_tile(position: TilePosition | TilePositionArray, tile?: TileID): void
    /**
     * Gets all tiles of the given types that are connected horizontally or vertically to the given tile position including the given tile position.
     *
     * This won't find tiles in non-generated chunks.
     * @param position The tile position to start at.
     * @param tiles The tiles to search for.
     * @param include_diagonal Include tiles that are connected diagonally.
     * @param area The area to find connected tiles in. If provided the start position must be in this area.
     * @returns The resulting set of tiles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_connected_tiles Online documentation}
     */
    get_connected_tiles(
      position: TilePosition | TilePositionArray,
      tiles: readonly TileID[],
      include_diagonal?: boolean,
      area?: BoundingBoxWrite | BoundingBoxArray,
    ): TilePosition[]
    /**
     * ## Raised events
     * - {@link OnPreChunkDeletedEvent on_pre_chunk_deleted} _future_tick_
     * - {@link OnChunkDeletedEvent on_chunk_deleted} _future_tick_
     * - {@link OnTerritoryDestroyedEvent on_territory_destroyed}? _future_tick_ Raised if a territory is automatically destroyed as a result of deleting the chunk.
     * @param chunk_position The chunk position to delete
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#delete_chunk Online documentation}
     */
    delete_chunk(chunk_position: ChunkPosition | ChunkPositionArray): void
    /**
     * Regenerate autoplacement of some entities on this surface. This can be used to autoplace newly-added entities.
     *
     * All specified entity prototypes must be autoplacable. If nothing is given all entities are generated on all chunks.
     * @param entities Prototype names of entity or entities to autoplace. When `nil` all entities with an autoplace are used.
     * @param chunks The chunk positions to regenerate the entities on. If not given all chunks are regenerated. Note chunks with status < entities are ignored.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#regenerate_entity Online documentation}
     */
    regenerate_entity(
      entities?: string | readonly string[],
      chunks?: readonly (ChunkPosition | ChunkPositionArray)[],
    ): void
    /**
     * Regenerate autoplacement of some decoratives on this surface. This can be used to autoplace newly-added decoratives.
     *
     * All specified decorative prototypes must be autoplacable. If nothing is given all decoratives are generated on all chunks.
     * @param decoratives Prototype names of decorative or decoratives to autoplace. When `nil` all decoratives with an autoplace are used.
     * @param chunks The chunk positions to regenerate the decoratives on. If not given all chunks are regenerated. Note chunks with status < entities are ignored.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#regenerate_decorative Online documentation}
     */
    regenerate_decorative(
      decoratives?: string | readonly string[],
      chunks?: readonly (ChunkPosition | ChunkPositionArray)[],
    ): void
    /**
     * Print text to the chat console of all players on this surface.
     *
     * By default, messages that are identical to a message sent in the last 60 ticks are not printed again.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#print Online documentation}
     */
    print(message: LocalisedString, print_settings?: PrintSettings): void
    /**
     * Removes all decoratives from the given area. If no area and no position are given, then the entire surface is searched.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#destroy_decoratives Online documentation}
     */
    destroy_decoratives(params: {
      readonly area?: BoundingBoxWrite | BoundingBoxArray
      readonly position?: TilePosition | TilePositionArray
      readonly name?: DecorativeID | readonly DecorativeID[]
      readonly collision_mask?: CollisionLayerID | readonly CollisionLayerID[] | Record<CollisionLayerID, true>
      readonly from_layer?: string
      readonly to_layer?: string
      /**
       * Soft decoratives can be drawn over rails.
       */
      readonly exclude_soft?: boolean
      readonly limit?: uint32
      /**
       * If the filters should be inverted.
       */
      readonly invert?: boolean
    }): void
    /**
     * Adds the given decoratives to the surface.
     *
     * This will merge decoratives of the same type that already exist effectively increasing the "amount" field.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_decoratives Online documentation}
     */
    create_decoratives(params: {
      /**
       * If collision should be checked against entities/tiles.
       */
      readonly check_collision?: boolean
      readonly decoratives: readonly Decorative[]
    }): void
    /**
     * Find decoratives of a given name in a given area.
     *
     * If no filters are given, returns all decoratives in the search area. If multiple filters are specified, returns only decoratives matching every given filter. If no area and no position are given, the entire surface is searched.
     * @example
     * game.surfaces[1].find_decoratives_filtered{area = {{-10, -10}, {10, 10}}, name = "sand-decal"} -- gets all sand-decals in the rectangle
     * game.surfaces[1].find_decoratives_filtered{area = {{-10, -10}, {10, 10}}, limit = 5}  -- gets the first 5 decoratives in the rectangle
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#find_decoratives_filtered Online documentation}
     */
    find_decoratives_filtered(params: {
      readonly area?: BoundingBoxWrite | BoundingBoxArray
      readonly position?: TilePosition | TilePositionArray
      readonly name?: DecorativeID | readonly DecorativeID[]
      readonly collision_mask?: CollisionLayerID | readonly CollisionLayerID[] | Record<CollisionLayerID, true>
      readonly from_layer?: string
      readonly to_layer?: string
      /**
       * Soft decoratives can be drawn over rails.
       */
      readonly exclude_soft?: boolean
      readonly limit?: uint32
      /**
       * If the filters should be inverted.
       */
      readonly invert?: boolean
    }): DecorativeResult[]
    /**
     * Clears all pollution on this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clear_pollution Online documentation}
     */
    clear_pollution(): void
    /**
     * Play a sound for every player on this surface.
     *
     * The sound is not played if its location is not {@link LuaForce#chart charted} for that player.
     * @param sound_specification The sound to play.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#play_sound Online documentation}
     */
    play_sound(sound_specification: PlaySoundSpecification): void
    /**
     * Gets the resource amount of all resources on this surface
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_resource_counts Online documentation}
     */
    get_resource_counts(): Record<string, uint32>
    /**
     * Gets a random generated chunk position or 0,0 if no chunks have been generated on this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_random_chunk Online documentation}
     */
    get_random_chunk(): ChunkPosition
    /**
     * Clones the given area.
     *
     * Entities are cloned in an order such that they can always be created, eg rails before trains.
     *
     * ## Raised events
     * - {@link OnEntityClonedEvent on_entity_cloned} _instantly_ Raised for every entity that was cloned.
     * - {@link OnAreaClonedEvent on_area_cloned} _instantly_ Raised after the individual `on_entity_cloned` events.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clone_area Online documentation}
     */
    clone_area(params: {
      readonly source_area: BoundingBoxWrite | BoundingBoxArray
      readonly destination_area: BoundingBoxWrite | BoundingBoxArray
      readonly destination_surface?: SurfaceIdentification
      readonly destination_force?: ForceID
      /**
       * If tiles should be cloned
       */
      readonly clone_tiles?: boolean
      /**
       * If entities should be cloned
       */
      readonly clone_entities?: boolean
      /**
       * If decoratives should be cloned
       */
      readonly clone_decoratives?: boolean
      /**
       * If the destination entities should be cleared
       */
      readonly clear_destination_entities?: boolean
      /**
       * If the destination decoratives should be cleared
       */
      readonly clear_destination_decoratives?: boolean
      /**
       * If the destination surface should be expanded when destination_area is outside current bounds. Defaults to `false`.
       */
      readonly expand_map?: boolean
      /**
       * If true, the building effect smoke will be shown around the new entities. Defaults to `false`.
       */
      readonly create_build_effect_smoke?: boolean
    }): void
    /**
     * Clones the given area.
     *
     * {@link defines.events.on_entity_cloned} is raised for each entity, and then {@link defines.events.on_area_cloned} is raised.
     *
     * Entities are cloned in an order such that they can always be created, eg rails before trains.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clone_brush Online documentation}
     */
    clone_brush(params: {
      readonly source_offset: TilePosition | TilePositionArray
      readonly destination_offset: TilePosition | TilePositionArray
      readonly source_positions: readonly (TilePosition | TilePositionArray)[]
      readonly destination_surface?: SurfaceIdentification
      readonly destination_force?: LuaForce | string
      /**
       * If tiles should be cloned
       */
      readonly clone_tiles?: boolean
      /**
       * If entities should be cloned
       */
      readonly clone_entities?: boolean
      /**
       * If decoratives should be cloned
       */
      readonly clone_decoratives?: boolean
      /**
       * If the destination entities should be cleared
       */
      readonly clear_destination_entities?: boolean
      /**
       * If the destination decoratives should be cleared
       */
      readonly clear_destination_decoratives?: boolean
      /**
       * If the destination surface should be expanded when destination_area is outside current bounds. Defaults to `false`.
       */
      readonly expand_map?: boolean
      /**
       * If manual-style collision checks should be done.
       */
      readonly manual_collision_mode?: boolean
      /**
       * If true, the building effect smoke will be shown around the new entities.
       */
      readonly create_build_effect_smoke?: boolean
    }): void
    /**
     * Clones the given entities.
     *
     * Entities are cloned in an order such that they can always be created, eg rails before trains.
     *
     * ## Raised events
     * - {@link OnEntityClonedEvent on_entity_cloned} _instantly_ Raised for every entity that was cloned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clone_entities Online documentation}
     */
    clone_entities(params: {
      readonly entities: readonly LuaEntity[]
      readonly destination_offset: Vector | VectorTable
      readonly destination_surface?: SurfaceIdentification
      readonly destination_force?: ForceID
      readonly snap_to_grid?: boolean
      /**
       * If true, the building effect smoke will be shown around the new entities.
       */
      readonly create_build_effect_smoke?: boolean
    }): void
    /**
     * Clears this surface deleting all entities and chunks on it.
     *
     * ## Raised events
     * - {@link OnPreSurfaceClearedEvent on_pre_surface_cleared} _future_tick_
     * - {@link OnSurfaceClearedEvent on_surface_cleared} _future_tick_
     * @param ignore_characters Whether characters on this surface that are connected to or associated with players should be ignored (not destroyed). Defaults to `false`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clear Online documentation}
     */
    clear(ignore_characters?: boolean): void
    /**
     * Generates a path with the specified constraints (as an array of {@link PathfinderWaypoint PathfinderWaypoints}) using the unit pathfinding algorithm. This path can be used to emulate pathing behavior by script for non-unit entities, such as vehicles. If you want to command actual units (such as biters or spitters) to move, use {@link LuaCommandable#set_command LuaCommandable::set_command} via {@link LuaEntity#commandable LuaEntity::commandable} instead.
     *
     * The resulting path is ultimately returned asynchronously via {@link OnScriptPathRequestFinishedEvent on_script_path_request_finished}.
     *
     * ## Raised events
     * - {@link OnScriptPathRequestFinishedEvent on_script_path_request_finished} _future_tick_
     * @returns A unique handle to identify this call when {@link OnScriptPathRequestFinishedEvent on_script_path_request_finished} fires.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#request_path Online documentation}
     */
    request_path(params: {
      /**
       * The dimensions of the object that's supposed to travel the path.
       */
      readonly bounding_box: BoundingBoxWrite | BoundingBoxArray
      /**
       * The collision mask the `bounding_box` collides with.
       */
      readonly collision_mask: CollisionMask
      /**
       * The position from which to start pathfinding.
       */
      readonly start: MapPosition | MapPositionArray
      /**
       * The position to find a path to.
       */
      readonly goal: MapPosition | MapPositionArray
      /**
       * The force for which to generate the path, determining which gates can be opened for example.
       */
      readonly force: ForceID
      /**
       * How close the pathfinder needs to get to its `goal` (in tiles). Defaults to `1`.
       */
      readonly radius?: double
      /**
       * Flags that affect pathfinder behavior.
       */
      readonly pathfind_flags?: PathfinderFlags
      /**
       * Whether the path request can open gates. Defaults to `false`.
       */
      readonly can_open_gates?: boolean
      /**
       * Defines how coarse the pathfinder's grid is, where smaller values mean a coarser grid. Defaults to `0`, which equals a resolution of `1x1` tiles, centered on tile centers. Values range from `-8` to `8` inclusive, where each integer increment doubles/halves the resolution. So, a resolution of `-8` equals a grid of `256x256` tiles, and a resolution of `8` equals `1/256` of a tile.
       */
      readonly path_resolution_modifier?: int32
      /**
       * Defines the maximum allowed distance between path waypoints. 0 means that paths must be contiguous (as they are for biters). Values greater than 0 will produce paths with "gaps" that are suitable for spiders. Allowed values are from `0` to `31`. Defaults to `0`.
       */
      readonly max_gap_size?: int32
      /**
       * Defines the maximum allowed distance between the last traversable path waypoint and an obstacle entity to be destroyed. Only used when finding a discontiguous path, i.e. when `max_gap_size` > 0. This field filters out paths that are blocked by obstacles that are outside the entity's attack range. Allowed values are `0` or greater. Defaults to `max_gap_size`.
       */
      readonly max_attack_distance?: double
      /**
       * Makes the pathfinder ignore collisions with this entity if it is given.
       */
      readonly entity_to_ignore?: LuaEntity
    }): uint32
    /**
     * Gets the script areas that match the given name or if no name is given all areas are returned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_script_areas Online documentation}
     */
    get_script_areas(name?: string): ScriptArea[]
    /**
     * Gets the first script area by name or id.
     * @param key The name or id of the area to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_script_area Online documentation}
     */
    get_script_area(key?: string | uint32): ScriptArea | nil
    /**
     * Sets the given script area to the new values.
     * @param id The area to edit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#edit_script_area Online documentation}
     */
    edit_script_area(id: uint32, area: ScriptAreaWrite): void
    /**
     * Adds the given script area.
     * @returns The id of the created area.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#add_script_area Online documentation}
     */
    add_script_area(area: ScriptAreaWrite): uint32
    /**
     * Removes the given script area.
     * @returns If the area was actually removed. False when it didn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#remove_script_area Online documentation}
     */
    remove_script_area(id: uint32): boolean
    /**
     * Gets the script positions that match the given name or if no name is given all positions are returned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_script_positions Online documentation}
     */
    get_script_positions(name?: string): ScriptPosition[]
    /**
     * Gets the first script position by name or id.
     * @param key The name or id of the position to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_script_position Online documentation}
     */
    get_script_position(key?: string | uint32): ScriptPosition | nil
    /**
     * Sets the given script position to the new values.
     * @param id The position to edit.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#edit_script_position Online documentation}
     */
    edit_script_position(id: uint32, position: ScriptPositionWrite): void
    /**
     * Adds the given script position.
     * @returns The id of the created position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#add_script_position Online documentation}
     */
    add_script_position(position: ScriptPositionWrite): uint32
    /**
     * Removes the given script position.
     * @returns If the position was actually removed. False when it didn't exist.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#remove_script_position Online documentation}
     */
    remove_script_position(id: uint32): boolean
    /**
     * Gets the map exchange string for the current map generation settings of this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_map_exchange_string Online documentation}
     */
    get_map_exchange_string(): string
    /**
     * Gets the starting area radius of this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_starting_area_radius Online documentation}
     */
    get_starting_area_radius(): double
    /**
     * Gets the closest entity in the list to this position.
     * @param entities The Entities to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_closest Online documentation}
     */
    get_closest(position: MapPosition | MapPositionArray, entities: readonly LuaEntity[]): LuaEntity | nil
    /**
     * Gets the total amount of pollution on the surface by iterating over all the chunks containing pollution.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_total_pollution Online documentation}
     */
    get_total_pollution(): double
    /**
     * Whether the given entity prototype collides at the given position and direction.
     * @param prototype The entity prototype to check.
     * @param position The position to check.
     * @param use_map_generation_bounding_box If the map generation bounding box should be used instead of the collision bounding box.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#entity_prototype_collides Online documentation}
     */
    entity_prototype_collides(
      prototype: EntityID,
      position: MapPosition | MapPositionArray,
      use_map_generation_bounding_box: boolean,
      direction?: defines.direction,
    ): boolean
    /**
     * Whether the given decorative prototype collides at the given position and direction.
     * @param prototype The decorative prototype to check.
     * @param position The position to check.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#decorative_prototype_collides Online documentation}
     */
    decorative_prototype_collides(prototype: DecorativeID, position: MapPosition | MapPositionArray): boolean
    /**
     * Calculate values for a list of tile properties at a list of positions. Requests for unrecognized properties will be ignored, so this can also be used to test whether those properties exist.
     * @param property_names Names of properties (`"elevation"`, etc) to calculate.
     * @param positions Positions for which to calculate property values.
     * @returns Table of property value lists, keyed by property name.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#calculate_tile_properties Online documentation}
     */
    calculate_tile_properties(
      property_names: readonly string[],
      positions: readonly (MapPosition | MapPositionArray)[],
    ): Record<string, double[]>
    /**
     * Returns all the military targets (entities with force) on this chunk for the given force.
     * @param chunk_position The chunk's position.
     * @param force Entities of this force will be returned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_entities_with_force Online documentation}
     */
    get_entities_with_force(chunk_position: ChunkPosition | ChunkPositionArray, force: ForceID): LuaEntity[]
    /**
     * This method only works when used in simulations.
     *
     * Places entities via the given blueprint string. These entities are force-built.
     * @returns If the blueprint string was invalid, `1` is returned. Otherwise, `nil` is returned.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_entities_from_blueprint_string Online documentation}
     */
    create_entities_from_blueprint_string(params: {
      /**
       * The blueprint string to import.
       */
      readonly string: string
      /**
       * The position to place the blueprint at.
       */
      readonly position: MapPosition | MapPositionArray
      /**
       * The force to place the blueprint for. Defaults to the player force.
       */
      readonly force?: ForceID
      /**
       * The direction to place the blueprint in. Defaults to north.
       */
      readonly direction?: defines.direction
      /**
       * Whether to flip the blueprint horizontally. Defaults to `false`.
       */
      readonly flip_horizontal?: boolean
      /**
       * Whether to flip the blueprint vertically. Defaults to `false`.
       */
      readonly flip_vertical?: boolean
      /**
       * The player that placed the blueprint. Defaults to `nil`.
       */
      readonly by_player?: PlayerIdentification
    }): int32 | nil
    /**
     * Sets the given area to the checkerboard lab tiles.
     * @param area The tile area.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#build_checkerboard Online documentation}
     */
    build_checkerboard(area: BoundingBoxWrite | BoundingBoxArray): void
    /**
     * Gets the value of surface property on this surface.
     * @param property Property to read.
     * @returns Value of the property.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_property Online documentation}
     */
    get_property(property: SurfacePropertyID): double
    /**
     * Sets the value of surface property on this surface.
     * @param property Property to change.
     * @param value The wanted value of the property.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_property Online documentation}
     */
    set_property(property: SurfacePropertyID, value: double): void
    /**
     * Creates a global electric network for this surface, if one doesn't exist already.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#create_global_electric_network Online documentation}
     */
    create_global_electric_network(): void
    /**
     * Destroys the global electric network for this surface, if it exists.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#destroy_global_electric_network Online documentation}
     */
    destroy_global_electric_network(): void
    /**
     * Creates lightning. If other entities which can be lightning targets are nearby, the final position will be adjusted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#execute_lightning Online documentation}
     */
    execute_lightning(params: { readonly name: EntityID; readonly position: MapPosition | MapPositionArray }): void
    /**
     * Completely removes hidden and double hidden tiles data on this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#clear_hidden_tiles Online documentation}
     */
    clear_hidden_tiles(): void
    /**
     * Gets the cover tile for the given force and tile on this surface if one is set.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#get_default_cover_tile Online documentation}
     */
    get_default_cover_tile(force: ForceID, tile: TileID): LuaTilePrototype | nil
    /**
     * Sets the cover tile for the given force and tile on this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#set_default_cover_tile Online documentation}
     */
    set_default_cover_tile(force: ForceID, from_tile: TileID, to_tile: TileID | nil): void
    /**
     * The name of this surface. Names are unique among surfaces.
     *
     * The default surface can't be renamed.
     *
     * ## Raised events
     * - {@link OnSurfaceRenamedEvent on_surface_renamed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#name Online documentation}
     */
    name: string
    /**
     * This surface's index in {@link LuaGameScript#surfaces LuaGameScript::surfaces} (unique ID). It is assigned when a surface is created, and remains so until it is {@link OnSurfaceDeletedEvent deleted}. Indexes of deleted surfaces can be reused.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#index Online documentation}
     */
    readonly index: SurfaceIndex
    /**
     * The generation settings for this surface. These can be modified after surface generation, but note that this will not retroactively update the surface. To manually regenerate it, {@link LuaSurface#regenerate_entity LuaSurface::regenerate_entity}, {@link LuaSurface#regenerate_decorative LuaSurface::regenerate_decorative}, and {@link LuaSurface#delete_chunk LuaSurface::delete_chunk} can be used.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#map_gen_settings Online documentation}
     */
    get map_gen_settings(): MapGenSettings
    set map_gen_settings(value: MapGenSettingsWrite)
    /**
     * When set to true, new chunks will be generated with lab tiles, instead of using the surface's map generation settings.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#generate_with_lab_tiles Online documentation}
     */
    generate_with_lab_tiles: boolean
    /**
     * When set to true, the sun will always shine.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#always_day Online documentation}
     */
    always_day: boolean
    /**
     * Current time of day, as a number in range `[0, 1)`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#daytime Online documentation}
     */
    daytime: double
    /**
     * Amount of darkness at the current time, as a number in range `[0, 1]`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#darkness Online documentation}
     */
    readonly darkness: float
    /**
     * Current wind speed in tiles per tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#wind_speed Online documentation}
     */
    wind_speed: double
    /**
     * Current wind direction.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#wind_orientation Online documentation}
     */
    wind_orientation: RealOrientation
    /**
     * Change in wind orientation per tick.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#wind_orientation_change Online documentation}
     */
    wind_orientation_change: double
    /**
     * Is peaceful mode enabled on this surface?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#peaceful_mode Online documentation}
     */
    peaceful_mode: boolean
    /**
     * Is no-enemies mode enabled on this surface?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#no_enemies_mode Online documentation}
     */
    no_enemies_mode: boolean
    /**
     * True if daytime is currently frozen.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#freeze_daytime Online documentation}
     */
    freeze_daytime: boolean
    /**
     * The number of ticks per day for this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#ticks_per_day Online documentation}
     */
    ticks_per_day: uint32
    /**
     * The daytime when dusk starts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#dusk Online documentation}
     */
    dusk: double
    /**
     * The daytime when dawn starts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#dawn Online documentation}
     */
    dawn: double
    /**
     * The daytime when evening starts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#evening Online documentation}
     */
    evening: double
    /**
     * The daytime when morning starts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#morning Online documentation}
     */
    morning: double
    /**
     * Parameters of daytime. Equivalent as reading {@link LuaSurface#dusk dusk}, {@link LuaSurface#evening evening}, {@link LuaSurface#morning morning} and {@link LuaSurface#dawn dawn} at the same time.
     *
     * In order for a write to take place, a new table needs to be written in one go: changing individual members of the returned table has no effect as those are value copies.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#daytime_parameters Online documentation}
     */
    daytime_parameters: {
      /**
       * Must be < evening.
       */
      readonly dusk: double
      /**
       * Must be > dusk and < morning.
       */
      readonly evening: double
      /**
       * Must be > evening and < dawn.
       */
      readonly morning: double
      /**
       * Must be > morning.
       */
      readonly dawn: double
    }
    /**
     * The multiplier of solar power on this surface. Cannot be less than 0.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#solar_power_multiplier Online documentation}
     */
    solar_power_multiplier: double
    /**
     * The minimal brightness during the night. Defaults to `0.15`. This has an effect on both rendering and game mechanics such as biter spawns and solar power.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#min_brightness Online documentation}
     */
    min_brightness: double
    /**
     * Defines how surface daytime brightness influences each color channel of the current color lookup table (LUT).
     *
     * The LUT is multiplied by `((1 - weight) + brightness * weight)` and result is clamped to range `[0, 1]`.
     *
     * Default is `{0, 0, 0}`, which means no influence.
     * @example
     * -- Makes night on the surface pitch black, LuaSurface::min_brightness is set to default value 0.15.
     * game.surfaces[1].brightness_visual_weights = { 1 / 0.85, 1 / 0.85, 1 / 0.85 }
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#brightness_visual_weights Online documentation}
     */
    get brightness_visual_weights(): ColorModifier
    set brightness_visual_weights(value: ColorModifier | ColorModifierArray)
    /**
     * If clouds are shown on this surface. If false, clouds are never shown. If true the player must also have clouds enabled in graphics settings for them to be shown.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#show_clouds Online documentation}
     */
    show_clouds: boolean
    /**
     * Whether this surface currently has a global electric network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#has_global_electric_network Online documentation}
     */
    readonly has_global_electric_network: boolean
    readonly platform?: LuaSpacePlatform
    /**
     * The planet associated with this surface, if there is one.
     *
     * Use {@link LuaPlanet#associate_surface LuaPlanet::associate_surface} to create a new association with a planet.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#planet Online documentation}
     */
    readonly planet?: LuaPlanet
    /**
     * If this surface can be deleted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#deletable Online documentation}
     */
    readonly deletable: boolean
    /**
     * Surface-wide effects applied to entities with effect receivers. `nil` if this surface is not using surface-wide effect source.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#global_effect Online documentation}
     */
    global_effect?: ModuleEffects
    /**
     * The type of pollutant enabled on the surface, or `nil` if no pollutant is enabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#pollutant_type Online documentation}
     */
    readonly pollutant_type?: LuaAirbornePollutantPrototype
    /**
     * Localised name of this surface. When set, will replace the internal surface name in places where a player sees surface name.
     *
     * Value may be ignored if a surface has a SpacePlatform or Planet object attached to it, which take the precedence.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#localised_name Online documentation}
     */
    localised_name?: LocalisedString
    /**
     * If surface condition checks should not be performed on this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#ignore_surface_conditions Online documentation}
     */
    ignore_surface_conditions: boolean
    /**
     * The pollution statistics for this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#pollution_statistics Online documentation}
     */
    readonly pollution_statistics: LuaFlowStatistics
    /**
     * The global electric network statistics for this surface.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurface.html#global_electric_network_statistics Online documentation}
     */
    readonly global_electric_network_statistics?: LuaFlowStatistics
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSurface"
  }
  /**
   * Prototype of a surface property.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurfacePropertyPrototype.html Online documentation}
   */
  export interface LuaSurfacePropertyPrototype extends LuaPrototypeBase {
    readonly localised_unit_key: string
    readonly default_value: double
    readonly is_time: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSurfacePropertyPrototype"
  }
  /**
   * Prototype of a surface.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurfacePrototype.html Online documentation}
   */
  export interface LuaSurfacePrototype extends LuaPrototypeBase {
    readonly surface_properties: Record<string, double>
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaSurfacePrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaSurfacePrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaSurfacePrototype"
  }
  /**
   * One research item.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html Online documentation}
   * @noSelf
   */
  export interface LuaTechnology {
    /**
     * Reload this technology from its prototype.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#reload Online documentation}
     */
    reload(): void
    /**
     * Research this technology and all of its prerequisites recursively.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#research_recursive Online documentation}
     */
    research_recursive(): void
    /**
     * The force this technology belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#force Online documentation}
     */
    readonly force: LuaForce
    /**
     * Name of this technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#name Online documentation}
     */
    readonly name: string
    /**
     * Localised name of this technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#localised_name Online documentation}
     */
    readonly localised_name: LocalisedString
    readonly localised_description: LocalisedString
    /**
     * The prototype of this technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#prototype Online documentation}
     */
    readonly prototype: LuaTechnologyPrototype
    /**
     * Can this technology be researched?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#enabled Online documentation}
     */
    enabled: boolean
    /**
     * If this technology will be visible in the research GUI even though it is disabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#visible_when_disabled Online documentation}
     */
    visible_when_disabled: boolean
    /**
     * Is this an upgrade-type research?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#upgrade Online documentation}
     */
    readonly upgrade: boolean
    /**
     * Has this technology been researched? Switching from `false` to `true` will trigger the technology advancement perks; switching from `true` to `false` will reverse them.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#researched Online documentation}
     */
    researched: boolean
    /**
     * Prerequisites of this technology. The result maps technology name to the {@link LuaTechnology} object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#prerequisites Online documentation}
     */
    readonly prerequisites: Record<string, LuaTechnology>
    /**
     * Successors of this technology, i.e. technologies which have this technology as a prerequisite.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#successors Online documentation}
     */
    readonly successors: Record<string, LuaTechnology>
    /**
     * The types of ingredients that labs will require to research this technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#research_unit_ingredients Online documentation}
     */
    readonly research_unit_ingredients: ResearchIngredient[]
    /**
     * The number of research units required for this technology.
     *
     * This is multiplied by the current research cost multiplier, unless {@link LuaTechnologyPrototype#ignore_tech_cost_multiplier LuaTechnologyPrototype::ignore_tech_cost_multiplier} is `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#research_unit_count Online documentation}
     */
    readonly research_unit_count: uint32
    /**
     * Amount of energy required to finish a unit of research.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#research_unit_energy Online documentation}
     */
    readonly research_unit_energy: double
    /**
     * The string used to alphabetically sort these prototypes. It is a simple string that has no additional semantic meaning.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#order Online documentation}
     */
    readonly order: string
    /**
     * The current level of this technology. For level-based technology writing to this is the same as researching the technology to the previous level. Writing the level will set {@link LuaTechnology#enabled LuaTechnology::enabled} to `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#level Online documentation}
     */
    level: uint32
    /**
     * The count formula, if this research has any. See {@link import("factorio:prototype").TechnologyUnit#count_formula TechnologyUnit::count_formula} for details.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#research_unit_count_formula Online documentation}
     */
    readonly research_unit_count_formula?: MathExpression
    /**
     * Saved technology progress fraction as a value in range `[0, 1)`. 0 means there is no saved progress.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnology.html#saved_progress Online documentation}
     */
    saved_progress: double
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTechnology"
  }
  /**
   * A Technology prototype.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html Online documentation}
   */
  export interface LuaTechnologyPrototype extends LuaPrototypeBase {
    /**
     * If this technology prototype is enabled by default (enabled at the beginning of a game).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#enabled Online documentation}
     */
    readonly enabled: boolean
    /**
     * If this technology prototype is essential, meaning it is shown in the condensed technology graph.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#essential Online documentation}
     */
    readonly essential: boolean
    /**
     * If this technology will be visible in the research GUI even though it is disabled.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#visible_when_disabled Online documentation}
     */
    readonly visible_when_disabled: boolean
    /**
     * If this technology ignores the technology cost multiplier setting.
     *
     * {@link LuaTechnologyPrototype#research_unit_count LuaTechnologyPrototype::research_unit_count} will already take this setting into account.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#ignore_tech_cost_multiplier Online documentation}
     */
    readonly ignore_tech_cost_multiplier: boolean
    /**
     * If the is technology prototype is an upgrade to some other technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#upgrade Online documentation}
     */
    readonly upgrade: boolean
    /**
     * Prerequisites of this technology. The result maps technology name to the {@link LuaTechnologyPrototype} object.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#prerequisites Online documentation}
     */
    readonly prerequisites: Record<string, LuaTechnologyPrototype>
    /**
     * Successors of this technology, i.e. technologies which have this technology as a prerequisite.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#successors Online documentation}
     */
    readonly successors: Record<string, LuaTechnologyPrototype>
    /**
     * The types of ingredients that labs will require to research this technology.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#research_unit_ingredients Online documentation}
     */
    readonly research_unit_ingredients: ResearchIngredient[]
    /**
     * Effects applied when this technology is researched.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#effects Online documentation}
     */
    readonly effects: TechnologyModifier[]
    /**
     * The number of research units required for this technology.
     *
     * This is multiplied by the current research cost multiplier, unless {@link LuaTechnologyPrototype#ignore_tech_cost_multiplier LuaTechnologyPrototype::ignore_tech_cost_multiplier} is `true`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#research_unit_count Online documentation}
     */
    readonly research_unit_count: uint32
    /**
     * Amount of energy required to finish a unit of research.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#research_unit_energy Online documentation}
     */
    readonly research_unit_energy: double
    /**
     * The level of this research.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#level Online documentation}
     */
    readonly level: uint32
    /**
     * The max level of this research.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#max_level Online documentation}
     */
    readonly max_level: uint32
    /**
     * The count formula, if this research has any. See {@link import("factorio:prototype").TechnologyUnit#count_formula TechnologyUnit::count_formula} for details.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#research_unit_count_formula Online documentation}
     */
    readonly research_unit_count_formula?: MathExpression
    /**
     * The trigger that will research this technology if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#research_trigger Online documentation}
     */
    readonly research_trigger?: ResearchTrigger
    readonly allows_productivity: boolean
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTechnologyPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaTechnologyPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTechnologyPrototype"
  }
  /**
   * A set of chunks on a single {@link LuaSurface} that can be guarded by one or more {@link LuaSegmentedUnit}s.
   *
   * A territory is owned by the surface for which it was created. It comprises any number of disconnected or connected chunks. A chunk can only be owned by at most one territory. A territory's chunks may or may not be generated.
   *
   * Territories may be patrolled by any number of {@link LuaSegmentedUnit}s. A territory with no units will not appear on player's maps.
   *
   * Territories may define a patrol path that {@link LuaSegmentedUnit}s will follow. If no such path is defined, then units will wander randomly throughout the territory chunks. If a territory contains no patrol path and no chunks, then units will behave as if they are assigned to any territory.
   *
   * The game will automatically destroy any territory that does not have at least one chunk that is generated or requested to be generated. This is to prevent bloat when chunks are deleted. This can happen as a result of any operation that modifies a territory's chunks, including but not limited to {@link LuaSurface#delete_chunk LuaSurface::delete_chunk}, {@link LuaSurface#set_territory_for_chunks LuaSurface::set_territory_for_chunks}, and {@link LuaSurface#clear_territory_for_chunks LuaSurface::clear_territory_for_chunks}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html Online documentation}
   * @noSelf
   */
  export interface LuaTerritory {
    /**
     * Immediately destroys the territory, along with any segmented units guarding it. All associated chunks are cleared from the territory system, allowing the map generator to potentially generate new territories for these chunks in the future.
     *
     * This {@link LuaTerritory} is no longer valid after calling this.
     *
     * ## Raised events
     * - {@link OnTerritoryDestroyedEvent on_territory_destroyed} _instantly_
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#destroy Online documentation}
     */
    destroy(): void
    /**
     * Gets all chunks that are a part of the territory.
     *
     * Chunks may or may not be generated; use {@link LuaSurface#is_chunk_generated LuaSurface::is_chunk_generated} to check a chunk's state before accessing it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#get_chunks Online documentation}
     */
    get_chunks(): ChunkPositionAndArea[]
    /**
     * Gets the {@link LuaSegmentedUnit}s that guard this territory.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#get_segmented_units Online documentation}
     */
    get_segmented_units(): LuaSegmentedUnit[]
    /**
     * Regenerates any segmented units that were created when the territory was generated by the map generator. If the territory was created or modified by a script, and the surface's map generator is configured to create segmented units with territories, then this function will create the segmented units that would have been created along with the script-modified or script-created territory. If the surface's map generator is not configured to create segmented units at all, then no segmented units will be created.
     *
     * Note: this does not destroy or replace existing units guarding the territory, and existing units will not prevent the generation of new units. Calling this repeatedly on a territory that generates a segmented unit will simply repeatedly add new segmented units to the map, all guarding this territory.
     *
     * ## Raised events
     * - {@link OnSegmentedUnitCreatedEvent on_segmented_unit_created}? _instantly_ Raised for each segmented unit successfully created. {@link OnSegmentedUnitCreatedEvent cause} will be set to {@link defines.segmented_unit_created_cause map_generated}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#regenerate_segmented_units Online documentation}
     */
    regenerate_segmented_units(): void
    /**
     * Regenerates the patrol path for the territory according to the game's default territory generation algorithm and overwrites the territory's current patrol path.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#regenerate_patrol_path Online documentation}
     */
    regenerate_patrol_path(): void
    /**
     * Get the path that the territory's units follow when patrolling the territory. Will not be empty.
     *
     * It is common that the territory's patrol path is fully contained within the territory's chunks, but it is not strictly necessary.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#get_patrol_path Online documentation}
     */
    get_patrol_path(): MapPosition[]
    /**
     * Overwrite the territory patrol path for units that guard the territory.
     *
     * It is recommended that the territory's patrol path be fully contained within the territory's chunks, but it is not strictly necessary.
     *
     * To let the territory system generate a patrol path, use {@link LuaTerritory#regenerate_patrol_path LuaTerritory::regenerate_patrol_path}.
     * @param patrol_path The new patrol path for the territory. Must not be empty.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#set_patrol_path Online documentation}
     */
    set_patrol_path(patrol_path: readonly (MapPosition | MapPositionArray)[]): void
    /**
     * The surface on which this territory is located.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTerritory.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTerritory"
  }
  /**
   * A single "square" on the map.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html Online documentation}
   * @noSelf
   */
  export interface LuaTile {
    /**
     * What type of things can collide with this tile?
     * @example
     * -- Check if the character would collide with a tile
     * game.player.print(tostring(game.player.surface.get_tile(1, 1).collides_with("player")))
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#collides_with Online documentation}
     */
    collides_with(layer: CollisionLayerID): boolean
    /**
     * Is this tile marked for deconstruction?
     * @param force The force whose robots are supposed to do the deconstruction. If not given, checks if to be deconstructed by any force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#to_be_deconstructed Online documentation}
     */
    to_be_deconstructed(force?: ForceID): boolean
    /**
     * Orders deconstruction of this tile by the given force.
     *
     * ## Raised events
     * - {@link OnMarkedForDeconstructionEvent on_marked_for_deconstruction}? _instantly_ Raised if the tile was successfully marked for deconstruction.
     * @param force The force whose robots are supposed to do the deconstruction.
     * @param player The player to set the last_user to if any.
     * @returns The deconstructible tile proxy created, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#order_deconstruction Online documentation}
     */
    order_deconstruction(force: ForceID, player?: PlayerIdentification): LuaEntity | nil
    /**
     * Cancels deconstruction if it is scheduled, does nothing otherwise.
     *
     * ## Raised events
     * - {@link OnCancelledDeconstructionEvent on_cancelled_deconstruction}? _instantly_ Raised if the tile's deconstruction was successfully cancelled.
     * @param force The force who did the deconstruction order.
     * @param player The player to set the last_user to if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#cancel_deconstruction Online documentation}
     */
    cancel_deconstruction(force: ForceID, player?: PlayerIdentification): void
    /**
     * Does this tile have any tile ghosts on it.
     * @param force Check for tile ghosts of this force.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#has_tile_ghost Online documentation}
     */
    has_tile_ghost(force?: ForceID): boolean
    /**
     * Gets all tile ghosts on this tile.
     * @param force Get tile ghosts of this force.
     * @returns The tile ghosts.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#get_tile_ghosts Online documentation}
     */
    get_tile_ghosts(force?: ForceID): LuaEntity[]
    /**
     * Prototype name of this tile. E.g. `"sand-3"` or `"grass-2"`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#name Online documentation}
     */
    readonly name: string
    readonly prototype: LuaTilePrototype
    /**
     * The position this tile references.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#position Online documentation}
     */
    readonly position: TilePosition
    /**
     * The name of the {@link LuaTilePrototype} hidden under this tile, if any.
     *
     * During normal gameplay, only {@link LuaTilePrototype#mineable_properties non-mineable} or {@link LuaTilePrototype#is_foundation foundation} tiles can become hidden. This can however be circumvented with {@link LuaSurface#set_hidden_tile LuaSurface::set_hidden_tile}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#hidden_tile Online documentation}
     */
    readonly hidden_tile?: string
    /**
     * The name of the {@link LuaTilePrototype} double hidden under this tile or `nil` if there is no double hidden tile.
     *
     * During normal gameplay, only {@link LuaTilePrototype#mineable_properties non-mineable} tiles can become double hidden. This can however be circumvented with {@link LuaSurface#set_double_hidden_tile LuaSurface::set_double_hidden_tile}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#double_hidden_tile Online documentation}
     */
    readonly double_hidden_tile?: string
    /**
     * The surface this tile is on.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTile.html#surface Online documentation}
     */
    readonly surface: LuaSurface
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTile"
  }
  /**
   * Prototype of a tile.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html Online documentation}
   */
  export interface LuaTilePrototype extends LuaPrototypeBase {
    /**
     * The collision mask this tile uses
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#collision_mask Online documentation}
     */
    readonly collision_mask: CollisionMask
    readonly layer: uint32
    /**
     * Autoplace specification for this prototype, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#autoplace_specification Online documentation}
     */
    readonly autoplace_specification?: AutoplaceSpecification
    readonly walking_speed_modifier: float
    readonly vehicle_friction_modifier: float
    readonly map_color: Color
    /**
     * The probability that decorative entities will be removed from on top of this tile when this tile is generated.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#decorative_removal_probability Online documentation}
     */
    readonly decorative_removal_probability: float
    readonly automatic_neighbors: boolean
    readonly allowed_neighbors: Record<string, LuaTilePrototype>
    /**
     * If this tile needs correction logic applied when it's generated in the world.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#needs_correction Online documentation}
     */
    readonly needs_correction: boolean
    readonly mineable_properties: {
      /**
       * Is this tile mineable at all?
       */
      readonly minable: boolean
      /**
       * Energy required to mine a tile.
       */
      readonly mining_time: double
      /**
       * Prototype name of the particle produced when mining this tile. Will only be present if this tile produces any particle during mining.
       */
      readonly mining_particle?: string
      /**
       * Products obtained by mining this tile.
       */
      readonly products: Product[]
    }
    /**
     * The fluid offshore pump produces on this tile, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#fluid Online documentation}
     */
    readonly fluid?: LuaFluidPrototype
    /**
     * The next direction of this tile, if any. Used when a tile has multiple directions (such as hazard concrete)
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#next_direction Online documentation}
     */
    readonly next_direction?: LuaTilePrototype
    /**
     * Items that when placed will produce this tile, if any. Construction bots will choose the first item in the list to build this tile.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#items_to_place_this Online documentation}
     */
    readonly items_to_place_this?: ItemToPlace[]
    /**
     * False if this tile is not allowed in blueprints regardless of the ability to build it.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#can_be_part_of_blueprint Online documentation}
     */
    readonly can_be_part_of_blueprint: boolean
    /**
     * A table of pollution emissions per second this tile will absorb, indexed by the name of each absorbed pollution type.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#absorptions_per_second Online documentation}
     */
    readonly absorptions_per_second: Record<string, double>
    /**
     * True if this tile can be used as a foundation for other tiles, false otherwise. Foundation tiles can be {@link LuaTile#hidden_tile hidden}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#is_foundation Online documentation}
     */
    readonly is_foundation: boolean
    /**
     * True if this tile can be {@link LuaTile#hidden_tile hidden} or replaced by another tile through player actions.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#allows_being_covered Online documentation}
     */
    readonly allows_being_covered: boolean
    /**
     * True if building this tile should check for colliding entities above and prevent building if such are found. Also during mining tiles above this tile checks for entities colliding with this tile and prevents mining if such are found.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#check_collision_with_entities Online documentation}
     */
    readonly check_collision_with_entities: boolean
    readonly destroys_dropped_items: boolean
    readonly max_health: float
    readonly weight: Weight
    readonly default_cover_tile?: LuaTilePrototype
    readonly frozen_variant?: LuaTilePrototype
    readonly thawed_variant?: LuaTilePrototype
    readonly trigger_effect?: TriggerEffectItem[]
    readonly default_destroyed_dropped_item_trigger?: TriggerItem[]
    readonly scorch_mark_color?: Color
    readonly bound_decoratives?: LuaDecorativePrototype[]
    readonly ambient_sounds_group?: LuaTilePrototype
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTilePrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaTilePrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTilePrototype"
  }
  /**
   * A train. Trains are a sequence of connected rolling stocks -- locomotives and wagons.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html Online documentation}
   * @noSelf
   */
  export interface LuaTrain {
    /**
     * Get the amount of a particular item stored in the train.
     * @param item If not given, counts all items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_item_count Online documentation}
     */
    get_item_count(item?: ItemFilterWrite): uint32
    /**
     * Get a mapping of the train's inventory.
     * @returns List of all items in the train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_contents Online documentation}
     */
    get_contents(): ItemWithQualityCounts
    /**
     * Remove some items from the train.
     * @param stack The amount and type of items to remove
     * @returns Number of items actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#remove_item Online documentation}
     */
    remove_item(stack: ItemStackIdentification): uint32
    /**
     * Insert a stack into the train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#insert Online documentation}
     */
    insert(stack: ItemStackIdentification): void
    /**
     * Clear all items in this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#clear_items_inside Online documentation}
     */
    clear_items_inside(): void
    /**
     * Checks if the path is invalid and tries to re-path if it isn't.
     * @param force Forces the train to re-path regardless of the current path being valid or not.
     * @returns If the train has a path after the repath attempt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#recalculate_path Online documentation}
     */
    recalculate_path(force?: boolean): boolean
    /**
     * Get the amount of a particular fluid stored in the train.
     * @param fluid Fluid name to count. If not given, counts all fluids.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_fluid_count Online documentation}
     */
    get_fluid_count(fluid?: string): double
    /**
     * Gets a mapping of the train's fluid inventory.
     * @returns The counts, indexed by fluid names.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_fluid_contents Online documentation}
     */
    get_fluid_contents(): Record<string, FluidAmount>
    /**
     * Remove some fluid from the train.
     * @returns The amount of fluid actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#remove_fluid Online documentation}
     */
    remove_fluid(fluid: Fluid): double
    /**
     * Inserts the given fluid into the first available location in this train.
     * @returns The amount inserted.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#insert_fluid Online documentation}
     */
    insert_fluid(fluid: Fluid): double
    /**
     * Clears all fluids in this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#clear_fluids_inside Online documentation}
     */
    clear_fluids_inside(): void
    /**
     * Go to the station specified by the index in the train's schedule.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#go_to_station Online documentation}
     */
    go_to_station(index: uint32): void
    /**
     * Gets all rails under the train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_rails Online documentation}
     */
    get_rails(): LuaEntity[]
    /**
     * Gets a LuaRailEnd object pointing away from the train at specified end of the train
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#get_rail_end Online documentation}
     */
    get_rail_end(direction: defines.rail_direction): LuaRailEnd
    get_schedule(): LuaSchedule
    /**
     * When `true`, the train is explicitly controlled by the player or script. When `false`, the train moves autonomously according to its schedule.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#manual_mode Online documentation}
     */
    manual_mode: boolean
    /**
     * Current speed.
     *
     * Changing the speed of the train is potentially an unsafe operation because train uses the speed for its internal calculations of break distances, etc.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#speed Online documentation}
     */
    speed: double
    /**
     * Current max speed when moving forward, depends on locomotive prototype and fuel.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#max_forward_speed Online documentation}
     */
    readonly max_forward_speed: double
    /**
     * Current max speed when moving backwards, depends on locomotive prototype and fuel.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#max_backward_speed Online documentation}
     */
    readonly max_backward_speed: double
    /**
     * The weight of this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#weight Online documentation}
     */
    readonly weight: double
    /**
     * The rolling stocks this train is composed of, with the numbering starting at the {@link LuaTrain#front_stock front} of the train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#carriages Online documentation}
     */
    readonly carriages: LuaEntity[]
    /**
     * Locomotives of the train.
     * @example
     * -- called on a LuaTrain with 3 locomotives, it returns 3 LuaEntities:
     * train.locomotives -- => {front_movers = {loco1, loco2}, back_movers = {loco3}}
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#locomotives Online documentation}
     */
    readonly locomotives: {
      /**
       * Array of locomotives.
       */
      readonly front_movers: LuaEntity[]
      /**
       * Array of locomotives.
       */
      readonly back_movers: LuaEntity[]
    }
    /**
     * The cargo carriages the train contains.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#cargo_wagons Online documentation}
     */
    readonly cargo_wagons: LuaEntity[]
    /**
     * The fluid carriages the train contains.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#fluid_wagons Online documentation}
     */
    readonly fluid_wagons: LuaEntity[]
    /**
     * This train's current schedule, if any. Set to `nil` to clear.
     *
     * The schedule can't be changed by modifying the returned table. Instead, changes must be made by assigning a new table to this attribute.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#schedule Online documentation}
     */
    get schedule(): TrainSchedule | nil
    set schedule(value: TrainScheduleWrite | nil)
    /**
     * This train's current state.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#state Online documentation}
     */
    readonly state: defines.train_state
    /**
     * The front stock of this train, if any. The front of the train is in the direction that a majority of locomotives are pointing in. If it's a tie, the North and West directions take precedence.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#front_stock Online documentation}
     */
    readonly front_stock?: LuaEntity
    /**
     * The back stock of this train, if any. The back of the train is at the opposite end of the {@link LuaTrain#front_stock front}.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#back_stock Online documentation}
     */
    readonly back_stock?: LuaEntity
    /**
     * The train stop this train is stopped at, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#station Online documentation}
     */
    readonly station?: LuaEntity
    /**
     * If this train has a path.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#has_path Online documentation}
     */
    readonly has_path: boolean
    /**
     * The destination rail this train is currently pathing to, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#path_end_rail Online documentation}
     */
    readonly path_end_rail?: LuaEntity
    /**
     * The destination train stop this train is currently pathing to, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#path_end_stop Online documentation}
     */
    readonly path_end_stop?: LuaEntity
    /**
     * The unique train ID.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#id Online documentation}
     */
    readonly id: uint32
    /**
     * The player passengers on the train
     *
     * This does *not* index using player index. See {@link LuaPlayer#index LuaPlayer::index} on each player instance for the player index.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#passengers Online documentation}
     */
    readonly passengers: LuaPlayer[]
    /**
     * The riding state of this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#riding_state Online documentation}
     */
    readonly riding_state: RidingState
    /**
     * The players killed by this train.
     *
     * The keys are the player indices, the values are how often this train killed that player.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#killed_players Online documentation}
     */
    readonly killed_players: Record<uint32, uint32>
    /**
     * The total number of kills by this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#kill_count Online documentation}
     */
    readonly kill_count: uint32
    /**
     * The path this train is using, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#path Online documentation}
     */
    readonly path?: LuaRailPath
    /**
     * The signal this train is arriving or waiting at, if any.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#signal Online documentation}
     */
    readonly signal?: LuaEntity
    /**
     * The group this train belongs to.
     *
     * Setting the group will apply the schedule of the group to this train.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#group Online documentation}
     */
    group: string
    /**
     * Front end of the train: Rail and direction on that rail where the train will go when moving forward
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#front_end Online documentation}
     */
    readonly front_end: LuaRailEnd
    /**
     * Back end of the train: Rail and direction on that rail where the train will go when moving backward
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrain.html#back_end Online documentation}
     */
    readonly back_end: LuaRailEnd
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTrain"
  }
  /**
   * The train manager manages all the train in the game. LuaTrainManager allows to perform some direct queries to the train manager.
   *
   * There is always exactly one train manager instance in a game, it can be obtained from {@link LuaGameScript#train_manager LuaGameScript::train_manager}. This object is always valid and is equal to any other instance of LuaTrainManager from this game.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainManager.html Online documentation}
   * @noSelf
   */
  export interface LuaTrainManager {
    /**
     * Searches for a train with given ID.
     * @param train_id Train ID to search
     * @returns Train if found
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainManager.html#get_train_by_id Online documentation}
     */
    get_train_by_id(train_id: uint32): LuaTrain | nil
    /**
     * Gets all trains that pass given filter
     * @param filter Filters the train must pass in order to be returned here
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainManager.html#get_trains Online documentation}
     */
    get_trains(filter: TrainFilter): LuaTrain[]
    /**
     * Gets all train stops that pass given filter
     * @param filter Filters the train stop must pass in order to be returned here
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainManager.html#get_train_stops Online documentation}
     */
    get_train_stops(filter: TrainStopFilter): LuaEntity[]
    /**
     * Direct access to train pathfinder. Allows to search rail paths or querying which stops are accessible
     * @returns The type of the returned value depends on `type`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainManager.html#request_train_path Online documentation}
     */
    request_train_path(params: {
      /**
       * Request type. Determines the return type of the method. Defaults to `"path"`.
       */
      readonly type?: TrainPathRequestType
      /**
       * Mandatory if `starts` is not provided, optional otherwise. Selects a context for the pathfinder to decide which train to exclude from penalties and which signals are considered possible to reacquire. If `starts` is not provided, then it is also used to collect front and back ends for the search
       */
      readonly train?: LuaTrain
      readonly goals: readonly TrainPathFinderGoal[]
      /**
       * Only relevant if request type is `"path"`. Returning a full path is expensive due to multiple LuaEntity created. In order for path to be returned, true must be provided here. Defaults to false in which case a path will not be provided.
       */
      readonly return_path?: boolean
      /**
       * Manually provided starting positions.
       */
      readonly starts?: readonly RailEndStart[]
      /**
       * Only relevant if `starts` was not provided in which case 2 starts (front and back) are deduced from the train. Selects which train ends should be considered as starts. Defaults to `"any-direction-with-locomotives"`.
       */
      readonly search_direction?: "respect-movement-direction" | "any-direction-with-locomotives"
      /**
       * Defaults to `false`. If set to true, pathfinder will not return a path that cannot have its start immediately reserved. A path that cannot have its start immediately reserved could cause a train to stop inside of an intersection.
       */
      readonly in_chain_signal_section?: boolean
      /**
       * Maximum amount of steps pathfinder is allowed to perform.
       */
      readonly steps_limit?: uint32
      /**
       * Defaults to `false`. If set to true, only length of rails is added to penalties causing search to look for shortest path (not smallest penalty)
       */
      readonly shortest_path?: boolean
    }): TrainPathFinderOneGoalResult | TrainPathAllGoalsResult
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTrainManager"
  }
  /**
   * Control behavior for train stops.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html Online documentation}
   */
  export interface LuaTrainStopControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the train stop should send the circuit network contents to the train to use.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#send_to_train Online documentation}
     */
    send_to_train: boolean
    /**
     * `true` if the train stop should send the train contents to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#read_from_train Online documentation}
     */
    read_from_train: boolean
    /**
     * `true` if the train stop should send the stopped train id to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#read_stopped_train Online documentation}
     */
    read_stopped_train: boolean
    /**
     * `true` if the trains_limit_signal is used to set a limit of trains incoming for train stop.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#set_trains_limit Online documentation}
     */
    set_trains_limit: boolean
    /**
     * `true` if the train stop should send amount of incoming trains to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#read_trains_count Online documentation}
     */
    read_trains_count: boolean
    /**
     * The signal that will be sent when using the send-train-id option.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#stopped_train_signal Online documentation}
     */
    get stopped_train_signal(): SignalID | nil
    set stopped_train_signal(value: SignalIDWrite | nil)
    /**
     * The signal that will be sent when using the read-trains-count option.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#trains_count_signal Online documentation}
     */
    get trains_count_signal(): SignalID | nil
    set trains_count_signal(value: SignalIDWrite | nil)
    /**
     * The signal to be used by set-trains-limit to limit amount of incoming trains
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#trains_limit_signal Online documentation}
     */
    get trains_limit_signal(): SignalID | nil
    set trains_limit_signal(value: SignalIDWrite | nil)
    /**
     * `true` if the priority_signal is used to set a priority of the train stop.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#set_priority Online documentation}
     */
    set_priority: boolean
    /**
     * The signal to be used by set-priority change priority of the train stop
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrainStopControlBehavior.html#priority_signal Online documentation}
     */
    get priority_signal(): SignalID | nil
    set priority_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTrainStopControlBehavior"
  }
  /**
   * Control behavior for transport belts.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportBeltControlBehavior.html Online documentation}
   */
  export interface LuaTransportBeltControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * If the belt will read the contents and send them to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportBeltControlBehavior.html#read_contents Online documentation}
     */
    read_contents: boolean
    /**
     * The read mode for the belt.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportBeltControlBehavior.html#read_contents_mode Online documentation}
     */
    read_contents_mode: defines.control_behavior.transport_belt.content_read_mode
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTransportBeltControlBehavior"
  }
  /**
   * One line on a transport belt.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html Online documentation}
   * @noSelf
   */
  export interface LuaTransportLine extends ReadonlyArray<LuaItemStack> {
    /**
     * Remove all items from this transport line.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#clear Online documentation}
     */
    clear(): void
    /**
     * Count some or all items on this line, similar to how {@link LuaInventory#get_item_count LuaInventory::get_item_count} does.
     * @param item If not specified, count all items.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#get_item_count Online documentation}
     */
    get_item_count(item?: ItemFilterWrite): uint32
    /**
     * Remove some items from this line.
     * @param items Items to remove.
     * @returns Number of items actually removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#remove_item Online documentation}
     */
    remove_item(items: ItemStackIdentification): uint32
    /**
     * Can an item be inserted at a given position?
     * @param position Where to insert an item.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#can_insert_at Online documentation}
     */
    can_insert_at(position: float): boolean
    /**
     * Can an item be inserted at the back of this line?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#can_insert_at_back Online documentation}
     */
    can_insert_at_back(): boolean
    /**
     * Insert items at a given position.
     * @param position Where on the line to insert the items.
     * @param items Items to insert.
     * @param belt_stack_size Maximum size of stack created on belt
     * @returns Were the items inserted successfully?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#insert_at Online documentation}
     */
    insert_at(position: float, items: ItemStackIdentification, belt_stack_size?: uint8): boolean
    /**
     * Insert items at the back of this line.
     * @param belt_stack_size Maximum size of stack created on belt
     * @returns Were the items inserted successfully?
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#insert_at_back Online documentation}
     */
    insert_at_back(items: ItemStackIdentification, belt_stack_size?: uint8): boolean
    /**
     * Force insert item at a given position. Inserts item onto a transport line. If a position is out of range, it is clamped to a closest valid position on the transport line. Item will be inserted regardless of other items nearby, possibly forcing items to become squashed.
     * @param position Where on the line to insert the items.
     * @param items Items to insert.
     * @param belt_stack_size Maximum size of stack created on belt
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#force_insert_at Online documentation}
     */
    force_insert_at(position: float, items: ItemStackIdentification, belt_stack_size?: uint8): void
    /**
     * Get counts of all items on this line, similar to how {@link LuaInventory#get_contents LuaInventory::get_contents} does.
     * @returns List of all items on this line.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#get_contents Online documentation}
     */
    get_contents(): ItemWithQualityCounts
    /**
     * Get detailed information of items on this line, such as their position.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#get_detailed_contents Online documentation}
     */
    get_detailed_contents(): DetailedItemOnLine[]
    /**
     * Returns whether the associated internal transport line of this line is the same as the others associated internal transport line.
     *
     * This can return true even when the {@link LuaTransportLine#owner LuaTransportLine::owner}s are different (so `this == other` is false), because the internal transport lines can span multiple tiles.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#line_equals Online documentation}
     */
    line_equals(other: LuaTransportLine): boolean
    /**
     * Get a map position related to a position on a transport line.
     * @param position Linear position along the transport line. Clamped to the transport line range.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#get_line_item_position Online documentation}
     */
    get_line_item_position(position: float): MapPosition
    /**
     * Get the number of items on this transport line.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#length_operator Online documentation}
     */
    readonly length: uint32
    /**
     * The indexing operator.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#index_operator Online documentation}
     */
    readonly [index: number]: LuaItemStack
    /**
     * The entity this transport line belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    /**
     * The transport lines that this transport line outputs items to or an empty table if none.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#output_lines Online documentation}
     */
    readonly output_lines: LuaTransportLine[]
    /**
     * The transport lines that this transport line is fed by or an empty table if none.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#input_lines Online documentation}
     */
    readonly input_lines: LuaTransportLine[]
    /**
     * Length of the transport line. Items can be inserted at line position from 0 up to returned value
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#line_length Online documentation}
     */
    readonly line_length: float
    /**
     * Total length of segment which consists of this line, all lines in front and lines in the back directly connected.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTransportLine.html#total_segment_length Online documentation}
     */
    readonly total_segment_length: double
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTransportLine"
  }
  /**
   * Prototype of a trivial smoke.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTrivialSmokePrototype.html Online documentation}
   */
  export interface LuaTrivialSmokePrototype extends LuaPrototypeBase {
    readonly color: Color
    readonly start_scale: double
    readonly end_scale: double
    readonly movement_slow_down_factor: double
    readonly duration: uint32
    readonly spread_duration: uint32
    readonly fade_away_duration: uint32
    readonly fade_in_duration: uint32
    readonly glow_fade_away_duration: uint32
    readonly cyclic: boolean
    readonly affected_by_wind: boolean
    readonly show_when_smoke_off: boolean
    readonly glow_animation: boolean
    readonly render_layer: RenderLayer
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTrivialSmokePrototype"
  }
  /**
   * Control behavior for turrets.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTurretControlBehavior.html Online documentation}
   */
  export interface LuaTurretControlBehavior extends LuaGenericOnOffControlBehavior {
    /**
     * `true` if the turret's target priority list will be determined from the signals on the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTurretControlBehavior.html#set_priority_list Online documentation}
     */
    set_priority_list: boolean
    /**
     * `true` if the turret will ignore targets not on its priority list if a circuit condition is met.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTurretControlBehavior.html#set_ignore_unlisted_targets Online documentation}
     */
    set_ignore_unlisted_targets: boolean
    /**
     * The condition under which the turret will ignore targets not on its priority list.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTurretControlBehavior.html#ignore_unlisted_targets_condition Online documentation}
     */
    get ignore_unlisted_targets_condition(): CircuitConditionDefinition
    set ignore_unlisted_targets_condition(value: CircuitConditionDefinitionWrite)
    /**
     * `true` if the turret will send the ammunition or fluid it contains to the circuit network.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaTurretControlBehavior.html#read_ammo Online documentation}
     */
    read_ammo: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaTurretControlBehavior"
  }
  /**
   * The undo queue for a player. The term `item_index` refers to the index of an undo item in the queue, while `action_index` refers to the index of one of the individual actions that make up an undo item.
   *
   * Items are added to the undo queue through player actions and Lua methods that emulate player actions like {@link LuaEntity#order_upgrade LuaEntity::order_upgrade}.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html Online documentation}
   * @noSelf
   */
  export interface LuaUndoRedoStack {
    /**
     * Gets an undo item from the undo stack.
     * @param index The index of the undo item to get, ordered from most recent to oldest.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_undo_item Online documentation}
     */
    get_undo_item(index: uint32): UndoRedoAction[]
    /**
     * The number undo items in the undo stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_undo_item_count Online documentation}
     */
    get_undo_item_count(): uint32
    /**
     * Removes an undo item from the undo stack.
     * @param index The index of the undo item to remove, ordered from most recent to oldest.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_undo_item Online documentation}
     */
    remove_undo_item(index: uint32): void
    /**
     * Removes an undo action from the specified undo item on the undo stack.
     * @param item_index The index of the undo item to change, ordered from most recent to oldest.
     * @param action_index The index of the undo action to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_undo_action Online documentation}
     */
    remove_undo_action(item_index: uint32, action_index: uint32): void
    /**
     * Gets an undo item from the redo stack.
     * @param index The index of the item to get, ordered from most recent to oldest.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_redo_item Online documentation}
     */
    get_redo_item(index: uint32): UndoRedoAction[]
    /**
     * The number of undo items in the redo stack.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_redo_item_count Online documentation}
     */
    get_redo_item_count(): uint32
    /**
     * Removes an undo item from the redo stack.
     * @param index The index of the undo item to remove, ordered from most recent to oldest.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_redo_item Online documentation}
     */
    remove_redo_item(index: uint32): void
    /**
     * Removes an undo action from the specified undo item on the redo stack.
     * @param item_index The index of the undo item to change, ordered from most recent to oldest.
     * @param action_index The index of the undo action to remove.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_redo_action Online documentation}
     */
    remove_redo_action(item_index: uint32, action_index: uint32): void
    /**
     * Gets all tags for the given undo action.
     * @param item_index The index of the undo item, ordered from most recent to oldest.
     * @param action_index The index of the undo action.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_undo_tags Online documentation}
     */
    get_undo_tags(item_index: uint32, action_index: uint32): Tags
    /**
     * Gets the tag with the given name from a specific undo item action, or `nil` if it doesn't exist.
     * @param item_index The index of the undo item, ordered from most recent to oldest.
     * @param action_index The index of the undo action.
     * @param tag_name The name of the tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_undo_tag Online documentation}
     */
    get_undo_tag(item_index: uint32, action_index: uint32, tag_name: string): AnyBasic | nil
    /**
     * Sets a new tag with the given name and value on the specified undo item action.
     * @param item_index The index of the undo item, ordered from most recent to oldest.
     * @param action_index The index of the undo action.
     * @param tag_name The name of the tag to set.
     * @param tag The contents of the new tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#set_undo_tag Online documentation}
     */
    set_undo_tag(item_index: uint32, action_index: uint32, tag_name: string, tag: AnyBasic): void
    /**
     * Removes a tag with the given name from the specified undo item.
     * @param item_index The index of the undo item, ordered from most recent to oldest.
     * @param action_index The index of the undo action.
     * @param tag The name of the tag to remove.
     * @returns Whether the tag existed and was successfully removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_undo_tag Online documentation}
     */
    remove_undo_tag(item_index: uint32, action_index: uint32, tag: string): boolean
    /**
     * Gets all tags for the given redo action.
     * @param item_index The index of the redo item, ordered from most recent to oldest.
     * @param action_index The index of the redo action.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_redo_tags Online documentation}
     */
    get_redo_tags(item_index: uint32, action_index: uint32): Tags
    /**
     * Gets the tag with the given name from a specific redo item action, or `nil` if it doesn't exist.
     * @param item_index The index of the redo item, ordered from most recent to oldest.
     * @param action_index The index of the redo action.
     * @param tag_name The name of the tag to get.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#get_redo_tag Online documentation}
     */
    get_redo_tag(item_index: uint32, action_index: uint32, tag_name: string): AnyBasic | nil
    /**
     * Sets a new tag with the given name and value on the specified redo item action.
     * @param item_index The index of the redo item, ordered from most recent to oldest.
     * @param action_index The index of the redo action.
     * @param tag_name The name of the tag to set.
     * @param tag The contents of the new tag.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#set_redo_tag Online documentation}
     */
    set_redo_tag(item_index: uint32, action_index: uint32, tag_name: string, tag: AnyBasic): void
    /**
     * Removes a tag with the given name from the specified redo item.
     * @param item_index The index of the redo item, ordered from most recent to oldest.
     * @param action_index The index of the redo action.
     * @param tag The name of the tag to remove.
     * @returns Whether the tag existed and was successfully removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#remove_redo_tag Online documentation}
     */
    remove_redo_tag(item_index: uint32, action_index: uint32, tag: string): boolean
    /**
     * The index of the player to whom this stack belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaUndoRedoStack.html#player_index Online documentation}
     */
    readonly player_index: PlayerIndex
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaUndoRedoStack"
  }
  /**
   * Prototype of a virtual signal.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaVirtualSignalPrototype.html Online documentation}
   */
  export interface LuaVirtualSignalPrototype extends LuaPrototypeBase {
    /**
     * Whether this is a special signal. The `everything`, `anything`, `each`, and `unknown` signals are considered special.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaVirtualSignalPrototype.html#special Online documentation}
     */
    readonly special: boolean
    /**
     * An alternative prototype that will be used to display info about this prototype in Factoriopedia.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaVirtualSignalPrototype.html#factoriopedia_alternative Online documentation}
     */
    readonly factoriopedia_alternative?: LuaVirtualSignalPrototype
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaVirtualSignalPrototype"
  }
  /**
   * Prototype of a void energy source.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaVoidEnergySourcePrototype.html Online documentation}
   */
  export interface LuaVoidEnergySourcePrototype {
    /**
     * The table of emissions of this energy source in `pollution/Joule`, indexed by pollutant type. Multiplying it by energy consumption in `Watt` gives `pollution/second`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaVoidEnergySourcePrototype.html#emissions_per_joule Online documentation}
     */
    readonly emissions_per_joule: Record<string, double>
    readonly render_no_network_icon: boolean
    readonly render_no_power_icon: boolean
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaVoidEnergySourcePrototype"
  }
  /**
   * Control behavior for walls.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWallControlBehavior.html Online documentation}
   */
  export interface LuaWallControlBehavior extends LuaControlBehavior {
    /**
     * The circuit condition.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWallControlBehavior.html#circuit_condition Online documentation}
     */
    get circuit_condition(): CircuitConditionDefinition
    set circuit_condition(value: CircuitConditionDefinitionWrite)
    open_gate: boolean
    read_sensor: boolean
    get output_signal(): SignalID | nil
    set output_signal(value: SignalIDWrite | nil)
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaWallControlBehavior"
  }
  /**
   * A wire connector of a given entity. Allows to find wires, add or remove wires and do some basic operations specific to those connectors.
   * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html Online documentation}
   * @noSelf
   */
  export interface LuaWireConnector {
    /**
     * Checks if this connector has any wire going to the other connector.
     * @param target Other connector to check for a connection to.
     * @param origin Origin of the wire. Defaults to `defines.wire_origin.player`.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#is_connected_to Online documentation}
     */
    is_connected_to(target: LuaWireConnector, origin?: defines.wire_origin): boolean
    /**
     * Connects this connector to other wire connector.
     * @param target Other connector to which a wire should be added.
     * @param reach_check True by default. For wires out of reach or on different surfaces, `false` must be provided.
     * @param origin Origin of the wire. Defaults to `defines.wire_origin.player`.
     * @returns Whether a connection was made.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#connect_to Online documentation}
     */
    connect_to(target: LuaWireConnector, reach_check?: boolean, origin?: defines.wire_origin): boolean
    /**
     * Disconnects this connector from other wire connector.
     * @param target Other connector to which wire to be removed should be removed.
     * @param origin Origin of the wire. Defaults to `defines.wire_origin.player`.
     * @returns Whether a connection was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#disconnect_from Online documentation}
     */
    disconnect_from(target: LuaWireConnector, origin?: defines.wire_origin): boolean
    /**
     * Removes all wires going out of this wire connector.
     * @param origin Origin of the wires to remove. Defaults to `defines.wire_origin.player`.
     * @returns True if any wire was removed.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#disconnect_all Online documentation}
     */
    disconnect_all(origin?: defines.wire_origin): boolean
    /**
     * Checks if a wire can reach from this connector to the other connector.
     * @param other_connector Target to which a wire reach is to be checked.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#can_wire_reach Online documentation}
     */
    can_wire_reach(other_connector: LuaWireConnector | LuaEntity): boolean
    /**
     * Checks if this and other wire connector have a common neighbour.
     * @param other_connector Other connector to check for common neighbour.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#have_common_neighbour Online documentation}
     */
    have_common_neighbour(other_connector: LuaWireConnector, ignore_ghost_neighbours?: boolean): boolean
    /**
     * The entity this wire connector belongs to. May return entity ghost instead if this wire connector belongs to inner entity.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#owner Online documentation}
     */
    readonly owner: LuaEntity
    /**
     * The type of wires that can be connected to this connector.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#wire_type Online documentation}
     */
    readonly wire_type: defines.wire_type
    /**
     * Identifier of this connector in the entity this connector belongs to.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#wire_connector_id Online documentation}
     */
    readonly wire_connector_id: defines.wire_connector_id
    /**
     * If this connector is owned by an entity inside of a ghost. If any of 2 ends of a wire attaches to a ghost connector, then a wire is considered to be a ghost.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#is_ghost Online documentation}
     */
    readonly is_ghost: boolean
    /**
     * Amount of wires going out of this connector. It includes all wires (ghost wires and real wires).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#connection_count Online documentation}
     */
    readonly connection_count: uint32
    /**
     * All wire connectors this connector is connected to. It includes all wires (ghost wires and real wires).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#connections Online documentation}
     */
    readonly connections: WireConnection[]
    /**
     * Amount of real wires going out of this connector. It only includes wires for which both wire connectors are real (not ghosts).
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#real_connection_count Online documentation}
     */
    readonly real_connection_count: uint32
    /**
     * All wire connectors this connector is connected to with real wires. It only includes wires that are between two non-ghost entities.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#real_connections Online documentation}
     */
    readonly real_connections: WireConnection[]
    /**
     * Index of a CircuitNetwork or ElectricSubNetwork which is going through this wire connector. Returns 0 if there is no network associated with this wire connector right now. CircuitNetwork indexes are independent of indexes of ElectricSubNetwork so they may collide with each other.
     * @see {@link https://lua-api.factorio.com/2.0.75/classes/LuaWireConnector.html#network_id Online documentation}
     */
    readonly network_id: uint32
    /**
     * Is this object valid? This Lua object holds a reference to an object within the game engine. It is possible that the game-engine object is removed whilst a mod still holds the corresponding Lua object. If that happens, the object becomes invalid, i.e. this attribute will be `false`. Mods are advised to check for object validity if any change to the game state might have occurred between the creation of the Lua object and its access.
     */
    readonly valid: boolean
    /**
     * The class name of this object. Available even when `valid` is false. For LuaStruct objects it may also be suffixed with a dotted path to a member of the struct.
     */
    readonly object_name: "LuaWireConnector"
  }
}
