# generated by datamodel-codegen:
#   filename:  https://raw.githubusercontent.com/jacquev6/factorio-data-raw-json-schema/refs/heads/main/factorio-data-raw-json-schema.full.json
#   timestamp: 2026-02-16T07:49:34+00:00

from __future__ import annotations

from dataclasses import dataclass
from enum import StrEnum
from typing import Any, Literal


class Effect(StrEnum):
    compilatron_hologram = "compilatron-hologram"


class Priority(StrEnum):
    closest = "closest"
    farthest = "farthest"
    newest = "newest"
    oldest = "oldest"


class Alignment(StrEnum):
    top_left = "top-left"
    middle_left = "middle-left"
    left = "left"
    bottom_left = "bottom-left"
    top_center = "top-center"
    middle_center = "middle-center"
    center_ = "center"
    bottom_center = "bottom-center"
    top_right = "top-right"
    middle_right = "middle-right"
    right = "right"
    bottom_right = "bottom-right"


class AmbientSoundType(StrEnum):
    menu_track = "menu-track"
    main_track = "main-track"
    hero_track = "hero-track"
    interlude = "interlude"


class AmmoSourceType(StrEnum):
    default = "default"
    player = "player"
    turret = "turret"
    vehicle = "vehicle"


class TargetType(StrEnum):
    entity = "entity"
    position = "position"
    direction = "direction"


class AnimationRunMode(StrEnum):
    forward = "forward"
    backward = "backward"
    forward_then_backward = "forward-then-backward"


class CollisionMode(StrEnum):
    distance_from_collision_box = "distance-from-collision-box"
    distance_from_center = "distance-from-center"


class AttenuationType(StrEnum):
    none = "none"
    linear = "linear"
    logarithmic = "logarithmic"
    exponential = "exponential"
    cosine = "cosine"
    S_curve = "S-curve"


class ModuleTintMode(StrEnum):
    single_module = "single-module"
    mix = "mix"


class ActivationType(StrEnum):
    shoot = "shoot"
    throw = "throw"
    consume = "consume"
    activate = "activate"


class BlendMode(StrEnum):
    normal = "normal"
    additive = "additive"
    additive_soft = "additive-soft"
    multiplicative = "multiplicative"
    multiplicative_with_alpha = "multiplicative-with-alpha"
    overwrite = "overwrite"


class BuildMode(StrEnum):
    normal = "normal"
    forced = "forced"
    superforced = "superforced"


class CloudEffectStyle(StrEnum):
    none = "none"
    euclidean = "euclidean"
    manhattan = "manhattan"
    euclidean_outside = "euclidean-outside"
    manhattan_outside = "manhattan-outside"
    horizontal_stripe = "horizontal-stripe"
    texture = "texture"
    texture_outside = "texture-outside"


class ComparatorString(StrEnum):
    field_ = "="
    field__1 = ">"
    field__2 = "<"
    field__3 = "≥"
    field__ = ">="
    field__4 = "≤"
    field___1 = "<="
    field__5 = "≠"
    field___2 = "!="


class ConsumingType(StrEnum):
    none = "none"
    game_only = "game-only"


class EventType(StrEnum):
    crafting_of_single_item_ordered = "crafting-of-single-item-ordered"
    crafting_of_multiple_items_ordered = "crafting-of-multiple-items-ordered"
    crafting_finished = "crafting-finished"


class ApplyTileTint(StrEnum):
    primary = "primary"
    secondary = "secondary"


@dataclass
class CreateSpacePlatformTechnologyTrigger:
    type: Literal["create-space-platform"]


class CursorBoxType(StrEnum):
    entity = "entity"
    multiplayer_entity = "multiplayer-entity"
    electricity = "electricity"
    copy = "copy"
    not_allowed = "not-allowed"
    pair = "pair"
    logistics = "logistics"
    train_visualization = "train-visualization"
    blueprint_snap_rectangle = "blueprint-snap-rectangle"
    spidertron_remote_selected = "spidertron-remote-selected"
    spidertron_remote_to_be_selected = "spidertron-remote-to-be-selected"


@dataclass
class DependenciesMetTipTrigger:
    type: Literal["dependencies-met"]


class DirectionString(StrEnum):
    north = "north"
    north_north_east = "north_north_east"
    north_east = "north_east"
    east_north_east = "east_north_east"
    east = "east"
    east_south_east = "east_south_east"
    south_east = "south_east"
    south_south_east = "south_south_east"
    south = "south"
    south_south_west = "south_south_west"
    south_west = "south_west"
    west_south_west = "west_south_west"
    west = "west"
    west_north_west = "west_north_west"
    north_west = "north_west"
    north_north_west = "north_north_west"


class EffectRelativeTo(StrEnum):
    ground_origin = "ground-origin"
    pod = "pod"
    spawn_origin = "spawn-origin"


class EffectTypeLimitationEnum(StrEnum):
    speed = "speed"
    productivity = "productivity"
    consumption = "consumption"
    pollution = "pollution"
    quality = "quality"


type EffectTypeLimitation = (
    Literal["speed", "productivity", "consumption", "pollution", "quality"]
    | list[EffectTypeLimitationEnum]
    | dict[str, Any]
)


class EffectVariation(StrEnum):
    lava = "lava"
    wetland_water = "wetland-water"
    oil = "oil"
    water = "water"


class ElectricUsagePriority(StrEnum):
    primary_input = "primary-input"
    primary_output = "primary-output"
    secondary_input = "secondary-input"
    secondary_output = "secondary-output"
    tertiary = "tertiary"
    solar = "solar"
    lamp = "lamp"


class DrawType(StrEnum):
    inner = "inner"
    outer = "outer"


class Type(StrEnum):
    none = "none"
    composition = "composition"


class EntityPrototypeFlag(StrEnum):
    not_rotatable = "not-rotatable"
    placeable_neutral = "placeable-neutral"
    placeable_player = "placeable-player"
    placeable_enemy = "placeable-enemy"
    placeable_off_grid = "placeable-off-grid"
    player_creation = "player-creation"
    building_direction_8_way = "building-direction-8-way"
    filter_directions = "filter-directions"
    get_by_unit_number = "get-by-unit-number"
    breaths_air = "breaths-air"
    not_repairable = "not-repairable"
    not_on_map = "not-on-map"
    not_deconstructable = "not-deconstructable"
    not_blueprintable = "not-blueprintable"
    hide_alt_info = "hide-alt-info"
    not_flammable = "not-flammable"
    no_automated_item_removal = "no-automated-item-removal"
    no_automated_item_insertion = "no-automated-item-insertion"
    no_copy_paste = "no-copy-paste"
    not_selectable_in_game = "not-selectable-in-game"
    not_upgradable = "not-upgradable"
    not_in_kill_statistics = "not-in-kill-statistics"
    building_direction_16_way = "building-direction-16-way"
    snap_to_rail_support_spot = "snap-to-rail-support-spot"
    not_in_made_in = "not-in-made-in"


type EntityPrototypeFlags = list[EntityPrototypeFlag] | dict[str, Any]


class EntityStatus(StrEnum):
    working = "working"
    normal = "normal"
    ghost = "ghost"
    not_plugged_in_electric_network = "not-plugged-in-electric-network"
    networks_connected = "networks-connected"
    networks_disconnected = "networks-disconnected"
    no_ammo = "no-ammo"
    waiting_for_target_to_be_built = "waiting-for-target-to-be-built"
    waiting_for_train = "waiting-for-train"
    no_power = "no-power"
    low_temperature = "low-temperature"
    charging = "charging"
    discharging = "discharging"
    fully_charged = "fully-charged"
    no_fuel = "no-fuel"
    no_food = "no-food"
    out_of_logistic_network = "out-of-logistic-network"
    no_recipe = "no-recipe"
    no_ingredients = "no-ingredients"
    no_input_fluid = "no-input-fluid"
    no_research_in_progress = "no-research-in-progress"
    no_minable_resources = "no-minable-resources"
    low_input_fluid = "low-input-fluid"
    low_power = "low-power"
    not_connected_to_rail = "not-connected-to-rail"
    cant_divide_segments = "cant-divide-segments"
    recharging_after_power_outage = "recharging-after-power-outage"
    no_modules_to_transmit = "no-modules-to-transmit"
    disabled_by_control_behavior = "disabled-by-control-behavior"
    opened_by_circuit_network = "opened-by-circuit-network"
    closed_by_circuit_network = "closed-by-circuit-network"
    disabled_by_script = "disabled-by-script"
    disabled = "disabled"
    turned_off_during_daytime = "turned-off-during-daytime"
    fluid_ingredient_shortage = "fluid-ingredient-shortage"
    item_ingredient_shortage = "item-ingredient-shortage"
    full_output = "full-output"
    not_enough_space_in_output = "not-enough-space-in-output"
    full_burnt_result_output = "full-burnt-result-output"
    marked_for_deconstruction = "marked-for-deconstruction"
    missing_required_fluid = "missing-required-fluid"
    missing_science_packs = "missing-science-packs"
    waiting_for_source_items = "waiting-for-source-items"
    waiting_for_space_in_destination = "waiting-for-space-in-destination"
    preparing_rocket_for_launch = "preparing-rocket-for-launch"
    waiting_to_launch_rocket = "waiting-to-launch-rocket"
    waiting_for_space_in_platform_hub = "waiting-for-space-in-platform-hub"
    launching_rocket = "launching-rocket"
    thrust_not_required = "thrust-not-required"
    not_enough_thrust = "not-enough-thrust"
    on_the_way = "on-the-way"
    waiting_in_orbit = "waiting-in-orbit"
    waiting_for_rocket_to_arrive = "waiting-for-rocket-to-arrive"
    no_path = "no-path"
    broken = "broken"
    none = "none"
    frozen = "frozen"
    paused = "paused"
    not_connected_to_hub_or_pad = "not-connected-to-hub-or-pad"
    computing_navigation = "computing-navigation"
    no_filter = "no-filter"
    waiting_at_stop = "waiting-at-stop"
    destination_stop_full = "destination-stop-full"
    pipeline_overextended = "pipeline-overextended"
    no_spot_seedable_by_inputs = "no-spot-seedable-by-inputs"
    waiting_for_plants_to_grow = "waiting-for-plants-to-grow"
    recipe_not_researched = "recipe-not-researched"


class Transfer(StrEnum):
    in_ = "in"
    out = "out"


class Type1(StrEnum):
    full = "full"
    manual = "manual"


class ProductionType(StrEnum):
    none = "none"
    input = "input"
    input_output = "input-output"
    output = "output"


class FluidFlowDirection(StrEnum):
    input_output = "input-output"
    input = "input"
    output = "output"


class FogType(StrEnum):
    vulcanus = "vulcanus"
    gleba = "gleba"


class ForceCondition(StrEnum):
    all = "all"
    enemy = "enemy"
    ally = "ally"
    friend = "friend"
    not_friend = "not-friend"
    same = "same"
    not_same = "not-same"


class PlayFor(StrEnum):
    character_actions = "character_actions"
    everything = "everything"


class HorizontalAlign(StrEnum):
    left = "left"
    center_ = "center"
    right = "right"


class RenderLayer1(StrEnum):
    entity_info_icon = "entity-info-icon"
    entity_info_icon_above = "entity-info-icon-above"
    air_entity_info_icon = "air-entity-info-icon"


class ItemPrototypeFlag(StrEnum):
    draw_logistic_overlay = "draw-logistic-overlay"
    excluded_from_trash_unrequested = "excluded-from-trash-unrequested"
    always_show = "always-show"
    hide_from_bonus_gui = "hide-from-bonus-gui"
    hide_from_fuel_tooltip = "hide-from-fuel-tooltip"
    not_stackable = "not-stackable"
    primary_place_result = "primary-place-result"
    mod_openable = "mod-openable"
    only_in_cursor = "only-in-cursor"
    spawnable = "spawnable"
    spoil_result = "spoil-result"
    ignore_spoil_time_modifier = "ignore-spoil-time-modifier"


type ItemPrototypeFlags = list[ItemPrototypeFlag] | dict[str, Any]


class Type2(StrEnum):
    basic = "basic"
    oriented = "oriented"


class Type4(StrEnum):
    impact_soundset = "impact-soundset"
    prototype = "prototype"
    id = "id"
    countAsRockForFilteredDeconstruction = (
        "countAsRockForFilteredDeconstruction"
    )


class LinkedGameControl(StrEnum):
    move_up = "move-up"
    move_down = "move-down"
    move_left = "move-left"
    move_right = "move-right"
    alternative_gui_move_up = "alternative-gui-move-up"
    alternative_gui_move_down = "alternative-gui-move-down"
    alternative_gui_move_left = "alternative-gui-move-left"
    alternative_gui_move_right = "alternative-gui-move-right"
    open_character_gui = "open-character-gui"
    open_gui = "open-gui"
    confirm_gui = "confirm-gui"
    toggle_free_cursor = "toggle-free-cursor"
    mine = "mine"
    build = "build"
    build_ghost = "build-ghost"
    super_forced_build = "super-forced-build"
    clear_cursor = "clear-cursor"
    pipette = "pipette"
    rotate = "rotate"
    reverse_rotate = "reverse-rotate"
    flip_horizontal = "flip-horizontal"
    flip_vertical = "flip-vertical"
    pick_items = "pick-items"
    drop_cursor = "drop-cursor"
    show_info = "show-info"
    shoot_enemy = "shoot-enemy"
    shoot_selected = "shoot-selected"
    next_weapon = "next-weapon"
    toggle_driving = "toggle-driving"
    zoom_in = "zoom-in"
    zoom_out = "zoom-out"
    use_item = "use-item"
    alternative_use_item = "alternative-use-item"
    toggle_console = "toggle-console"
    copy_entity_settings = "copy-entity-settings"
    paste_entity_settings = "paste-entity-settings"
    controller_gui_logistics_tab = "controller-gui-logistics-tab"
    controller_gui_character_tab = "controller-gui-character-tab"
    controller_gui_crafting_tab = "controller-gui-crafting-tab"
    toggle_rail_layer = "toggle-rail-layer"
    select_for_blueprint = "select-for-blueprint"
    select_for_cancel_deconstruct = "select-for-cancel-deconstruct"
    select_for_super_forced_deconstruct = "select-for-super-forced-deconstruct"
    reverse_select = "reverse-select"
    alt_reverse_select = "alt-reverse-select"
    deselect = "deselect"
    cycle_blueprint_forwards = "cycle-blueprint-forwards"
    cycle_blueprint_backwards = "cycle-blueprint-backwards"
    focus_search = "focus-search"
    larger_terrain_building_area = "larger-terrain-building-area"
    smaller_terrain_building_area = "smaller-terrain-building-area"
    remove_pole_cables = "remove-pole-cables"
    build_with_obstacle_avoidance = "build-with-obstacle-avoidance"
    add_station = "add-station"
    add_temporary_station = "add-temporary-station"
    rename_all = "rename-all"
    fast_wait_condition = "fast-wait-condition"
    drag_map = "drag-map"
    move_tag = "move-tag"
    place_in_chat = "place-in-chat"
    place_ping = "place-ping"
    pin = "pin"
    activate_tooltip = "activate-tooltip"
    next_surface = "next-surface"
    previous_surface = "previous-surface"
    cycle_quality_up = "cycle-quality-up"
    cycle_quality_down = "cycle-quality-down"
    scroll_tooltip_up = "scroll-tooltip-up"
    scroll_tooltip_down = "scroll-tooltip-down"
    craft = "craft"
    craft_5 = "craft-5"
    craft_all = "craft-all"
    cancel_craft = "cancel-craft"
    cancel_craft_5 = "cancel-craft-5"
    cancel_craft_all = "cancel-craft-all"
    pick_item = "pick-item"
    stack_transfer = "stack-transfer"
    inventory_transfer = "inventory-transfer"
    fast_entity_transfer = "fast-entity-transfer"
    cursor_split = "cursor-split"
    stack_split = "stack-split"
    inventory_split = "inventory-split"
    fast_entity_split = "fast-entity-split"
    toggle_filter = "toggle-filter"
    open_item = "open-item"
    copy_inventory_filter = "copy-inventory-filter"
    paste_inventory_filter = "paste-inventory-filter"
    show_quick_panel = "show-quick-panel"
    next_quick_panel_page = "next-quick-panel-page"
    previous_quick_panel_page = "previous-quick-panel-page"
    next_quick_panel_tab = "next-quick-panel-tab"
    previous_quick_panel_tab = "previous-quick-panel-tab"
    rotate_active_quick_bars = "rotate-active-quick-bars"
    next_active_quick_bar = "next-active-quick-bar"
    previous_active_quick_bar = "previous-active-quick-bar"
    quick_bar_button_1 = "quick-bar-button-1"
    quick_bar_button_2 = "quick-bar-button-2"
    quick_bar_button_3 = "quick-bar-button-3"
    quick_bar_button_4 = "quick-bar-button-4"
    quick_bar_button_5 = "quick-bar-button-5"
    quick_bar_button_6 = "quick-bar-button-6"
    quick_bar_button_7 = "quick-bar-button-7"
    quick_bar_button_8 = "quick-bar-button-8"
    quick_bar_button_9 = "quick-bar-button-9"
    quick_bar_button_10 = "quick-bar-button-10"
    quick_bar_button_1_secondary = "quick-bar-button-1-secondary"
    quick_bar_button_2_secondary = "quick-bar-button-2-secondary"
    quick_bar_button_3_secondary = "quick-bar-button-3-secondary"
    quick_bar_button_4_secondary = "quick-bar-button-4-secondary"
    quick_bar_button_5_secondary = "quick-bar-button-5-secondary"
    quick_bar_button_6_secondary = "quick-bar-button-6-secondary"
    quick_bar_button_7_secondary = "quick-bar-button-7-secondary"
    quick_bar_button_8_secondary = "quick-bar-button-8-secondary"
    quick_bar_button_9_secondary = "quick-bar-button-9-secondary"
    quick_bar_button_10_secondary = "quick-bar-button-10-secondary"
    action_bar_select_page_1 = "action-bar-select-page-1"
    action_bar_select_page_2 = "action-bar-select-page-2"
    action_bar_select_page_3 = "action-bar-select-page-3"
    action_bar_select_page_4 = "action-bar-select-page-4"
    action_bar_select_page_5 = "action-bar-select-page-5"
    action_bar_select_page_6 = "action-bar-select-page-6"
    action_bar_select_page_7 = "action-bar-select-page-7"
    action_bar_select_page_8 = "action-bar-select-page-8"
    action_bar_select_page_9 = "action-bar-select-page-9"
    action_bar_select_page_10 = "action-bar-select-page-10"
    copy = "copy"
    cut = "cut"
    paste = "paste"
    cycle_clipboard_forwards = "cycle-clipboard-forwards"
    cycle_clipboard_backwards = "cycle-clipboard-backwards"
    undo = "undo"
    redo = "redo"
    toggle_menu = "toggle-menu"
    toggle_map = "toggle-map"
    close_menu = "close-menu"
    open_technology_gui = "open-technology-gui"
    production_statistics = "production-statistics"
    logistic_networks = "logistic-networks"
    toggle_blueprint_library = "toggle-blueprint-library"
    open_trains_gui = "open-trains-gui"
    open_factoriopedia = "open-factoriopedia"
    back = "back"
    forward = "forward"
    pause_game = "pause-game"
    confirm_message = "confirm-message"
    previous_mod = "previous-mod"
    connect_train = "connect-train"
    disconnect_train = "disconnect-train"
    submit_feedback = "submit-feedback"
    editor_next_variation = "editor-next-variation"
    editor_previous_variation = "editor-previous-variation"
    editor_clone_item = "editor-clone-item"
    editor_delete_item = "editor-delete-item"
    editor_toggle_pause = "editor-toggle-pause"
    editor_tick_once = "editor-tick-once"
    editor_speed_up = "editor-speed-up"
    editor_speed_down = "editor-speed-down"
    editor_reset_speed = "editor-reset-speed"
    editor_set_clone_brush_source = "editor-set-clone-brush-source"
    editor_set_clone_brush_destination = "editor-set-clone-brush-destination"
    editor_switch_to_surface = "editor-switch-to-surface"
    editor_remove_scripting_object = "editor-remove-scripting-object"
    debug_toggle_atlas_gui = "debug-toggle-atlas-gui"
    debug_toggle_gui_visibility = "debug-toggle-gui-visibility"
    debug_toggle_debug_settings = "debug-toggle-debug-settings"
    debug_toggle_basic = "debug-toggle-basic"
    debug_reset_zoom = "debug-reset-zoom"
    debug_reset_zoom_2x = "debug-reset-zoom-2x"
    toggle_gui_debug = "toggle-gui-debug"
    toggle_gui_style_view = "toggle-gui-style-view"
    toggle_gui_shadows = "toggle-gui-shadows"
    toggle_gui_glows = "toggle-gui-glows"
    open_prototypes_gui = "open-prototypes-gui"
    open_prototype_explorer_gui = "open-prototype-explorer-gui"
    increase_ui_scale = "increase-ui-scale"
    decrease_ui_scale = "decrease-ui-scale"
    reset_ui_scale = "reset-ui-scale"
    slash_editor = "slash-editor"
    toggle_entity = "toggle-entity"
    next_player_in_replay = "next-player-in-replay"
    move_blueprint_absolute_grid_up = "move-blueprint-absolute-grid-up"
    move_blueprint_absolute_grid_down = "move-blueprint-absolute-grid-down"
    move_blueprint_absolute_grid_left = "move-blueprint-absolute-grid-left"
    move_blueprint_absolute_grid_right = "move-blueprint-absolute-grid-right"
    move_blueprint_entities_up = "move-blueprint-entities-up"
    move_blueprint_entities_down = "move-blueprint-entities-down"
    move_blueprint_entities_left = "move-blueprint-entities-left"
    move_blueprint_entities_right = "move-blueprint-entities-right"
    play_next_track = "play-next-track"
    play_previous_track = "play-previous-track"
    pause_resume_music = "pause-resume-music"
    field_ = ""


class WireType(StrEnum):
    red = "red"
    green = "green"
    copper = "copper"


class AutoplaceSettings1(StrEnum):
    entity = "entity"
    tile = "tile"
    decorative = "decorative"


class Mirroring(StrEnum):
    horizontal = "horizontal"
    vertical = "vertical"
    diagonal_pos = "diagonal-pos"
    diagonal_neg = "diagonal-neg"


class ModuleTint(StrEnum):
    primary = "primary"
    secondary = "secondary"
    tertiary = "tertiary"
    quaternary = "quaternary"
    none = "none"


class OrderEnum(StrEnum):
    wind = "wind"
    base_ambience = "base_ambience"


class ConnectionType(StrEnum):
    normal = "normal"
    underground = "underground"
    linked = "linked"


class PlayerInputMethodFilter(StrEnum):
    all = "all"
    keyboard_and_mouse = "keyboard_and_mouse"
    game_controller = "game_controller"


class ProcessionAudioEventType(StrEnum):
    play_sound = "play-sound"
    start_looped_sound = "start-looped-sound"
    stop_looped_sound = "stop-looped-sound"


class ProcessionAudioType(StrEnum):
    none = "none"
    sound = "sound"
    looped_sound = "looped-sound"
    pod_catalogue = "pod-catalogue"
    location_catalogue = "location-catalogue"


class ProcessionAudioUsage(StrEnum):
    both = "both"
    passenger = "passenger"
    outside = "outside"


class ProcessionGraphicType(StrEnum):
    none = "none"
    sprite = "sprite"
    animation = "animation"
    pod_catalogue = "pod-catalogue"
    location_catalogue = "location-catalogue"
    hatch_location_catalogue_index = "hatch-location-catalogue-index"


class RangeMode(StrEnum):
    center_to_center = "center-to-center"
    bounding_box_to_bounding_box = "bounding-box-to-bounding-box"
    center_to_bounding_box = "center-to-bounding-box"


class RenderLayer(StrEnum):
    zero = "zero"
    background_transitions = "background-transitions"
    under_tiles = "under-tiles"
    decals = "decals"
    above_tiles = "above-tiles"
    ground_layer_1 = "ground-layer-1"
    ground_layer_2 = "ground-layer-2"
    ground_layer_3 = "ground-layer-3"
    ground_layer_4 = "ground-layer-4"
    ground_layer_5 = "ground-layer-5"
    lower_radius_visualization = "lower-radius-visualization"
    radius_visualization = "radius-visualization"
    transport_belt_integration = "transport-belt-integration"
    resource = "resource"
    building_smoke = "building-smoke"
    rail_stone_path_lower = "rail-stone-path-lower"
    rail_stone_path = "rail-stone-path"
    rail_tie = "rail-tie"
    decorative = "decorative"
    ground_patch = "ground-patch"
    ground_patch_higher = "ground-patch-higher"
    ground_patch_higher2 = "ground-patch-higher2"
    rail_chain_signal_metal = "rail-chain-signal-metal"
    rail_screw = "rail-screw"
    rail_metal = "rail-metal"
    remnants = "remnants"
    floor = "floor"
    transport_belt = "transport-belt"
    transport_belt_endings = "transport-belt-endings"
    floor_mechanics_under_corpse = "floor-mechanics-under-corpse"
    corpse = "corpse"
    floor_mechanics = "floor-mechanics"
    item = "item"
    transport_belt_reader = "transport-belt-reader"
    lower_object = "lower-object"
    transport_belt_circuit_connector = "transport-belt-circuit-connector"
    lower_object_above_shadow = "lower-object-above-shadow"
    lower_object_overlay = "lower-object-overlay"
    object_under = "object-under"
    object = "object"
    cargo_hatch = "cargo-hatch"
    higher_object_under = "higher-object-under"
    higher_object_above = "higher-object-above"
    train_stop_top = "train-stop-top"
    item_in_inserter_hand = "item-in-inserter-hand"
    above_inserters = "above-inserters"
    wires = "wires"
    under_elevated = "under-elevated"
    elevated_rail_stone_path_lower = "elevated-rail-stone-path-lower"
    elevated_rail_stone_path = "elevated-rail-stone-path"
    elevated_rail_tie = "elevated-rail-tie"
    elevated_rail_screw = "elevated-rail-screw"
    elevated_rail_metal = "elevated-rail-metal"
    elevated_lower_object = "elevated-lower-object"
    elevated_object = "elevated-object"
    elevated_higher_object = "elevated-higher-object"
    fluid_visualization = "fluid-visualization"
    wires_above = "wires-above"
    entity_info_icon = "entity-info-icon"
    entity_info_icon_above = "entity-info-icon-above"
    explosion = "explosion"
    projectile = "projectile"
    smoke = "smoke"
    air_object = "air-object"
    air_entity_info_icon = "air-entity-info-icon"
    light_effect = "light-effect"
    selection_box = "selection-box"
    higher_selection_box = "higher-selection-box"
    collision_selection_box = "collision-selection-box"
    arrow = "arrow"
    cursor = "cursor"


class RichTextSetting(StrEnum):
    enabled = "enabled"
    disabled = "disabled"
    highlight = "highlight"


class EntityFilterMode(StrEnum):
    whitelist = "whitelist"
    blacklist = "blacklist"


class TileFilterMode(StrEnum):
    whitelist = "whitelist"
    blacklist = "blacklist"


class SelectionModeFlag(StrEnum):
    blueprint = "blueprint"
    deconstruct = "deconstruct"
    cancel_deconstruct = "cancel-deconstruct"
    items = "items"
    trees = "trees"
    buildable_type = "buildable-type"
    nothing = "nothing"
    items_to_place = "items-to-place"
    any_entity = "any-entity"
    any_tile = "any-tile"
    same_force = "same-force"
    not_same_force = "not-same-force"
    friend = "friend"
    enemy = "enemy"
    upgrade = "upgrade"
    cancel_upgrade = "cancel-upgrade"
    downgrade = "downgrade"
    entity_with_health = "entity-with-health"
    is_military_target = "is-military-target"
    entity_with_owner = "entity-with-owner"
    avoid_rolling_stock = "avoid-rolling-stock"
    avoid_vehicle = "avoid-vehicle"
    controllable = "controllable"
    controllable_add = "controllable-add"
    controllable_remove = "controllable-remove"
    entity_ghost = "entity-ghost"
    tile_ghost = "tile-ghost"


type SelectionModeFlags = (
    Literal[
        "blueprint",
        "deconstruct",
        "cancel-deconstruct",
        "items",
        "trees",
        "buildable-type",
        "nothing",
        "items-to-place",
        "any-entity",
        "any-tile",
        "same-force",
        "not-same-force",
        "friend",
        "enemy",
        "upgrade",
        "cancel-upgrade",
        "downgrade",
        "entity-with-health",
        "is-military-target",
        "entity-with-owner",
        "avoid-rolling-stock",
        "avoid-vehicle",
        "controllable",
        "controllable-add",
        "controllable-remove",
        "entity-ghost",
        "tile-ghost",
    ]
    | list[SelectionModeFlag]
    | dict[str, Any]
)


class SendToOrbitMode(StrEnum):
    not_sendable = "not-sendable"
    manual = "manual"
    automated = "automated"


class Target(StrEnum):
    enemy = "enemy"
    entity = "entity"


class Type6(StrEnum):
    virtual = "virtual"
    item = "item"
    fluid = "fluid"
    recipe = "recipe"
    entity = "entity"
    space_location = "space-location"
    asteroid_chunk = "asteroid-chunk"
    quality = "quality"


class SoundModifierType(StrEnum):
    game = "game"
    main_menu = "main-menu"
    tips_and_tricks = "tips-and-tricks"
    driving = "driving"
    elevation = "elevation"
    space_platform = "space-platform"


class SoundType(StrEnum):
    game_effect = "game-effect"
    gui_effect = "gui-effect"
    ambient = "ambient"
    environment = "environment"
    walking = "walking"
    alert = "alert"
    wind = "wind"
    world_ambient = "world-ambient"
    weapon = "weapon"
    explosion = "explosion"
    enemy = "enemy"


class Type8(StrEnum):
    entity = "entity"
    asteroid_chunk = "asteroid-chunk"


class SpriteFlag(StrEnum):
    no_crop = "no-crop"
    not_compressed = "not-compressed"
    always_compressed = "always-compressed"
    mipmap = "mipmap"
    linear_minification = "linear-minification"
    linear_magnification = "linear-magnification"
    linear_mip_level = "linear-mip-level"
    alpha_mask = "alpha-mask"
    no_scale = "no-scale"
    mask = "mask"
    icon = "icon"
    gui = "gui"
    gui_icon = "gui-icon"
    light = "light"
    terrain = "terrain"
    terrain_effect_map = "terrain-effect-map"
    reflection_effect_map = "reflection-effect-map"
    shadow = "shadow"
    smoke = "smoke"
    decal = "decal"
    low_object = "low-object"
    corpse_decay = "corpse-decay"
    trilinear_filtering = "trilinear-filtering"
    group_none = "group=none"
    group_terrain = "group=terrain"
    group_shadow = "group=shadow"
    group_smoke = "group=smoke"
    group_decal = "group=decal"
    group_low_object = "group=low-object"
    group_gui = "group=gui"
    group_icon = "group=icon"
    group_icon_background = "group=icon-background"
    group_effect_texture = "group=effect-texture"


type SpriteFlags = list[SpriteFlag] | dict[str, Any]


class SpritePriority(StrEnum):
    extra_high_no_scale = "extra-high-no-scale"
    extra_high = "extra-high"
    high = "high"
    medium = "medium"
    low = "low"
    very_low = "very-low"
    no_atlas = "no-atlas"


class SpriteUsageHint(StrEnum):
    any = "any"
    mining = "mining"
    tile_artifical = "tile-artifical"
    corpse_decay = "corpse-decay"
    enemy = "enemy"
    player = "player"
    train = "train"
    vehicle = "vehicle"
    explosion = "explosion"
    rail = "rail"
    elevated_rail = "elevated-rail"
    air = "air"
    remnant = "remnant"
    decorative = "decorative"


class SpriteUsageSurfaceHint(StrEnum):
    any = "any"
    nauvis = "nauvis"
    vulcanus = "vulcanus"
    gleba = "gleba"
    fulgora = "fulgora"
    aquilo = "aquilo"
    space = "space"


class Transfer1(StrEnum):
    stack = "stack"
    inventory = "inventory"
    whole_inventory = "whole-inventory"


class StretchRule(StrEnum):
    on = "on"
    off = "off"
    auto = "auto"
    stretch_and_expand = "stretch_and_expand"


class TileRenderLayer(StrEnum):
    zero = "zero"
    water = "water"
    water_overlay = "water-overlay"
    ground_natural = "ground-natural"
    ground_artificial = "ground-artificial"
    top = "top"


class TipStatus(StrEnum):
    locked = "locked"
    optional = "optional"
    dependencies_not_met = "dependencies-not-met"
    unlocked = "unlocked"
    suggested = "suggested"
    not_to_be_suggested = "not-to-be-suggested"
    completed_without_tutorial = "completed-without-tutorial"
    completed = "completed"


class TurretState(StrEnum):
    folded = "folded"
    preparing = "preparing"
    prepared = "prepared"
    starting_attack = "starting-attack"
    attacking = "attacking"
    ending_attack = "ending-attack"
    rotate_for_folding = "rotate-for-folding"
    folding = "folding"


class ValveMode(StrEnum):
    one_way = "one-way"
    overflow = "overflow"
    top_up = "top-up"


class VariableAmbientSoundCompositionMode(StrEnum):
    randomized = "randomized"
    semi_randomized = "semi-randomized"
    shuffled = "shuffled"
    layer_controlled = "layer-controlled"


class VariableAmbientSoundNextStateTrigger(StrEnum):
    layers_finished = "layers-finished"
    duration = "duration"


class VariableAmbientSoundStateType(StrEnum):
    regular = "regular"
    intermezzo = "intermezzo"
    final = "final"
    stop = "stop"


class VerticalAlign(StrEnum):
    top = "top"
    center_ = "center"
    bottom = "bottom"


class Effect32(StrEnum):
    flicker = "flicker"
    uranium_glow = "uranium-glow"
    none = "none"


class ApplyRecipeTint(StrEnum):
    primary = "primary"
    secondary = "secondary"
    tertiary = "tertiary"
    quaternary = "quaternary"
    none = "none"


class ApplyTint(StrEnum):
    resource_color = "resource-color"
    input_fluid_base_color = "input-fluid-base-color"
    input_fluid_flow_color = "input-fluid-flow-color"
    status = "status"
    none = "none"
    visual_state_color = "visual-state-color"


type Boolean = bool


type Double = float


type Float = float


type Int16 = float


type Int32 = float


type Int8 = float


type Number = float


type String = str


type Table = Any


type Uint16 = float


type Uint32 = float


type Uint64 = float


type Uint8 = float


class RemoveDecoratives(StrEnum):
    automatic = "automatic"
    true = "true"
    false = "false"


class Category(StrEnum):
    resource = "resource"
    terrain = "terrain"
    cliff = "cliff"
    enemy = "enemy"


class BeaconCounter(StrEnum):
    total = "total"
    same_type = "same_type"


class FilterMode(StrEnum):
    blacklist = "blacklist"
    whitelist = "whitelist"


class Mode(StrEnum):
    heat_fluid_inside = "heat-fluid-inside"
    output_to_separate_pipe = "output-to-separate-pipe"


class ObjectiveCondition(StrEnum):
    game_finished = "game-finished"
    rocket_launched = "rocket-launched"
    late_research = "late-research"
    late_research_1 = "late-research"


class InventoryType(StrEnum):
    normal = "normal"
    with_bar = "with_bar"
    with_filters_and_bar = "with_filters_and_bar"
    with_custom_stack_size = "with_custom_stack_size"
    with_weight_limit = "with_weight_limit"


class Action(StrEnum):
    lua = "lua"
    spawn_item = "spawn-item"
    toggle_personal_roboport = "toggle-personal-roboport"
    toggle_personal_logistic_requests = "toggle-personal-logistic-requests"
    toggle_equipment_movement_bonus = "toggle-equipment-movement-bonus"


@dataclass
class DeliverCategory:
    type: Literal["deliver-category"]
    name: String


class GuiMode(StrEnum):
    all = "all"
    none = "none"
    admins = "admins"


class AttackType(StrEnum):
    autonomous = "autonomous"
    distraction = "distraction"
    scripted = "scripted"


@dataclass
class ImpactCategory:
    type: Literal["impact-category"]
    name: String


class LogisticMode(StrEnum):
    active_provider = "active-provider"
    passive_provider = "passive-provider"
    requester = "requester"
    storage = "storage"
    buffer = "buffer"


class GlowRenderMode(StrEnum):
    additive = "additive"
    multiplicative = "multiplicative"


@dataclass
class MapGenPresets:
    type: Literal["map-gen-presets"]
    name: String


class SystemCursor(StrEnum):
    arrow = "arrow"
    i_beam = "i-beam"
    crosshair = "crosshair"
    wait_arrow = "wait-arrow"
    size_all = "size-all"
    no = "no"
    hand = "hand"


class Usage(StrEnum):
    departure = "departure"
    arrival = "arrival"
    intermezzo = "intermezzo"


@dataclass
class RemoteControllerPrototype:
    type: Literal["remote-controller"]
    name: String
    movement_speed: Double


class Action1(StrEnum):
    toggle_alt_mode = "toggle-alt-mode"
    undo = "undo"
    redo = "redo"
    paste = "paste"
    import_string = "import-string"
    toggle_personal_roboport = "toggle-personal-roboport"
    toggle_personal_logistic_requests = "toggle-personal-logistic-requests"
    toggle_equipment_movement_bonus = "toggle-equipment-movement-bonus"
    spawn_item = "spawn-item"
    lua = "lua"
    redo_1 = "redo"


class Style(StrEnum):
    default = "default"
    blue = "blue"
    red = "red"
    green = "green"


@dataclass
class SpectatorControllerPrototype:
    type: Literal["spectator-controller"]
    name: String
    movement_speed: Double


class Shader(StrEnum):
    water = "water"
    space = "space"
    puddle = "puddle"


@dataclass
class TriggerTargetType:
    type: Literal["trigger-target-type"]
    name: String


@dataclass
class EntityRendererSearchBoxLimits:
    left: Uint8
    top: Uint8
    right: Uint8
    bottom: Uint8


@dataclass
class TrainPathFinding:
    train_stop_penalty: Uint32
    stopped_manually_controlled_train_penalty: Uint32
    stopped_manually_controlled_train_without_passenger_penalty: Uint32
    signal_reserved_by_circuit_network_penalty: Uint32
    train_in_station_penalty: Uint32
    train_in_station_with_no_other_valid_stops_in_schedule: Uint32
    train_arriving_to_station_penalty: Uint32
    train_arriving_to_signal_penalty: Uint32
    train_waiting_at_signal_penalty: Uint32
    train_waiting_at_signal_tick_multiplier_penalty: Float
    train_with_no_path_penalty: Uint32
    train_auto_without_schedule_penalty: Uint32


@dataclass
class ActivatePasteTipTrigger:
    type: Literal["activate-paste"]
    count: Uint32 | None = None


type ActiveTriggerID = String


@dataclass
class ActivityMatchingModifiers:
    multiplier: Float | None = None
    minimum: Float | None = None
    maximum: Float | None = None
    offset: Float | None = None
    inverted: Boolean | None = None


@dataclass
class AggregationSpecification:
    max_count: Uint32
    remove: Boolean
    progress_threshold: Float | None = None
    volume_reduction_rate: Float | None = None
    count_already_playing: Boolean | None = None
    priority: Priority | None = None


@dataclass
class AgriculturalCraneSpeedArm:
    turn_rate: Double | None = None
    extension_speed: Double | None = None


@dataclass
class AgriculturalCraneSpeedGrappler:
    vertical_turn_rate: Double | None = None
    horizontal_turn_rate: Double | None = None
    extension_speed: Double | None = None
    allow_transpolar_movement: Boolean | None = None


type AirbornePollutantID = String


@dataclass
class AlternativeBuildTipTrigger:
    type: Literal["alternative-build"]
    count: Uint32 | None = None


type AmmoCategoryID = String


type AnimationFrameSequence = list[Uint16] | dict[str, Any]


type AnyBasic = String | Boolean | Number | Table


@dataclass
class ApplyStarterPackTipTrigger:
    type: Literal["apply-starter-pack"]
    count: Uint32 | None = None


type AsteroidChunkID = String


@dataclass
class AsteroidSettings:
    spawning_rate: Double
    max_ray_portals_expanded_per_tick: Uint32


type AutoplaceControlID = String


@dataclass
class BeltTraverseTipTrigger:
    type: Literal["belt-traverse"]
    count: Uint32 | None = None


@dataclass
class BuildEntityByRobotTipTrigger:
    type: Literal["build-entity-by-robot"]
    count: Uint32 | None = None


type BurnerUsageID = String


@dataclass
class ChangeSurfaceTipTrigger:
    type: Literal["change-surface"]
    surface: String
    count: Uint32 | None = None


@dataclass
class CircuitConnectorLayer:
    north: RenderLayer | None = None
    east: RenderLayer | None = None
    south: RenderLayer | None = None
    west: RenderLayer | None = None


@dataclass
class CircuitConnectorSecondaryDrawOrder:
    north: Int8 | None = None
    east: Int8 | None = None
    south: Int8 | None = None
    west: Int8 | None = None


@dataclass
class ClearCursorTipTrigger:
    type: Literal["clear-cursor"]
    count: Uint32 | None = None


@dataclass
class CloudsTextureCoordinateTransformation:
    scale: Float
    wind_speed_factor: Float | None = None


type CollisionLayerID = String


@dataclass
class CollisionMaskConnector:
    layers: dict[CollisionLayerID, Literal[True]]
    not_colliding_with_itself: Boolean | None = None
    consider_tile_transitions: Boolean | None = None
    colliding_with_tiles_only: Boolean | None = None


@dataclass
class Color1:
    r: Float | None = None
    g: Float | None = None
    b: Float | None = None
    a: Float | None = None


type Color = Color1 | list[Float]


@dataclass
class ColorHintSpecification:
    text: String | None = None
    text_color: Color | None = None


@dataclass
class ColumnAlignment:
    column: Uint32
    alignment: Alignment


@dataclass
class ColumnWidth:
    column: Uint32
    minimal_width: Int32 | None = None
    maximal_width: Int32 | None = None
    width: Int32 | None = None


@dataclass
class ColumnWidthItem:
    minimal_width: Int32 | None = None
    maximal_width: Int32 | None = None
    width: Int32 | None = None


@dataclass
class ControlPoint1:
    control: Float
    volume_percentage: Float


type ControlPoint = ControlPoint1 | list[Float]


type DamageTypeID = String


type DecorativeID = String


@dataclass
class DifficultySettings:
    technology_price_multiplier: Double | None = None
    spoil_time_modifier: Double | None = None


@dataclass
class DropItemTipTrigger:
    type: Literal["drop-item"]
    count: Uint32 | None = None
    drop_into_entity: Boolean | None = None


type EffectValue = Float


@dataclass
class EnemyEvolutionSettings:
    enabled: Boolean
    time_factor: Double
    destroy_factor: Double
    pollution_factor: Double


@dataclass
class EnemyExpansionSettings:
    enabled: Boolean
    max_expansion_distance: Uint32
    friendly_base_influence_radius: Uint32
    enemy_building_influence_radius: Uint32
    building_coefficient: Double
    other_base_coefficient: Double
    neighbouring_chunk_coefficient: Double
    neighbouring_base_chunk_coefficient: Double
    max_colliding_tiles_coefficient: Double
    settler_group_min_size: Uint32
    settler_group_max_size: Uint32
    min_expansion_cooldown: Uint32
    max_expansion_cooldown: Uint32


@dataclass
class EnemySpawnerAbsorption:
    absolute: Double
    proportional: Double


type Energy = String


type EntityID = String


@dataclass
class EntityTransferTipTrigger:
    type: Literal["entity-transfer"]
    count: Uint32 | None = None
    transfer: Transfer | None = None


type EquipmentCategoryID = String


type EquipmentGridID = String


type EquipmentID = String


@dataclass
class EquipmentShape:
    width: Uint32
    height: Uint32
    type: Type1
    points: list[list[Uint32] | dict[str, Any]] | dict[str, Any] | None = None


@dataclass
class Fade1:
    curve_type: AttenuationType
    tuning_parameter: Float | None = None
    from_: ControlPoint | None = None
    to: ControlPoint | None = None


type Fade = Fade1 | AttenuationType


@dataclass
class Fades:
    fade_in: Fade | None = None
    fade_out: Fade | None = None


@dataclass
class FastBeltBendTipTrigger:
    type: Literal["fast-belt-bend"]
    count: Uint32 | None = None


@dataclass
class FastReplaceTipTrigger:
    type: Literal["fast-replace"]
    count: Uint32 | None = None
    source: EntityID | None = None
    target: EntityID | None = None
    match_type_only: Boolean | None = None


type FileName = String


@dataclass
class FlipEntityTipTrigger:
    type: Literal["flip-entity"]
    count: Uint32 | None = None


type FluidAmount = Double


@dataclass
class SecondaryDrawOrders:
    north: Int8 | None = None
    east: Int8 | None = None
    south: Int8 | None = None
    west: Int8 | None = None


type FluidBoxLinkedConnectionID = Uint32


type FluidID = String


@dataclass
class FluidIngredientPrototype:
    type: Literal["fluid"]
    name: FluidID
    amount: FluidAmount
    temperature: Float | None = None
    minimum_temperature: Float | None = None
    maximum_temperature: Float | None = None
    ignored_by_stats: FluidAmount | None = None
    fluidbox_index: Uint32 | None = None
    fluidbox_multiplier: Uint8 | None = None


@dataclass
class FluidProductPrototype:
    type: Literal["fluid"]
    name: FluidID
    amount: FluidAmount | None = None
    amount_min: FluidAmount | None = None
    amount_max: FluidAmount | None = None
    probability: Double | None = None
    ignored_by_stats: FluidAmount | None = None
    ignored_by_productivity: FluidAmount | None = None
    temperature: Float | None = None
    fluidbox_index: Uint32 | None = None
    show_details_in_recipe_tooltip: Boolean | None = None


type FuelCategoryID = String


@dataclass
class GameControllerVibrationData:
    low_frequency_vibration_intensity: Float | None = None
    high_frequency_vibration_intensity: Float | None = None
    duration: Uint32 | None = None
    play_for: PlayFor | None = None


@dataclass
class GameViewSettings:
    default_show_value: Boolean | None = None
    show_controller_gui: Boolean | None = None
    show_minimap: Boolean | None = None
    show_research_info: Boolean | None = None
    show_entity_info: Boolean | None = None
    show_alert_gui: Boolean | None = None
    update_entity_selection: Boolean | None = None
    show_rail_block_visualisation: Boolean | None = None
    show_side_menu: Boolean | None = None
    show_map_view_options: Boolean | None = None
    show_entity_tooltip: Boolean | None = None
    show_quickbar: Boolean | None = None
    show_shortcut_bar: Boolean | None = None
    show_crafting_queue: Boolean | None = None
    show_tool_bar: Boolean | None = None
    show_hotkey_suggestions: Boolean | None = None
    show_surface_list: Boolean | None = None


@dataclass
class GateOverRailBuildTipTrigger:
    type: Literal["gate-over-rail-build"]
    count: Uint32 | None = None


@dataclass
class GeneratingPowerTipTrigger:
    type: Literal["generating-power"]
    count: Uint32 | None = None


@dataclass
class GhostShimmerDistortionData:
    shape: Int32
    intensity: Float
    x: Float
    y: Float


@dataclass
class GhostShimmerOverlayData:
    blend_mode: Int32
    shape: Int32
    x: Float
    y: Float
    tint: Color
    cutoff: Float


@dataclass
class GhostTintSet:
    ghost_tint: Color
    ghost_delivery_tint: Color
    tile_ghost_tint: Color
    tile_ghost_delivery_tint: Color
    wire_tint: Color


@dataclass
class GlobalRecipeTints:
    primary: Color | None = None
    secondary: Color | None = None
    tertiary: Color | None = None
    quaternary: Color | None = None


@dataclass
class GroupAttackTipTrigger:
    type: Literal["group-attack"]
    count: Uint32 | None = None


type ItemCountType = Uint32


type ItemGroupID = String


type ItemID = String


@dataclass
class ItemIngredientPrototype:
    type: Literal["item"]
    name: ItemID
    amount: Uint16
    ignored_by_stats: Uint16 | None = None


@dataclass
class ItemProductPrototype:
    type: Literal["item"]
    name: ItemID
    amount: Uint16 | None = None
    amount_min: Uint16 | None = None
    amount_max: Uint16 | None = None
    probability: Double | None = None
    ignored_by_stats: Uint16 | None = None
    ignored_by_productivity: Uint16 | None = None
    show_details_in_recipe_tooltip: Boolean | None = None
    extra_count_fraction: Float | None = None
    percent_spoiled: Float | None = None


type ItemStackIndex = Uint16


type ItemSubGroupID = String


@dataclass
class ItemToPlace:
    item: ItemID
    count: ItemCountType


@dataclass
class KillTipTrigger:
    type: Literal["kill"]
    count: Uint32 | None = None
    entity: EntityID | None = None
    match_type_only: Boolean | None = None
    damage_type: DamageTypeID | None = None


@dataclass
class LightFlickeringDefinition:
    minimum_intensity: Float | None = None
    maximum_intensity: Float | None = None
    derivation_change_frequency: Float | None = None
    derivation_change_deviation: Float | None = None
    border_fix_speed: Float | None = None
    minimum_light_size: Float | None = None
    light_intensity_to_size_coefficient: Float | None = None
    color: Color | None = None


@dataclass
class ShaderConfigurationItem:
    color: Color
    distortion: Float
    thickness: Float
    power: Float


@dataclass
class LightningPriorityRule:
    type: Type4
    string: String
    priority_bonus: Int32


@dataclass
class LightningRuleBase:
    type: Type4
    string: String


@dataclass
class LimitChestTipTrigger:
    type: Literal["limit-chest"]
    count: Uint32 | None = None


type LocalisedString = String | list[LocalisedString] | dict[str, Any]


type LogisticFilterIndex = Uint16


@dataclass
class LootItem:
    item: ItemID
    probability: Double | None = None
    count_min: Double | None = None
    count_max: Double | None = None


@dataclass
class LowPowerTipTrigger:
    type: Literal["low-power"]
    count: Uint32 | None = None


@dataclass
class ManualTransferTipTrigger:
    type: Literal["manual-transfer"]
    count: Uint32 | None = None


@dataclass
class ManualWireDragTipTrigger:
    type: Literal["manual-wire-drag"]
    count: Uint32 | None = None
    source: EntityID | None = None
    target: EntityID | None = None
    match_type_only: Boolean | None = None
    wire_type: WireType | None = None


@dataclass
class MapGenPresetAsteroidSettings:
    spawning_rate: Double | None = None
    max_ray_portals_expanded_per_tick: Uint32 | None = None


@dataclass
class MapGenPresetDifficultySettings:
    technology_price_multiplier: Double | None = None


@dataclass
class MapGenPresetEnemyEvolutionSettings:
    enabled: Boolean | None = None
    time_factor: Double | None = None
    destroy_factor: Double | None = None
    pollution_factor: Double | None = None


@dataclass
class MapGenPresetEnemyExpansionSettings:
    enabled: Boolean | None = None
    max_expansion_distance: Uint32 | None = None
    settler_group_min_size: Uint32 | None = None
    settler_group_max_size: Uint32 | None = None
    min_expansion_cooldown: Uint32 | None = None
    max_expansion_cooldown: Uint32 | None = None


@dataclass
class MapGenPresetPollutionSettings:
    enabled: Boolean | None = None
    diffusion_ratio: Double | None = None
    ageing: Double | None = None
    min_pollution_to_damage_trees: Double | None = None
    enemy_attack_pollution_consumption_modifier: Double | None = None
    pollution_restored_per_tree_damage: Double | None = None


type MapGenSize = (
    Literal[
        "none",
        "very-low",
        "very-small",
        "very-poor",
        "low",
        "small",
        "poor",
        "normal",
        "medium",
        "regular",
        "high",
        "big",
        "good",
        "very-high",
        "very-big",
        "very-good",
    ]
    | Float
)


@dataclass
class MapPosition1:
    x: Double
    y: Double


type MapPosition = MapPosition1 | list[Double]


type MapTick = Uint64


type MaterialAmountType = Double


type MathExpression = String


@dataclass
class MineEntityTechnologyTrigger:
    type: Literal["mine-entity"]
    entity: EntityID


@dataclass
class MineItemByRobotTipTrigger:
    type: Literal["mine-item-by-robot"]
    count: Uint32 | None = None


type ModuleCategoryID = String


@dataclass
class ModuleTransferTipTrigger:
    type: Literal["module-transfer"]
    module: ItemID
    count: Uint32 | None = None


type MouseCursorID = String


type NeighbourConnectableConnectionCategory = String


@dataclass
class Location:
    position: MapPosition
    direction: Uint8


@dataclass
class NeighbourConnectableConnectionDefinition:
    location: Location
    category: NeighbourConnectableConnectionCategory
    neighbour_category: (
        list[NeighbourConnectableConnectionCategory] | dict[str, Any] | None
    ) = None


type NoiseExpression = String | Boolean | Double


@dataclass
class NoiseFunction:
    parameters: list[String] | dict[str, Any]
    expression: NoiseExpression
    local_expressions: dict[String, NoiseExpression] | None = None
    local_functions: dict[String, NoiseFunction] | None = None


type Order = String


type ParticleID = String


@dataclass
class PasteEntitySettingsTipTrigger:
    type: Literal["paste-entity-settings"]
    count: Uint32 | None = None
    source: EntityID | None = None
    target: EntityID | None = None
    match_type_only: Boolean | None = None


@dataclass
class PathFinderSettings:
    fwd2bwd_ratio: Uint32
    goal_pressure_ratio: Double
    use_path_cache: Boolean
    max_steps_worked_per_tick: Double
    max_work_done_per_tick: Uint32
    short_cache_size: Uint32
    long_cache_size: Uint32
    short_cache_min_cacheable_distance: Double
    short_cache_min_algo_steps_to_cache: Uint32
    long_cache_min_cacheable_distance: Double
    cache_max_connect_to_cache_steps_multiplier: Uint32
    cache_accept_path_start_distance_ratio: Double
    cache_accept_path_end_distance_ratio: Double
    negative_cache_accept_path_start_distance_ratio: Double
    negative_cache_accept_path_end_distance_ratio: Double
    cache_path_start_distance_rating_multiplier: Double
    cache_path_end_distance_rating_multiplier: Double
    stale_enemy_with_same_destination_collision_penalty: Double
    ignore_moving_enemy_collision_distance: Double
    enemy_with_different_destination_collision_penalty: Double
    general_entity_collision_penalty: Double
    general_entity_subsequent_collision_penalty: Double
    extended_collision_penalty: Double
    max_clients_to_accept_any_new_request: Uint32
    max_clients_to_accept_short_new_request: Uint32
    direct_distance_to_consider_short_request: Uint32
    short_request_max_steps: Uint32
    short_request_ratio: Double
    min_steps_to_check_path_find_termination: Uint32
    start_to_goal_cost_multiplier_to_terminate_path_find: Double
    overload_levels: list[Uint32] | dict[str, Any]
    overload_multipliers: list[Double] | dict[str, Any]
    negative_path_cache_delay_interval: Uint32


@dataclass
class PerceivedPerformance:
    minimum: Double | None = None
    maximum: Double | None = None
    performance_to_activity_rate: Double | None = None


@dataclass
class PersistentWorldAmbientSoundsDefinitionCrossfade:
    curve_type: AttenuationType
    order: list[OrderEnum]
    tuning_parameter: Float | None = None
    from_: ControlPoint | None = None
    to: ControlPoint | None = None


@dataclass
class PipeConnectionDefinition:
    flow_direction: FluidFlowDirection | None = None
    connection_type: ConnectionType | None = None
    enable_working_visualisations: list[String] | dict[str, Any] | None = None
    direction: float | None = None
    position: MapPosition | None = None
    positions: list[MapPosition] | None = None
    connection_category: String | list[String] | dict[str, Any] | None = None
    max_underground_distance: Uint8 | None = None
    max_distance_tint: Color | None = None
    underground_collision_mask: CollisionMaskConnector | None = None
    linked_connection_id: FluidBoxLinkedConnectionID | None = None


@dataclass
class PlaceEquipmentTipTrigger:
    type: Literal["place-equipment"]
    count: Uint32 | None = None
    equipment: EquipmentID | None = None


@dataclass
class PlanTrainPathTipTrigger:
    type: Literal["plan-train-path"]
    distance: Double


@dataclass
class Frame1:
    timestamp: MapTick
    frame: Float


@dataclass
class Frame2:
    timestamp: MapTick | None = None
    distance: Double | None = None
    distance_t: Double | None = None


@dataclass
class Frame4:
    timestamp: MapTick | None = None
    cutscene_opacity: Double | None = None
    cutscene_opacity_t: Double | None = None
    outside_opacity: Double | None = None
    outside_opacity_t: Double | None = None
    lut_blend: Double | None = None
    lut_blend_t: Double | None = None


@dataclass
class PollutionSettings:
    enabled: Boolean
    diffusion_ratio: Double
    min_to_diffuse: Double
    ageing: Double
    expected_max_per_chunk: Double
    min_to_show_per_chunk: Double
    min_pollution_to_damage_trees: Double
    pollution_with_max_forest_damage: Double
    pollution_restored_per_tree_damage: Double
    pollution_per_tree_damage: Double
    max_pollution_to_restore_trees: Double
    enemy_attack_pollution_consumption_modifier: Double


type ProbabilityTableItem = list[Uint8]


type ProcessionID = String


type ProcessionLayerInheritanceGroupID = String


@dataclass
class ProcessionSet:
    arrival: list[ProcessionID] | dict[str, Any]
    departure: list[ProcessionID] | dict[str, Any]


type ProductPrototype = ItemProductPrototype | FluidProductPrototype


@dataclass
class ProductionHealthEffect:
    producing: Float | None = None
    not_producing: Float | None = None


@dataclass
class PrototypeStrafeSettings:
    max_distance: Double | None = None
    ideal_distance: Double | None = None
    ideal_distance_tolerance: Double | None = None
    ideal_distance_variance: Double | None = None
    ideal_distance_importance: Float | None = None
    ideal_distance_importance_variance: Float | None = None
    clockwise_chance: Float | None = None
    face_target: Boolean | None = None


type QualityID = String


@dataclass
class RailRenderLayers:
    stone_path_lower: RenderLayer | None = None
    stone_path: RenderLayer | None = None
    tie: RenderLayer | None = None
    screw: RenderLayer | None = None
    metal: RenderLayer | None = None
    front_end: RenderLayer | None = None
    back_end: RenderLayer | None = None
    underwater_layer_offset: Int8 | None = None


@dataclass
class RailSignalColorToFrameIndex:
    none: Uint8 | None = None
    red: Uint8 | None = None
    green: Uint8 | None = None
    blue: Uint8 | None = None
    yellow: Uint8 | None = None


type RandomRange = list[Uint8] | Uint8


type RangedValue = list[Float] | Float


type RealOrientation = Float


type RecipeCategoryID = String


type RecipeID = String


@dataclass
class RecipeTints:
    primary: Color | None = None
    secondary: Color | None = None
    tertiary: Color | None = None
    quaternary: Color | None = None


type ResearchIngredient = list[ItemID | Uint16]


@dataclass
class ResearchWithSciencePackTipTrigger:
    type: Literal["research-with-science-pack"]
    science_pack: ItemID


@dataclass
class Resistance:
    type: DamageTypeID
    decrease: Float | None = None
    percent: Float | None = None


type ResourceCategoryID = String


@dataclass
class RotateEntityTipTrigger:
    type: Literal["rotate-entity"]
    count: Uint32 | None = None


@dataclass
class SegmentSpecification:
    segment: EntityID


@dataclass
class SendSpidertronTipTrigger:
    type: Literal["send-spidertron"]
    count: Uint32 | None = None
    append: Boolean | None = None


@dataclass
class SetFilterTipTrigger:
    type: Literal["set-filter"]
    count: Uint32 | None = None
    entity: EntityID | None = None
    match_type_only: Boolean | None = None
    consecutive: Boolean | None = None


@dataclass
class SetLogisticRequestTipTrigger:
    type: Literal["set-logistic-request"]
    count: Uint32 | None = None
    logistic_chest_only: Boolean | None = None
    entity: EntityID | None = None


@dataclass
class SetRecipeTipTrigger:
    type: Literal["set-recipe"]
    count: Uint32 | None = None
    recipe: RecipeID | None = None
    machine: EntityID | None = None
    consecutive: Boolean | None = None
    any_quality: Boolean | None = None
    uses_fluid: Boolean | None = None


@dataclass
class ShootTipTrigger:
    type: Literal["shoot"]
    count: Uint32 | None = None
    target: Target | None = None


@dataclass
class SimpleBoundingBox1:
    left_top: MapPosition
    right_bottom: MapPosition


type SimpleBoundingBox = SimpleBoundingBox1 | list[MapPosition]


@dataclass
class SoundModifier:
    type: SoundModifierType
    volume_multiplier: Float


@dataclass
class SpaceConnectionAsteroidSpawnPoint:
    probability: Double
    speed: Double
    distance: Double
    angle_when_stopped: Float | None = None


type SpaceConnectionID = String


@dataclass
class SpaceLocationAsteroidSpawnDefinition:
    probability: Double
    speed: Double
    asteroid: EntityID | AsteroidChunkID
    angle_when_stopped: Float | None = None
    type: Type8 | None = None


type SpaceLocationID = String


@dataclass
class SpaceTileEffectParameters:
    scroll_factor: Float | None = None
    zoom_base_factor: Float | None = None
    zoom_base_offset: Float | None = None
    zoom_exponent: Float | None = None
    zoom_factor: Float | None = None
    zoom_offset: Float | None = None
    nebula_scale: Float | None = None
    nebula_brightness: Float | None = None
    nebula_saturation: Float | None = None
    star_density: Float | None = None
    star_scale: Float | None = None
    star_parallax: Float | None = None
    star_shape: Float | None = None
    star_brightness: Float | None = None
    star_saturations: Float | None = None


@dataclass
class SpacingItem:
    index: Uint32
    spacing: Int32


@dataclass
class SpawnPoint1:
    evolution_factor: Double
    spawn_weight: Double


type SpawnPoint = SpawnPoint1 | list[Double]


type SpriteSizeType = Int16


@dataclass
class StackTransferTipTrigger:
    type: Literal["stack-transfer"]
    count: Uint32 | None = None
    transfer: Transfer1 | None = None


@dataclass
class StateSteeringSettings:
    radius: Double
    separation_factor: Double
    separation_force: Double
    force_unit_fuzzy_goto_behavior: Boolean


@dataclass
class StatusColors:
    idle: Color | None = None
    no_minable_resources: Color | None = None
    full_output: Color | None = None
    insufficient_input: Color | None = None
    disabled: Color | None = None
    no_power: Color | None = None
    working: Color | None = None
    low_power: Color | None = None


@dataclass
class Fluid:
    type: FluidID
    damage_modifier: Double | None = None


@dataclass
class Stripe:
    width_in_frames: Uint32
    height_in_frames: Uint32
    filename: FileName
    x: Uint32 | None = None
    y: Uint32 | None = None


type SurfaceID = String


type SurfacePropertyID = String


type TechnologyID = String


@dataclass
class TechnologyUnit:
    time: Double
    ingredients: list[ResearchIngredient] | dict[str, Any]
    count: Uint64 | None = None
    count_formula: MathExpression | None = None


@dataclass
class TerritorySettings:
    units: list[EntityID] | dict[str, Any] | None = None
    territory_index_expression: String | None = None
    territory_variation_expression: String | None = None
    minimum_territory_size: Uint32 | None = None


@dataclass
class ThrusterPerformancePoint1:
    fluid_volume: Double
    fluid_usage: FluidAmount
    effectivity: Double


type ThrusterPerformancePoint = ThrusterPerformancePoint1 | list[Double]


@dataclass
class TileBasedParticleTints:
    primary: Color | None = None
    secondary: Color | None = None


@dataclass
class TileBuildabilityRule:
    area: SimpleBoundingBox
    required_tiles: CollisionMaskConnector | None = None
    colliding_tiles: CollisionMaskConnector | None = None
    remove_on_collision: Boolean | None = None


type TileEffectDefinitionID = String


type TileID = String


@dataclass
class TileLightPictures:
    picture: FileName
    size: Uint32
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    line_length: Uint8 | None = None
    count: Uint8 | None = None


@dataclass
class TileMainPictures:
    picture: FileName
    size: Uint32
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    line_length: Uint8 | None = None
    count: Uint8 | None = None
    probability: Double | None = None
    weights: list[Double] | dict[str, Any] | None = None


@dataclass
class TilePosition1:
    x: Int32
    y: Int32


type TilePosition = TilePosition1 | list[Int32]


@dataclass
class TileSpriteLayoutVariant:
    spritesheet: FileName | None = None
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    tile_height: Uint8 | None = None
    line_length: Uint8 | None = None
    count: Uint8 | None = None


@dataclass
class TileTransitionVariantLayout:
    spritesheet: FileName | None = None
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    tile_height: Uint8 | None = None
    line_length: Uint8 | None = None
    count: Uint8 | None = None
    x_offset: SpriteSizeType | None = None
    y_offset: SpriteSizeType | None = None
    inner_corner: TileSpriteLayoutVariant | None = None
    outer_corner: TileSpriteLayoutVariant | None = None
    side: TileSpriteLayoutVariant | None = None
    double_side: TileSpriteLayoutVariant | None = None
    u_transition: TileSpriteLayoutVariant | None = None
    o_transition: TileSpriteLayoutVariant | None = None
    inner_corner_scale: Float | None = None
    inner_corner_x: SpriteSizeType | None = None
    inner_corner_y: SpriteSizeType | None = None
    inner_corner_tile_height: Uint8 | None = None
    inner_corner_line_length: Uint8 | None = None
    inner_corner_count: Uint8 | None = None
    outer_corner_scale: Float | None = None
    outer_corner_x: SpriteSizeType | None = None
    outer_corner_y: SpriteSizeType | None = None
    outer_corner_tile_height: Uint8 | None = None
    outer_corner_line_length: Uint8 | None = None
    outer_corner_count: Uint8 | None = None
    side_scale: Float | None = None
    side_x: SpriteSizeType | None = None
    side_y: SpriteSizeType | None = None
    side_tile_height: Uint8 | None = None
    side_line_length: Uint8 | None = None
    side_count: Uint8 | None = None
    double_side_scale: Float | None = None
    double_side_x: SpriteSizeType | None = None
    double_side_y: SpriteSizeType | None = None
    double_side_tile_height: Uint8 | None = None
    double_side_line_length: Uint8 | None = None
    double_side_count: Uint8 | None = None
    u_transition_scale: Float | None = None
    u_transition_x: SpriteSizeType | None = None
    u_transition_y: SpriteSizeType | None = None
    u_transition_tile_height: Uint8 | None = None
    u_transition_line_length: Uint8 | None = None
    u_transition_count: Uint8 | None = None
    o_transition_scale: Float | None = None
    o_transition_x: SpriteSizeType | None = None
    o_transition_y: SpriteSizeType | None = None
    o_transition_tile_height: Uint8 | None = None
    o_transition_line_length: Uint8 | None = None
    o_transition_count: Uint8 | None = None


@dataclass
class TimeElapsedTipTrigger:
    type: Literal["time-elapsed"]
    ticks: Uint32


@dataclass
class TimeSinceLastTipActivationTipTrigger:
    type: Literal["time-since-last-tip-activation"]
    ticks: MapTick


@dataclass
class Frame6:
    timestamp: MapTick | None = None
    opacity: Double | None = None
    opacity_t: Double | None = None
    tint_upper: Color | None = None
    tint_upper_t: Color | None = None
    tint_lower: Color | None = None
    tint_lower_t: Color | None = None


@dataclass
class TintProcessionLayer:
    type: Literal["tint"]
    frames: list[Frame6] | dict[str, Any]
    render_layer: RenderLayer | None = None


@dataclass
class ToggleRailLayerTipTrigger:
    type: Literal["toggle-rail-layer"]
    count: Uint32 | None = None


@dataclass
class ToggleShowEntityInfoTipTrigger:
    type: Literal["toggle-show-entity-info"]
    count: Uint32 | None = None


@dataclass
class TrainVisualizationConstants:
    not_last_box_color: Color
    last_box_color: Color
    reverse_box_color: Color
    last_reverse_box_color: Color
    box_width: Float
    box_length: Float
    joint_distance: Float
    connection_distance: Float
    final_margin: Float
    stock_number_scale: Float


@dataclass
class TransitionApplication:
    offset: Boolean | None = None
    pod_offset: Boolean | None = None
    rotation: Boolean | None = None


type TriggerTargetMask = list[String] | dict[str, Any]


type TrivialSmokeID = String


@dataclass
class UnitAISettings:
    destroy_when_commands_fail: Boolean | None = None
    allow_try_return_to_spawner: Boolean | None = None
    do_separation: Boolean | None = None
    path_resolution_modifier: Int8 | None = None
    strafe_settings: PrototypeStrafeSettings | None = None
    size_in_group: Float | None = None
    join_attacks: Boolean | None = None


@dataclass
class UnitAlternativeFrameSequence:
    warmup_frame_sequence: list[Uint16] | dict[str, Any]
    warmup2_frame_sequence: list[Uint16] | dict[str, Any]
    attacking_frame_sequence: list[Uint16] | dict[str, Any]
    cooldown_frame_sequence: list[Uint16] | dict[str, Any]
    prepared_frame_sequence: list[Uint16] | dict[str, Any]
    back_to_walk_frame_sequence: list[Uint16] | dict[str, Any]
    warmup_animation_speed: Float
    attacking_animation_speed: Float
    cooldown_animation_speed: Float
    prepared_animation_speed: Float
    back_to_walk_animation_speed: Float


@dataclass
class UnitGroupSettings:
    min_group_gathering_time: Uint32
    max_group_gathering_time: Uint32
    max_wait_time_for_late_members: Uint32
    max_group_radius: Double
    min_group_radius: Double
    max_member_speedup_when_behind: Double
    max_member_slowdown_when_ahead: Double
    max_group_slowdown_factor: Double
    max_group_member_fallback_factor: Double
    member_disown_distance: Double
    tick_tolerance_when_member_arrives: Uint32
    max_gathering_unit_groups: Uint32
    max_unit_group_size: Uint32


@dataclass
class UnitSpawnDefinition1:
    unit: EntityID
    spawn_points: list[SpawnPoint] | dict[str, Any]


type UnitSpawnDefinition = (
    UnitSpawnDefinition1 | list[EntityID | list[SpawnPoint] | dict[str, Any]]
)


@dataclass
class UnlockRecipeTipTrigger:
    type: Literal["unlock-recipe"]
    recipe: RecipeID


@dataclass
class UseConfirmTipTrigger:
    type: Literal["use-confirm"]
    count: Uint32 | None = None


@dataclass
class UsePipetteTipTrigger:
    type: Literal["use-pipette"]
    count: Uint32 | None = None


@dataclass
class UseRailPlannerTipTrigger:
    type: Literal["use-rail-planner"]
    build_mode: BuildMode
    count: Uint32 | None = None


type VariableAmbientSoundLayerSample = list[String | Uint32]


@dataclass
class VariableAmbientSoundNextStateConditions:
    weight: Uint32
    layer_sample: VariableAmbientSoundLayerSample | None = None
    previous_state: String | None = None


@dataclass
class VariableAmbientSoundNextStateItem:
    state: String
    conditions: VariableAmbientSoundNextStateConditions


@dataclass
class Vector1:
    x: Double
    y: Double


type Vector = Vector1 | list[Double]


@dataclass
class Vector3D1:
    x: Float
    y: Float
    z: Float


type Vector3D = Vector3D1 | list[Float]


@dataclass
class Vector4f1:
    x: Float
    y: Float
    z: Float
    w: Float


type Vector4f = Vector4f1 | list[Float]


@dataclass
class VerticalFlowStyleSpecification:
    type: Literal["vertical_flow_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    vertical_spacing: Int32 | None = None


type VirtualSignalID = String


@dataclass
class VisualState:
    name: String
    next_active: String
    next_inactive: String
    duration: Uint8
    color: Color | None = None


@dataclass
class VoidEnergySource:
    type: Literal["void"]
    emissions_per_minute: dict[AirbornePollutantID, Double] | None = None
    render_no_power_icon: Boolean | None = None
    render_no_network_icon: Boolean | None = None


type Weight = Double


@dataclass
class WirePosition:
    copper: Vector | None = None
    red: Vector | None = None
    green: Vector | None = None


@dataclass
class PlaceAsTile:
    result: TileID
    condition: CollisionMaskConnector
    condition_size: Uint32
    invert: Boolean | None = None
    tile_condition: list[TileID] | dict[str, Any] | None = None


@dataclass
class EditorControllerPrototype:
    type: Literal["editor-controller"]
    name: String
    inventory_size: ItemStackIndex
    gun_inventory_size: ItemStackIndex
    movement_speed: Double
    item_pickup_distance: Double
    loot_pickup_distance: Double
    mining_speed: Double
    enable_flash_light: Boolean
    adjust_speed_based_off_zoom: Boolean
    render_as_day: Boolean
    instant_blueprint_building: Boolean
    instant_deconstruction: Boolean
    instant_upgrading: Boolean
    instant_rail_planner: Boolean
    show_status_icons: Boolean
    show_hidden_entities: Boolean
    show_entity_tags: Boolean
    show_entity_health_bars: Boolean
    show_additional_entity_info_gui: Boolean
    generate_neighbor_chunks: Boolean
    fill_built_entity_energy_buffers: Boolean
    show_character_tab_in_controller_gui: Boolean
    show_infinity_filters_in_controller_gui: Boolean
    placed_corpses_never_expire: Boolean
    ignore_tile_conditions: Boolean


@dataclass
class BurntPatchAlphaVariation:
    tile: TileID
    alpha: Float


@dataclass
class FontPrototype:
    type: Literal["font"]
    name: String
    size: Int32
    from_: String
    spacing: Float | None = None
    border: Boolean | None = None
    filtered: Boolean | None = None
    border_color: Color | None = None


@dataclass
class GodControllerPrototype:
    type: Literal["god-controller"]
    name: String
    inventory_size: ItemStackIndex
    movement_speed: Double
    item_pickup_distance: Double
    loot_pickup_distance: Double
    mining_speed: Double
    crafting_categories: list[RecipeCategoryID] | dict[str, Any] | None = None
    mining_categories: list[ResourceCategoryID] | dict[str, Any] | None = None


@dataclass
class Steering:
    default: StateSteeringSettings
    moving: StateSteeringSettings


@dataclass
class MapSettings:
    type: Literal["map-settings"]
    name: String
    pollution: PollutionSettings
    steering: Steering
    enemy_evolution: EnemyEvolutionSettings
    enemy_expansion: EnemyExpansionSettings
    unit_group: UnitGroupSettings
    path_finder: PathFinderSettings
    max_failed_behavior_count: Uint32
    difficulty_settings: DifficultySettings
    asteroids: AsteroidSettings


@dataclass
class BeaconTint:
    primary: Color | None = None
    secondary: Color | None = None
    tertiary: Color | None = None
    quaternary: Color | None = None


@dataclass
class MouseCursor:
    type: Literal["mouse-cursor"]
    name: String
    system_cursor: SystemCursor | None = None
    filename: FileName | None = None
    hot_pixel_x: Int16 | None = None
    hot_pixel_y: Int16 | None = None


@dataclass
class TipsAndTricksItemCategory:
    type: Literal["tips-and-tricks-item-category"]
    name: String
    order: Order


@dataclass
class PlayerColor:
    name: String
    player_color: Color
    chat_color: Color


@dataclass
class BonusGuiOrdering:
    artillery_range: Order
    worker_robots: Order
    character: Order
    follower_robots: Order
    research_speed: Order
    beacon_distribution: Order
    inserter: Order
    stack_inserter: Order
    bulk_inserter: Order
    turret_attack: Order
    mining_productivity: Order
    train_braking_force: Order


@dataclass
class MapEditor:
    clone_editor_copy_source_color: Color
    clone_editor_copy_destination_allowed_color: Color
    clone_editor_copy_destination_not_allowed_color: Color
    clone_editor_brush_source_color: Color
    clone_editor_brush_destination_color: Color
    clone_editor_brush_cursor_preview_tint: Color
    clone_editor_brush_world_preview_tint: Color
    script_editor_select_area_color: Color
    script_editor_drag_area_color: Color
    force_editor_select_area_color: Color
    cliff_editor_remove_cliffs_color: Color
    tile_editor_selection_preview_tint: Color
    tile_editor_area_selection_color: Color
    decorative_editor_selection_preview_tint: Color
    tile_editor_selection_preview_radius: Uint8
    decorative_editor_selection_preview_radius: Uint8


@dataclass
class ItemHealthBarColor:
    threshold: Float
    color: Color


@dataclass
class ColorFilter:
    name: String
    localised_name: LocalisedString
    matrix: list[list[Float] | dict[str, Any]] | dict[str, Any]


@dataclass
class ActivateEquipmentCapsuleAction:
    type: Literal["equipment-remote"]
    equipment: EquipmentID


@dataclass
class AdvancedVolumeControl:
    attenuation: Fade | None = None
    fades: Fades | None = None
    darkness_threshold: Float | None = None


@dataclass
class AgriculturalCraneSpeed:
    arm: AgriculturalCraneSpeedArm
    grappler: AgriculturalCraneSpeedGrappler


@dataclass
class Rotation:
    frames: list[Vector] | dict[str, Any]
    render_layer: RenderLayer | None = None


@dataclass
class DirectionShift:
    north: Vector | None = None
    east: Vector | None = None
    south: Vector | None = None
    west: Vector | None = None


@dataclass
class AnimatedVector:
    rotations: list[Rotation] | dict[str, Any]
    render_layer: RenderLayer | None = None
    direction_shift: DirectionShift | None = None


@dataclass
class Animation:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    run_mode: AnimationRunMode | None = None
    frame_count: Uint32 | None = None
    line_length: Uint32 | None = None
    animation_speed: Float | None = None
    max_advance: Float | None = None
    repeat_count: Uint8 | None = None
    dice: Uint8 | None = None
    dice_x: Uint8 | None = None
    dice_y: Uint8 | None = None
    frame_sequence: AnimationFrameSequence | None = None
    layers: list[Animation] | dict[str, Any] | None = None
    stripes: list[Stripe] | dict[str, Any] | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    slice: Uint32 | None = None
    lines_per_file: Uint32 | None = None


@dataclass
class Animation4Way1:
    north: Animation
    north_east: Animation | None = None
    east: Animation | None = None
    south_east: Animation | None = None
    south: Animation | None = None
    south_west: Animation | None = None
    west: Animation | None = None
    north_west: Animation | None = None


type Animation4Way = Animation4Way1 | Animation


@dataclass
class AnimationElement:
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    apply_tint: Boolean | None = None
    always_draw: Boolean | None = None
    animation: Animation | None = None


@dataclass
class AnimationSheet:
    variation_count: Uint32
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    run_mode: AnimationRunMode | None = None
    frame_count: Uint32 | None = None
    line_length: Uint32 | None = None
    animation_speed: Float | None = None
    max_advance: Float | None = None
    repeat_count: Uint8 | None = None
    dice: Uint8 | None = None
    dice_x: Uint8 | None = None
    dice_y: Uint8 | None = None
    frame_sequence: AnimationFrameSequence | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    lines_per_file: Uint32 | None = None


@dataclass
class AnimationVariations1:
    sheet: AnimationSheet | None = None
    sheets: list[AnimationSheet] | dict[str, Any] | None = None


type AnimationVariations = (
    AnimationVariations1 | Animation | list[Animation] | dict[str, Any]
)


@dataclass
class ArtilleryRemoteCapsuleAction:
    type: Literal["artillery-remote"]
    flare: EntityID
    play_sound_on_failure: Boolean | None = None


@dataclass
class AutoplaceSpecification:
    probability_expression: NoiseExpression
    control: AutoplaceControlID | None = None
    default_enabled: Boolean | None = None
    force: Literal["enemy", "player", "neutral"] | String | None = None
    order: Order | None = None
    placement_density: Uint32 | None = None
    tile_restriction: list[TileID | list[TileID]] | dict[str, Any] | None = None
    richness_expression: NoiseExpression | None = None
    local_expressions: dict[String, NoiseExpression] | None = None
    local_functions: dict[String, NoiseFunction] | None = None


@dataclass
class BeamAnimationSet:
    start: Animation | None = None
    ending: Animation | None = None
    head: Animation | None = None
    tail: Animation | None = None
    body: AnimationVariations | None = None
    render_layer: RenderLayer | None = None


@dataclass
class BoundingBox1:
    left_top: MapPosition
    right_bottom: MapPosition
    orientation: RealOrientation | None = None


type BoundingBox = (
    BoundingBox1
    | list[MapPosition]
    | list[MapPosition | RealOrientation]
    | list[MapPosition | Float]
)


@dataclass
class BuildEntityTipTrigger:
    type: Literal["build-entity"]
    count: Uint32 | None = None
    entity: EntityID | None = None
    match_type_only: Boolean | None = None
    build_by_dragging: Boolean | None = None
    consecutive: Boolean | None = None
    linear_power_pole_line: Boolean | None = None
    build_in_line: Boolean | None = None
    quality: QualityID | None = None


@dataclass
class CaptureSpawnerTechnologyTrigger:
    type: Literal["capture-spawner"]
    entity: EntityID | None = None


@dataclass
class ChartUtilityConstants:
    copper_wire_color: Color
    electric_power_pole_color: Color
    enabled_switch_color: Color
    disabled_switch_color: Color
    electric_line_width: Float
    electric_line_minimum_absolute_width: Float
    red_wire_color: Color
    green_wire_color: Color
    circuit_network_member_color: Color
    turret_range_color: Color
    artillery_range_color: Color
    default_friendly_color: Color
    default_enemy_color: Color
    default_enemy_territory_color: Color
    rail_color: Color
    elevated_rail_color: Color
    rail_ramp_color: Color
    entity_ghost_color: Color
    tile_ghost_color: Color
    vehicle_outer_color: Color
    vehicle_outer_color_selected: Color
    vehicle_inner_color: Color
    vehicle_wagon_connection_color: Color
    resource_outline_selection_color: Color
    chart_train_stop_text_color: Color
    chart_train_stop_disabled_text_color: Color
    chart_train_stop_full_text_color: Color
    red_signal_color: Color
    green_signal_color: Color
    blue_signal_color: Color
    yellow_signal_color: Color
    chart_deconstruct_tint: Color
    chart_deconstruct_active_color: Color
    explosion_visualization_duration: MapTick
    train_path_color: Color
    train_preview_path_outline_color: Color
    train_current_path_outline_color: Color
    chart_logistic_robot_color: Color
    chart_construction_robot_color: Color
    chart_mobile_construction_robot_color: Color
    chart_personal_construction_robot_color: Color
    chart_delivery_to_me_logistic_robot_color: Color
    zoom_threshold_to_draw_spider_path: Double
    chart_player_circle_size: Float
    recipe_icon_scale: Float
    default_friendly_color_by_type: dict[String, Color] | None = None
    default_color_by_type: dict[String, Color] | None = None
    custom_tag_scale: Float | None = None
    custom_tag_max_scale: Float | None = None
    custom_tag_selected_overlay_tint: Color | None = None


@dataclass
class CircularParticleCreationSpecification:
    name: ParticleID
    starting_frame_speed: Float
    direction: Float | None = None
    direction_deviation: Float | None = None
    speed: Float | None = None
    speed_deviation: Float | None = None
    starting_frame_speed_deviation: Float | None = None
    height: Float | None = None
    height_deviation: Float | None = None
    vertical_speed: Float | None = None
    vertical_speed_deviation: Float | None = None
    center: Vector | None = None
    creation_distance: Double | None = None
    creation_distance_orientation: Double | None = None
    use_source_position: Boolean | None = None


type CircularProjectileCreationSpecification = (
    list[list[RealOrientation | Vector]] | dict[str, Any]
)


@dataclass
class CliffPlacementSettings:
    name: EntityID | None = None
    control: AutoplaceControlID | None = None
    cliff_elevation_0: Float | None = None
    cliff_elevation_interval: Float | None = None
    cliff_smoothing: Float | None = None
    richness: Float | None = None


type ColorLookupTable = FileName | Literal["identity"]


@dataclass
class CoverGraphicEffectData:
    style: CloudEffectStyle | None = None
    relative_to: EffectRelativeTo | None = None
    distance_traveled_strength: Vector | None = None
    pod_movement_strength: Vector | None = None


@dataclass
class Frame:
    timestamp: MapTick | None = None
    opacity: Double | None = None
    opacity_t: Double | None = None
    rotation: Double | None = None
    rotation_t: Double | None = None
    effect_scale_min: Double | None = None
    effect_scale_min_t: Double | None = None
    effect_scale_max: Double | None = None
    effect_scale_max_t: Double | None = None
    alt_effect_scale_min: Double | None = None
    alt_effect_scale_min_t: Double | None = None
    alt_effect_scale_max: Double | None = None
    alt_effect_scale_max_t: Double | None = None
    effect_shift: Vector | None = None
    effect_shift_t: Vector | None = None
    effect_shift_rate: Double | None = None
    effect_shift_rate_t: Double | None = None
    alt_effect_shift: Vector | None = None
    alt_effect_shift_t: Vector | None = None
    alt_effect_shift_rate: Double | None = None
    alt_effect_shift_rate_t: Double | None = None
    offset: Vector | None = None
    offset_t: Vector | None = None
    offset_rate: Double | None = None
    offset_rate_t: Double | None = None


@dataclass
class CraftFluidTechnologyTrigger:
    type: Literal["craft-fluid"]
    fluid: FluidID
    amount: Double | None = None


@dataclass
class CraftItemTipTrigger:
    type: Literal["craft-item"]
    event_type: EventType
    count: Uint32 | None = None
    item: ItemID | None = None
    consecutive: Boolean | None = None


@dataclass
class Segment:
    orientation: Float
    offset: Vector


@dataclass
class CraterPlacementDefinition:
    segments: list[Segment] | dict[str, Any]
    minimum_segments_to_place: Uint32 | None = None
    segment_probability: Float | None = None


@dataclass
class CustomTooltipField:
    name: LocalisedString
    value: LocalisedString
    quality_header: String | None = None
    quality_values: dict[QualityID, LocalisedString] | None = None
    order: Uint8 | None = None
    show_in_factoriopedia: Boolean | None = None
    show_in_tooltip: Boolean | None = None


@dataclass
class DamageParameters:
    amount: Float
    type: DamageTypeID


@dataclass
class DamageTypeFilters1:
    types: DamageTypeID | list[DamageTypeID] | dict[str, Any]
    whitelist: Boolean | None = None


type DamageTypeFilters = (
    DamageTypeFilters1 | DamageTypeID | list[DamageTypeID] | dict[str, Any]
)


type DaytimeColorLookupTable = (
    list[list[Double | ColorLookupTable]] | dict[str, Any]
)


@dataclass
class DestroyCliffsTriggerEffectItem:
    type: Literal["destroy-cliffs"]
    radius: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    explosion_at_trigger: EntityID | None = None
    explosion_at_cliff: EntityID | None = None


@dataclass
class DestroyDecorativesTriggerEffectItem:
    type: Literal["destroy-decoratives"]
    radius: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    from_render_layer: RenderLayer | None = None
    to_render_layer: RenderLayer | None = None
    include_soft_decoratives: Boolean | None = None
    include_decals: Boolean | None = None
    invoke_decorative_trigger: Boolean | None = None
    decoratives_with_trigger_only: Boolean | None = None


@dataclass
class Effect6:
    consumption: EffectValue | None = None
    speed: EffectValue | None = None
    productivity: EffectValue | None = None
    pollution: EffectValue | None = None
    quality: EffectValue | None = None


@dataclass
class EffectReceiver:
    base_effect: Effect6 | None = None
    uses_module_effects: Boolean | None = None
    uses_beacon_effects: Boolean | None = None
    uses_surface_effects: Boolean | None = None


@dataclass
class EffectTexture:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None


@dataclass
class ElectricEnergySource:
    type: Literal["electric"]
    usage_priority: ElectricUsagePriority
    emissions_per_minute: dict[AirbornePollutantID, Double] | None = None
    render_no_power_icon: Boolean | None = None
    render_no_network_icon: Boolean | None = None
    buffer_capacity: Energy | None = None
    input_flow_limit: Energy | None = None
    output_flow_limit: Energy | None = None
    drain: Energy | None = None


@dataclass
class EnterVehicleTipTrigger:
    type: Literal["enter-vehicle"]
    count: Uint32 | None = None
    vehicle: EntityID | None = None
    match_type_only: Boolean | None = None


@dataclass
class EntityBuildAnimationPiece:
    top: Animation
    body: Animation


@dataclass
class EntityIDFilter1:
    name: EntityID
    quality: QualityID | None = None
    comparator: ComparatorString | None = None


type EntityIDFilter = EntityIDFilter1 | EntityID


@dataclass
class ExplosionDefinition1:
    name: EntityID
    offset: Vector | None = None


type ExplosionDefinition = EntityID | ExplosionDefinition1


@dataclass
class FlowStyleSpecification:
    type: Literal["flow_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    max_on_row: Int32 | None = None
    horizontal_spacing: Int32 | None = None
    vertical_spacing: Int32 | None = None


@dataclass
class FogEffectProperties:
    shape_noise_texture: EffectTexture
    detail_noise_texture: EffectTexture
    fog_type: FogType | None = None
    color1: Color | None = None
    color2: Color | None = None
    tick_factor: Float | None = None


@dataclass
class FogMaskShapeDefinition:
    rect: SimpleBoundingBox
    falloff: Float | None = None


@dataclass
class FootprintParticle:
    tiles: list[TileID] | dict[str, Any]
    particle_name: ParticleID | None = None
    use_as_default: Boolean | None = None


@dataclass
class FrequencySizeRichness:
    frequency: MapGenSize | None = None
    size: MapGenSize | None = None
    richness: MapGenSize | None = None


@dataclass
class GhostShimmerConfig:
    tint: Color
    distortion: Float
    blend_mode: Int32
    visualize_borders: Boolean
    proportional_distortion: Boolean
    world_uv_modulo: Int32
    overlay_layers: list[GhostShimmerOverlayData] | dict[str, Any]
    distortion_layers: list[GhostShimmerDistortionData] | dict[str, Any]


@dataclass
class GlobalTintEffectProperties:
    noise_texture: EffectTexture
    offset: Vector4f
    intensity: Vector4f
    scale_u: Vector4f
    scale_v: Vector4f
    global_intensity: Float
    global_scale: Float
    zoom_factor: Float
    zoom_intensity: Float


@dataclass
class HeatConnection:
    position: MapPosition
    direction: float


@dataclass
class HorizontalFlowStyleSpecification:
    type: Literal["horizontal_flow_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    horizontal_spacing: Int32 | None = None


@dataclass
class IconData:
    icon: FileName
    icon_size: SpriteSizeType | None = None
    tint: Color | None = None
    shift: Vector | None = None
    scale: Double | None = None
    draw_background: Boolean | None = None
    floating: Boolean | None = None


@dataclass
class IconDrawSpecification:
    shift: Vector | None = None
    scale: Float | None = None
    scale_for_many: Float | None = None
    render_layer: RenderLayer1 | None = None


@dataclass
class IconSequencePositioning:
    inventory_index: float
    max_icons_per_row: Uint8 | None = None
    max_icon_rows: Uint8 | None = None
    shift: Vector | None = None
    scale: Float | None = None
    separation_multiplier: Float | None = None
    multi_row_initial_height_modifier: Float | None = None


type IngredientPrototype = ItemIngredientPrototype | FluidIngredientPrototype


@dataclass
class InsertItemTriggerEffectItem:
    type: Literal["insert-item"]
    item: ItemID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    quality: QualityID | None = None
    count: ItemCountType | None = None


@dataclass
class InserterStackSizeBonusModifier:
    modifier: Double
    type: Literal["inserter-stack-size-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class InventoryWithCustomStackSizeSpecification:
    stack_size_multiplier: Double | None = None
    stack_size_min: ItemCountType | None = None
    stack_size_max: ItemCountType | None = None
    stack_size_override: dict[ItemID, ItemCountType] | None = None
    with_bar: Boolean | None = None


@dataclass
class InvokeTileEffectTriggerEffectItem:
    type: Literal["invoke-tile-trigger"]
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    tile_collision_mask: CollisionMaskConnector | None = None


@dataclass
class ItemIDFilter1:
    name: ItemID
    quality: QualityID | None = None
    comparator: ComparatorString | None = None


type ItemIDFilter = ItemIDFilter1 | ItemID


@dataclass
class LabelStyleSpecification:
    type: Literal["label_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    font: String | None = None
    font_color: Color | None = None
    hovered_font_color: Color | None = None
    game_controller_hovered_font_color: Color | None = None
    clicked_font_color: Color | None = None
    disabled_font_color: Color | None = None
    parent_hovered_font_color: Color | None = None
    rich_text_setting: RichTextSetting | None = None
    single_line: Boolean | None = None
    underlined: Boolean | None = None
    rich_text_highlight_error_color: Color | None = None
    rich_text_highlight_warning_color: Color | None = None
    rich_text_highlight_ok_color: Color | None = None


@dataclass
class LaboratoryProductivityModifier:
    modifier: Double
    type: Literal["laboratory-productivity"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class LaboratorySpeedModifier:
    modifier: Double
    type: Literal["laboratory-speed"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class LightProperties:
    color: Color | None = None
    direction: Vector3D | None = None


@dataclass
class AdvancedSettings:
    asteroids: MapGenPresetAsteroidSettings | None = None
    pollution: MapGenPresetPollutionSettings | None = None
    enemy_evolution: MapGenPresetEnemyEvolutionSettings | None = None
    enemy_expansion: MapGenPresetEnemyExpansionSettings | None = None
    difficulty_settings: MapGenPresetDifficultySettings | None = None


@dataclass
class MaterialTextureParameters:
    count: Uint32
    picture: FileName
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    line_length: Uint32 | None = None


@dataclass
class MaxFailedAttemptsPerTickPerConstructionQueueModifier:
    modifier: Double
    type: Literal["max-failed-attempts-per-tick-per-construction-queue"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier:
    modifier: Double
    type: Literal["max-successful-attempts-per-tick-per-construction-queue"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class MaximumFollowingRobotsCountModifier:
    modifier: Double
    type: Literal["maximum-following-robots-count"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class MiningDrillProductivityBonusModifier:
    modifier: Double
    type: Literal["mining-drill-productivity-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class MiningWithFluidModifier:
    modifier: Boolean
    type: Literal["mining-with-fluid"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class NeighbourConnectable:
    connections: list[NeighbourConnectableConnectionDefinition] | dict[str, Any]
    affected_by_direction: Boolean | None = None
    neighbour_search_distance: Float | None = None


@dataclass
class NothingModifier:
    type: Literal["nothing"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None
    effect_description: LocalisedString | None = None


@dataclass
class PodDistanceTraveledProcessionLayer:
    type: Literal["pod-distance-traveled"]
    frames: list[Frame2] | dict[str, Any]
    reference_group: ProcessionLayerInheritanceGroupID | None = None
    contribute_to_distance_traveled: Boolean | None = None
    distance_traveled_contribution: Float | None = None


@dataclass
class Frame3:
    timestamp: MapTick | None = None
    tilt: Double | None = None
    tilt_t: Double | None = None
    offset: Vector | None = None
    offset_t: Vector | None = None
    offset_rate: Double | None = None
    offset_rate_t: Double | None = None


@dataclass
class PodMovementProcessionLayer:
    type: Literal["pod-movement"]
    frames: list[Frame3] | dict[str, Any]
    reference_group: ProcessionLayerInheritanceGroupID | None = None
    inherit_from: ProcessionLayerInheritanceGroupID | None = None
    contribute_to_distance_traveled: Boolean | None = None
    distance_traveled_contribution: Float | None = None


@dataclass
class PodOpacityProcessionLayer:
    type: Literal["pod-opacity"]
    lut: ColorLookupTable
    frames: list[Frame4] | dict[str, Any]


type ProbabilityTable = list[ProbabilityTableItem] | dict[str, Any]


@dataclass
class PumpConnectorGraphicsAnimation:
    standup_base: Animation | None = None
    standup_top: Animation | None = None
    standup_shadow: Animation | None = None
    connector: Animation | None = None
    connector_shadow: Animation | None = None


@dataclass
class PushBackTriggerEffectItem:
    type: Literal["push-back"]
    distance: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None


@dataclass
class SliceOrigin:
    north: Vector | None = None
    east: Vector | None = None
    south: Vector | None = None
    west: Vector | None = None


@dataclass
class FogMask:
    north: FogMaskShapeDefinition | None = None
    east: FogMaskShapeDefinition | None = None
    south: FogMaskShapeDefinition | None = None
    west: FogMaskShapeDefinition | None = None


@dataclass
class RailPlannerAllowElevatedRailsModifier:
    modifier: Boolean
    type: Literal["rail-planner-allow-elevated-rails"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class RailSignalStaticSpriteLayer:
    sprites: Animation
    render_layer: RenderLayer | None = None
    hide_if_simulation: Boolean | None = None
    hide_if_not_connected_to_rails: Boolean | None = None
    shifts: list[MapPosition] | dict[str, Any] | None = None
    align_to_frame_index: list[Uint8] | dict[str, Any] | None = None


@dataclass
class RailSupportOnDeepOilOceanModifier:
    modifier: Boolean
    type: Literal["rail-support-on-deep-oil-ocean"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class ResearchTechnologyTipTrigger:
    type: Literal["research"]
    technology: TechnologyID


@dataclass
class RotatedAnimation:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    run_mode: AnimationRunMode | None = None
    frame_count: Uint32 | None = None
    line_length: Uint32 | None = None
    animation_speed: Float | None = None
    max_advance: Float | None = None
    repeat_count: Uint8 | None = None
    dice: Uint8 | None = None
    dice_x: Uint8 | None = None
    dice_y: Uint8 | None = None
    frame_sequence: AnimationFrameSequence | None = None
    layers: list[RotatedAnimation] | dict[str, Any] | None = None
    direction_count: Uint32 | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    lines_per_file: Uint32 | None = None
    slice: Uint32 | None = None
    still_frame: Uint32 | None = None
    counterclockwise: Boolean | None = None
    middle_orientation: RealOrientation | None = None
    orientation_range: Float | None = None
    apply_projection: Boolean | None = None
    stripes: list[Stripe] | dict[str, Any] | None = None


@dataclass
class RotatedAnimation8Way1:
    north: RotatedAnimation
    north_east: RotatedAnimation | None = None
    east: RotatedAnimation | None = None
    south_east: RotatedAnimation | None = None
    south: RotatedAnimation | None = None
    south_west: RotatedAnimation | None = None
    west: RotatedAnimation | None = None
    north_west: RotatedAnimation | None = None


type RotatedAnimation8Way = RotatedAnimation8Way1 | RotatedAnimation


type RotatedAnimationVariations = (
    RotatedAnimation | list[RotatedAnimation] | dict[str, Any]
)


@dataclass
class RotatedSpriteFrame:
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    shift: Vector | None = None


@dataclass
class ScriptTriggerEffectItem:
    type: Literal["script"]
    effect_id: String
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None


@dataclass
class ScriptedTechnologyTrigger:
    type: Literal["scripted"]
    trigger_description: LocalisedString | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class SegmentEngineSpecification:
    segments: list[SegmentSpecification] | dict[str, Any]


@dataclass
class SendItemToOrbitTechnologyTrigger:
    type: Literal["send-item-to-orbit"]
    item: ItemIDFilter


@dataclass
class SetTileTriggerEffectItem:
    type: Literal["set-tile"]
    tile_name: TileID
    radius: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    apply_projection: Boolean | None = None
    apply_on_space_platform: Boolean | None = None
    tile_collision_mask: CollisionMaskConnector | None = None


@dataclass
class ShiftAnimationWaypoints:
    north: list[Vector] | dict[str, Any]
    east: list[Vector] | dict[str, Any]
    south: list[Vector] | dict[str, Any]
    west: list[Vector] | dict[str, Any]


@dataclass
class ShowExplosionOnChartTriggerEffectItem:
    type: Literal["show-explosion-on-chart"]
    scale: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None


@dataclass
class SignalColorMapping:
    type: Type6
    name: (
        VirtualSignalID
        | ItemID
        | FluidID
        | RecipeID
        | EntityID
        | SpaceLocationID
        | AsteroidChunkID
        | QualityID
    )
    color: Color


@dataclass
class SignalIDConnector:
    type: Type6
    name: (
        VirtualSignalID
        | ItemID
        | FluidID
        | RecipeID
        | EntityID
        | SpaceLocationID
        | AsteroidChunkID
        | QualityID
    )


@dataclass
class SimulationDefinition:
    planet: SpaceLocationID | None = None
    game_view_settings: GameViewSettings | None = None
    save: FileName | None = None
    init_file: FileName | None = None
    init: String | None = None
    update_file: FileName | None = None
    update: String | None = None
    mods: list[String] | dict[str, Any] | None = None
    init_update_count: Uint32 | None = None
    length: Uint32 | None = None
    generate_map: Boolean | None = None
    checkboard: Boolean | None = None
    hide_health_bars: Boolean | None = None
    mute_technology_finished_sound: Boolean | None = None
    mute_alert_sounds: Boolean | None = None
    volume_modifier: Float | None = None
    override_volume: Boolean | None = None
    mute_wind_sounds: Boolean | None = None
    hide_factoriopedia_gradient: Boolean | None = None


@dataclass
class Frame5:
    timestamp: MapTick | None = None
    opacity: Double | None = None
    opacity_t: Double | None = None
    tint: Color | None = None
    tint_t: Color | None = None
    rotation: Double | None = None
    rotation_t: Double | None = None
    scale: Double | None = None
    scale_t: Double | None = None
    shift: Vector | None = None
    shift_t: Vector | None = None
    shift_rate: Double | None = None
    shift_rate_t: Double | None = None
    frame: Float | None = None


@dataclass
class SmokeSource:
    name: TrivialSmokeID
    frequency: Float
    offset: Float | None = None
    position: Vector | None = None
    has_8_directions: Boolean | None = None
    north_position: Vector | None = None
    north_east_position: Vector | None = None
    east_position: Vector | None = None
    south_east_position: Vector | None = None
    south_position: Vector | None = None
    south_west_position: Vector | None = None
    west_position: Vector | None = None
    north_west_position: Vector | None = None
    deviation: Vector | None = None
    starting_frame: Uint16 | None = None
    starting_frame_deviation: Uint16 | None = None
    height: Float | None = None
    height_deviation: Float | None = None
    starting_vertical_speed: Float | None = None
    starting_vertical_speed_deviation: Float | None = None
    vertical_speed_slowdown: Float | None = None


@dataclass
class SoundDefinition1:
    filename: FileName
    volume: Float | None = None
    min_volume: Float | None = None
    max_volume: Float | None = None
    preload: Boolean | None = None
    speed: Float | None = None
    min_speed: Float | None = None
    max_speed: Float | None = None
    modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = (
        None
    )


type SoundDefinition = SoundDefinition1 | FileName


@dataclass
class SpaceConnectionAsteroidSpawnDefinition1:
    asteroid: EntityID | AsteroidChunkID
    spawn_points: list[SpaceConnectionAsteroidSpawnPoint] | dict[str, Any]
    type: Type8 | None = None


type SpaceConnectionAsteroidSpawnDefinition = (
    SpaceConnectionAsteroidSpawnDefinition1
    | list[EntityID | list[SpaceConnectionAsteroidSpawnPoint] | dict[str, Any]]
)


@dataclass
class SpaceDustEffectProperties:
    noise_texture: EffectTexture
    asteroid_texture: EffectTexture
    asteroid_normal_texture: EffectTexture
    animation_speed: Float | None = None


@dataclass
class SpacePlatformTileDefinition:
    tile: TileID
    position: TilePosition


@dataclass
class SpacePlatformsModifier:
    modifier: Boolean
    type: Literal["unlock-space-platforms"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class Sprite:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    layers: list[Sprite] | dict[str, Any] | None = None
    dice: SpriteSizeType | None = None
    dice_x: SpriteSizeType | None = None
    dice_y: SpriteSizeType | None = None


@dataclass
class SpriteNWaySheet:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    frames: Uint32 | None = None


@dataclass
class SpriteSheet:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    layers: list[SpriteSheet] | dict[str, Any] | None = None
    variation_count: Uint32 | None = None
    repeat_count: Uint32 | None = None
    line_length: Uint32 | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    lines_per_file: Uint32 | None = None
    dice: SpriteSizeType | None = None
    dice_x: SpriteSizeType | None = None
    dice_y: SpriteSizeType | None = None


@dataclass
class SpriteVariations1:
    sheet: SpriteSheet


type SpriteVariations = (
    SpriteVariations1 | SpriteSheet | list[Sprite] | dict[str, Any]
)


@dataclass
class GunCenterShift:
    north: Vector
    east: Vector | None = None
    south: Vector | None = None
    west: Vector | None = None


@dataclass
class SurfaceCondition:
    property: SurfacePropertyID
    min: Double | None = None
    max: Double | None = None


@dataclass
class TileTransitionSpritesheetLayout:
    spritesheet: FileName | None = None
    scale: Float | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    tile_height: Uint8 | None = None
    line_length: Uint8 | None = None
    count: Uint8 | None = None
    overlay: TileTransitionVariantLayout | None = None
    mask: TileTransitionVariantLayout | None = None
    background: TileTransitionVariantLayout | None = None
    background_mask: TileTransitionVariantLayout | None = None
    effect_map: TileTransitionVariantLayout | None = None
    lightmap: TileTransitionVariantLayout | None = None
    auxiliary_effect_mask: TileTransitionVariantLayout | None = None
    inner_corner_scale: Float | None = None
    inner_corner_x: SpriteSizeType | None = None
    inner_corner_y: SpriteSizeType | None = None
    inner_corner_tile_height: Uint8 | None = None
    inner_corner_line_length: Uint8 | None = None
    inner_corner_count: Uint8 | None = None
    outer_corner_scale: Float | None = None
    outer_corner_x: SpriteSizeType | None = None
    outer_corner_y: SpriteSizeType | None = None
    outer_corner_tile_height: Uint8 | None = None
    outer_corner_line_length: Uint8 | None = None
    outer_corner_count: Uint8 | None = None
    side_scale: Float | None = None
    side_x: SpriteSizeType | None = None
    side_y: SpriteSizeType | None = None
    side_tile_height: Uint8 | None = None
    side_line_length: Uint8 | None = None
    side_count: Uint8 | None = None
    double_side_scale: Float | None = None
    double_side_x: SpriteSizeType | None = None
    double_side_y: SpriteSizeType | None = None
    double_side_tile_height: Uint8 | None = None
    double_side_line_length: Uint8 | None = None
    double_side_count: Uint8 | None = None
    u_transition_scale: Float | None = None
    u_transition_x: SpriteSizeType | None = None
    u_transition_y: SpriteSizeType | None = None
    u_transition_tile_height: Uint8 | None = None
    u_transition_line_length: Uint8 | None = None
    u_transition_count: Uint8 | None = None
    o_transition_scale: Float | None = None
    o_transition_x: SpriteSizeType | None = None
    o_transition_y: SpriteSizeType | None = None
    o_transition_tile_height: Uint8 | None = None
    o_transition_line_length: Uint8 | None = None
    o_transition_count: Uint8 | None = None


@dataclass
class TileTransitions:
    layout: TileTransitionSpritesheetLayout | None = None
    spritesheet: FileName | None = None
    overlay_enabled: Boolean | None = None
    mask_enabled: Boolean | None = None
    background_enabled: Boolean | None = None
    background_mask_enabled: Boolean | None = None
    effect_map_enabled: Boolean | None = None
    lightmap_enabled: Boolean | None = None
    auxiliary_effect_mask_enabled: Boolean | None = None
    overlay_layout: TileTransitionVariantLayout | None = None
    mask_layout: TileTransitionVariantLayout | None = None
    background_layout: TileTransitionVariantLayout | None = None
    background_mask_layout: TileTransitionVariantLayout | None = None
    effect_map_layout: TileTransitionVariantLayout | None = None
    lightmap_layout: TileTransitionVariantLayout | None = None
    auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None
    mask_spritesheet: FileName | None = None
    background_spritesheet: FileName | None = None
    background_mask_spritesheet: FileName | None = None
    effect_map_spritesheet: FileName | None = None
    lightmap_spritesheet: FileName | None = None
    auxiliary_effect_mask_spritesheet: FileName | None = None
    water_patch: Sprite | None = None
    overlay_layer_group: TileRenderLayer | None = None
    background_layer_group: TileRenderLayer | None = None
    waving_effect_time_scale: Float | None = None
    overlay_layer_offset: Int8 | None = None
    masked_overlay_layer_offset: Int8 | None = None
    background_layer_offset: Int8 | None = None
    masked_background_layer_offset: Int8 | None = None
    draw_background_layer_under_tiles: Boolean | None = None
    background_layer_occludes_light: Boolean | None = None
    apply_effect_color_to_overlay: Boolean | None = None
    apply_waving_effect_on_masks: Boolean | None = None
    apply_waving_effect_on_background_mask: Boolean | None = None
    draw_simple_outer_corner_over_diagonal: Boolean | None = None
    offset_background_layer_by_tile_layer: Boolean | None = None
    inner_corner_weights: list[Float] | dict[str, Any] | None = None
    outer_corner_weights: list[Float] | dict[str, Any] | None = None
    side_weights: list[Float] | dict[str, Any] | None = None
    side_variations_in_group: Uint8 | None = None
    double_side_weights: list[Float] | dict[str, Any] | None = None
    double_side_variations_in_group: Uint8 | None = None
    u_transition_weights: list[Float] | dict[str, Any] | None = None


@dataclass
class TileTransitionsBetweenTransitions:
    transition_group1: Uint8
    transition_group2: Uint8
    layout: TileTransitionSpritesheetLayout | None = None
    spritesheet: FileName | None = None
    overlay_enabled: Boolean | None = None
    mask_enabled: Boolean | None = None
    background_enabled: Boolean | None = None
    background_mask_enabled: Boolean | None = None
    effect_map_enabled: Boolean | None = None
    lightmap_enabled: Boolean | None = None
    auxiliary_effect_mask_enabled: Boolean | None = None
    overlay_layout: TileTransitionVariantLayout | None = None
    mask_layout: TileTransitionVariantLayout | None = None
    background_layout: TileTransitionVariantLayout | None = None
    background_mask_layout: TileTransitionVariantLayout | None = None
    effect_map_layout: TileTransitionVariantLayout | None = None
    lightmap_layout: TileTransitionVariantLayout | None = None
    auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None
    mask_spritesheet: FileName | None = None
    background_spritesheet: FileName | None = None
    background_mask_spritesheet: FileName | None = None
    effect_map_spritesheet: FileName | None = None
    lightmap_spritesheet: FileName | None = None
    auxiliary_effect_mask_spritesheet: FileName | None = None
    water_patch: Sprite | None = None
    overlay_layer_group: TileRenderLayer | None = None
    background_layer_group: TileRenderLayer | None = None
    waving_effect_time_scale: Float | None = None
    overlay_layer_offset: Int8 | None = None
    masked_overlay_layer_offset: Int8 | None = None
    background_layer_offset: Int8 | None = None
    masked_background_layer_offset: Int8 | None = None
    draw_background_layer_under_tiles: Boolean | None = None
    background_layer_occludes_light: Boolean | None = None
    apply_effect_color_to_overlay: Boolean | None = None
    apply_waving_effect_on_masks: Boolean | None = None
    apply_waving_effect_on_background_mask: Boolean | None = None
    draw_simple_outer_corner_over_diagonal: Boolean | None = None
    offset_background_layer_by_tile_layer: Boolean | None = None
    inner_corner_weights: list[Float] | dict[str, Any] | None = None
    outer_corner_weights: list[Float] | dict[str, Any] | None = None
    side_weights: list[Float] | dict[str, Any] | None = None
    side_variations_in_group: Uint8 | None = None
    double_side_weights: list[Float] | dict[str, Any] | None = None
    double_side_variations_in_group: Uint8 | None = None
    u_transition_weights: list[Float] | dict[str, Any] | None = None


@dataclass
class TileTransitionsToTiles:
    to_tiles: list[TileID] | dict[str, Any]
    transition_group: Uint8
    layout: TileTransitionSpritesheetLayout | None = None
    spritesheet: FileName | None = None
    overlay_enabled: Boolean | None = None
    mask_enabled: Boolean | None = None
    background_enabled: Boolean | None = None
    background_mask_enabled: Boolean | None = None
    effect_map_enabled: Boolean | None = None
    lightmap_enabled: Boolean | None = None
    auxiliary_effect_mask_enabled: Boolean | None = None
    overlay_layout: TileTransitionVariantLayout | None = None
    mask_layout: TileTransitionVariantLayout | None = None
    background_layout: TileTransitionVariantLayout | None = None
    background_mask_layout: TileTransitionVariantLayout | None = None
    effect_map_layout: TileTransitionVariantLayout | None = None
    lightmap_layout: TileTransitionVariantLayout | None = None
    auxiliary_effect_mask_layout: TileTransitionVariantLayout | None = None
    mask_spritesheet: FileName | None = None
    background_spritesheet: FileName | None = None
    background_mask_spritesheet: FileName | None = None
    effect_map_spritesheet: FileName | None = None
    lightmap_spritesheet: FileName | None = None
    auxiliary_effect_mask_spritesheet: FileName | None = None
    water_patch: Sprite | None = None
    overlay_layer_group: TileRenderLayer | None = None
    background_layer_group: TileRenderLayer | None = None
    waving_effect_time_scale: Float | None = None
    overlay_layer_offset: Int8 | None = None
    masked_overlay_layer_offset: Int8 | None = None
    background_layer_offset: Int8 | None = None
    masked_background_layer_offset: Int8 | None = None
    draw_background_layer_under_tiles: Boolean | None = None
    background_layer_occludes_light: Boolean | None = None
    apply_effect_color_to_overlay: Boolean | None = None
    apply_waving_effect_on_masks: Boolean | None = None
    apply_waving_effect_on_background_mask: Boolean | None = None
    draw_simple_outer_corner_over_diagonal: Boolean | None = None
    offset_background_layer_by_tile_layer: Boolean | None = None
    inner_corner_weights: list[Float] | dict[str, Any] | None = None
    outer_corner_weights: list[Float] | dict[str, Any] | None = None
    side_weights: list[Float] | dict[str, Any] | None = None
    side_variations_in_group: Uint8 | None = None
    double_side_weights: list[Float] | dict[str, Any] | None = None
    double_side_variations_in_group: Uint8 | None = None
    u_transition_weights: list[Float] | dict[str, Any] | None = None


@dataclass
class TileTransitionsVariants:
    main: list[TileMainPictures] | dict[str, Any] | None = None
    material_texture_width_in_tiles: Uint8 | None = None
    material_texture_height_in_tiles: Uint8 | None = None
    material_background: MaterialTextureParameters | None = None
    light: list[TileLightPictures] | dict[str, Any] | None = None
    material_light: MaterialTextureParameters | None = None
    empty_transitions: Boolean | None = None
    transition: TileTransitions | None = None


@dataclass
class TrainBrakingForceBonusModifier:
    modifier: Double
    type: Literal["train-braking-force-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class TransportBeltConnectorFrame:
    frame_main: AnimationVariations
    frame_shadow: AnimationVariations
    frame_main_scanner: Animation
    frame_main_scanner_movement_speed: Float
    frame_main_scanner_horizontal_start_shift: Vector
    frame_main_scanner_horizontal_end_shift: Vector
    frame_main_scanner_horizontal_y_scale: Float
    frame_main_scanner_horizontal_rotation: RealOrientation
    frame_main_scanner_vertical_start_shift: Vector
    frame_main_scanner_vertical_end_shift: Vector
    frame_main_scanner_vertical_y_scale: Float
    frame_main_scanner_vertical_rotation: RealOrientation
    frame_main_scanner_cross_horizontal_start_shift: Vector
    frame_main_scanner_cross_horizontal_end_shift: Vector
    frame_main_scanner_cross_horizontal_y_scale: Float
    frame_main_scanner_cross_horizontal_rotation: RealOrientation
    frame_main_scanner_cross_vertical_start_shift: Vector
    frame_main_scanner_cross_vertical_end_shift: Vector
    frame_main_scanner_cross_vertical_y_scale: Float
    frame_main_scanner_cross_vertical_rotation: RealOrientation
    frame_main_scanner_nw_ne: Animation
    frame_main_scanner_sw_se: Animation
    frame_back_patch: SpriteVariations | None = None
    frame_front_patch: SpriteVariations | None = None


@dataclass
class TurretAttackModifier:
    type: Literal["turret-attack"]
    turret_id: EntityID
    modifier: Double
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class TurretBaseVisualisation:
    animation: Animation4Way
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    enabled_states: list[TurretState] | dict[str, Any] | None = None
    draw_when_has_energy: Boolean | None = None
    draw_when_no_energy: Boolean | None = None
    draw_when_has_ammo: Boolean | None = None
    draw_when_no_ammo: Boolean | None = None
    draw_when_frozen: Boolean | None = None
    draw_when_not_frozen: Boolean | None = None


@dataclass
class TurretSpecialEffectCenter1:
    default: Vector | None = None
    north: Vector | None = None
    north_east: Vector | None = None
    east: Vector | None = None
    south_east: Vector | None = None
    south: Vector | None = None
    south_west: Vector | None = None
    west: Vector | None = None
    north_west: Vector | None = None


type TurretSpecialEffectCenter = TurretSpecialEffectCenter1 | Vector


@dataclass
class UnlockQualityModifier:
    type: Literal["unlock-quality"]
    quality: QualityID
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class UnlockRecipeModifier:
    type: Literal["unlock-recipe"]
    recipe: RecipeID
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class UnlockSpaceLocationModifier:
    type: Literal["unlock-space-location"]
    space_location: SpaceLocationID
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class VariableAmbientSoundLayerStateProperties:
    enabled: Boolean | None = None
    variant: Uint8 | None = None
    sequence_length: RandomRange | None = None
    number_of_repetitions: RandomRange | ProbabilityTable | None = None
    start_pause: RandomRange | None = None
    pause_between_samples: RandomRange | None = None
    pause_between_repetitions: RandomRange | None = None
    end_pause: RandomRange | None = None
    silence_instead_of_sample_probability: Float | None = None


@dataclass
class VariableAmbientSoundState:
    name: String
    type: VariableAmbientSoundStateType | None = None
    next_state: String | None = None
    next_states: (
        list[VariableAmbientSoundNextStateItem] | dict[str, Any] | None
    ) = None
    next_state_trigger: VariableAmbientSoundNextStateTrigger | None = None
    next_state_layers_finished_layers: list[String] | dict[str, Any] | None = (
        None
    )
    state_duration_seconds: Uint32 | None = None
    layers_properties: (
        list[VariableAmbientSoundLayerStateProperties] | dict[str, Any] | None
    ) = None
    start_pause: RandomRange | None = None
    end_pause: RandomRange | None = None
    number_of_enabled_layers: RandomRange | None = None


@dataclass
class VehicleLogisticsModifier:
    modifier: Boolean
    type: Literal["vehicle-logistics"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class WaterReflectionDefinition:
    pictures: SpriteVariations | None = None
    orientation_to_variation: Boolean | None = None
    rotate: Boolean | None = None


@dataclass
class WaterTileEffectParameters:
    specular_lightness: Color
    foam_color: Color
    foam_color_multiplier: Float
    tick_scale: Float
    animation_speed: Float
    animation_scale: Float | list[Float]
    dark_threshold: Float | list[Float]
    reflection_threshold: Float | list[Float]
    specular_threshold: Float | list[Float]
    textures: list[EffectTexture] | dict[str, Any]
    near_zoom: Float | None = None
    far_zoom: Float | None = None
    lightmap_alpha: Float | None = None
    shader_variation: EffectVariation | None = None
    texture_variations_rows: Uint8 | None = None
    texture_variations_columns: Uint8 | None = None
    secondary_texture_variations_rows: Uint8 | None = None
    secondary_texture_variations_columns: Uint8 | None = None


@dataclass
class WireConnectionPoint:
    wire: WirePosition
    shadow: WirePosition


@dataclass
class WorkerRobotBatteryModifier:
    modifier: Double
    type: Literal["worker-robot-battery"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class WorkerRobotSpeedModifier:
    modifier: Double
    type: Literal["worker-robot-speed"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class WorkerRobotStorageModifier:
    modifier: Double
    type: Literal["worker-robot-storage"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class AchievementPrototype:
    type: Literal["achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None


@dataclass
class AirbornePollutantPrototype:
    type: Literal["airborne-pollutant"]
    name: String
    chart_color: Color
    icon: Sprite
    affects_evolution: Boolean
    affects_water_tint: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    localised_name_with_amount: String | None = None
    damages_trees: Boolean | None = None


@dataclass
class AmmoCategory:
    type: Literal["ammo-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    bonus_gui_order: Order | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class AnimationPrototype:
    type: Literal["animation"]
    name: String
    layers: list[Animation] | dict[str, Any] | None = None
    filename: FileName | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    run_mode: AnimationRunMode | None = None
    frame_count: Uint32 | None = None
    line_length: Uint32 | None = None
    animation_speed: Float | None = None
    max_advance: Float | None = None
    repeat_count: Uint8 | None = None
    dice: Uint8 | None = None
    dice_x: Uint8 | None = None
    dice_y: Uint8 | None = None
    frame_sequence: AnimationFrameSequence | None = None
    stripes: list[Stripe] | dict[str, Any] | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    slice: Uint32 | None = None
    lines_per_file: Uint32 | None = None


@dataclass
class AutoplaceControl:
    type: Literal["autoplace-control"]
    name: String
    category: Category
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    richness: Boolean | None = None
    can_be_disabled: Boolean | None = None
    related_to_fight_achievements: Boolean | None = None


@dataclass
class BatteryEquipmentPrototype:
    type: Literal["battery-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class BeltImmunityEquipmentPrototype:
    type: Literal["belt-immunity-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    energy_consumption: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class BuildEntityAchievementPrototype:
    type: Literal["build-entity-achievement"]
    name: String
    to_build: EntityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None
    within: MapTick | None = None


@dataclass
class BurnerUsagePrototype:
    type: Literal["burner-usage"]
    name: String
    empty_slot_sprite: Sprite
    empty_slot_caption: LocalisedString
    icon: Sprite
    accepted_fuel_key: String
    burned_in_key: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    empty_slot_description: LocalisedString | None = None
    no_fuel_status: LocalisedString | None = None


@dataclass
class ChangedSurfaceAchievementPrototype:
    type: Literal["change-surface-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    surface: String | None = None


@dataclass
class CollisionLayerPrototype:
    type: Literal["collision-layer"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class CombatRobotCountAchievementPrototype:
    type: Literal["combat-robot-count-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    count: Uint32 | None = None


@dataclass
class CompleteObjectiveAchievementPrototype:
    type: Literal["complete-objective-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None
    within: MapTick | None = None


@dataclass
class ConstructWithRobotsAchievementPrototype:
    type: Literal["construct-with-robots-achievement"]
    name: String
    limited_to_one_game: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    more_than_manually: Boolean | None = None


@dataclass
class CreatePlatformAchievementPrototype:
    type: Literal["create-platform-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None


@dataclass
class CustomEventPrototype:
    type: Literal["custom-event"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class CustomInputPrototype:
    type: Literal["custom-input"]
    name: String
    key_sequence: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    alternative_key_sequence: String | None = None
    controller_key_sequence: String | None = None
    controller_alternative_key_sequence: String | None = None
    linked_game_control: LinkedGameControl | None = None
    consuming: ConsumingType | None = None
    enabled: Boolean | None = None
    enabled_while_spectating: Boolean | None = None
    enabled_while_in_cutscene: Boolean | None = None
    include_selected_prototype: Boolean | None = None
    item_to_spawn: ItemID | None = None
    action: Action | None = None
    block_modifiers: Boolean | None = None


@dataclass
class DamageType:
    type: Literal["damage-type"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class DeconstructWithRobotsAchievementPrototype:
    type: Literal["deconstruct-with-robots-achievement"]
    name: String
    amount: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None


@dataclass
class DeliverByRobotsAchievementPrototype:
    type: Literal["deliver-by-robots-achievement"]
    name: String
    amount: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None


@dataclass
class DepleteResourceAchievementPrototype:
    type: Literal["deplete-resource-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class DestroyCliffAchievementPrototype:
    type: Literal["destroy-cliff-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class DontBuildEntityAchievementPrototype:
    type: Literal["dont-build-entity-achievement"]
    name: String
    dont_build: EntityID | list[EntityID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None
    amount: Uint32 | None = None
    research_with: ItemID | list[ItemID] | dict[str, Any] | None = None


@dataclass
class DontCraftManuallyAchievementPrototype:
    type: Literal["dont-craft-manually-achievement"]
    name: String
    amount: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None


@dataclass
class DontKillManuallyAchievementPrototype:
    type: Literal["dont-kill-manually-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None
    to_kill: EntityID | None = None
    type_not_to_kill: String | None = None


@dataclass
class DontResearchBeforeResearchingAchievementPrototype:
    type: Literal["dont-research-before-researching-achievement"]
    name: String
    dont_research: ItemID | list[ItemID] | dict[str, Any]
    research_with: ItemID | list[ItemID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None


@dataclass
class DontUseEntityInEnergyProductionAchievementPrototype:
    type: Literal["dont-use-entity-in-energy-production-achievement"]
    name: String
    excluded: EntityID | list[EntityID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    objective_condition: ObjectiveCondition | None = None
    included: EntityID | list[EntityID] | dict[str, Any] | None = None
    last_hour_only: Boolean | None = None
    minimum_energy_produced: Energy | None = None


@dataclass
class EnergyShieldEquipmentPrototype:
    type: Literal["energy-shield-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    max_shield_value: Float
    energy_per_shield: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class EquipArmorAchievementPrototype:
    type: Literal["equip-armor-achievement"]
    name: String
    armor: ItemID
    alternative_armor: ItemID
    limit_quality: QualityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class EquipmentCategory:
    type: Literal["equipment-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class EquipmentGhostPrototype:
    type: Literal["equipment-ghost"]
    name: String
    sprite: Sprite
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    shape: EquipmentShape | None = None
    categories: list[EquipmentCategoryID] | dict[str, Any] | None = None
    energy_source: ElectricEnergySource | None = None
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class EquipmentGridPrototype:
    type: Literal["equipment-grid"]
    name: String
    equipment_categories: list[EquipmentCategoryID] | dict[str, Any]
    width: Uint32
    height: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    locked: Boolean | None = None


@dataclass
class FluidPrototype:
    type: Literal["fluid"]
    name: String
    default_temperature: Float
    base_color: Color
    flow_color: Color
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    visualization_color: Color | None = None
    max_temperature: Float | None = None
    heat_capacity: Energy | None = None
    fuel_value: Energy | None = None
    emissions_multiplier: Double | None = None
    gas_temperature: Float | None = None
    auto_barrel: Boolean | None = None


@dataclass
class FuelCategory:
    type: Literal["fuel-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    fuel_value_type: LocalisedString | None = None


@dataclass
class GroupAttackAchievementPrototype:
    type: Literal["group-attack-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    entities: list[EntityID] | dict[str, Any] | None = None
    attack_type: AttackType | None = None


@dataclass
class GuiStyle:
    type: Literal["gui-style"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    default_tileset: FileName | None = None
    default_sprite_scale: Double | None = None
    default_sprite_priority: SpritePriority | None = None


@dataclass
class InventoryBonusEquipmentPrototype:
    type: Literal["inventory-bonus-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    inventory_size_bonus: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    energy_source: ElectricEnergySource | None = None
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class ItemGroup:
    type: Literal["item-group"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    order_in_recipe: Order | None = None


@dataclass
class ItemSubGroup:
    type: Literal["item-subgroup"]
    name: String
    group: ItemGroupID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class KillAchievementPrototype:
    type: Literal["kill-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    to_kill: EntityID | list[EntityID] | dict[str, Any] | None = None
    type_to_kill: String | None = None
    damage_type: DamageTypeID | None = None
    damage_dealer: EntityID | list[EntityID] | dict[str, Any] | None = None
    amount: Uint32 | None = None
    in_vehicle: Boolean | None = None
    personally: Boolean | None = None


@dataclass
class ModData:
    type: Literal["mod-data"]
    name: String
    data: dict[String, AnyBasic]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    data_type: String | None = None


@dataclass
class ModuleCategory:
    type: Literal["module-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class ModuleTransferAchievementPrototype:
    type: Literal["module-transfer-achievement"]
    name: String
    module: ItemID | list[ItemID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class MovementBonusEquipmentPrototype:
    type: Literal["movement-bonus-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    energy_consumption: Energy
    movement_bonus: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class NamedNoiseExpression:
    type: Literal["noise-expression"]
    name: String
    expression: NoiseExpression
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    local_expressions: dict[String, NoiseExpression] | None = None
    local_functions: dict[String, NoiseFunction] | None = None
    intended_property: String | None = None


@dataclass
class NamedNoiseFunction:
    type: Literal["noise-function"]
    name: String
    parameters: list[String] | dict[str, Any]
    expression: NoiseExpression
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    local_expressions: dict[String, NoiseExpression] | None = None
    local_functions: dict[String, NoiseFunction] | None = None


@dataclass
class PlaceEquipmentAchievementPrototype:
    type: Literal["place-equipment-achievement"]
    name: String
    armor: ItemID
    limit_quality: QualityID
    limit_equip_quality: QualityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class PlayerDamagedAchievementPrototype:
    type: Literal["player-damaged-achievement"]
    name: String
    minimum_damage: Float
    should_survive: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    type_of_dealer: String | None = None


@dataclass
class ProcessionLayerInheritanceGroup:
    type: Literal["procession-layer-inheritance-group"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    intermezzo_application: TransitionApplication | None = None
    arrival_application: TransitionApplication | None = None


@dataclass
class ProduceAchievementPrototype:
    type: Literal["produce-achievement"]
    name: String
    amount: MaterialAmountType
    limited_to_one_game: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    item_product: ItemIDFilter | None = None
    fluid_product: FluidID | None = None


@dataclass
class ProducePerHourAchievementPrototype:
    type: Literal["produce-per-hour-achievement"]
    name: String
    amount: MaterialAmountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    item_product: ItemIDFilter | None = None
    fluid_product: FluidID | None = None


@dataclass
class QualityPrototype:
    type: Literal["quality"]
    name: String
    color: Color
    level: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    draw_sprite_by_default: Boolean | None = None
    next: QualityID | None = None
    next_probability: Double | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    beacon_power_usage_multiplier: Float | None = None
    mining_drill_resource_drain_multiplier: Float | None = None
    science_pack_drain_multiplier: Float | None = None
    default_multiplier: Double | None = None
    inserter_speed_multiplier: Double | None = None
    fluid_wagon_capacity_multiplier: Double | None = None
    inventory_size_multiplier: Double | None = None
    lab_research_speed_multiplier: Double | None = None
    crafting_machine_speed_multiplier: Double | None = None
    crafting_machine_energy_usage_multiplier: Double | None = None
    logistic_cell_charging_energy_multiplier: Double | None = None
    tool_durability_multiplier: Double | None = None
    accumulator_capacity_multiplier: Double | None = None
    flying_robot_max_energy_multiplier: Double | None = None
    range_multiplier: Double | None = None
    asteroid_collector_collection_radius_bonus: Double | None = None
    equipment_grid_width_bonus: Int16 | None = None
    equipment_grid_height_bonus: Int16 | None = None
    electric_pole_wire_reach_bonus: Float | None = None
    electric_pole_supply_area_distance_bonus: Float | None = None
    beacon_supply_area_distance_bonus: Float | None = None
    mining_drill_mining_radius_bonus: Float | None = None
    logistic_cell_charging_station_count_bonus: Uint32 | None = None
    beacon_module_slots_bonus: ItemStackIndex | None = None
    crafting_machine_module_slots_bonus: ItemStackIndex | None = None
    mining_drill_module_slots_bonus: ItemStackIndex | None = None
    lab_module_slots_bonus: ItemStackIndex | None = None


@dataclass
class RecipeCategory:
    type: Literal["recipe-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class RecipePrototype:
    type: Literal["recipe"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    category: RecipeCategoryID | None = None
    additional_categories: list[RecipeCategoryID] | dict[str, Any] | None = None
    crafting_machine_tint: RecipeTints | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    ingredients: list[IngredientPrototype] | dict[str, Any] | None = None
    results: list[ProductPrototype] | dict[str, Any] | None = None
    main_product: String | None = None
    energy_required: Double | None = None
    emissions_multiplier: Double | None = None
    maximum_productivity: Double | None = None
    requester_paste_multiplier: Uint32 | None = None
    overload_multiplier: Uint32 | None = None
    allow_inserter_overload: Boolean | None = None
    enabled: Boolean | None = None
    hide_from_stats: Boolean | None = None
    hide_from_player_crafting: Boolean | None = None
    hide_from_bonus_gui: Boolean | None = None
    allow_decomposition: Boolean | None = None
    allow_as_intermediate: Boolean | None = None
    allow_intermediates: Boolean | None = None
    always_show_made_in: Boolean | None = None
    show_amount_in_title: Boolean | None = None
    always_show_products: Boolean | None = None
    unlock_results: Boolean | None = None
    preserve_products_in_machine_output: Boolean | None = None
    result_is_always_fresh: Boolean | None = None
    reset_freshness_on_craft: Boolean | None = None
    allow_consumption_message: LocalisedString | None = None
    allow_speed_message: LocalisedString | None = None
    allow_productivity_message: LocalisedString | None = None
    allow_pollution_message: LocalisedString | None = None
    allow_quality_message: LocalisedString | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    hide_from_signal_gui: Boolean | None = None
    allow_consumption: Boolean | None = None
    allow_speed: Boolean | None = None
    allow_productivity: Boolean | None = None
    allow_pollution: Boolean | None = None
    allow_quality: Boolean | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    alternative_unlock_methods: list[TechnologyID] | dict[str, Any] | None = (
        None
    )
    auto_recycle: Boolean | None = None


@dataclass
class ResearchAchievementPrototype:
    type: Literal["research-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    technology: TechnologyID | None = None
    research_all: Boolean | None = None


@dataclass
class ResearchWithSciencePackAchievementPrototype:
    type: Literal["research-with-science-pack-achievement"]
    name: String
    science_pack: ItemID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None


@dataclass
class ResourceCategory:
    type: Literal["resource-category"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )


@dataclass
class ShootAchievementPrototype:
    type: Literal["shoot-achievement"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    ammo_type: ItemID | None = None
    amount: Uint32 | None = None


@dataclass
class ShortcutPrototype:
    type: Literal["shortcut"]
    name: String
    action: Action1
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    small_icons: list[IconData] | dict[str, Any] | None = None
    small_icon: FileName | None = None
    small_icon_size: SpriteSizeType | None = None
    item_to_spawn: ItemID | None = None
    technology_to_unlock: TechnologyID | None = None
    unavailable_until_unlocked: Boolean | None = None
    toggleable: Boolean | None = None
    associated_control_input: String | None = None
    style: Style | None = None


@dataclass
class SolarPanelEquipmentPrototype:
    type: Literal["solar-panel-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    power: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None
    performance_at_day: Double | None = None
    performance_at_night: Double | None = None
    solar_coefficient_property: SurfacePropertyID | None = None


@dataclass
class SoundPrototype:
    type: Literal["sound"]
    name: String
    category: SoundType | None = None
    priority: Uint8 | None = None
    aggregation: AggregationSpecification | None = None
    allow_random_repeat: Boolean | None = None
    audible_distance_modifier: Double | None = None
    game_controller_vibration_data: GameControllerVibrationData | None = None
    advanced_volume_control: AdvancedVolumeControl | None = None
    speed_smoothing_window_size: Uint32 | None = None
    variations: (
        SoundDefinition | list[SoundDefinition] | dict[str, Any] | None
    ) = None
    filename: FileName | None = None
    volume: Float | None = None
    min_volume: Float | None = None
    max_volume: Float | None = None
    preload: Boolean | None = None
    speed: Float | None = None
    min_speed: Float | None = None
    max_speed: Float | None = None
    modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = (
        None
    )


@dataclass
class SpaceConnectionDistanceTraveledAchievementPrototype:
    type: Literal["space-connection-distance-traveled-achievement"]
    name: String
    tracked_connection: SpaceConnectionID
    distance: Uint32
    reversed: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None


@dataclass
class SpaceConnectionPrototype:
    type: Literal["space-connection"]
    name: String
    from_: SpaceLocationID
    to: SpaceLocationID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    length: Uint32 | None = None
    asteroid_spawn_definitions: (
        list[SpaceConnectionAsteroidSpawnDefinition] | dict[str, Any] | None
    ) = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class SpritePrototype:
    type: Literal["sprite"]
    name: String
    layers: list[Sprite] | dict[str, Any] | None = None
    filename: FileName | None = None
    dice: SpriteSizeType | None = None
    dice_x: SpriteSizeType | None = None
    dice_y: SpriteSizeType | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None


@dataclass
class SurfacePropertyPrototype:
    type: Literal["surface-property"]
    name: String
    default_value: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    localised_unit_key: String | None = None
    is_time: Boolean | None = None


@dataclass
class SurfacePrototype:
    type: Literal["surface"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    surface_properties: dict[SurfacePropertyID, Double] | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class TrainPathAchievementPrototype:
    type: Literal["train-path-achievement"]
    name: String
    minimum_distance: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None


@dataclass
class DrawingBoxes:
    north: BoundingBox
    east: BoundingBox
    south: BoundingBox
    west: BoundingBox


@dataclass
class TrivialSmokePrototype:
    type: Literal["trivial-smoke"]
    name: String
    animation: Animation
    duration: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    glow_animation: Animation | None = None
    color: Color | None = None
    start_scale: Float | None = None
    end_scale: Float | None = None
    movement_slow_down_factor: Double | None = None
    spread_duration: Uint32 | None = None
    fade_away_duration: Uint32 | None = None
    fade_in_duration: Uint32 | None = None
    glow_fade_away_duration: Uint32 | None = None
    cyclic: Boolean | None = None
    affected_by_wind: Boolean | None = None
    show_when_smoke_off: Boolean | None = None
    render_layer: RenderLayer | None = None


@dataclass
class TutorialDefinition:
    type: Literal["tutorial"]
    name: String
    scenario: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None


@dataclass
class UseEntityInEnergyProductionAchievementPrototype:
    type: Literal["use-entity-in-energy-production-achievement"]
    name: String
    entity: EntityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    consumed_condition: ItemIDFilter | None = None
    produced_condition: ItemIDFilter | None = None
    required_to_build: EntityID | None = None


@dataclass
class UseItemAchievementPrototype:
    type: Literal["use-item-achievement"]
    name: String
    to_use: ItemID
    limit_quality: QualityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    steam_stats_name: String | None = None
    allowed_without_fight: Boolean | None = None
    amount: Uint32 | None = None
    limited_to_one_game: Boolean | None = None


@dataclass
class UtilityConstants:
    type: Literal["utility-constants"]
    name: String
    entity_button_background_color: Color
    building_buildable_too_far_tint: Color
    building_buildable_tint: Color
    building_not_buildable_tint: Color
    building_ignorable_tint: Color
    building_no_tint: Color
    underground_belt_max_distance_tint: Color
    underground_pipe_max_distance_tint: Color
    ghost_shader_tint: GhostTintSet
    ghost_shaderless_tint: GhostTintSet
    ghost_shimmer_settings: GhostShimmerConfig
    probability_product_count_tint: Color
    zero_count_value_tint: Color
    equipment_default_background_color: Color
    equipment_default_background_border_color: Color
    equipment_default_grabbed_background_color: Color
    turret_range_visualization_color: Color
    capsule_range_visualization_color: Color
    agricultural_range_visualization_color: Color
    artillery_range_visualization_color: Color
    chart: ChartUtilityConstants
    gui_remark_color: Color
    gui_search_match_foreground_color: Color
    gui_search_match_background_color: Color
    default_player_force_color: Color
    default_enemy_force_color: Color
    default_other_force_color: Color
    deconstruct_mark_tint: Color
    rail_planner_count_button_color: Color
    count_button_size: Int32
    logistic_gui_unselected_network_highlight_tint: Color
    logistic_gui_selected_network_highlight_tint: Color
    chart_search_highlight: Color
    selected_chart_search_highlight: Color
    zoom_to_world_can_use_nightvision: Boolean
    zoom_to_world_effect_strength: Float
    max_logistic_filter_count: LogisticFilterIndex
    max_terrain_building_size: Uint8
    small_area_size: Float
    medium_area_size: Float
    large_area_size: Float
    huge_platform_animation_sound_area: Float
    small_blueprint_area_size: Float
    medium_blueprint_area_size: Float
    large_blueprint_area_size: Float
    enabled_recipe_slot_tint: Color
    disabled_recipe_slot_tint: Color
    disabled_recipe_slot_background_tint: Color
    forced_enabled_recipe_slot_background_tint: Color
    rail_segment_colors: list[Color] | dict[str, Any]
    player_colors: list[PlayerColor] | dict[str, Any]
    server_command_console_chat_color: Color
    script_command_console_chat_color: Color
    default_alert_icon_scale: Float
    bonus_gui_ordering: BonusGuiOrdering
    daytime_color_lookup: DaytimeColorLookupTable
    zoom_to_world_daytime_color_lookup: DaytimeColorLookupTable
    frozen_color_lookup: ColorLookupTable
    map_editor: MapEditor
    drop_item_radius: Float
    checkerboard_white: Color
    checkerboard_black: Color
    item_outline_color: Color
    item_outline_radius: Float
    item_outline_inset: Float
    item_outline_sharpness: Float
    item_default_random_tint_strength: Color
    spawner_evolution_factor_health_modifier: Float
    item_health_bar_colors: list[ItemHealthBarColor] | dict[str, Any]
    item_ammo_magazine_left_bar_color: Color
    item_tool_durability_bar_color: Color
    filter_outline_color: Color
    icon_shadow_radius: Float
    icon_shadow_inset: Float
    icon_shadow_sharpness: Float
    icon_shadow_color: Color
    clipboard_history_size: Uint32
    recipe_step_limit: Uint32
    manual_rail_building_reach_modifier: Double
    train_temporary_stop_wait_time: Uint32
    train_time_wait_condition_default: Uint32
    train_inactivity_wait_condition_default: Uint32
    unit_group_pathfind_resolution: Int8
    unit_group_max_pursue_distance: Double
    dynamic_recipe_overload_factor: Double
    minimum_recipe_overload_multiplier: Uint32
    maximum_recipe_overload_multiplier: Uint32
    entity_renderer_search_box_limits: EntityRendererSearchBoxLimits
    light_renderer_search_distance_limit: Uint8
    tree_leaf_distortion_strength_far: Vector
    tree_leaf_distortion_distortion_far: Vector
    tree_leaf_distortion_speed_far: Vector
    tree_leaf_distortion_strength_near: Vector
    tree_leaf_distortion_distortion_near: Vector
    tree_leaf_distortion_speed_near: Vector
    tree_shadow_roughness: Float
    tree_shadow_speed: Float
    missing_preview_sprite_location: FileName
    main_menu_background_image_location: FileName
    main_menu_background_vignette_intensity: Float
    main_menu_background_vignette_sharpness: Float
    feedback_screenshot_subfolder_name: String
    feedback_screenshot_file_name: String
    default_scorch_mark_color: Color
    minimap_slot_hovered_tint: Color
    minimap_slot_clicked_tint: Color
    clear_cursor_volume_modifier: Float
    weapons_in_simulation_volume_modifier: Float
    explosions_in_simulation_volume_modifier: Float
    enemies_in_simulation_volume_modifier: Float
    low_energy_robot_estimate_multiplier: Double
    asteroid_spawning_offset: SimpleBoundingBox
    asteroid_fading_range: Float
    asteroid_spawning_with_random_orientation_max_speed: Double
    asteroid_position_offset_to_speed_coefficient: Double
    asteroid_collector_navmesh_refresh_tick_interval: Uint32
    asteroid_collector_blockage_update_tile_distance: Uint32
    asteroid_collector_max_nurbs_control_point_separation: Double
    asteroid_collector_static_head_swing_strength_scale: Float
    asteroid_collector_static_head_swing_segment_count: Uint32
    space_platform_acceleration_expression: MathExpression
    space_platform_relative_speed_factor: Double
    space_platform_starfield_movement_vector: Vector
    space_platform_max_size: SimpleBoundingBox
    space_platform_dump_cooldown: Uint32
    space_platform_manual_dump_cooldown: Uint32
    space_platform_max_relative_speed_deviation_for_asteroid_chunks_update: (
        Float
    )
    space_platform_asteroid_chunk_trajectory_updates_per_tick: Uint32
    default_item_weight: Weight
    rocket_lift_weight: Weight
    factoriopedia_recycling_recipe_categories: (
        list[RecipeCategoryID] | dict[str, Any]
    )
    max_fluid_flow: FluidAmount
    default_pipeline_extent: Double
    default_platform_procession_set: ProcessionSet
    default_planet_procession_set: ProcessionSet
    landing_area_clear_zone_radius: Float
    landing_area_max_radius: Float
    lightning_attractor_collection_range_color: Color
    lightning_attractor_protection_range_color: Color
    landing_squash_immunity: MapTick
    ejected_item_lifetime: MapTick
    ejected_item_speed: Double
    ejected_item_direction_variation: Double
    ejected_item_friction: Double
    train_visualization: TrainVisualizationConstants
    default_collision_masks: dict[String, CollisionMaskConnector]
    show_chunk_components_collision_mask: CollisionMaskConnector
    building_collision_mask: CollisionMaskConnector
    water_collision_mask: CollisionMaskConnector
    ghost_layer: CollisionLayerID
    train_pushed_by_player_max_speed: Double
    train_pushed_by_player_max_acceleration: Double
    train_pushed_by_player_ignores_friction: Boolean
    freezing_temperature: Double
    train_on_elevated_rail_shadow_shift_multiplier: Vector
    max_belt_stack_size: Uint8
    inserter_hand_stack_items_per_sprite: ItemCountType
    inserter_hand_stack_max_sprites: ItemCountType
    remote_view_LPF_min_cutoff_frequency: Float
    remote_view_LPF_max_cutoff_frequency: Float
    space_LPF_min_cutoff_frequency: Float
    space_LPF_max_cutoff_frequency: Float
    walking_sound_count_reduction_rate: Float
    moving_sound_count_reduction_rate: Float
    environment_sounds_transition_fade_in_ticks: Uint32
    starmap_orbit_default_color: Color
    starmap_orbit_hovered_color: Color
    starmap_orbit_clicked_color: Color
    starmap_orbit_disabled_color: Color
    time_to_show_full_health_bar: MapTick
    capture_water_mask_at_layer: Uint8
    logistic_robots_use_busy_robots_queue: Boolean
    construction_robots_use_busy_robots_queue: Boolean
    quality_selector_dropdown_threshold: Uint8
    maximum_quality_jump: Uint8
    select_group_row_count: Uint8
    select_slot_row_count: Uint8
    crafting_queue_slots_per_row: Uint8
    logistic_slots_per_row: Uint8
    blueprint_big_slots_per_row: Uint8
    blueprint_small_slots_per_row: Uint8
    inventory_width: Uint8
    module_inventory_width: Uint8
    trash_inventory_width: Uint8
    tooltip_monitor_edge_border: Int32
    flying_text_ttl: Uint32
    train_path_finding: TrainPathFinding
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    default_alert_icon_shift_by_type: dict[String, Vector] | None = None
    default_alert_icon_scale_by_type: dict[String, Float] | None = None
    merge_bonus_gui_production_bonuses: Boolean | None = None
    default_trigger_target_mask_by_type: (
        dict[String, TriggerTargetMask] | None
    ) = None
    main_menu_simulations: dict[String, SimulationDefinition] | None = None
    color_filters: list[ColorFilter] | dict[str, Any] | None = None


@dataclass
class PlatformEntityBuildAnimations:
    back_left: EntityBuildAnimationPiece
    back_right: EntityBuildAnimationPiece
    front_left: EntityBuildAnimationPiece
    front_right: EntityBuildAnimationPiece


@dataclass
class VirtualSignalPrototype:
    type: Literal["virtual-signal"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class ActivateImpactTriggerEffectItem:
    type: Literal["activate-impact"]
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    deliver_category: String | None = None


@dataclass
class AmmoDamageModifier:
    type: Literal["ammo-damage"]
    ammo_category: AmmoCategoryID
    modifier: Double
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class ArtilleryRangeModifier:
    modifier: Double
    type: Literal["artillery-range"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class AsteroidVariation:
    color_texture: Sprite
    normal_map: Sprite
    roughness_map: Sprite
    shadow_shift: Vector | None = None


@dataclass
class AutoplaceSettings:
    treat_missing_as_default: Boolean | None = None
    settings: (
        dict[EntityID | TileID | DecorativeID, FrequencySizeRichness] | None
    ) = None


@dataclass
class BeaconDistributionModifier:
    modifier: Double
    type: Literal["beacon-distribution"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class BeaconModuleVisualization:
    has_empty_slot: Boolean | None = None
    secondary_draw_order: Int8 | None = None
    apply_module_tint: ModuleTint | None = None
    render_layer: RenderLayer | None = None
    pictures: SpriteVariations | None = None


@dataclass
class BeaconModuleVisualizations:
    art_style: String
    use_for_empty_slots: Boolean | None = None
    tier_offset: Int32 | None = None
    slots: (
        list[list[BeaconModuleVisualization] | dict[str, Any]]
        | dict[str, Any]
        | None
    ) = None


@dataclass
class BeamGraphicsSet:
    beam: BeamAnimationSet | None = None
    ground: BeamAnimationSet | None = None
    desired_segment_length: Float | None = None
    random_end_animation_rotation: Boolean | None = None
    transparent_start_end_animations: Boolean | None = None
    randomize_animation_per_segment: Boolean | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class BeltReaderLayer:
    sprites: RotatedAnimation
    render_layer: RenderLayer | None = None


@dataclass
class BeltStackSizeBonusModifier:
    modifier: Double
    type: Literal["belt-stack-size-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class BoilerPictures:
    structure: Animation
    patch: Sprite | None = None
    fire: Animation | None = None
    fire_glow: Animation | None = None


@dataclass
class BorderImageSet:
    scale: Double | None = None
    border_width: Int32 | None = None
    vertical_line: Sprite | None = None
    horizontal_line: Sprite | None = None
    top_right_corner: Sprite | None = None
    bottom_right_corner: Sprite | None = None
    bottom_left_corner: Sprite | None = None
    top_left_coner: Sprite | None = None
    top_t: Sprite | None = None
    right_t: Sprite | None = None
    bottom_t: Sprite | None = None
    left_t: Sprite | None = None
    cross: Sprite | None = None
    top_end: Sprite | None = None
    right_end: Sprite | None = None
    bottom_end: Sprite | None = None
    left_end: Sprite | None = None


@dataclass
class BoxSpecification:
    sprite: Sprite
    is_whole_box: Boolean | None = None
    side_length: Double | None = None
    side_height: Double | None = None
    max_side_length: Double | None = None


@dataclass
class BuildEntityTechnologyTrigger:
    type: Literal["build-entity"]
    entity: EntityIDFilter


@dataclass
class BulkInserterCapacityBonusModifier:
    modifier: Double
    type: Literal["bulk-inserter-capacity-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class BurnerEnergySource:
    type: Literal["burner"]
    fuel_inventory_size: ItemStackIndex
    emissions_per_minute: dict[AirbornePollutantID, Double] | None = None
    render_no_power_icon: Boolean | None = None
    render_no_network_icon: Boolean | None = None
    burnt_inventory_size: ItemStackIndex | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    light_flicker: LightFlickeringDefinition | None = None
    effectivity: Double | None = None
    burner_usage: BurnerUsageID | None = None
    fuel_categories: list[FuelCategoryID] | dict[str, Any] | None = None
    initial_fuel: ItemID | None = None
    initial_fuel_percent: Double | None = None


@dataclass
class CameraEffectTriggerEffectItem:
    type: Literal["camera-effect"]
    duration: Uint8
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    ease_in_duration: Uint8 | None = None
    ease_out_duration: Uint8 | None = None
    delay: Uint8 | None = None
    full_strength_max_distance: Uint16 | None = None
    max_distance: Uint16 | None = None
    strength: Float | None = None


@dataclass
class CargoLandingPadLimitModifier:
    modifier: Double
    type: Literal["cargo-landing-pad-count"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class ChangeRecipeProductivityModifier:
    type: Literal["change-recipe-productivity"]
    recipe: RecipeID
    change: EffectValue
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterArmorAnimation:
    idle_with_gun: RotatedAnimation
    running_with_gun: RotatedAnimation
    mining_with_tool: RotatedAnimation
    idle: RotatedAnimation | None = None
    running: RotatedAnimation | None = None
    flipped_shadow_running_with_gun: RotatedAnimation | None = None
    idle_in_air: RotatedAnimation | None = None
    idle_with_gun_in_air: RotatedAnimation | None = None
    flying: RotatedAnimation | None = None
    flying_with_gun: RotatedAnimation | None = None
    take_off: RotatedAnimation | None = None
    landing: RotatedAnimation | None = None
    armors: list[ItemID] | dict[str, Any] | None = None
    smoke_in_air: list[SmokeSource] | dict[str, Any] | None = None
    smoke_cycles_per_tick: Float | None = None
    extra_smoke_cycles_per_tile: Float | None = None
    mining_with_tool_particles_animation_positions: (
        list[Float] | dict[str, Any] | None
    ) = None


@dataclass
class CharacterBuildDistanceModifier:
    modifier: Double
    type: Literal["character-build-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterCraftingSpeedModifier:
    modifier: Double
    type: Literal["character-crafting-speed"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterHealthBonusModifier:
    modifier: Double
    type: Literal["character-health-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterInventorySlotsBonusModifier:
    modifier: Double
    type: Literal["character-inventory-slots-bonus"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterItemDropDistanceModifier:
    modifier: Double
    type: Literal["character-item-drop-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterItemPickupDistanceModifier:
    modifier: Double
    type: Literal["character-item-pickup-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterLogisticRequestsModifier:
    modifier: Boolean
    type: Literal["character-logistic-requests"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterLogisticTrashSlotsModifier:
    modifier: Double
    type: Literal["character-logistic-trash-slots"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterLootPickupDistanceModifier:
    modifier: Double
    type: Literal["character-loot-pickup-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterMiningSpeedModifier:
    modifier: Double
    type: Literal["character-mining-speed"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterReachDistanceModifier:
    modifier: Double
    type: Literal["character-reach-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterResourceReachDistanceModifier:
    modifier: Double
    type: Literal["character-resource-reach-distance"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CharacterRunningSpeedModifier:
    modifier: Double
    type: Literal["character-running-speed"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CircuitConditionConnector:
    first: SignalIDConnector | None = None
    comparator: ComparatorString | None = None
    second: SignalIDConnector | Int32 | None = None


@dataclass
class CircuitNetworkModifier:
    modifier: Boolean
    type: Literal["unlock-circuit-network"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CliffDeconstructionEnabledModifier:
    modifier: Boolean
    type: Literal["cliff-deconstruction-enabled"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CloudsEffectProperties:
    shape_noise_texture: EffectTexture
    detail_noise_texture: EffectTexture
    warp_sample_1: CloudsTextureCoordinateTransformation
    warp_sample_2: CloudsTextureCoordinateTransformation
    warped_shape_sample: CloudsTextureCoordinateTransformation
    additional_density_sample: CloudsTextureCoordinateTransformation
    detail_sample_1: CloudsTextureCoordinateTransformation
    detail_sample_2: CloudsTextureCoordinateTransformation
    scale: Float | None = None
    movement_speed_multiplier: Float | None = None
    shape_warp_strength: Float | None = None
    shape_warp_weight: Float | None = None
    opacity: Float | None = None
    opacity_at_night: Float | None = None
    density: Float | None = None
    density_at_night: Float | None = None
    detail_factor: Float | None = None
    detail_factor_at_night: Float | None = None
    shape_factor: Float | None = None
    detail_exponent: Float | None = None
    detail_sample_morph_duration: Uint32 | None = None


@dataclass
class ConnectableEntityGraphics:
    single: SpriteVariations
    straight_vertical: SpriteVariations
    straight_horizontal: SpriteVariations
    corner_right_down: SpriteVariations
    corner_left_down: SpriteVariations
    corner_right_up: SpriteVariations
    corner_left_up: SpriteVariations
    t_up: SpriteVariations
    t_right: SpriteVariations
    t_down: SpriteVariations
    t_left: SpriteVariations
    ending_up: SpriteVariations
    ending_right: SpriteVariations
    ending_down: SpriteVariations
    ending_left: SpriteVariations
    cross: SpriteVariations


@dataclass
class CraftItemTechnologyTrigger:
    type: Literal["craft-item"]
    item: ItemIDFilter
    count: ItemCountType | None = None


@dataclass
class CreateAsteroidChunkEffectItem:
    type: Literal["create-asteroid-chunk"]
    asteroid_name: AsteroidChunkID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    offsets: list[Vector] | dict[str, Any] | None = None


@dataclass
class CreateDecorativesTriggerEffectItem:
    decorative: DecorativeID
    spawn_max: Uint16
    spawn_min_radius: Float
    spawn_max_radius: Float
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    type: Literal["create-decorative"] = "create-decorative"
    spawn_min: Uint16 | None = None
    radius_curve: Float | None = None
    apply_projection: Boolean | None = None
    spread_evenly: Boolean | None = None


@dataclass
class CreateGhostOnEntityDeathModifier:
    modifier: Boolean
    type: Literal["create-ghost-on-entity-death"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class CreateParticleTriggerEffectItem:
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    type: Literal["create-particle"] = "create-particle"
    particle_name: ParticleID | None = None
    initial_height: Float | None = None
    offset_deviation: SimpleBoundingBox | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    initial_height_deviation: Float | None = None
    initial_vertical_speed: Float | None = None
    initial_vertical_speed_deviation: Float | None = None
    speed_from_center: Float | None = None
    speed_from_center_deviation: Float | None = None
    frame_speed: Float | None = None
    frame_speed_deviation: Float | None = None
    movement_multiplier: Float | None = None
    tail_length: Uint8 | None = None
    tail_length_deviation: Uint8 | None = None
    tail_width: Float | None = None
    rotate_offsets: Boolean | None = None
    only_when_visible: Boolean | None = None
    apply_tile_tint: ApplyTileTint | None = None
    tint: Color | None = None


@dataclass
class CreateStickerTriggerEffectItem:
    type: Literal["create-sticker"]
    sticker: EntityID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    trigger_created_entity: Boolean | None = None


@dataclass
class CreateTrivialSmokeEffectItem:
    type: Literal["create-trivial-smoke"]
    smoke_name: TrivialSmokeID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    initial_height: Float | None = None
    max_radius: Float | None = None
    speed: Vector | None = None
    speed_multiplier: Float | None = None
    speed_multiplier_deviation: Float | None = None
    starting_frame: Float | None = None
    starting_frame_deviation: Float | None = None
    speed_from_center: Float | None = None
    speed_from_center_deviation: Float | None = None
    only_when_visible: Boolean | None = None


@dataclass
class DamageEntityTriggerEffectItem:
    type: Literal["damage"]
    damage: DamageParameters
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    apply_damage_to_trees: Boolean | None = None
    vaporize: Boolean | None = None
    use_substitute: Boolean | None = None
    lower_distance_threshold: Uint16 | None = None
    upper_distance_threshold: Uint16 | None = None
    lower_damage_modifier: Float | None = None
    upper_damage_modifier: Float | None = None


@dataclass
class DamageTileTriggerEffectItem:
    type: Literal["damage-tile"]
    damage: DamageParameters
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    radius: Float | None = None


@dataclass
class DeconstructionTimeToLiveModifier:
    modifier: Double
    type: Literal["deconstruction-time-to-live"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class ElementImageSetLayer1:
    draw_type: DrawType | None = None
    type: Type | None = None
    tint: Color | None = None
    center: Sprite | None = None
    left: Sprite | None = None
    left_top: Sprite | None = None
    left_bottom: Sprite | None = None
    right: Sprite | None = None
    right_top: Sprite | None = None
    right_bottom: Sprite | None = None
    top: Sprite | None = None
    bottom: Sprite | None = None
    corner_size: Uint16 | list[Uint16] | None = None
    filename: FileName | None = None
    position: MapPosition | None = None
    load_in_minimal_mode: Boolean | None = None
    top_width: SpriteSizeType | None = None
    bottom_width: SpriteSizeType | None = None
    left_height: SpriteSizeType | None = None
    right_height: SpriteSizeType | None = None
    center_width: SpriteSizeType | None = None
    center_height: SpriteSizeType | None = None
    scale: Double | None = None
    top_border: Int32 | None = None
    right_border: Int32 | None = None
    bottom_border: Int32 | None = None
    left_border: Int32 | None = None
    border: Int32 | None = None
    stretch_monolith_image_to_size: Boolean | None = None
    left_tiling: Boolean | None = None
    right_tiling: Boolean | None = None
    top_tiling: Boolean | None = None
    bottom_tiling: Boolean | None = None
    center_tiling_vertical: Boolean | None = None
    center_tiling_horizontal: Boolean | None = None
    overall_tiling_horizontal_size: Uint16 | None = None
    overall_tiling_horizontal_spacing: Uint16 | None = None
    overall_tiling_horizontal_padding: Uint16 | None = None
    overall_tiling_vertical_size: Uint16 | None = None
    overall_tiling_vertical_spacing: Uint16 | None = None
    overall_tiling_vertical_padding: Uint16 | None = None
    custom_horizontal_tiling_sizes: list[Uint32] | dict[str, Any] | None = None
    opacity: Double | None = None
    background_blur: Boolean | None = None
    background_blur_sigma: Float | None = None
    top_outer_border_shift: Int32 | None = None
    bottom_outer_border_shift: Int32 | None = None
    right_outer_border_shift: Int32 | None = None
    left_outer_border_shift: Int32 | None = None


type ElementImageSetLayer = ElementImageSetLayer1 | Sprite


@dataclass
class EnemySpawnerGraphicsSet:
    animations: AnimationVariations | None = None
    underwater_animations: AnimationVariations | None = None
    underwater_layer_offset: Int8 | None = None
    water_effect_map_animations: AnimationVariations | None = None
    integration: SpriteVariations | None = None
    random_animation_offset: Boolean | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class FollowerRobotLifetimeModifier:
    modifier: Double
    type: Literal["follower-robot-lifetime"]
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class FootstepTriggerEffectItem:
    tiles: list[TileID] | dict[str, Any]
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    type: Literal["create-particle"] = "create-particle"
    particle_name: ParticleID | None = None
    initial_height: Float | None = None
    offset_deviation: SimpleBoundingBox | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    initial_height_deviation: Float | None = None
    initial_vertical_speed: Float | None = None
    initial_vertical_speed_deviation: Float | None = None
    speed_from_center: Float | None = None
    speed_from_center_deviation: Float | None = None
    frame_speed: Float | None = None
    frame_speed_deviation: Float | None = None
    movement_multiplier: Float | None = None
    tail_length: Uint8 | None = None
    tail_length_deviation: Uint8 | None = None
    tail_width: Float | None = None
    rotate_offsets: Boolean | None = None
    only_when_visible: Boolean | None = None
    apply_tile_tint: ApplyTileTint | None = None
    tint: Color | None = None
    actions: list[CreateParticleTriggerEffectItem] | dict[str, Any] | None = (
        None
    )
    use_as_default: Boolean | None = None


type FootstepTriggerEffectList = (
    list[FootstepTriggerEffectItem] | dict[str, Any]
)


@dataclass
class FusionGeneratorFluidInputGraphics:
    sprite: Sprite | None = None
    working_light: Sprite | None = None
    fusion_effect_uv_map: Sprite | None = None


@dataclass
class FusionReactorConnectionGraphics:
    pictures: Animation | None = None
    working_light_pictures: Animation | None = None
    fusion_effect_uv_map: Sprite | None = None


@dataclass
class GiveItemModifier:
    type: Literal["give-item"]
    item: ItemID
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None
    quality: QualityID | None = None
    count: ItemCountType | None = None


@dataclass
class GraphStyleSpecification:
    type: Literal["graph_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    background_color: Color | None = None
    line_colors: list[Color] | dict[str, Any] | None = None
    horizontal_label_style: LabelStyleSpecification | None = None
    vertical_label_style: LabelStyleSpecification | None = None
    minimal_horizontal_label_spacing: Uint32 | None = None
    minimal_vertical_label_spacing: Uint32 | None = None
    horizontal_labels_margin: Uint32 | None = None
    vertical_labels_margin: Uint32 | None = None
    graph_top_margin: Uint32 | None = None
    graph_right_margin: Uint32 | None = None
    data_line_highlight_distance: Uint32 | None = None
    selection_dot_radius: Uint32 | None = None
    grid_lines_color: Color | None = None
    guide_lines_color: Color | None = None
    font: String | None = None


@dataclass
class GunSpeedModifier:
    type: Literal["gun-speed"]
    ammo_category: AmmoCategoryID
    modifier: Double
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hidden: Boolean | None = None
    infer_icon: Boolean | None = None
    use_icon_overlay_constant: Boolean | None = None


@dataclass
class LayeredSprite1:
    render_layer: RenderLayer
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    layers: list[Sprite] | dict[str, Any] | None = None
    dice: SpriteSizeType | None = None
    dice_x: SpriteSizeType | None = None
    dice_y: SpriteSizeType | None = None


type LayeredSprite = LayeredSprite1 | list[LayeredSprite] | dict[str, Any]


type LayeredSpriteVariations = list[LayeredSprite] | dict[str, Any]


@dataclass
class LightDefinition1:
    intensity: Float
    size: Float
    type: Type2 | None = None
    picture: Sprite | None = None
    rotation_shift: RealOrientation | None = None
    source_orientation_offset: RealOrientation | None = None
    add_perspective: Boolean | None = None
    flicker_interval: Uint8 | None = None
    flicker_min_modifier: Float | None = None
    flicker_max_modifier: Float | None = None
    offset_flicker: Boolean | None = None
    shift: Vector | None = None
    color: Color | None = None
    minimum_darkness: Float | None = None


@dataclass
class LightDefinitionItem:
    intensity: Float
    size: Float
    type: Type2 | None = None
    picture: Sprite | None = None
    rotation_shift: RealOrientation | None = None
    source_orientation_offset: RealOrientation | None = None
    add_perspective: Boolean | None = None
    flicker_interval: Uint8 | None = None
    flicker_min_modifier: Float | None = None
    flicker_max_modifier: Float | None = None
    offset_flicker: Boolean | None = None
    shift: Vector | None = None
    color: Color | None = None
    minimum_darkness: Float | None = None


type LightDefinition = (
    LightDefinition1 | list[LightDefinitionItem] | dict[str, Any]
)


@dataclass
class LightningGraphicsSet:
    shader_configuration: (
        list[ShaderConfigurationItem] | dict[str, Any] | None
    ) = None
    bolt_half_width: Float | None = None
    bolt_midpoint_variance: Float | None = None
    max_bolt_offset: Float | None = None
    max_fork_probability: Float | None = None
    min_relative_fork_length: Float | None = None
    max_relative_fork_length: Float | None = None
    fork_orientation_variance: Float | None = None
    fork_intensity_multiplier: Float | None = None
    relative_cloud_fork_length: Float | None = None
    cloud_fork_orientation_variance: Float | None = None
    min_ground_streamer_distance: Float | None = None
    max_ground_streamer_distance: Float | None = None
    ground_streamer_variance: Float | None = None
    cloud_forks: Uint8 | None = None
    cloud_detail_level: Uint8 | None = None
    bolt_detail_level: Uint8 | None = None
    cloud_background: Animation | None = None
    explosion: AnimationVariations | None = None
    attractor_hit_animation: Animation | None = None
    ground_streamers: list[Animation] | dict[str, Any] | None = None
    light: LightDefinition | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class LightningProperties:
    lightnings_per_chunk_per_tick: Double
    search_radius: Double
    lightning_types: list[EntityID] | dict[str, Any]
    priority_rules: list[LightningPriorityRule] | dict[str, Any] | None = None
    exemption_rules: list[LightningRuleBase] | dict[str, Any] | None = None
    lightning_multiplier_at_day: Double | None = None
    lightning_multiplier_at_night: Double | None = None
    multiplier_surface_property: SurfacePropertyID | None = None
    lightning_warning_icon: Sprite | None = None


@dataclass
class LineStyleSpecification:
    type: Literal["line_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    border: BorderImageSet | None = None


@dataclass
class MapGenSettings:
    default_enable_all_autoplace_controls: Boolean | None = None
    autoplace_controls: (
        dict[AutoplaceControlID, FrequencySizeRichness] | None
    ) = None
    autoplace_settings: dict[AutoplaceSettings1, AutoplaceSettings] | None = (
        None
    )
    property_expression_names: (
        dict[String, String | Boolean | Double] | None
    ) = None
    starting_points: list[MapPosition] | dict[str, Any] | None = None
    seed: Uint32 | None = None
    width: Uint32 | None = None
    height: Uint32 | None = None
    starting_area: MapGenSize | None = None
    peaceful_mode: Boolean | None = None
    no_enemies_mode: Boolean | None = None
    cliff_settings: CliffPlacementSettings | None = None
    territory_settings: TerritorySettings | None = None


type Modifier = (
    InserterStackSizeBonusModifier
    | BulkInserterCapacityBonusModifier
    | LaboratorySpeedModifier
    | CharacterLogisticTrashSlotsModifier
    | MaximumFollowingRobotsCountModifier
    | WorkerRobotSpeedModifier
    | WorkerRobotStorageModifier
    | TurretAttackModifier
    | AmmoDamageModifier
    | GiveItemModifier
    | GunSpeedModifier
    | UnlockRecipeModifier
    | CharacterCraftingSpeedModifier
    | CharacterMiningSpeedModifier
    | CharacterRunningSpeedModifier
    | CharacterBuildDistanceModifier
    | CharacterItemDropDistanceModifier
    | CharacterReachDistanceModifier
    | CharacterResourceReachDistanceModifier
    | CharacterItemPickupDistanceModifier
    | CharacterLootPickupDistanceModifier
    | CharacterInventorySlotsBonusModifier
    | DeconstructionTimeToLiveModifier
    | MaxFailedAttemptsPerTickPerConstructionQueueModifier
    | MaxSuccessfulAttemptsPerTickPerConstructionQueueModifier
    | CharacterHealthBonusModifier
    | MiningDrillProductivityBonusModifier
    | TrainBrakingForceBonusModifier
    | WorkerRobotBatteryModifier
    | LaboratoryProductivityModifier
    | FollowerRobotLifetimeModifier
    | ArtilleryRangeModifier
    | NothingModifier
    | CharacterLogisticRequestsModifier
    | VehicleLogisticsModifier
    | UnlockSpaceLocationModifier
    | UnlockQualityModifier
    | SpacePlatformsModifier
    | CircuitNetworkModifier
    | CargoLandingPadLimitModifier
    | ChangeRecipeProductivityModifier
    | CliffDeconstructionEnabledModifier
    | MiningWithFluidModifier
    | RailSupportOnDeepOilOceanModifier
    | RailPlannerAllowElevatedRailsModifier
    | BeaconDistributionModifier
    | CreateGhostOnEntityDeathModifier
    | BeltStackSizeBonusModifier
)


@dataclass
class OrientedCliffPrototype:
    collision_bounding_box: BoundingBox
    render_layer: RenderLayer | None = None
    pictures: SpriteVariations | None = None
    pictures_lower: SpriteVariations | None = None


@dataclass
class PipePictures:
    straight_vertical_single: Sprite | None = None
    straight_vertical: Sprite | None = None
    straight_vertical_window: Sprite | None = None
    straight_horizontal: Sprite | None = None
    straight_horizontal_window: Sprite | None = None
    corner_up_right: Sprite | None = None
    corner_up_left: Sprite | None = None
    corner_down_right: Sprite | None = None
    corner_down_left: Sprite | None = None
    t_up: Sprite | None = None
    t_down: Sprite | None = None
    t_right: Sprite | None = None
    t_left: Sprite | None = None
    cross: Sprite | None = None
    ending_up: Sprite | None = None
    ending_down: Sprite | None = None
    ending_right: Sprite | None = None
    ending_left: Sprite | None = None
    straight_vertical_single_frozen: Sprite | None = None
    straight_vertical_frozen: Sprite | None = None
    straight_vertical_window_frozen: Sprite | None = None
    straight_horizontal_frozen: Sprite | None = None
    straight_horizontal_window_frozen: Sprite | None = None
    corner_up_right_frozen: Sprite | None = None
    corner_up_left_frozen: Sprite | None = None
    corner_down_right_frozen: Sprite | None = None
    corner_down_left_frozen: Sprite | None = None
    t_up_frozen: Sprite | None = None
    t_down_frozen: Sprite | None = None
    t_right_frozen: Sprite | None = None
    t_left_frozen: Sprite | None = None
    cross_frozen: Sprite | None = None
    ending_up_frozen: Sprite | None = None
    ending_down_frozen: Sprite | None = None
    ending_right_frozen: Sprite | None = None
    ending_left_frozen: Sprite | None = None
    straight_vertical_single_visualization: Sprite | None = None
    straight_vertical_visualization: Sprite | None = None
    straight_vertical_window_visualization: Sprite | None = None
    straight_horizontal_visualization: Sprite | None = None
    straight_horizontal_window_visualization: Sprite | None = None
    corner_up_right_visualization: Sprite | None = None
    corner_up_left_visualization: Sprite | None = None
    corner_down_right_visualization: Sprite | None = None
    corner_down_left_visualization: Sprite | None = None
    t_up_visualization: Sprite | None = None
    t_down_visualization: Sprite | None = None
    t_right_visualization: Sprite | None = None
    t_left_visualization: Sprite | None = None
    cross_visualization: Sprite | None = None
    ending_up_visualization: Sprite | None = None
    ending_down_visualization: Sprite | None = None
    ending_right_visualization: Sprite | None = None
    ending_left_visualization: Sprite | None = None
    straight_vertical_single_disabled_visualization: Sprite | None = None
    straight_vertical_disabled_visualization: Sprite | None = None
    straight_vertical_window_disabled_visualization: Sprite | None = None
    straight_horizontal_disabled_visualization: Sprite | None = None
    straight_horizontal_window_disabled_visualization: Sprite | None = None
    corner_up_right_disabled_visualization: Sprite | None = None
    corner_up_left_disabled_visualization: Sprite | None = None
    corner_down_right_disabled_visualization: Sprite | None = None
    corner_down_left_disabled_visualization: Sprite | None = None
    t_up_disabled_visualization: Sprite | None = None
    t_down_disabled_visualization: Sprite | None = None
    t_right_disabled_visualization: Sprite | None = None
    t_left_disabled_visualization: Sprite | None = None
    cross_disabled_visualization: Sprite | None = None
    ending_up_disabled_visualization: Sprite | None = None
    ending_down_disabled_visualization: Sprite | None = None
    ending_right_disabled_visualization: Sprite | None = None
    ending_left_disabled_visualization: Sprite | None = None
    horizontal_window_background: Sprite | None = None
    vertical_window_background: Sprite | None = None
    fluid_background: Sprite | None = None
    low_temperature_flow: Sprite | None = None
    middle_temperature_flow: Sprite | None = None
    high_temperature_flow: Sprite | None = None
    gas_flow: Animation | None = None


@dataclass
class PlanetPrototypeMapGenSettings:
    cliff_settings: CliffPlacementSettings | None = None
    territory_settings: TerritorySettings | None = None
    autoplace_controls: (
        dict[AutoplaceControlID, FrequencySizeRichness] | None
    ) = None
    autoplace_settings: dict[AutoplaceSettings1, AutoplaceSettings] | None = (
        None
    )
    property_expression_names: (
        dict[String, String | Boolean | Double] | None
    ) = None
    moisture_climate_control: Boolean | None = None
    aux_climate_control: Boolean | None = None


@dataclass
class ProcessionGraphic:
    type: ProcessionGraphicType
    sprite: Sprite | None = None
    animation: Animation | None = None
    catalogue_id: Uint32 | None = None


@dataclass
class ProcessionGraphicCatalogueItem:
    index: Uint32
    animation: Animation | None = None
    sprite: Sprite | None = None


@dataclass
class PuddleTileEffectParameters:
    puddle_noise_texture: EffectTexture
    water_effect_parameters: WaterTileEffectParameters | None = None
    water_effect: TileEffectDefinitionID | None = None


@dataclass
class PumpConnectorGraphics:
    north: list[PumpConnectorGraphicsAnimation] | dict[str, Any]
    east: list[PumpConnectorGraphicsAnimation] | dict[str, Any]
    south: list[PumpConnectorGraphicsAnimation] | dict[str, Any]
    west: list[PumpConnectorGraphicsAnimation] | dict[str, Any]


@dataclass
class RadiusVisualisationSpecification:
    sprite: Sprite | None = None
    distance: Double | None = None
    offset: Vector | None = None
    draw_in_cursor: Boolean | None = None
    draw_on_selection: Boolean | None = None


@dataclass
class RailFenceDirectionSet:
    north: SpriteVariations | None = None
    northeast: SpriteVariations | None = None
    east: SpriteVariations | None = None
    southeast: SpriteVariations | None = None
    south: SpriteVariations | None = None
    southwest: SpriteVariations | None = None
    west: SpriteVariations | None = None
    northwest: SpriteVariations | None = None


@dataclass
class RailFencePictureSet:
    ends: list[RailFenceDirectionSet]
    fence: RailFenceDirectionSet
    ends_upper: list[RailFenceDirectionSet] | None = None
    fence_upper: RailFenceDirectionSet | None = None


@dataclass
class RailPieceLayers:
    metals: SpriteVariations | None = None
    backplates: SpriteVariations | None = None
    ties: SpriteVariations | None = None
    stone_path: SpriteVariations | None = None
    stone_path_background: SpriteVariations | None = None
    segment_visualisation_middle: Sprite | None = None
    water_reflection: Sprite | None = None
    underwater_structure: Sprite | None = None
    shadow_subtract_mask: Sprite | None = None
    shadow_mask: Sprite | None = None


@dataclass
class RailSignalLightDefinition:
    light: LightDefinition
    shift: Vector | None = None


@dataclass
class RailSignalLights:
    red: RailSignalLightDefinition | None = None
    green: RailSignalLightDefinition | None = None
    blue: RailSignalLightDefinition | None = None
    yellow: RailSignalLightDefinition | None = None


@dataclass
class RotatedSprite:
    filename: FileName | None = None
    size: SpriteSizeType | list[SpriteSizeType] | None = None
    width: SpriteSizeType | None = None
    height: SpriteSizeType | None = None
    x: SpriteSizeType | None = None
    y: SpriteSizeType | None = None
    position: list[SpriteSizeType] | None = None
    load_in_minimal_mode: Boolean | None = None
    premul_alpha: Boolean | None = None
    allow_forced_downscale: Boolean | None = None
    priority: SpritePriority | None = None
    flags: SpriteFlags | None = None
    shift: Vector | None = None
    rotate_shift: Boolean | None = None
    apply_special_effect: Boolean | None = None
    scale: Double | None = None
    draw_as_shadow: Boolean | None = None
    draw_as_glow: Boolean | None = None
    draw_as_light: Boolean | None = None
    occludes_light: Boolean | None = None
    mipmap_count: Uint8 | None = None
    apply_runtime_tint: Boolean | None = None
    tint_as_overlay: Boolean | None = None
    invert_colors: Boolean | None = None
    tint: Color | None = None
    blend_mode: BlendMode | None = None
    generate_sdf: Boolean | None = None
    surface: SpriteUsageSurfaceHint | None = None
    usage: SpriteUsageHint | None = None
    layers: list[RotatedSprite] | dict[str, Any] | None = None
    direction_count: Uint16 | None = None
    filenames: list[FileName] | dict[str, Any] | None = None
    lines_per_file: Uint64 | None = None
    dice: SpriteSizeType | None = None
    dice_x: SpriteSizeType | None = None
    dice_y: SpriteSizeType | None = None
    back_equals_front: Boolean | None = None
    apply_projection: Boolean | None = None
    counterclockwise: Boolean | None = None
    line_length: Uint32 | None = None
    allow_low_quality_rotation: Boolean | None = None
    frames: list[RotatedSpriteFrame] | dict[str, Any] | None = None


@dataclass
class SingleGraphicProcessionLayer:
    type: Literal["single-graphic"]
    graphic: ProcessionGraphic
    frames: list[Frame5] | dict[str, Any]
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    relative_to: EffectRelativeTo | None = None
    compensated_pivot: Boolean | None = None
    rotates_with_pod: Boolean | None = None
    shift_rotates_with_pod: Boolean | None = None
    is_passenger_only: Boolean | None = None
    clip_with_hatches: Boolean | None = None
    animation_driven_by_curve: Boolean | None = None


@dataclass
class Sound1:
    category: SoundType | None = None
    priority: Uint8 | None = None
    aggregation: AggregationSpecification | None = None
    allow_random_repeat: Boolean | None = None
    audible_distance_modifier: Double | None = None
    game_controller_vibration_data: GameControllerVibrationData | None = None
    advanced_volume_control: AdvancedVolumeControl | None = None
    speed_smoothing_window_size: Uint32 | None = None
    variations: (
        SoundDefinition | list[SoundDefinition] | dict[str, Any] | None
    ) = None
    filename: FileName | None = None
    volume: Float | None = None
    min_volume: Float | None = None
    max_volume: Float | None = None
    preload: Boolean | None = None
    speed: Float | None = None
    min_speed: Float | None = None
    max_speed: Float | None = None
    modifiers: SoundModifier | list[SoundModifier] | dict[str, Any] | None = (
        None
    )


type Sound = (
    Sound1 | SoundDefinition | list[SoundDefinition] | dict[str, Any] | String
)


@dataclass
class SoundAccent:
    sound: Sound | None = None
    frame: Uint16 | None = None
    play_for_working_visualisation: String | None = None


@dataclass
class SpiderLegPart:
    top_end: RotatedSprite | None = None
    middle: RotatedSprite | None = None
    bottom_end: RotatedSprite | None = None
    middle_offset_from_top: Float | None = None
    middle_offset_from_bottom: Float | None = None
    top_end_length: Float | None = None
    bottom_end_length: Float | None = None
    top_end_offset: Float | None = None
    bottom_end_offset: Float | None = None
    render_layer: RenderLayer | None = None


@dataclass
class SpiderTorsoGraphicsSet:
    base_animation: RotatedAnimation | None = None
    shadow_base_animation: RotatedAnimation | None = None
    animation: RotatedAnimation | None = None
    shadow_animation: RotatedAnimation | None = None
    base_render_layer: RenderLayer | None = None
    render_layer: RenderLayer | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class SpiderVehicleGraphicsSet:
    base_animation: RotatedAnimation | None = None
    shadow_base_animation: RotatedAnimation | None = None
    animation: RotatedAnimation | None = None
    shadow_animation: RotatedAnimation | None = None
    base_render_layer: RenderLayer | None = None
    render_layer: RenderLayer | None = None
    water_reflection: WaterReflectionDefinition | None = None
    autopilot_destination_visualisation_render_layer: RenderLayer | None = None
    light: LightDefinition | None = None
    eye_light: LightDefinition | None = None
    autopilot_destination_on_map_visualisation: Animation | None = None
    autopilot_destination_queue_on_map_visualisation: Animation | None = None
    autopilot_destination_visualisation: Animation | None = None
    autopilot_destination_queue_visualisation: Animation | None = None
    autopilot_path_visualisation_line_width: Float | None = None
    autopilot_path_visualisation_on_map_line_width: Float | None = None
    light_positions: (
        list[list[Vector] | dict[str, Any]] | dict[str, Any] | None
    ) = None
    default_color: Float | Color | None = None


@dataclass
class Sprite16Way:
    sheets: list[SpriteNWaySheet] | dict[str, Any] | None = None
    sheet: SpriteNWaySheet | None = None
    north: Sprite | None = None
    north_north_east: Sprite | None = None
    north_east: Sprite | None = None
    east_north_east: Sprite | None = None
    east: Sprite | None = None
    east_south_east: Sprite | None = None
    south_east: Sprite | None = None
    south_south_east: Sprite | None = None
    south: Sprite | None = None
    south_south_west: Sprite | None = None
    south_west: Sprite | None = None
    west_south_west: Sprite | None = None
    west: Sprite | None = None
    west_north_west: Sprite | None = None
    north_west: Sprite | None = None
    north_north_west: Sprite | None = None


@dataclass
class Sprite4Way1:
    sheets: list[SpriteNWaySheet] | dict[str, Any] | None = None
    sheet: SpriteNWaySheet | None = None
    north: Sprite | None = None
    east: Sprite | None = None
    south: Sprite | None = None
    west: Sprite | None = None


type Sprite4Way = Sprite4Way1 | Sprite


@dataclass
class StatelessVisualisation:
    animation: AnimationVariations | None = None
    shadow: AnimationVariations | None = None
    light: LightDefinition | None = None
    count: Uint16 | None = None
    min_count: Uint16 | None = None
    max_count: Uint16 | None = None
    period: Uint16 | None = None
    particle_tick_offset: Float | None = None
    probability: Float | None = None
    offset_x: RangedValue | None = None
    offset_y: RangedValue | None = None
    offset_z: RangedValue | None = None
    speed_x: RangedValue | None = None
    speed_y: RangedValue | None = None
    speed_z: RangedValue | None = None
    acceleration_x: Float | None = None
    acceleration_y: Float | None = None
    acceleration_z: Float | None = None
    movement_slowdown_factor_x: Float | None = None
    movement_slowdown_factor_y: Float | None = None
    movement_slowdown_factor_z: Float | None = None
    scale: RangedValue | None = None
    begin_scale: Float | None = None
    end_scale: Float | None = None
    fade_in_progress_duration: Float | None = None
    fade_out_progress_duration: Float | None = None
    spread_progress_duration: Float | None = None
    adjust_animation_speed_by_base_scale: Boolean | None = None
    affected_by_wind: Boolean | None = None
    render_layer: RenderLayer | None = None
    positions: list[Vector] | dict[str, Any] | None = None
    nested_visualisations: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    can_lay_on_the_ground: Boolean | None = None


@dataclass
class SurfaceRenderParameters:
    day_night_cycle_color_lookup: DaytimeColorLookupTable | None = None
    shadow_opacity: Float | None = None
    draw_sprite_clouds: Boolean | None = None
    clouds: CloudsEffectProperties | None = None
    fog: FogEffectProperties | None = None
    terrain_tint_effect: GlobalTintEffectProperties | None = None
    space_dust_background: SpaceDustEffectProperties | None = None
    space_dust_foreground: SpaceDustEffectProperties | None = None


type TechnologyTrigger = (
    MineEntityTechnologyTrigger
    | CraftItemTechnologyTrigger
    | CraftFluidTechnologyTrigger
    | SendItemToOrbitTechnologyTrigger
    | CaptureSpawnerTechnologyTrigger
    | BuildEntityTechnologyTrigger
    | CreateSpacePlatformTechnologyTrigger
    | ScriptedTechnologyTrigger
)


@dataclass
class TrainStopLight:
    picture: Sprite4Way
    red_picture: Sprite4Way
    light: LightDefinition


@dataclass
class TransportBeltAnimationSet:
    animation_set: RotatedAnimation
    east_index: Uint8 | None = None
    west_index: Uint8 | None = None
    north_index: Uint8 | None = None
    south_index: Uint8 | None = None
    starting_south_index: Uint8 | None = None
    ending_south_index: Uint8 | None = None
    starting_west_index: Uint8 | None = None
    ending_west_index: Uint8 | None = None
    starting_north_index: Uint8 | None = None
    ending_north_index: Uint8 | None = None
    starting_east_index: Uint8 | None = None
    ending_east_index: Uint8 | None = None
    frozen_patch: RotatedSprite | None = None
    east_index_frozen: Uint8 | None = None
    west_index_frozen: Uint8 | None = None
    north_index_frozen: Uint8 | None = None
    south_index_frozen: Uint8 | None = None
    starting_south_index_frozen: Uint8 | None = None
    ending_south_index_frozen: Uint8 | None = None
    starting_west_index_frozen: Uint8 | None = None
    ending_west_index_frozen: Uint8 | None = None
    starting_north_index_frozen: Uint8 | None = None
    ending_north_index_frozen: Uint8 | None = None
    starting_east_index_frozen: Uint8 | None = None
    ending_east_index_frozen: Uint8 | None = None
    alternate: Boolean | None = None
    belt_reader: list[BeltReaderLayer] | dict[str, Any] | None = None


@dataclass
class TransportBeltAnimationSetWithCorners:
    animation_set: RotatedAnimation
    east_index: Uint8 | None = None
    west_index: Uint8 | None = None
    north_index: Uint8 | None = None
    south_index: Uint8 | None = None
    starting_south_index: Uint8 | None = None
    ending_south_index: Uint8 | None = None
    starting_west_index: Uint8 | None = None
    ending_west_index: Uint8 | None = None
    starting_north_index: Uint8 | None = None
    ending_north_index: Uint8 | None = None
    starting_east_index: Uint8 | None = None
    ending_east_index: Uint8 | None = None
    frozen_patch: RotatedSprite | None = None
    east_index_frozen: Uint8 | None = None
    west_index_frozen: Uint8 | None = None
    north_index_frozen: Uint8 | None = None
    south_index_frozen: Uint8 | None = None
    starting_south_index_frozen: Uint8 | None = None
    ending_south_index_frozen: Uint8 | None = None
    starting_west_index_frozen: Uint8 | None = None
    ending_west_index_frozen: Uint8 | None = None
    starting_north_index_frozen: Uint8 | None = None
    ending_north_index_frozen: Uint8 | None = None
    starting_east_index_frozen: Uint8 | None = None
    ending_east_index_frozen: Uint8 | None = None
    alternate: Boolean | None = None
    belt_reader: list[BeltReaderLayer] | dict[str, Any] | None = None
    east_to_north_index: Uint8 | None = None
    north_to_east_index: Uint8 | None = None
    west_to_north_index: Uint8 | None = None
    north_to_west_index: Uint8 | None = None
    south_to_east_index: Uint8 | None = None
    east_to_south_index: Uint8 | None = None
    south_to_west_index: Uint8 | None = None
    west_to_south_index: Uint8 | None = None
    east_to_north_index_frozen: Uint8 | None = None
    north_to_east_index_frozen: Uint8 | None = None
    west_to_north_index_frozen: Uint8 | None = None
    north_to_west_index_frozen: Uint8 | None = None
    south_to_east_index_frozen: Uint8 | None = None
    east_to_south_index_frozen: Uint8 | None = None
    south_to_west_index_frozen: Uint8 | None = None
    west_to_south_index_frozen: Uint8 | None = None


@dataclass
class TreeVariation:
    trunk: Animation
    leaves: Animation
    leaf_generation: CreateParticleTriggerEffectItem | None = None
    branch_generation: CreateParticleTriggerEffectItem | None = None
    shadow: Animation | None = None
    disable_shadow_distortion_beginning_at_frame: Uint32 | None = None
    normal: Animation | None = None
    overlay: Animation | None = None
    underwater: Animation | None = None
    underwater_layer_offset: Int8 | None = None
    leaves_when_mined_manually: Uint8 | None = None
    leaves_when_mined_automatically: Uint8 | None = None
    leaves_when_damaged: Uint8 | None = None
    leaves_when_destroyed: Uint8 | None = None
    branches_when_mined_manually: Uint8 | None = None
    branches_when_mined_automatically: Uint8 | None = None
    branches_when_damaged: Uint8 | None = None
    branches_when_destroyed: Uint8 | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class TurretGraphicsSet:
    base_visualisation: (
        TurretBaseVisualisation
        | list[TurretBaseVisualisation]
        | dict[str, Any]
        | None
    ) = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class TurretSpecialEffect:
    type: Literal["mask-by-circle"]
    center: TurretSpecialEffectCenter | None = None
    min_radius: Float | None = None
    max_radius: Float | None = None
    falloff: Float | None = None
    attacking_min_radius: Float | None = None
    attacking_max_radius: Float | None = None
    attacking_falloff: Float | None = None


@dataclass
class VariableAmbientSoundLayer:
    name: String
    variants: list[Sound] | dict[str, Any]
    composition_mode: VariableAmbientSoundCompositionMode
    control_layer: String | None = None
    control_layer_sample_mapping: (
        list[list[Uint8] | dict[str, Any]] | dict[str, Any] | None
    ) = None
    has_start_sample: Boolean | None = None
    has_end_sample: Boolean | None = None
    number_of_sublayers: Uint8 | None = None
    sublayer_starting_offset: RandomRange | ProbabilityTable | None = None
    sublayer_offset: RandomRange | ProbabilityTable | None = None
    sample_length: RandomRange | None = None


@dataclass
class VariableAmbientSoundVariableSound:
    layers: list[VariableAmbientSoundLayer] | dict[str, Any]
    states: list[VariableAmbientSoundState] | dict[str, Any]
    length_seconds: Uint32
    intermezzo: Sound | None = None
    alignment_samples: Uint32 | None = None


@dataclass
class WorkingVisualisation:
    render_layer: RenderLayer | None = None
    fadeout: Boolean | None = None
    synced_fadeout: Boolean | None = None
    constant_speed: Boolean | None = None
    always_draw: Boolean | None = None
    animated_shift: Boolean | None = None
    align_to_waypoint: Boolean | None = None
    mining_drill_scorch_mark: Boolean | None = None
    secondary_draw_order: Int8 | None = None
    light: LightDefinition | None = None
    effect: Effect32 | None = None
    apply_recipe_tint: ApplyRecipeTint | None = None
    apply_tint: ApplyTint | None = None
    north_animation: Animation | None = None
    east_animation: Animation | None = None
    south_animation: Animation | None = None
    west_animation: Animation | None = None
    north_position: Vector | None = None
    east_position: Vector | None = None
    south_position: Vector | None = None
    west_position: Vector | None = None
    north_secondary_draw_order: Int8 | None = None
    east_secondary_draw_order: Int8 | None = None
    south_secondary_draw_order: Int8 | None = None
    west_secondary_draw_order: Int8 | None = None
    north_fog_mask: FogMaskShapeDefinition | None = None
    east_fog_mask: FogMaskShapeDefinition | None = None
    south_fog_mask: FogMaskShapeDefinition | None = None
    west_fog_mask: FogMaskShapeDefinition | None = None
    fog_mask: FogMaskShapeDefinition | None = None
    animation: Animation | None = None
    draw_in_states: list[String] | dict[str, Any] | None = None
    draw_when_state_filter_matches: Boolean | None = None
    enabled_by_name: Boolean | None = None
    name: String | None = None
    enabled_in_animated_shift_during_waypoint_stop: Boolean | None = None
    enabled_in_animated_shift_during_transition: Boolean | None = None
    frame_based_on_shift_animation_progress: Boolean | None = None
    scorch_mark_fade_out_duration: Uint16 | None = None
    scorch_mark_lifetime: Uint16 | None = None
    scorch_mark_fade_in_frames: Uint8 | None = None


@dataclass
class WorldAmbientSoundDefinition1:
    sound: Sound | None = None
    radius: Double | None = None
    min_entity_count: Uint32 | None = None
    max_entity_count: Uint32 | None = None
    entity_to_sound_ratio: Float | None = None
    average_pause_seconds: Double | None = None


type WorldAmbientSoundDefinition = WorldAmbientSoundDefinition1 | Sound


@dataclass
class AmbientSound:
    type: Literal["ambient-sound"]
    name: String
    track_type: AmbientSoundType
    weight: Double | None = None
    planet: SpaceLocationID | None = None
    sound: Sound | None = None
    variable_sound: VariableAmbientSoundVariableSound | None = None


@dataclass
class GraphicsSet:
    animation: Animation4Way | None = None
    status_lamp_picture_on: RotatedSprite | None = None
    status_lamp_picture_full: RotatedSprite | None = None
    status_lamp_picture_off: RotatedSprite | None = None
    below_arm_pictures: RotatedSprite | None = None
    below_ground_pictures: RotatedSprite | None = None
    arm_head_animation: RotatedAnimation | None = None
    arm_head_top_animation: RotatedAnimation | None = None
    arm_link: RotatedSprite | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class Pictures:
    north: BoilerPictures
    east: BoilerPictures
    south: BoilerPictures
    west: BoilerPictures


@dataclass
class Orientations:
    west_to_east: OrientedCliffPrototype
    north_to_south: OrientedCliffPrototype
    east_to_west: OrientedCliffPrototype
    south_to_north: OrientedCliffPrototype
    west_to_north: OrientedCliffPrototype
    north_to_east: OrientedCliffPrototype
    east_to_south: OrientedCliffPrototype
    south_to_west: OrientedCliffPrototype
    west_to_south: OrientedCliffPrototype
    north_to_west: OrientedCliffPrototype
    east_to_north: OrientedCliffPrototype
    south_to_east: OrientedCliffPrototype
    west_to_none: OrientedCliffPrototype
    none_to_east: OrientedCliffPrototype
    north_to_none: OrientedCliffPrototype
    none_to_south: OrientedCliffPrototype
    east_to_none: OrientedCliffPrototype
    none_to_west: OrientedCliffPrototype
    south_to_none: OrientedCliffPrototype
    none_to_north: OrientedCliffPrototype


@dataclass
class GeneratorEquipmentPrototype:
    type: Literal["generator-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    power: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None
    burner: BurnerEnergySource | None = None


@dataclass
class Structure:
    direction_in: Sprite4Way | None = None
    direction_out: Sprite4Way | None = None
    back_patch: Sprite4Way | None = None
    front_patch: Sprite4Way | None = None
    direction_in_side_loading: Sprite4Way | None = None
    direction_out_side_loading: Sprite4Way | None = None


@dataclass
class NightVisionEquipmentPrototype:
    type: Literal["night-vision-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    energy_input: Energy
    color_lookup: DaytimeColorLookupTable
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None
    darkness_to_turn_on: Float | None = None
    activate_sound: Sound | None = None
    deactivate_sound: Sound | None = None


@dataclass
class FluidWagonConnectorGraphics:
    load_animations: PumpConnectorGraphics
    unload_animations: PumpConnectorGraphics


@dataclass
class GraphicsSet1:
    structure: RotatedSprite
    underwater_structure: RotatedSprite | None = None
    render_layer: RenderLayer | None = None
    underwater_layer_offset: Int8 | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class RoboportEquipmentPrototype:
    type: Literal["roboport-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    spawn_and_station_height: Float
    charge_approach_distance: Float
    construction_radius: Float
    charging_energy: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None
    recharging_animation: Animation | None = None
    spawn_and_station_shadow_height_offset: Float | None = None
    stationing_render_layer_swap_height: Float | None = None
    draw_logistic_radius_visualization: Boolean | None = None
    draw_construction_radius_visualization: Boolean | None = None
    recharging_light: LightDefinition | None = None
    charging_station_count: Uint32 | None = None
    charging_station_count_affected_by_quality: Boolean | None = None
    charging_distance: Float | None = None
    charging_station_shift: Vector | None = None
    charging_threshold_distance: Float | None = None
    robot_vertical_acceleration: Float | None = None
    stationing_offset: Vector | None = None
    robot_limit: ItemCountType | None = None
    robots_shrink_when_entering_and_exiting: Boolean | None = None
    charging_offsets: list[Vector] | dict[str, Any] | None = None
    spawn_minimum: Energy | None = None
    burner: BurnerEnergySource | None = None
    power: Energy | None = None


@dataclass
class GraphicsSet2:
    joint_turn_offset: Float | None = None
    joint_render_layer: RenderLayer | None = None
    joint: RotatedSprite | None = None
    joint_shadow: RotatedSprite | None = None
    upper_part: SpiderLegPart | None = None
    lower_part: SpiderLegPart | None = None
    upper_part_shadow: SpiderLegPart | None = None
    lower_part_shadow: SpiderLegPart | None = None
    upper_part_water_reflection: SpiderLegPart | None = None
    lower_part_water_reflection: SpiderLegPart | None = None
    foot: RotatedSprite | None = None
    foot_shadow: RotatedSprite | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class Pictures1:
    picture: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    window_background: Sprite | None = None
    fluid_background: Sprite | None = None
    flow_sprite: Sprite | None = None
    gas_flow: Animation | None = None


@dataclass
class TechnologyPrototype:
    type: Literal["technology"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    upgrade: Boolean | None = None
    enabled: Boolean | None = None
    essential: Boolean | None = None
    visible_when_disabled: Boolean | None = None
    ignore_tech_cost_multiplier: Boolean | None = None
    allows_productivity: Boolean | None = None
    research_trigger: TechnologyTrigger | None = None
    unit: TechnologyUnit | None = None
    max_level: Uint32 | Literal["infinite"] | None = None
    prerequisites: list[TechnologyID] | dict[str, Any] | None = None
    show_levels_info: Boolean | None = None
    effects: list[Modifier] | dict[str, Any] | None = None


@dataclass
class TileEffectDefinition:
    type: Literal["tile-effect"]
    name: String
    shader: Shader
    water: WaterTileEffectParameters | None = None
    space: SpaceTileEffectParameters | None = None
    puddle: PuddleTileEffectParameters | None = None


@dataclass
class BuildSound:
    small: Sound | None = None
    medium: Sound | None = None
    large: Sound | None = None
    animated: Sound | None = None


@dataclass
class Structure1:
    direction_in: Sprite4Way | None = None
    direction_out: Sprite4Way | None = None
    back_patch: Sprite4Way | None = None
    front_patch: Sprite4Way | None = None
    direction_in_side_loading: Sprite4Way | None = None
    direction_out_side_loading: Sprite4Way | None = None
    frozen_patch_in: Sprite4Way | None = None
    frozen_patch_out: Sprite4Way | None = None


@dataclass
class CursorBox:
    regular: list[BoxSpecification] | dict[str, Any]
    multiplayer_selection: list[BoxSpecification] | dict[str, Any]
    not_allowed: list[BoxSpecification] | dict[str, Any]
    copy: list[BoxSpecification] | dict[str, Any]
    electricity: list[BoxSpecification] | dict[str, Any]
    logistics: list[BoxSpecification] | dict[str, Any]
    pair: list[BoxSpecification] | dict[str, Any]
    train_visualization: list[BoxSpecification] | dict[str, Any]
    blueprint_snap_rectangle: list[BoxSpecification] | dict[str, Any]
    spidertron_remote_selected: list[BoxSpecification] | dict[str, Any]
    spidertron_remote_to_be_selected: list[BoxSpecification] | dict[str, Any]


@dataclass
class UtilitySprites:
    type: Literal["utility-sprites"]
    name: String
    cursor_box: CursorBox
    bookmark: Sprite
    center: Sprite
    check_mark: Sprite
    check_mark_white: Sprite
    check_mark_green: Sprite
    check_mark_dark_green: Sprite
    not_played_yet_green: Sprite
    not_played_yet_dark_green: Sprite
    played_green: Sprite
    played_dark_green: Sprite
    close_fat: Sprite
    close: Sprite
    close_black: Sprite
    backward_arrow: Sprite
    backward_arrow_black: Sprite
    forward_arrow: Sprite
    forward_arrow_black: Sprite
    recipe_arrow: Sprite
    close_map_preview: Sprite
    color_picker: Sprite
    change_recipe: Sprite
    dropdown: Sprite
    downloading: Sprite
    downloaded: Sprite
    equipment_grid: Sprite
    equipment_grid_small: Sprite
    expand_dots: Sprite
    export: Sprite
    import_: Sprite
    map: Sprite
    map_exchange_string: Sprite
    missing_mod_icon: Sprite
    not_available: Sprite
    not_available_black: Sprite
    play: Sprite
    stop: Sprite
    preset: Sprite
    refresh: Sprite
    reset: Sprite
    reset_white: Sprite
    shuffle: Sprite
    station_name: Sprite
    search: Sprite
    sync_mods: Sprite
    trash: Sprite
    trash_white: Sprite
    copy: Sprite
    reassign: Sprite
    warning: Sprite
    warning_white: Sprite
    list_view: Sprite
    grid_view: Sprite
    slots_view: Sprite
    reference_point: Sprite
    mouse_cursor: Sprite
    mouse_cursor_macos: Sprite
    mod_category: Sprite
    mod_last_updated: Sprite
    mod_downloads_count: Sprite
    item_to_be_delivered_symbol: Sprite
    rebuild_mark: Sprite
    any_quality: Sprite
    mod_dependency_arrow: Sprite
    add: Sprite
    add_white: Sprite
    clone: Sprite
    go_to_arrow: Sprite
    pause: Sprite
    speed_down: Sprite
    speed_up: Sprite
    editor_speed_down: Sprite
    editor_pause: Sprite
    editor_play: Sprite
    editor_speed_up: Sprite
    tick_once: Sprite
    tick_sixty: Sprite
    tick_custom: Sprite
    search_icon: Sprite
    too_far: Sprite
    shoot_cursor_green: Sprite
    shoot_cursor_red: Sprite
    electricity_icon: Sprite
    lightning_warning_icon: Sprite
    fuel_icon: Sprite
    ammo_icon: Sprite
    fluid_icon: Sprite
    warning_icon: Sprite
    danger_icon: Sprite
    destroyed_icon: Sprite
    recharge_icon: Sprite
    no_path_icon: Sprite
    destination_full_icon: Sprite
    too_far_from_roboport_icon: Sprite
    pump_cannot_connect_icon: Sprite
    not_enough_repair_packs_icon: Sprite
    not_enough_construction_robots_icon: Sprite
    no_building_material_icon: Sprite
    no_storage_space_icon: Sprite
    no_platform_storage_space_icon: Sprite
    asteroid_collector_path_blocked_icon: Sprite
    unclaimed_cargo_icon: Sprite
    no_roboport_storage_space_icon: Sprite
    cargo_bay_not_connected_icon: Sprite
    frozen_icon: Sprite
    pipeline_disabled_icon: Sprite
    electricity_icon_unplugged: Sprite
    tooltip_category_spoilable: Sprite
    resources_depleted_icon: Sprite
    game_stopped_visualization: Sprite
    health_bar_green_pip: Sprite
    health_bar_yellow_pip: Sprite
    health_bar_red_pip: Sprite
    ghost_bar_pip: Sprite
    bar_gray_pip: Sprite
    shield_bar_pip: Sprite
    hand: Sprite
    hand_black: Sprite
    entity_info_dark_background: Sprite
    medium_gui_arrow: Sprite
    small_gui_arrow: Sprite
    light_medium: Sprite
    light_small: Sprite
    light_cone: Sprite
    color_effect: Sprite
    clock: Sprite
    default_ammo_damage_modifier_icon: Sprite
    default_gun_speed_modifier_icon: Sprite
    default_turret_attack_modifier_icon: Sprite
    hint_arrow_up: Sprite
    hint_arrow_down: Sprite
    hint_arrow_right: Sprite
    hint_arrow_left: Sprite
    fluid_indication_arrow: Sprite
    fluid_indication_arrow_both_ways: Sprite
    heat_exchange_indication: Sprite
    indication_arrow: Sprite
    rail_planner_indication_arrow: Sprite
    rail_planner_indication_arrow_anchored: Sprite
    rail_planner_indication_arrow_too_far: Sprite
    rail_path_not_possible: Sprite
    indication_line: Sprite
    short_indication_line: Sprite
    short_indication_line_green: Sprite
    empty_module_slot: Sprite
    empty_armor_slot: Sprite
    empty_gun_slot: Sprite
    empty_ammo_slot: Sprite
    empty_robot_slot: Sprite
    empty_robot_material_slot: Sprite
    empty_inserter_hand_slot: Sprite
    empty_trash_slot: Sprite
    empty_drop_cargo_slot: Sprite
    upgrade_blueprint: Sprite
    slot: Sprite
    equipment_slot: Sprite
    equipment_collision: Sprite
    battery: Sprite
    green_circle: Sprite
    green_dot: Sprite
    robot_slot: Sprite
    set_bar_slot: Sprite
    missing_icon: Sprite
    deconstruction_mark: Sprite
    buildability_collision: Sprite
    buildability_elevated_collision_line: Sprite
    buildability_elevated_collision_top: Sprite
    buildability_elevated_collision_bottom: Sprite
    buildability_collision_elevated: Sprite
    upgrade_mark: Sprite
    confirm_slot: Sprite
    export_slot: Sprite
    import_slot: Sprite
    none_editor_icon: Sprite
    cable_editor_icon: Sprite
    tile_editor_icon: Sprite
    decorative_editor_icon: Sprite
    asteroid_chunk_editor_icon: Sprite
    resource_editor_icon: Sprite
    entity_editor_icon: Sprite
    item_editor_icon: Sprite
    force_editor_icon: Sprite
    clone_editor_icon: Sprite
    scripting_editor_icon: Sprite
    paint_bucket_icon: Sprite
    surface_editor_icon: Sprite
    time_editor_icon: Sprite
    cliff_editor_icon: Sprite
    brush_icon: Sprite
    spray_icon: Sprite
    cursor_icon: Sprite
    area_icon: Sprite
    line_icon: Sprite
    variations_tool_icon: Sprite
    lua_snippet_tool_icon: Sprite
    editor_selection: Sprite
    brush_square_shape: Sprite
    brush_circle_shape: Sprite
    player_force_icon: Sprite
    neutral_force_icon: Sprite
    enemy_force_icon: Sprite
    nature_icon: Sprite
    no_nature_icon: Sprite
    multiplayer_waiting_icon: Sprite
    spawn_flag: Sprite
    questionmark: Sprite
    copper_wire: Sprite
    green_wire: Sprite
    red_wire: Sprite
    copper_wire_highlight: Sprite
    green_wire_highlight: Sprite
    red_wire_highlight: Sprite
    wire_shadow: Sprite
    and_or: Sprite
    left_arrow: Sprite
    right_arrow: Sprite
    down_arrow: Sprite
    enter: Sprite
    move_tag: Sprite
    side_menu_blueprint_library_icon: Sprite
    side_menu_production_icon: Sprite
    side_menu_bonus_icon: Sprite
    side_menu_tutorials_icon: Sprite
    side_menu_factoriopedia_icon: Sprite
    side_menu_train_icon: Sprite
    side_menu_achievements_icon: Sprite
    side_menu_menu_icon: Sprite
    side_menu_map_icon: Sprite
    side_menu_space_platforms_icon: Sprite
    side_menu_technology_icon: Sprite
    side_menu_logistic_networks_icon: Sprite
    side_menu_players_icon: Sprite
    circuit_network_panel: Sprite
    logistic_network_panel_white: Sprite
    logistic_network_panel_black: Sprite
    rename_icon: Sprite
    achievement_warning: Sprite
    achievement_label: Sprite
    achievement_label_completed: Sprite
    achievement_label_failed: Sprite
    rail_signal_placement_indicator: Sprite
    train_stop_placement_indicator: Sprite
    rail_support_placement_indicator: Sprite
    placement_indicator_leg: Sprite
    grey_rail_signal_placement_indicator: Sprite
    grey_placement_indicator_leg: Sprite
    logistic_radius_visualization: Sprite
    construction_radius_visualization: Sprite
    track_button: Sprite
    track_button_white: Sprite
    show_logistics_network_in_map_view: Sprite
    show_electric_network_in_map_view: Sprite
    show_turret_range_in_map_view: Sprite
    show_train_station_names_in_map_view: Sprite
    show_player_names_in_map_view: Sprite
    show_tags_in_map_view: Sprite
    show_worker_robots_in_map_view: Sprite
    show_rail_signal_states_in_map_view: Sprite
    show_recipe_icons_in_map_view: Sprite
    show_pipelines_in_map_view: Sprite
    train_stop_in_map_view: Sprite
    train_stop_disabled_in_map_view: Sprite
    train_stop_full_in_map_view: Sprite
    custom_tag_in_map_view: Sprite
    covered_chunk: Sprite
    white_square: Sprite
    white_square_icon: Sprite
    white_mask: Sprite
    crafting_machine_recipe_not_unlocked: Sprite
    filter_blacklist: Sprite
    gps_map_icon: Sprite
    custom_tag_icon: Sprite
    space_age_icon: Sprite
    tip_icon: Sprite
    underground_remove_belts: Sprite
    max_distance_underground_remove_belts: Sprite
    underground_remove_pipes: Sprite
    underground_pipe_connection: Sprite
    ghost_cursor: Sprite
    tile_ghost_cursor: Sprite
    force_ghost_cursor: Sprite
    force_tile_ghost_cursor: Sprite
    cross_select: Sprite
    crosshair: Sprite
    expand: Sprite
    collapse: Sprite
    collapse_dark: Sprite
    status_working: Sprite
    status_not_working: Sprite
    status_yellow: Sprite
    status_blue: Sprite
    status_inactive: Sprite
    gradient: Sprite
    output_console_gradient: Sprite
    select_icon_white: Sprite
    select_icon_black: Sprite
    notification: Sprite
    alert_arrow: Sprite
    pin_arrow: Sprite
    pin_center: Sprite
    technology_white: Sprite
    feedback: Sprite
    sort_by_name: Sprite
    sort_by_time: Sprite
    parametrise: Sprite
    fluid_visualization_connection: Sprite
    fluid_visualization_connection_both_ways: Sprite
    fluid_visualization_connection_underground: Sprite
    fluid_visualization_extent_arrow: Sprite
    starmap_platform_moving: Sprite
    starmap_platform_moving_hovered: Sprite
    starmap_platform_moving_clicked: Sprite
    starmap_platform_stopped: Sprite
    starmap_platform_stopped_hovered: Sprite
    starmap_platform_stopped_clicked: Sprite
    starmap_platform_stacked: Sprite
    starmap_platform_stacked_hovered: Sprite
    starmap_platform_stacked_clicked: Sprite
    starmap_star: Sprite
    controller_joycon_a: Sprite
    controller_joycon_b: Sprite
    controller_joycon_x: Sprite
    controller_joycon_y: Sprite
    controller_joycon_back: Sprite
    controller_joycon_start: Sprite
    controller_joycon_leftstick: Sprite
    controller_joycon_rightstick: Sprite
    controller_joycon_leftshoulder: Sprite
    controller_joycon_rightshoulder: Sprite
    controller_joycon_dpup: Sprite
    controller_joycon_dpdown: Sprite
    controller_joycon_dpleft: Sprite
    controller_joycon_dpright: Sprite
    controller_joycon_paddle1: Sprite
    controller_joycon_paddle2: Sprite
    controller_joycon_paddle3: Sprite
    controller_joycon_paddle4: Sprite
    controller_joycon_righttrigger: Sprite
    controller_joycon_lefttrigger: Sprite
    controller_joycon_left_stick: Sprite
    controller_joycon_right_stick: Sprite
    controller_joycon_black_a: Sprite
    controller_joycon_black_b: Sprite
    controller_joycon_black_x: Sprite
    controller_joycon_black_y: Sprite
    controller_joycon_black_back: Sprite
    controller_joycon_black_start: Sprite
    controller_joycon_black_leftstick: Sprite
    controller_joycon_black_rightstick: Sprite
    controller_joycon_black_leftshoulder: Sprite
    controller_joycon_black_rightshoulder: Sprite
    controller_joycon_black_dpup: Sprite
    controller_joycon_black_dpdown: Sprite
    controller_joycon_black_dpleft: Sprite
    controller_joycon_black_dpright: Sprite
    controller_joycon_black_paddle1: Sprite
    controller_joycon_black_paddle2: Sprite
    controller_joycon_black_paddle3: Sprite
    controller_joycon_black_paddle4: Sprite
    controller_joycon_black_righttrigger: Sprite
    controller_joycon_black_lefttrigger: Sprite
    controller_joycon_black_left_stick: Sprite
    controller_joycon_black_right_stick: Sprite
    controller_xbox_a: Sprite
    controller_xbox_b: Sprite
    controller_xbox_x: Sprite
    controller_xbox_y: Sprite
    controller_xbox_back: Sprite
    controller_xbox_start: Sprite
    controller_xbox_leftstick: Sprite
    controller_xbox_rightstick: Sprite
    controller_xbox_leftshoulder: Sprite
    controller_xbox_rightshoulder: Sprite
    controller_xbox_dpup: Sprite
    controller_xbox_dpdown: Sprite
    controller_xbox_dpleft: Sprite
    controller_xbox_dpright: Sprite
    controller_xbox_righttrigger: Sprite
    controller_xbox_lefttrigger: Sprite
    controller_xbox_left_stick: Sprite
    controller_xbox_right_stick: Sprite
    controller_xbox_black_a: Sprite
    controller_xbox_black_b: Sprite
    controller_xbox_black_x: Sprite
    controller_xbox_black_y: Sprite
    controller_xbox_black_back: Sprite
    controller_xbox_black_start: Sprite
    controller_xbox_black_leftstick: Sprite
    controller_xbox_black_rightstick: Sprite
    controller_xbox_black_leftshoulder: Sprite
    controller_xbox_black_rightshoulder: Sprite
    controller_xbox_black_dpup: Sprite
    controller_xbox_black_dpdown: Sprite
    controller_xbox_black_dpleft: Sprite
    controller_xbox_black_dpright: Sprite
    controller_xbox_black_righttrigger: Sprite
    controller_xbox_black_lefttrigger: Sprite
    controller_xbox_black_left_stick: Sprite
    controller_xbox_black_right_stick: Sprite
    controller_ps_a: Sprite
    controller_ps_b: Sprite
    controller_ps_x: Sprite
    controller_ps_y: Sprite
    controller_ps_back: Sprite
    controller_ps_start: Sprite
    controller_ps_leftstick: Sprite
    controller_ps_rightstick: Sprite
    controller_ps_leftshoulder: Sprite
    controller_ps_rightshoulder: Sprite
    controller_ps_dpup: Sprite
    controller_ps_dpdown: Sprite
    controller_ps_dpleft: Sprite
    controller_ps_dpright: Sprite
    controller_ps_righttrigger: Sprite
    controller_ps_lefttrigger: Sprite
    controller_ps_left_stick: Sprite
    controller_ps_right_stick: Sprite
    controller_ps_black_a: Sprite
    controller_ps_black_b: Sprite
    controller_ps_black_x: Sprite
    controller_ps_black_y: Sprite
    controller_ps_black_back: Sprite
    controller_ps_black_start: Sprite
    controller_ps_black_leftstick: Sprite
    controller_ps_black_rightstick: Sprite
    controller_ps_black_leftshoulder: Sprite
    controller_ps_black_rightshoulder: Sprite
    controller_ps_black_dpup: Sprite
    controller_ps_black_dpdown: Sprite
    controller_ps_black_dpleft: Sprite
    controller_ps_black_dpright: Sprite
    controller_ps_black_righttrigger: Sprite
    controller_ps_black_lefttrigger: Sprite
    controller_ps_black_left_stick: Sprite
    controller_ps_black_right_stick: Sprite
    controller_steamdeck_a: Sprite
    controller_steamdeck_b: Sprite
    controller_steamdeck_x: Sprite
    controller_steamdeck_y: Sprite
    controller_steamdeck_back: Sprite
    controller_steamdeck_start: Sprite
    controller_steamdeck_leftstick: Sprite
    controller_steamdeck_rightstick: Sprite
    controller_steamdeck_leftshoulder: Sprite
    controller_steamdeck_rightshoulder: Sprite
    controller_steamdeck_dpup: Sprite
    controller_steamdeck_dpdown: Sprite
    controller_steamdeck_dpleft: Sprite
    controller_steamdeck_dpright: Sprite
    controller_steamdeck_paddle1: Sprite
    controller_steamdeck_paddle2: Sprite
    controller_steamdeck_paddle3: Sprite
    controller_steamdeck_paddle4: Sprite
    controller_steamdeck_righttrigger: Sprite
    controller_steamdeck_lefttrigger: Sprite
    controller_steamdeck_left_stick: Sprite
    controller_steamdeck_right_stick: Sprite
    controller_steamdeck_black_a: Sprite
    controller_steamdeck_black_b: Sprite
    controller_steamdeck_black_x: Sprite
    controller_steamdeck_black_y: Sprite
    controller_steamdeck_black_back: Sprite
    controller_steamdeck_black_start: Sprite
    controller_steamdeck_black_leftstick: Sprite
    controller_steamdeck_black_rightstick: Sprite
    controller_steamdeck_black_leftshoulder: Sprite
    controller_steamdeck_black_rightshoulder: Sprite
    controller_steamdeck_black_dpup: Sprite
    controller_steamdeck_black_dpdown: Sprite
    controller_steamdeck_black_dpleft: Sprite
    controller_steamdeck_black_dpright: Sprite
    controller_steamdeck_black_paddle1: Sprite
    controller_steamdeck_black_paddle2: Sprite
    controller_steamdeck_black_paddle3: Sprite
    controller_steamdeck_black_paddle4: Sprite
    controller_steamdeck_black_righttrigger: Sprite
    controller_steamdeck_black_lefttrigger: Sprite
    controller_steamdeck_black_left_stick: Sprite
    controller_steamdeck_black_right_stick: Sprite
    clouds: Animation
    arrow_button: Animation
    explosion_chart_visualization: Animation
    refresh_white: Animation
    navmesh_pending_icon: Animation
    inserter_stack_size_bonus_modifier_icon: Sprite
    bulk_inserter_capacity_bonus_modifier_icon: Sprite
    laboratory_speed_modifier_icon: Sprite
    character_logistic_trash_slots_modifier_icon: Sprite
    maximum_following_robots_count_modifier_icon: Sprite
    worker_robot_speed_modifier_icon: Sprite
    worker_robot_storage_modifier_icon: Sprite
    create_ghost_on_entity_death_modifier_icon: Sprite
    turret_attack_modifier_icon: Sprite
    ammo_damage_modifier_icon: Sprite
    give_item_modifier_icon: Sprite
    gun_speed_modifier_icon: Sprite
    unlock_recipe_modifier_icon: Sprite
    character_crafting_speed_modifier_icon: Sprite
    character_mining_speed_modifier_icon: Sprite
    character_running_speed_modifier_icon: Sprite
    character_build_distance_modifier_icon: Sprite
    character_item_drop_distance_modifier_icon: Sprite
    character_reach_distance_modifier_icon: Sprite
    character_resource_reach_distance_modifier_icon: Sprite
    character_item_pickup_distance_modifier_icon: Sprite
    character_loot_pickup_distance_modifier_icon: Sprite
    character_inventory_slots_bonus_modifier_icon: Sprite
    deconstruction_time_to_live_modifier_icon: Sprite
    max_failed_attempts_per_tick_per_construction_queue_modifier_icon: Sprite
    max_successful_attempts_per_tick_per_construction_queue_modifier_icon: (
        Sprite
    )
    character_health_bonus_modifier_icon: Sprite
    mining_drill_productivity_bonus_modifier_icon: Sprite
    train_braking_force_bonus_modifier_icon: Sprite
    worker_robot_battery_modifier_icon: Sprite
    laboratory_productivity_modifier_icon: Sprite
    follower_robot_lifetime_modifier_icon: Sprite
    artillery_range_modifier_icon: Sprite
    nothing_modifier_icon: Sprite
    character_additional_mining_categories_modifier_icon: Sprite
    character_logistic_requests_modifier_icon: Sprite
    unlock_space_location_modifier_icon: Sprite
    unlock_quality_modifier_icon: Sprite
    unlock_space_platforms_modifier_icon: Sprite
    unlock_circuit_network_modifier_icon: Sprite
    cargo_landing_pad_count_modifier_icon: Sprite
    change_recipe_productivity_modifier_icon: Sprite
    cliff_deconstruction_enabled_modifier_icon: Sprite
    mining_with_fluid_modifier_icon: Sprite
    rail_support_on_deep_oil_ocean_modifier_icon: Sprite
    rail_planner_allow_elevated_rails_modifier_icon: Sprite
    beacon_distribution_modifier_icon: Sprite
    belt_stack_size_bonus_modifier_icon: Sprite
    vehicle_logistics_modifier_icon: Sprite
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    platform_entity_build_animations: PlatformEntityBuildAnimations | None = (
        None
    )
    inserter_stack_size_bonus_modifier_constant: Sprite | None = None
    bulk_inserter_capacity_bonus_modifier_constant: Sprite | None = None
    laboratory_speed_modifier_constant: Sprite | None = None
    character_logistic_trash_slots_modifier_constant: Sprite | None = None
    maximum_following_robots_count_modifier_constant: Sprite | None = None
    worker_robot_speed_modifier_constant: Sprite | None = None
    worker_robot_storage_modifier_constant: Sprite | None = None
    create_ghost_on_entity_death_modifier_constant: Sprite | None = None
    turret_attack_modifier_constant: Sprite | None = None
    ammo_damage_modifier_constant: Sprite | None = None
    give_item_modifier_constant: Sprite | None = None
    gun_speed_modifier_constant: Sprite | None = None
    unlock_recipe_modifier_constant: Sprite | None = None
    character_crafting_speed_modifier_constant: Sprite | None = None
    character_mining_speed_modifier_constant: Sprite | None = None
    character_running_speed_modifier_constant: Sprite | None = None
    character_build_distance_modifier_constant: Sprite | None = None
    character_item_drop_distance_modifier_constant: Sprite | None = None
    character_reach_distance_modifier_constant: Sprite | None = None
    character_resource_reach_distance_modifier_constant: Sprite | None = None
    character_item_pickup_distance_modifier_constant: Sprite | None = None
    character_loot_pickup_distance_modifier_constant: Sprite | None = None
    character_inventory_slots_bonus_modifier_constant: Sprite | None = None
    deconstruction_time_to_live_modifier_constant: Sprite | None = None
    max_failed_attempts_per_tick_per_construction_queue_modifier_constant: (
        Sprite | None
    ) = None
    max_successful_attempts_per_tick_per_construction_queue_modifier_constant: (
        Sprite | None
    ) = None
    character_health_bonus_modifier_constant: Sprite | None = None
    mining_drill_productivity_bonus_modifier_constant: Sprite | None = None
    train_braking_force_bonus_modifier_constant: Sprite | None = None
    worker_robot_battery_modifier_constant: Sprite | None = None
    laboratory_productivity_modifier_constant: Sprite | None = None
    follower_robot_lifetime_modifier_constant: Sprite | None = None
    artillery_range_modifier_constant: Sprite | None = None
    nothing_modifier_constant: Sprite | None = None
    character_additional_mining_categories_modifier_constant: Sprite | None = (
        None
    )
    character_logistic_requests_modifier_constant: Sprite | None = None
    unlock_space_location_modifier_constant: Sprite | None = None
    unlock_quality_modifier_constant: Sprite | None = None
    unlock_space_platforms_modifier_constant: Sprite | None = None
    unlock_circuit_network_modifier_constant: Sprite | None = None
    cargo_landing_pad_count_modifier_constant: Sprite | None = None
    change_recipe_productivity_modifier_constant: Sprite | None = None
    cliff_deconstruction_enabled_modifier_constant: Sprite | None = None
    mining_with_fluid_modifier_constant: Sprite | None = None
    rail_support_on_deep_oil_ocean_modifier_constant: Sprite | None = None
    rail_planner_allow_elevated_rails_modifier_constant: Sprite | None = None
    beacon_distribution_modifier_constant: Sprite | None = None
    belt_stack_size_bonus_modifier_constant: Sprite | None = None
    vehicle_logistics_modifier_constant: Sprite | None = None


@dataclass
class Pictures2:
    single: SpriteVariations | None = None
    straight_vertical: SpriteVariations | None = None
    straight_horizontal: SpriteVariations | None = None
    corner_right_down: SpriteVariations | None = None
    corner_left_down: SpriteVariations | None = None
    t_up: SpriteVariations | None = None
    ending_right: SpriteVariations | None = None
    ending_left: SpriteVariations | None = None
    filling: SpriteVariations | None = None
    water_connection_patch: Sprite4Way | None = None
    gate_connection_patch: Sprite4Way | None = None


@dataclass
class AsteroidGraphicsSet:
    rotation_speed: Float | None = None
    normal_strength: Float | None = None
    light_width: Float | None = None
    brightness: Float | None = None
    specular_strength: Float | None = None
    specular_power: Float | None = None
    specular_purity: Float | None = None
    sss_contrast: Float | None = None
    sss_amount: Float | None = None
    sprite: Sprite | None = None
    variations: (
        AsteroidVariation | list[AsteroidVariation] | dict[str, Any] | None
    ) = None
    lights: LightProperties | list[LightProperties] | dict[str, Any] | None = (
        None
    )
    ambient_light: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class BeaconGraphicsSet:
    draw_animation_when_idle: Boolean | None = None
    draw_light_when_idle: Boolean | None = None
    random_animation_offset: Boolean | None = None
    module_icons_suppressed: Boolean | None = None
    reset_animation_when_frozen: Boolean | None = None
    base_layer: RenderLayer | None = None
    animation_layer: RenderLayer | None = None
    top_layer: RenderLayer | None = None
    animation_progress: Float | None = None
    apply_module_tint: ModuleTint | None = None
    no_modules_tint: Color | None = None
    animation_list: list[AnimationElement] | dict[str, Any] | None = None
    frozen_patch: Sprite | None = None
    light: LightDefinition | None = None
    module_visualisations: (
        list[BeaconModuleVisualizations] | dict[str, Any] | None
    ) = None
    module_tint_mode: ModuleTintMode | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class CargoBayConnections:
    top_wall: LayeredSpriteVariations | None = None
    right_wall: LayeredSpriteVariations | None = None
    bottom_wall: LayeredSpriteVariations | None = None
    left_wall: LayeredSpriteVariations | None = None
    top_left_outer_corner: LayeredSpriteVariations | None = None
    top_right_outer_corner: LayeredSpriteVariations | None = None
    bottom_left_outer_corner: LayeredSpriteVariations | None = None
    bottom_right_outer_corner: LayeredSpriteVariations | None = None
    top_left_inner_corner: LayeredSpriteVariations | None = None
    top_right_inner_corner: LayeredSpriteVariations | None = None
    bottom_left_inner_corner: LayeredSpriteVariations | None = None
    bottom_right_inner_corner: LayeredSpriteVariations | None = None
    bridge_horizontal_narrow: LayeredSpriteVariations | None = None
    bridge_horizontal_wide: LayeredSpriteVariations | None = None
    bridge_vertical_narrow: LayeredSpriteVariations | None = None
    bridge_vertical_wide: LayeredSpriteVariations | None = None
    bridge_crossing: LayeredSpriteVariations | None = None


@dataclass
class ChargableGraphics:
    picture: Sprite | None = None
    charge_animation: Animation | None = None
    charge_animation_is_looped: Boolean | None = None
    charge_light: LightDefinition | None = None
    charge_cooldown: Uint16 | None = None
    discharge_animation: Animation | None = None
    discharge_light: LightDefinition | None = None
    discharge_cooldown: Uint16 | None = None


@dataclass
class CircuitConnectorSprites:
    led_red: Sprite
    led_green: Sprite
    led_blue: Sprite
    led_light: LightDefinition
    connector_main: Sprite | None = None
    connector_shadow: Sprite | None = None
    wire_pins: Sprite | None = None
    wire_pins_shadow: Sprite | None = None
    led_blue_off: Sprite | None = None
    blue_led_light_offset: Vector | None = None
    red_green_led_light_offset: Vector | None = None


@dataclass
class CoverGraphicProcessionLayer:
    type: Literal["cover-graphic"]
    frames: list[Frame] | dict[str, Any]
    reference_group: ProcessionLayerInheritanceGroupID | None = None
    inherit_from: ProcessionLayerInheritanceGroupID | None = None
    graphic: ProcessionGraphic | None = None
    mask_graphic: ProcessionGraphic | None = None
    effect_graphic: ProcessionGraphic | None = None
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    is_cloud_effect_advanced: Boolean | None = None
    is_quad_texture: Boolean | None = None
    rotate_with_pod: Boolean | None = None
    texture_relative_to: EffectRelativeTo | None = None
    distance_traveled_strength: Vector | None = None
    pod_movement_strength: Vector | None = None
    world_size: Vector | None = None
    effect: CoverGraphicEffectData | None = None
    alt_effect: CoverGraphicEffectData | None = None


@dataclass
class CraftingMachineGraphicsSet:
    animation: Animation4Way | None = None
    idle_animation: Animation4Way | None = None
    always_draw_idle_animation: Boolean | None = None
    default_recipe_tint: GlobalRecipeTints | None = None
    recipe_not_set_tint: GlobalRecipeTints | None = None
    states: list[VisualState] | dict[str, Any] | None = None
    working_visualisations: (
        list[WorkingVisualisation]
        | dict[str, Any]
        | dict[str, WorkingVisualisation]
        | None
    ) = None
    shift_animation_waypoints: ShiftAnimationWaypoints | None = None
    shift_animation_waypoint_stop_duration: Uint16 | None = None
    shift_animation_transition_duration: Uint16 | None = None
    status_colors: StatusColors | None = None
    frozen_patch: Sprite4Way | None = None
    circuit_connector_layer: RenderLayer | CircuitConnectorLayer | None = None
    circuit_connector_secondary_draw_order: (
        Int8 | CircuitConnectorSecondaryDrawOrder | None
    ) = None
    animation_progress: Float | None = None
    reset_animation_when_frozen: Boolean | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class CranePartDyingEffect:
    particle_effect_linear_distance_step: Float | None = None
    explosion_linear_distance_step: Float | None = None
    particle_effects: (
        CreateParticleTriggerEffectItem
        | list[CreateParticleTriggerEffectItem]
        | dict[str, Any]
        | None
    ) = None
    explosion: ExplosionDefinition | None = None


@dataclass
class CyclicSound:
    begin_sound: Sound | None = None
    middle_sound: Sound | None = None
    end_sound: Sound | None = None


@dataclass
class ElementImageSet1:
    base: ElementImageSetLayer | None = None
    shadow: ElementImageSetLayer | None = None
    glow: ElementImageSetLayer | None = None


type ElementImageSet = ElementImageSet1 | ElementImageSetLayer


@dataclass
class EmptyWidgetStyleSpecification:
    type: Literal["empty_widget_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    graphical_set: ElementImageSet | None = None


@dataclass
class FluidBox:
    volume: FluidAmount
    pipe_connections: list[PipeConnectionDefinition] | dict[str, Any]
    filter: FluidID | None = None
    render_layer: RenderLayer | None = None
    draw_only_when_connected: Boolean | None = None
    hide_connection_info: Boolean | None = None
    volume_reservation_fraction: Float | None = None
    pipe_covers: Sprite4Way | None = None
    pipe_covers_frozen: Sprite4Way | None = None
    pipe_picture: Sprite4Way | None = None
    pipe_picture_frozen: Sprite4Way | None = None
    mirrored_pipe_picture: Sprite4Way | None = None
    mirrored_pipe_picture_frozen: Sprite4Way | None = None
    minimum_temperature: Float | None = None
    maximum_temperature: Float | None = None
    max_pipeline_extent: Uint32 | None = None
    production_type: ProductionType | None = None
    secondary_draw_order: Int8 | None = None
    secondary_draw_orders: SecondaryDrawOrders | None = None
    always_draw_covers: Boolean | None = None
    enable_working_visualisations: list[String] | dict[str, Any] | None = None


@dataclass
class FluidEnergySource:
    type: Literal["fluid"]
    fluid_box: FluidBox
    emissions_per_minute: dict[AirbornePollutantID, Double] | None = None
    render_no_power_icon: Boolean | None = None
    render_no_network_icon: Boolean | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    light_flicker: LightFlickeringDefinition | None = None
    effectivity: Double | None = None
    burns_fluid: Boolean | None = None
    scale_fluid_usage: Boolean | None = None
    destroy_non_fuel_fluid: Boolean | None = None
    fluid_usage_per_tick: FluidAmount | None = None
    maximum_temperature: Float | None = None


@dataclass
class FrameStyleSpecification:
    type: Literal["frame_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    graphical_set: ElementImageSet | None = None
    horizontal_flow_style: HorizontalFlowStyleSpecification | None = None
    vertical_flow_style: VerticalFlowStyleSpecification | None = None
    header_flow_style: HorizontalFlowStyleSpecification | None = None
    header_filler_style: EmptyWidgetStyleSpecification | None = None
    title_style: LabelStyleSpecification | None = None
    use_header_filler: Boolean | None = None
    drag_by_title: Boolean | None = None
    header_background: ElementImageSet | None = None
    background_graphical_set: ElementImageSet | None = None
    border: BorderImageSet | None = None


@dataclass
class FusionGeneratorDirectionGraphicsSet:
    animation: Animation | None = None
    working_light: Animation | None = None
    fusion_effect_uv_map: Sprite | None = None
    fluid_input_graphics: (
        list[FusionGeneratorFluidInputGraphics] | dict[str, Any] | None
    ) = None


@dataclass
class FusionGeneratorGraphicsSet:
    north_graphics_set: FusionGeneratorDirectionGraphicsSet
    east_graphics_set: FusionGeneratorDirectionGraphicsSet
    south_graphics_set: FusionGeneratorDirectionGraphicsSet
    west_graphics_set: FusionGeneratorDirectionGraphicsSet
    render_layer: RenderLayer | None = None
    light: LightDefinition | None = None
    glow_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class FusionReactorGraphicsSet:
    plasma_category: NeighbourConnectableConnectionCategory
    structure: Sprite4Way | None = None
    render_layer: RenderLayer | None = None
    default_fuel_glow_color: Color | None = None
    light: LightDefinition | None = None
    working_light_pictures: Sprite4Way | None = None
    use_fuel_glow_color: Boolean | None = None
    fusion_effect_uv_map: Sprite | None = None
    connections_graphics: (
        list[FusionReactorConnectionGraphics] | dict[str, Any] | None
    ) = None
    direction_to_connections_graphics: (
        dict[DirectionString, list[Uint8] | dict[str, Any]] | None
    ) = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class GlowStyleSpecification:
    type: Literal["glow_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    image_set: ElementImageSet | None = None


@dataclass
class HeatBuffer:
    max_temperature: Double
    specific_heat: Energy
    max_transfer: Energy
    default_temperature: Double | None = None
    min_temperature_gradient: Double | None = None
    min_working_temperature: Double | None = None
    minimum_glow_temperature: Float | None = None
    pipe_covers: Sprite4Way | None = None
    heat_pipe_covers: Sprite4Way | None = None
    heat_picture: Sprite4Way | None = None
    heat_glow: Sprite4Way | None = None
    connections: list[HeatConnection] | dict[str, Any] | None = None


@dataclass
class HeatEnergySource:
    type: Literal["heat"]
    max_temperature: Double
    specific_heat: Energy
    max_transfer: Energy
    emissions_per_minute: dict[AirbornePollutantID, Double] | None = None
    render_no_power_icon: Boolean | None = None
    render_no_network_icon: Boolean | None = None
    default_temperature: Double | None = None
    min_temperature_gradient: Double | None = None
    min_working_temperature: Double | None = None
    minimum_glow_temperature: Float | None = None
    pipe_covers: Sprite4Way | None = None
    heat_pipe_covers: Sprite4Way | None = None
    heat_picture: Sprite4Way | None = None
    heat_glow: Sprite4Way | None = None
    connections: list[HeatConnection] | dict[str, Any] | None = None


@dataclass
class ImageStyleSpecification:
    type: Literal["image_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    graphical_set: ElementImageSet | None = None
    stretch_image_to_widget_size: Boolean | None = None
    invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None


@dataclass
class InterruptibleSound:
    sound: Sound | None = None
    minimal_change_per_tick: Float | None = None
    stopped_sound: Sound | None = None
    minimal_sound_duration_for_stopped_sound: Uint16 | None = None
    fade_ticks: Uint32 | None = None


@dataclass
class LayeredSound1:
    layers: list[Sound] | dict[str, Any]


type LayeredSound = LayeredSound1 | Sound


@dataclass
class LoaderStructure:
    direction_in: Sprite4Way | None = None
    direction_out: Sprite4Way | None = None
    back_patch: Sprite4Way | None = None
    front_patch: Sprite4Way | None = None
    frozen_patch_in: Sprite4Way | None = None
    frozen_patch_out: Sprite4Way | None = None


@dataclass
class MainSound:
    sound: Sound | None = None
    probability: Double | None = None
    fade_in_ticks: Uint32 | None = None
    fade_out_ticks: Uint32 | None = None
    activity_to_volume_modifiers: ActivityMatchingModifiers | None = None
    activity_to_speed_modifiers: ActivityMatchingModifiers | None = None
    match_progress_to_activity: Boolean | None = None
    match_volume_to_activity: Boolean | None = None
    match_speed_to_activity: Boolean | None = None
    play_for_working_visualisations: list[String] | dict[str, Any] | None = None
    volume_smoothing_window_size: Uint32 | None = None


@dataclass
class MapGenPreset:
    order: Order
    default: Boolean | None = None
    basic_settings: MapGenSettings | None = None
    advanced_settings: AdvancedSettings | None = None


@dataclass
class MinimapStyleSpecification:
    type: Literal["minimap_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    graphical_set: ElementImageSet | None = None


@dataclass
class MiningDrillGraphicsSet:
    animation: Animation4Way | None = None
    idle_animation: Animation4Way | None = None
    always_draw_idle_animation: Boolean | None = None
    default_recipe_tint: GlobalRecipeTints | None = None
    recipe_not_set_tint: GlobalRecipeTints | None = None
    states: list[VisualState] | dict[str, Any] | None = None
    working_visualisations: (
        list[WorkingVisualisation]
        | dict[str, Any]
        | dict[str, WorkingVisualisation]
        | None
    ) = None
    shift_animation_waypoints: ShiftAnimationWaypoints | None = None
    shift_animation_waypoint_stop_duration: Uint16 | None = None
    shift_animation_transition_duration: Uint16 | None = None
    status_colors: StatusColors | None = None
    frozen_patch: Sprite4Way | None = None
    reset_animation_when_frozen: Boolean | None = None
    circuit_connector_layer: RenderLayer | CircuitConnectorLayer | None = None
    circuit_connector_secondary_draw_order: (
        Int8 | CircuitConnectorSecondaryDrawOrder | None
    ) = None
    drilling_vertical_movement_duration: Uint16 | None = None
    animation_progress: Float | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class OffshorePumpGraphicsSet:
    animation: Animation4Way | None = None
    base_render_layer: RenderLayer | None = None
    underwater_layer_offset: Int8 | None = None
    fluid_animation: Animation4Way | None = None
    glass_pictures: Sprite4Way | None = None
    base_pictures: Sprite4Way | None = None
    underwater_pictures: Sprite4Way | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class PersistentWorldAmbientSoundDefinition1:
    sound: Sound


type PersistentWorldAmbientSoundDefinition = (
    PersistentWorldAmbientSoundDefinition1 | Sound
)


@dataclass
class PlaySoundTriggerEffectItem:
    type: Literal["play-sound"]
    sound: Sound
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    min_distance: Float | None = None
    max_distance: Float | None = None
    play_on_target_position: Boolean | None = None


@dataclass
class PlumeEffect:
    animation: AnimationVariations | None = None
    shadow: AnimationVariations | None = None
    light: LightDefinition | None = None
    count: Uint16 | None = None
    min_count: Uint16 | None = None
    max_count: Uint16 | None = None
    period: Uint16 | None = None
    particle_tick_offset: Float | None = None
    probability: Float | None = None
    offset_x: RangedValue | None = None
    offset_y: RangedValue | None = None
    offset_z: RangedValue | None = None
    speed_x: RangedValue | None = None
    speed_y: RangedValue | None = None
    speed_z: RangedValue | None = None
    acceleration_x: Float | None = None
    acceleration_y: Float | None = None
    acceleration_z: Float | None = None
    movement_slowdown_factor_x: Float | None = None
    movement_slowdown_factor_y: Float | None = None
    movement_slowdown_factor_z: Float | None = None
    scale: RangedValue | None = None
    begin_scale: Float | None = None
    end_scale: Float | None = None
    fade_in_progress_duration: Float | None = None
    fade_out_progress_duration: Float | None = None
    spread_progress_duration: Float | None = None
    adjust_animation_speed_by_base_scale: Boolean | None = None
    affected_by_wind: Boolean | None = None
    render_layer: RenderLayer | None = None
    positions: list[Vector] | dict[str, Any] | None = None
    nested_visualisations: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    can_lay_on_the_ground: Boolean | None = None
    age_discrimination: Int8 | None = None


@dataclass
class PlumesSpecification:
    render_box: BoundingBox | None = None
    min_probability: Float | None = None
    max_probability: Float | None = None
    min_y_offset: Float | None = None
    max_y_offset: Float | None = None
    stateless_visualisations: (
        PlumeEffect | list[PlumeEffect] | dict[str, Any] | None
    ) = None


@dataclass
class PodAnimationProcessionLayer:
    type: Literal["pod-animation"]
    frames: list[Frame1] | dict[str, Any]
    graphic: ProcessionGraphic | None = None


@dataclass
class ProcessionAudio:
    type: ProcessionAudioType
    sound: Sound | None = None
    looped_sound: InterruptibleSound | None = None
    catalogue_id: Uint32 | None = None


@dataclass
class ProcessionAudioCatalogueItem:
    index: Uint32
    sound: Sound | None = None
    looped_sound: InterruptibleSound | None = None


@dataclass
class ProcessionAudioEvent:
    type: ProcessionAudioEventType
    usage: ProcessionAudioUsage | None = None
    audio: ProcessionAudio | None = None
    loop_id: Uint32 | None = None


type ProcessionGraphicCatalogue = (
    list[ProcessionGraphicCatalogueItem] | dict[str, Any]
)


type ProcessionLayer = (
    PodDistanceTraveledProcessionLayer
    | PodMovementProcessionLayer
    | PodOpacityProcessionLayer
    | SingleGraphicProcessionLayer
    | CoverGraphicProcessionLayer
    | TintProcessionLayer
    | PodAnimationProcessionLayer
)


@dataclass
class ProcessionTimeline:
    duration: MapTick
    layers: list[ProcessionLayer] | dict[str, Any]
    special_action_tick: MapTick | None = None
    draw_switch_tick: MapTick | None = None
    intermezzo_min_duration: MapTick | None = None
    intermezzo_max_duration: MapTick | None = None
    audio_events: list[ProcessionAudioEvent] | dict[str, Any] | None = None


@dataclass
class ProgrammableSpeakerNote:
    name: String
    sound: Sound | None = None
    cyclic_sound: CyclicSound | None = None


@dataclass
class OtherColor:
    less_than: Double
    color: Color | None = None
    bar: ElementImageSet | None = None


@dataclass
class ProgressBarStyleSpecification:
    type: Literal["progressbar_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    bar_width: Uint32 | None = None
    color: Color | None = None
    other_colors: list[OtherColor] | dict[str, Any] | None = None
    bar: ElementImageSet | None = None
    bar_background: ElementImageSet | None = None
    font: String | None = None
    font_color: Color | None = None
    filled_font_color: Color | None = None
    embed_text_in_bar: Boolean | None = None
    side_text_padding: Int16 | None = None


@dataclass
class RadioButtonStyleSpecification:
    type: Literal["radiobutton_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    default_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    disabled_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    game_controller_selected_hovered_graphical_set: ElementImageSet | None = (
        None
    )
    selected_clicked_graphical_set: ElementImageSet | None = None
    left_click_sound: Sound | None = None
    font: String | None = None
    font_color: Color | None = None
    disabled_font_color: Color | None = None
    text_padding: Uint32 | None = None


@dataclass
class RailFenceGraphicsSet:
    segment_count: Uint8
    side_A: RailFencePictureSet
    side_B: RailFencePictureSet
    back_fence_render_layer: RenderLayer | None = None
    front_fence_render_layer: RenderLayer | None = None
    back_fence_render_layer_secondary: RenderLayer | None = None
    front_fence_render_layer_secondary: RenderLayer | None = None


@dataclass
class RailPictureSet:
    north: RailPieceLayers
    northeast: RailPieceLayers
    east: RailPieceLayers
    southeast: RailPieceLayers
    south: RailPieceLayers
    southwest: RailPieceLayers
    west: RailPieceLayers
    northwest: RailPieceLayers
    render_layers: RailRenderLayers
    front_rail_endings: Sprite16Way | None = None
    back_rail_endings: Sprite16Way | None = None
    rail_endings: Sprite16Way | None = None
    segment_visualisation_endings: RotatedAnimation | None = None
    secondary_render_layers: RailRenderLayers | None = None
    slice_origin: SliceOrigin | None = None
    fog_mask: FogMask | None = None


@dataclass
class RollingStockRotatedSlopedGraphics:
    rotated: RotatedSprite
    sloped: RotatedSprite | None = None
    slope_back_equals_front: Boolean | None = None
    slope_angle_between_frames: Double | None = None


@dataclass
class SelectionModeData:
    border_color: Color
    cursor_box_type: CursorBoxType
    mode: SelectionModeFlags
    count_button_color: Color | None = None
    chart_color: Color | None = None
    entity_filters: list[EntityID] | dict[str, Any] | None = None
    entity_type_filters: list[String] | dict[str, Any] | None = None
    tile_filters: list[TileID] | dict[str, Any] | None = None
    started_sound: Sound | None = None
    ended_sound: Sound | None = None
    play_ended_sound_when_nothing_selected: Boolean | None = None
    entity_filter_mode: EntityFilterMode | None = None
    tile_filter_mode: TileFilterMode | None = None


@dataclass
class SemiPersistentWorldAmbientSoundDefinition1:
    sound: Sound
    delay_mean_seconds: Float | None = None
    delay_variance_seconds: Float | None = None


type SemiPersistentWorldAmbientSoundDefinition = (
    SemiPersistentWorldAmbientSoundDefinition1 | Sound
)


@dataclass
class SpeechBubbleStyleSpecification:
    type: Literal["speech_bubble_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    frame_style: FrameStyleSpecification | None = None
    label_style: LabelStyleSpecification | None = None
    arrow_graphical_set: ElementImageSet | None = None
    close_color: Color | None = None
    arrow_indent: Double | None = None
    pass_through_mouse: Boolean | None = None


@dataclass
class TabStyleSpecification:
    type: Literal["tab_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    default_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    disabled_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    game_controller_selected_hovered_graphical_set: ElementImageSet | None = (
        None
    )
    selected_clicked_graphical_set: ElementImageSet | None = None
    left_click_sound: Sound | None = None
    font: String | None = None
    badge_font: String | None = None
    badge_horizontal_spacing: Int16 | None = None
    default_font_color: Color | None = None
    selected_font_color: Color | None = None
    disabled_font_color: Color | None = None
    default_badge_font_color: Color | None = None
    selected_badge_font_color: Color | None = None
    disabled_badge_font_color: Color | None = None
    override_graphics_on_edges: Boolean | None = None
    increase_height_when_selected: Boolean | None = None
    left_edge_selected_graphical_set: ElementImageSet | None = None
    right_edge_selected_graphical_set: ElementImageSet | None = None
    default_badge_graphical_set: ElementImageSet | None = None
    selected_badge_graphical_set: ElementImageSet | None = None
    hover_badge_graphical_set: ElementImageSet | None = None
    press_badge_graphical_set: ElementImageSet | None = None
    disabled_badge_graphical_set: ElementImageSet | None = None
    draw_grayscale_picture: Boolean | None = None


@dataclass
class TechnologySlotStyleSpecification:
    type: Literal["technology_slot_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    default_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    disabled_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    game_controller_selected_hovered_graphical_set: ElementImageSet | None = (
        None
    )
    selected_clicked_graphical_set: ElementImageSet | None = None
    left_click_sound: Sound | None = None
    font: String | None = None
    default_font_color: Color | None = None
    hovered_font_color: Color | None = None
    clicked_font_color: Color | None = None
    disabled_font_color: Color | None = None
    selected_font_color: Color | None = None
    selected_hovered_font_color: Color | None = None
    selected_clicked_font_color: Color | None = None
    strikethrough_color: Color | None = None
    pie_progress_color: Color | None = None
    clicked_vertical_offset: Uint32 | None = None
    draw_shadow_under_picture: Boolean | None = None
    draw_grayscale_picture: Boolean | None = None
    invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None
    invert_colors_of_picture_when_disabled: Boolean | None = None
    icon_horizontal_align: HorizontalAlign | None = None
    highlighted_graphical_set: ElementImageSet | None = None
    default_background_shadow: ElementImageSet | None = None
    level_band: ElementImageSet | None = None
    hovered_level_band: ElementImageSet | None = None
    level_offset_x: Int32 | None = None
    level_offset_y: Int32 | None = None
    level_band_width: Uint32 | None = None
    level_band_height: Uint32 | None = None
    level_font: String | None = None
    level_range_font: String | None = None
    level_font_color: Color | None = None
    hovered_level_font_color: Color | None = None
    level_range_font_color: Color | None = None
    hovered_level_range_font_color: Color | None = None
    level_range_band: ElementImageSet | None = None
    hovered_level_range_band: ElementImageSet | None = None
    level_range_offset_x: Int32 | None = None
    level_range_offset_y: Int32 | None = None
    ingredients_height: Uint32 | None = None
    default_ingredients_background: ElementImageSet | None = None
    hovered_ingredients_background: ElementImageSet | None = None
    clicked_ingredients_background: ElementImageSet | None = None
    disabled_ingredients_background: ElementImageSet | None = None
    highlighted_ingredients_background: ElementImageSet | None = None
    ingredients_padding: Uint32 | None = None
    ingredient_icon_size: Uint32 | None = None
    ingredient_icon_overlap: Uint32 | None = None
    clicked_overlay: ElementImageSet | None = None
    progress_bar_background: ElementImageSet | None = None
    progress_bar: ElementImageSet | None = None
    progress_bar_shadow: ElementImageSet | None = None
    progress_bar_height: Uint32 | None = None
    progress_bar_color: Color | None = None
    drag_handle_style: EmptyWidgetStyleSpecification | None = None


@dataclass
class TextBoxStyleSpecification:
    type: Literal["textbox_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    font: String | None = None
    font_color: Color | None = None
    disabled_font_color: Color | None = None
    selection_background_color: Color | None = None
    default_background: ElementImageSet | None = None
    active_background: ElementImageSet | None = None
    game_controller_hovered_background: ElementImageSet | None = None
    disabled_background: ElementImageSet | None = None
    rich_text_setting: RichTextSetting | None = None
    rich_text_highlight_error_color: Color | None = None
    rich_text_highlight_warning_color: Color | None = None
    rich_text_highlight_ok_color: Color | None = None
    selected_rich_text_highlight_error_color: Color | None = None
    selected_rich_text_highlight_warning_color: Color | None = None
    selected_rich_text_highlight_ok_color: Color | None = None


@dataclass
class ThrusterGraphicsSet:
    animation: Animation4Way | None = None
    idle_animation: Animation4Way | None = None
    always_draw_idle_animation: Boolean | None = None
    default_recipe_tint: GlobalRecipeTints | None = None
    recipe_not_set_tint: GlobalRecipeTints | None = None
    states: list[VisualState] | dict[str, Any] | None = None
    working_visualisations: (
        list[WorkingVisualisation]
        | dict[str, Any]
        | dict[str, WorkingVisualisation]
        | None
    ) = None
    shift_animation_waypoints: ShiftAnimationWaypoints | None = None
    shift_animation_waypoint_stop_duration: Uint16 | None = None
    shift_animation_transition_duration: Uint16 | None = None
    status_colors: StatusColors | None = None
    flame: Sprite | None = None
    flame_effect: EffectTexture | None = None
    flame_position: Vector | None = None
    flame_effect_height: Float | None = None
    flame_effect_width: Float | None = None
    flame_half_height: Float | None = None
    flame_effect_offset: Float | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class WorkingSound1:
    sound: Sound | None = None
    probability: Double | None = None
    fade_in_ticks: Uint32 | None = None
    fade_out_ticks: Uint32 | None = None
    activity_to_volume_modifiers: ActivityMatchingModifiers | None = None
    activity_to_speed_modifiers: ActivityMatchingModifiers | None = None
    match_progress_to_activity: Boolean | None = None
    match_volume_to_activity: Boolean | None = None
    match_speed_to_activity: Boolean | None = None
    play_for_working_visualisations: list[String] | dict[str, Any] | None = None
    volume_smoothing_window_size: Uint32 | None = None
    main_sounds: MainSound | list[MainSound] | dict[str, Any] | None = None
    max_sounds_per_prototype: Uint8 | None = None
    extra_sounds_ignore_limit: Boolean | None = None
    persistent: Boolean | None = None
    use_doppler_shift: Boolean | None = None
    idle_sound: Sound | None = None
    activate_sound: Sound | None = None
    deactivate_sound: Sound | None = None
    sound_accents: SoundAccent | list[SoundAccent] | dict[str, Any] | None = (
        None
    )


type WorkingSound = WorkingSound1 | Sound


@dataclass
class ProcessionPrototype:
    type: Literal["procession"]
    name: String
    timeline: ProcessionTimeline
    usage: Usage
    procession_style: Uint32 | list[Uint32] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    ground_timeline: ProcessionTimeline | None = None


@dataclass
class Instrument:
    name: String
    notes: list[ProgrammableSpeakerNote] | dict[str, Any]


@dataclass
class UtilitySounds:
    type: Literal["utility-sounds"]
    name: String
    gui_click: Sound
    list_box_click: Sound
    build_small: Sound
    build_medium: Sound
    build_large: Sound
    build_huge: Sound
    cannot_build: Sound
    build_blueprint_small: Sound
    build_blueprint_medium: Sound
    build_blueprint_large: Sound
    build_blueprint_huge: Sound
    build_ghost_upgrade: Sound
    build_ghost_upgrade_cancel: Sound
    build_animated_small: Sound
    build_animated_medium: Sound
    build_animated_large: Sound
    build_animated_huge: Sound
    deconstruct_small: Sound
    deconstruct_medium: Sound
    deconstruct_large: Sound
    deconstruct_huge: Sound
    deconstruct_robot: Sound
    rotated_small: Sound
    rotated_medium: Sound
    rotated_large: Sound
    rotated_huge: Sound
    axe_mining_ore: Sound
    axe_mining_stone: Sound
    mining_wood: Sound
    axe_fighting: Sound
    alert_destroyed: Sound
    console_message: Sound
    scenario_message: Sound
    new_objective: Sound
    game_lost: Sound
    game_won: Sound
    metal_walking_sound: Sound
    research_completed: Sound
    default_manual_repair: Sound
    crafting_finished: Sound
    inventory_click: Sound
    inventory_move: Sound
    clear_cursor: Sound
    armor_insert: Sound
    armor_remove: Sound
    achievement_unlocked: Sound
    wire_connect_pole: Sound
    wire_disconnect: Sound
    wire_pickup: Sound
    tutorial_notice: Sound
    smart_pipette: Sound
    switch_gun: Sound
    picked_up_item: Sound
    paste_activated: Sound
    item_deleted: Sound
    entity_settings_pasted: Sound
    entity_settings_copied: Sound
    item_spawned: Sound
    confirm: Sound
    undo: Sound
    drop_item: Sound
    rail_plan_start: Sound
    default_driving_sound: InterruptibleSound
    default_landing_steps: Sound
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    segment_dying_sound: Sound | None = None


@dataclass
class ActivityBarStyleSpecification:
    type: Literal["activity_bar_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    speed: Float | None = None
    bar_width: Uint32 | None = None
    color: Color | None = None
    bar_background: ElementImageSet | None = None
    bar: ElementImageSet | None = None
    bar_size_ratio: Float | None = None


@dataclass
class ButtonStyleSpecification:
    type: Literal["button_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    default_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    disabled_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    game_controller_selected_hovered_graphical_set: ElementImageSet | None = (
        None
    )
    selected_clicked_graphical_set: ElementImageSet | None = None
    left_click_sound: Sound | None = None
    font: String | None = None
    default_font_color: Color | None = None
    hovered_font_color: Color | None = None
    clicked_font_color: Color | None = None
    disabled_font_color: Color | None = None
    selected_font_color: Color | None = None
    selected_hovered_font_color: Color | None = None
    selected_clicked_font_color: Color | None = None
    strikethrough_color: Color | None = None
    pie_progress_color: Color | None = None
    clicked_vertical_offset: Uint32 | None = None
    draw_shadow_under_picture: Boolean | None = None
    draw_grayscale_picture: Boolean | None = None
    invert_colors_of_picture_when_hovered_or_toggled: Boolean | None = None
    invert_colors_of_picture_when_disabled: Boolean | None = None
    icon_horizontal_align: HorizontalAlign | None = None


@dataclass
class CameraStyleSpecification:
    type: Literal["camera_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    graphical_set: ElementImageSet | None = None


@dataclass
class CargoBayConnectableGraphicsSet:
    picture: LayeredSprite | None = None
    animation: Animation | None = None
    animation_render_layer: RenderLayer | None = None
    connections: CargoBayConnections | None = None
    water_reflection: WaterReflectionDefinition | None = None


@dataclass
class CargoHatchDefinition:
    hatch_graphics: Animation | None = None
    hatch_render_layer: RenderLayer | None = None
    entering_render_layer: RenderLayer | None = None
    offset: Vector | None = None
    pod_shadow_offset: Vector | None = None
    sky_slice_height: Float | None = None
    slice_height: Float | None = None
    travel_height: Float | None = None
    busy_timeout_ticks: Uint32 | None = None
    hatch_opening_ticks: Uint32 | None = None
    opening_sound: InterruptibleSound | None = None
    closing_sound: InterruptibleSound | None = None
    cargo_unit_entity_to_spawn: EntityID | None = None
    illumination_graphic_index: Uint32 | None = None
    receiving_cargo_units: list[EntityID] | dict[str, Any] | None = None


@dataclass
class CheckBoxStyleSpecification:
    type: Literal["checkbox_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    default_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    disabled_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    game_controller_selected_hovered_graphical_set: ElementImageSet | None = (
        None
    )
    selected_clicked_graphical_set: ElementImageSet | None = None
    left_click_sound: Sound | None = None
    font: String | None = None
    font_color: Color | None = None
    disabled_font_color: Color | None = None
    checkmark: Sprite | None = None
    disabled_checkmark: Sprite | None = None
    intermediate_mark: Sprite | None = None
    text_padding: Uint32 | None = None


@dataclass
class CircuitConnectorDefinition:
    sprites: CircuitConnectorSprites | None = None
    points: WireConnectionPoint | None = None


@dataclass
class CranePart:
    orientation_shift: Float | None = None
    is_contractible_by_cropping: Boolean | None = None
    should_scale_for_perspective: Boolean | None = None
    scale_to_fit_model: Boolean | None = None
    allow_sprite_rotation: Boolean | None = None
    snap_start: Float | None = None
    snap_end: Float | None = None
    snap_end_arm_extent_multiplier: Float | None = None
    name: String | None = None
    dying_effect: CranePartDyingEffect | None = None
    relative_position: Vector3D | None = None
    relative_position_grappler: Vector3D | None = None
    static_length: Vector3D | None = None
    extendable_length: Vector3D | None = None
    static_length_grappler: Vector3D | None = None
    extendable_length_grappler: Vector3D | None = None
    sprite: Sprite | None = None
    rotated_sprite: RotatedSprite | None = None
    sprite_shadow: Sprite | None = None
    rotated_sprite_shadow: RotatedSprite | None = None
    sprite_reflection: Sprite | None = None
    rotated_sprite_reflection: RotatedSprite | None = None
    layer: Int8 | None = None


@dataclass
class DoubleSliderStyleSpecification:
    type: Literal["double_slider_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    full_bar: ElementImageSet | None = None
    full_bar_disabled: ElementImageSet | None = None
    empty_bar: ElementImageSet | None = None
    empty_bar_disabled: ElementImageSet | None = None
    draw_notches: Boolean | None = None
    notch: ElementImageSet | None = None
    button: ButtonStyleSpecification | None = None
    high_button: ButtonStyleSpecification | None = None


type EnergySource = (
    ElectricEnergySource
    | BurnerEnergySource
    | HeatEnergySource
    | FluidEnergySource
    | VoidEnergySource
)


@dataclass
class GigaCargoHatchDefinition:
    covered_hatches: list[Uint32] | dict[str, Any]
    hatch_graphics_back: Animation | None = None
    hatch_graphics_front: Animation | None = None
    hatch_render_layer_back: RenderLayer | None = None
    hatch_render_layer_front: RenderLayer | None = None
    opening_sound: InterruptibleSound | None = None
    closing_sound: InterruptibleSound | None = None


@dataclass
class HorizontalScrollBarStyleSpecification:
    type: Literal["horizontal_scrollbar_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    background_graphical_set: ElementImageSet | None = None
    thumb_button_style: ButtonStyleSpecification | None = None


@dataclass
class PersistentWorldAmbientSoundsDefinition:
    base_ambience: (
        PersistentWorldAmbientSoundDefinition
        | list[PersistentWorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    wind: (
        PersistentWorldAmbientSoundDefinition
        | list[PersistentWorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    crossfade: PersistentWorldAmbientSoundsDefinitionCrossfade | None = None
    semi_persistent: (
        SemiPersistentWorldAmbientSoundDefinition
        | list[SemiPersistentWorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None


type ProcessionAudioCatalogue = (
    list[ProcessionAudioCatalogueItem] | dict[str, Any]
)


@dataclass
class RailSignalPictureSet:
    structure: RotatedAnimation
    signal_color_to_structure_frame_index: RailSignalColorToFrameIndex
    lights: RailSignalLights
    structure_render_layer: RenderLayer | None = None
    rail_piece: RailSignalStaticSpriteLayer | None = None
    upper_rail_piece: RailSignalStaticSpriteLayer | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None
    circuit_connector_render_layer: RenderLayer | None = None
    structure_align_to_animation_index: list[Uint8] | dict[str, Any] | None = (
        None
    )
    selection_box_shift: list[Vector] | dict[str, Any] | None = None


@dataclass
class SliderStyleSpecification:
    type: Literal["slider_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    full_bar: ElementImageSet | None = None
    full_bar_disabled: ElementImageSet | None = None
    empty_bar: ElementImageSet | None = None
    empty_bar_disabled: ElementImageSet | None = None
    draw_notches: Boolean | None = None
    notch: ElementImageSet | None = None
    button: ButtonStyleSpecification | None = None
    high_button: ButtonStyleSpecification | None = None


@dataclass
class SwitchStyleSpecification:
    type: Literal["switch_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    left_button_position: Uint32 | None = None
    middle_button_position: Uint32 | None = None
    right_button_position: Uint32 | None = None
    default_background: Sprite | None = None
    hover_background: Sprite | None = None
    disabled_background: Sprite | None = None
    button: ButtonStyleSpecification | None = None
    active_label: LabelStyleSpecification | None = None
    inactive_label: LabelStyleSpecification | None = None


@dataclass
class TableStyleSpecification:
    type: Literal["table_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    horizontal_spacing: Int32 | list[SpacingItem] | dict[str, Any] | None = None
    vertical_spacing: Int32 | list[SpacingItem] | dict[str, Any] | None = None
    cell_padding: Int16 | None = None
    top_cell_padding: Int16 | None = None
    right_cell_padding: Int16 | None = None
    bottom_cell_padding: Int16 | None = None
    left_cell_padding: Int16 | None = None
    apply_row_graphical_set_per_column: Boolean | None = None
    wide_as_column_count: Boolean | None = None
    column_graphical_set: ElementImageSet | None = None
    default_row_graphical_set: ElementImageSet | None = None
    even_row_graphical_set: ElementImageSet | None = None
    odd_row_graphical_set: ElementImageSet | None = None
    hovered_graphical_set: ElementImageSet | None = None
    clicked_graphical_set: ElementImageSet | None = None
    selected_graphical_set: ElementImageSet | None = None
    selected_hovered_graphical_set: ElementImageSet | None = None
    selected_clicked_graphical_set: ElementImageSet | None = None
    background_graphical_set: ElementImageSet | None = None
    column_alignments: list[ColumnAlignment] | dict[str, Any] | None = None
    column_widths: (
        ColumnWidthItem | list[ColumnWidth] | dict[str, Any] | None
    ) = None
    hovered_row_color: Color | None = None
    selected_row_color: Color | None = None
    vertical_line_color: Color | None = None
    horizontal_line_color: Color | None = None
    column_ordering_ascending_button_style: ButtonStyleSpecification | None = (
        None
    )
    column_ordering_descending_button_style: ButtonStyleSpecification | None = (
        None
    )
    inactive_column_ordering_ascending_button_style: (
        ButtonStyleSpecification | None
    ) = None
    inactive_column_ordering_descending_button_style: (
        ButtonStyleSpecification | None
    ) = None
    border: BorderImageSet | None = None


@dataclass
class VerticalScrollBarStyleSpecification:
    type: Literal["vertical_scrollbar_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    background_graphical_set: ElementImageSet | None = None
    thumb_button_style: ButtonStyleSpecification | None = None


@dataclass
class SpaceLocationPrototype:
    type: Literal["space-location"]
    name: String
    distance: Double
    orientation: RealOrientation
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    gravity_pull: Double | None = None
    magnitude: Double | None = None
    parked_platforms_orientation: RealOrientation | None = None
    label_orientation: RealOrientation | None = None
    draw_orbit: Boolean | None = None
    solar_power_in_space: Double | None = None
    asteroid_spawn_influence: Double | None = None
    fly_condition: Boolean | None = None
    auto_save_on_first_trip: Boolean | None = None
    procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None
    procession_audio_catalogue: ProcessionAudioCatalogue | None = None
    platform_procession_set: ProcessionSet | None = None
    planet_procession_set: ProcessionSet | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    starmap_icons: list[IconData] | dict[str, Any] | None = None
    starmap_icon: FileName | None = None
    starmap_icon_size: SpriteSizeType | None = None
    starmap_icon_orientation: RealOrientation | None = None
    asteroid_spawn_definitions: (
        list[SpaceLocationAsteroidSpawnDefinition] | dict[str, Any] | None
    ) = None


@dataclass
class AgriculturalCraneProperties:
    speed: AgriculturalCraneSpeed
    origin: Vector3D
    shadow_direction: Vector3D
    parts: list[CranePart] | dict[str, Any]
    min_arm_extent: Double | None = None
    min_grappler_extent: Double | None = None
    operation_angle: Float | None = None
    telescope_default_extention: Double | None = None


@dataclass
class CargoStationParameters:
    prefer_packed_cargo_units: Boolean | None = None
    hatch_definitions: list[CargoHatchDefinition] | dict[str, Any] | None = None
    giga_hatch_definitions: (
        list[GigaCargoHatchDefinition] | dict[str, Any] | None
    ) = None
    is_input_station: Boolean | None = None
    is_output_station: Boolean | None = None


@dataclass
class ScrollPaneStyleSpecification:
    type: Literal["scroll_pane_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    vertical_flow_style: VerticalFlowStyleSpecification | None = None
    horizontal_scrollbar_style: HorizontalScrollBarStyleSpecification | None = (
        None
    )
    vertical_scrollbar_style: VerticalScrollBarStyleSpecification | None = None
    graphical_set: ElementImageSet | None = None
    background_graphical_set: ElementImageSet | None = None
    extra_padding_when_activated: Int32 | None = None
    extra_top_padding_when_activated: Int32 | None = None
    extra_bottom_padding_when_activated: Int32 | None = None
    extra_left_padding_when_activated: Int32 | None = None
    extra_right_padding_when_activated: Int32 | None = None
    extra_margin_when_activated: Int32 | None = None
    extra_top_margin_when_activated: Int32 | None = None
    extra_bottom_margin_when_activated: Int32 | None = None
    extra_left_margin_when_activated: Int32 | None = None
    extra_right_margin_when_activated: Int32 | None = None
    dont_force_clipping_rect_for_contents: Boolean | None = None
    always_draw_borders: Boolean | None = None
    scrollbars_go_outside: Boolean | None = None


@dataclass
class TabbedPaneStyleSpecification:
    type: Literal["tabbed_pane_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    vertical_spacing: Uint32 | None = None
    tab_content_frame: FrameStyleSpecification | None = None
    tab_container: TableStyleSpecification | None = None


@dataclass
class ListBoxStyleSpecification:
    type: Literal["list_box_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    item_style: ButtonStyleSpecification | None = None
    scroll_pane_style: ScrollPaneStyleSpecification | None = None


@dataclass
class DropDownStyleSpecification:
    type: Literal["dropdown_style"]
    parent: String | None = None
    horizontal_align: HorizontalAlign | None = None
    vertical_align: VerticalAlign | None = None
    ignored_by_search: Boolean | None = None
    never_hide_by_search: Boolean | None = None
    horizontally_stretchable: StretchRule | None = None
    vertically_stretchable: StretchRule | None = None
    horizontally_squashable: StretchRule | None = None
    vertically_squashable: StretchRule | None = None
    natural_size: Uint32 | list[Uint32] | None = None
    size: Uint32 | list[Uint32] | None = None
    width: Uint32 | None = None
    minimal_width: Uint32 | None = None
    maximal_width: Uint32 | None = None
    natural_width: Uint32 | None = None
    height: Uint32 | None = None
    minimal_height: Uint32 | None = None
    maximal_height: Uint32 | None = None
    natural_height: Uint32 | None = None
    padding: Int16 | None = None
    top_padding: Int16 | None = None
    right_padding: Int16 | None = None
    bottom_padding: Int16 | None = None
    left_padding: Int16 | None = None
    margin: Int16 | None = None
    top_margin: Int16 | None = None
    right_margin: Int16 | None = None
    bottom_margin: Int16 | None = None
    left_margin: Int16 | None = None
    effect: Effect | None = None
    effect_opacity: Float | None = None
    tooltip: LocalisedString | None = None
    button_style: ButtonStyleSpecification | None = None
    icon: Sprite | None = None
    list_box_style: ListBoxStyleSpecification | None = None
    selector_and_title_spacing: Int16 | None = None
    opened_sound: Sound | None = None


type StyleSpecification = (
    ActivityBarStyleSpecification
    | ButtonStyleSpecification
    | CameraStyleSpecification
    | CheckBoxStyleSpecification
    | DropDownStyleSpecification
    | FlowStyleSpecification
    | FrameStyleSpecification
    | GraphStyleSpecification
    | HorizontalFlowStyleSpecification
    | LineStyleSpecification
    | ImageStyleSpecification
    | LabelStyleSpecification
    | ListBoxStyleSpecification
    | ProgressBarStyleSpecification
    | RadioButtonStyleSpecification
    | HorizontalScrollBarStyleSpecification
    | VerticalScrollBarStyleSpecification
    | ScrollPaneStyleSpecification
    | SliderStyleSpecification
    | SwitchStyleSpecification
    | TableStyleSpecification
    | TabStyleSpecification
    | TextBoxStyleSpecification
    | VerticalFlowStyleSpecification
    | TabbedPaneStyleSpecification
    | EmptyWidgetStyleSpecification
    | MinimapStyleSpecification
    | TechnologySlotStyleSpecification
    | GlowStyleSpecification
    | SpeechBubbleStyleSpecification
    | DoubleSliderStyleSpecification
)


@dataclass
class FactorioDataRaw:
    accumulator: dict[str, AccumulatorPrototype] | None = None
    achievement: dict[str, AchievementPrototype] | None = None
    active_defense_equipment: (
        dict[str, ActiveDefenseEquipmentPrototype] | None
    ) = None
    agricultural_tower: dict[str, AgriculturalTowerPrototype] | None = None
    airborne_pollutant: dict[str, AirbornePollutantPrototype] | None = None
    ambient_sound: dict[str, AmbientSound] | None = None
    ammo_category: dict[str, AmmoCategory] | None = None
    ammo: dict[str, AmmoItemPrototype] | None = None
    ammo_turret: dict[str, AmmoTurretPrototype] | None = None
    animation: dict[str, AnimationPrototype] | None = None
    arithmetic_combinator: dict[str, ArithmeticCombinatorPrototype] | None = (
        None
    )
    armor: dict[str, ArmorPrototype] | None = None
    arrow: dict[str, ArrowPrototype] | None = None
    artillery_flare: dict[str, ArtilleryFlarePrototype] | None = None
    artillery_projectile: dict[str, ArtilleryProjectilePrototype] | None = None
    artillery_turret: dict[str, ArtilleryTurretPrototype] | None = None
    artillery_wagon: dict[str, ArtilleryWagonPrototype] | None = None
    assembling_machine: dict[str, AssemblingMachinePrototype] | None = None
    asteroid_chunk: dict[str, AsteroidChunkPrototype] | None = None
    asteroid_collector: dict[str, AsteroidCollectorPrototype] | None = None
    asteroid: dict[str, AsteroidPrototype] | None = None
    autoplace_control: dict[str, AutoplaceControl] | None = None
    battery_equipment: dict[str, BatteryEquipmentPrototype] | None = None
    beacon: dict[str, BeaconPrototype] | None = None
    beam: dict[str, BeamPrototype] | None = None
    belt_immunity_equipment: (
        dict[str, BeltImmunityEquipmentPrototype] | None
    ) = None
    blueprint_book: dict[str, BlueprintBookPrototype] | None = None
    blueprint: dict[str, BlueprintItemPrototype] | None = None
    boiler: dict[str, BoilerPrototype] | None = None
    build_entity_achievement: (
        dict[str, BuildEntityAchievementPrototype] | None
    ) = None
    burner_generator: dict[str, BurnerGeneratorPrototype] | None = None
    burner_usage: dict[str, BurnerUsagePrototype] | None = None
    capsule: dict[str, CapsulePrototype] | None = None
    capture_robot: dict[str, CaptureRobotPrototype] | None = None
    car: dict[str, CarPrototype] | None = None
    cargo_bay: dict[str, CargoBayPrototype] | None = None
    cargo_landing_pad: dict[str, CargoLandingPadPrototype] | None = None
    cargo_pod: dict[str, CargoPodPrototype] | None = None
    cargo_wagon: dict[str, CargoWagonPrototype] | None = None
    chain_active_trigger: dict[str, ChainActiveTriggerPrototype] | None = None
    change_surface_achievement: (
        dict[str, ChangedSurfaceAchievementPrototype] | None
    ) = None
    character_corpse: dict[str, CharacterCorpsePrototype] | None = None
    character: dict[str, CharacterPrototype] | None = None
    cliff: dict[str, CliffPrototype] | None = None
    collision_layer: dict[str, CollisionLayerPrototype] | None = None
    combat_robot_count_achievement: (
        dict[str, CombatRobotCountAchievementPrototype] | None
    ) = None
    combat_robot: dict[str, CombatRobotPrototype] | None = None
    complete_objective_achievement: (
        dict[str, CompleteObjectiveAchievementPrototype] | None
    ) = None
    constant_combinator: dict[str, ConstantCombinatorPrototype] | None = None
    construct_with_robots_achievement: (
        dict[str, ConstructWithRobotsAchievementPrototype] | None
    ) = None
    construction_robot: dict[str, ConstructionRobotPrototype] | None = None
    container: dict[str, ContainerPrototype] | None = None
    copy_paste_tool: dict[str, CopyPasteToolPrototype] | None = None
    corpse: dict[str, CorpsePrototype] | None = None
    create_platform_achievement: (
        dict[str, CreatePlatformAchievementPrototype] | None
    ) = None
    curved_rail_a: dict[str, CurvedRailAPrototype] | None = None
    curved_rail_b: dict[str, CurvedRailBPrototype] | None = None
    custom_event: dict[str, CustomEventPrototype] | None = None
    custom_input: dict[str, CustomInputPrototype] | None = None
    damage_type: dict[str, DamageType] | None = None
    decider_combinator: dict[str, DeciderCombinatorPrototype] | None = None
    deconstruct_with_robots_achievement: (
        dict[str, DeconstructWithRobotsAchievementPrototype] | None
    ) = None
    deconstructible_tile_proxy: (
        dict[str, DeconstructibleTileProxyPrototype] | None
    ) = None
    deconstruction_item: dict[str, DeconstructionItemPrototype] | None = None
    optimized_decorative: dict[str, DecorativePrototype] | None = None
    delayed_active_trigger: dict[str, DelayedActiveTriggerPrototype] | None = (
        None
    )
    deliver_by_robots_achievement: (
        dict[str, DeliverByRobotsAchievementPrototype] | None
    ) = None
    deliver_category: dict[str, DeliverCategory] | None = None
    deliver_impact_combination: dict[str, DeliverImpactCombination] | None = (
        None
    )
    deplete_resource_achievement: (
        dict[str, DepleteResourceAchievementPrototype] | None
    ) = None
    destroy_cliff_achievement: (
        dict[str, DestroyCliffAchievementPrototype] | None
    ) = None
    display_panel: dict[str, DisplayPanelPrototype] | None = None
    dont_build_entity_achievement: (
        dict[str, DontBuildEntityAchievementPrototype] | None
    ) = None
    dont_craft_manually_achievement: (
        dict[str, DontCraftManuallyAchievementPrototype] | None
    ) = None
    dont_kill_manually_achievement: (
        dict[str, DontKillManuallyAchievementPrototype] | None
    ) = None
    dont_research_before_researching_achievement: (
        dict[str, DontResearchBeforeResearchingAchievementPrototype] | None
    ) = None
    dont_use_entity_in_energy_production_achievement: (
        dict[str, DontUseEntityInEnergyProductionAchievementPrototype] | None
    ) = None
    editor_controller: dict[str, EditorControllerPrototype] | None = None
    electric_energy_interface: (
        dict[str, ElectricEnergyInterfacePrototype] | None
    ) = None
    electric_pole: dict[str, ElectricPolePrototype] | None = None
    electric_turret: dict[str, ElectricTurretPrototype] | None = None
    elevated_curved_rail_a: dict[str, ElevatedCurvedRailAPrototype] | None = (
        None
    )
    elevated_curved_rail_b: dict[str, ElevatedCurvedRailBPrototype] | None = (
        None
    )
    elevated_half_diagonal_rail: (
        dict[str, ElevatedHalfDiagonalRailPrototype] | None
    ) = None
    elevated_straight_rail: dict[str, ElevatedStraightRailPrototype] | None = (
        None
    )
    unit_spawner: dict[str, EnemySpawnerPrototype] | None = None
    energy_shield_equipment: (
        dict[str, EnergyShieldEquipmentPrototype] | None
    ) = None
    entity_ghost: dict[str, EntityGhostPrototype] | None = None
    equip_armor_achievement: (
        dict[str, EquipArmorAchievementPrototype] | None
    ) = None
    equipment_category: dict[str, EquipmentCategory] | None = None
    equipment_ghost: dict[str, EquipmentGhostPrototype] | None = None
    equipment_grid: dict[str, EquipmentGridPrototype] | None = None
    explosion: dict[str, ExplosionPrototype] | None = None
    fire: dict[str, FireFlamePrototype] | None = None
    fish: dict[str, FishPrototype] | None = None
    fluid: dict[str, FluidPrototype] | None = None
    stream: dict[str, FluidStreamPrototype] | None = None
    fluid_turret: dict[str, FluidTurretPrototype] | None = None
    fluid_wagon: dict[str, FluidWagonPrototype] | None = None
    font: dict[str, FontPrototype] | None = None
    fuel_category: dict[str, FuelCategory] | None = None
    furnace: dict[str, FurnacePrototype] | None = None
    fusion_generator: dict[str, FusionGeneratorPrototype] | None = None
    fusion_reactor: dict[str, FusionReactorPrototype] | None = None
    gate: dict[str, GatePrototype] | None = None
    generator_equipment: dict[str, GeneratorEquipmentPrototype] | None = None
    generator: dict[str, GeneratorPrototype] | None = None
    god_controller: dict[str, GodControllerPrototype] | None = None
    group_attack_achievement: (
        dict[str, GroupAttackAchievementPrototype] | None
    ) = None
    gui_style: dict[str, GuiStyle] | None = None
    gun: dict[str, GunPrototype] | None = None
    half_diagonal_rail: dict[str, HalfDiagonalRailPrototype] | None = None
    heat_interface: dict[str, HeatInterfacePrototype] | None = None
    heat_pipe: dict[str, HeatPipePrototype] | None = None
    highlight_box: dict[str, HighlightBoxEntityPrototype] | None = None
    impact_category: dict[str, ImpactCategory] | None = None
    infinity_cargo_wagon: dict[str, InfinityCargoWagonPrototype] | None = None
    infinity_container: dict[str, InfinityContainerPrototype] | None = None
    infinity_pipe: dict[str, InfinityPipePrototype] | None = None
    inserter: dict[str, InserterPrototype] | None = None
    inventory_bonus_equipment: (
        dict[str, InventoryBonusEquipmentPrototype] | None
    ) = None
    item_entity: dict[str, ItemEntityPrototype] | None = None
    item_group: dict[str, ItemGroup] | None = None
    item: dict[str, ItemPrototype] | None = None
    item_request_proxy: dict[str, ItemRequestProxyPrototype] | None = None
    item_subgroup: dict[str, ItemSubGroup] | None = None
    item_with_entity_data: dict[str, ItemWithEntityDataPrototype] | None = None
    item_with_inventory: dict[str, ItemWithInventoryPrototype] | None = None
    item_with_label: dict[str, ItemWithLabelPrototype] | None = None
    item_with_tags: dict[str, ItemWithTagsPrototype] | None = None
    kill_achievement: dict[str, KillAchievementPrototype] | None = None
    lab: dict[str, LabPrototype] | None = None
    lamp: dict[str, LampPrototype] | None = None
    land_mine: dict[str, LandMinePrototype] | None = None
    lane_splitter: dict[str, LaneSplitterPrototype] | None = None
    legacy_curved_rail: dict[str, LegacyCurvedRailPrototype] | None = None
    legacy_straight_rail: dict[str, LegacyStraightRailPrototype] | None = None
    lightning_attractor: dict[str, LightningAttractorPrototype] | None = None
    lightning: dict[str, LightningPrototype] | None = None
    linked_belt: dict[str, LinkedBeltPrototype] | None = None
    linked_container: dict[str, LinkedContainerPrototype] | None = None
    loader_1x1: dict[str, Loader1x1Prototype] | None = None
    loader: dict[str, Loader1x2Prototype] | None = None
    locomotive: dict[str, LocomotivePrototype] | None = None
    logistic_container: dict[str, LogisticContainerPrototype] | None = None
    logistic_robot: dict[str, LogisticRobotPrototype] | None = None
    map_gen_presets: dict[str, MapGenPresets] | None = None
    map_settings: dict[str, MapSettings] | None = None
    market: dict[str, MarketPrototype] | None = None
    mining_drill: dict[str, MiningDrillPrototype] | None = None
    mod_data: dict[str, ModData] | None = None
    module_category: dict[str, ModuleCategory] | None = None
    module: dict[str, ModulePrototype] | None = None
    module_transfer_achievement: (
        dict[str, ModuleTransferAchievementPrototype] | None
    ) = None
    mouse_cursor: dict[str, MouseCursor] | None = None
    movement_bonus_equipment: (
        dict[str, MovementBonusEquipmentPrototype] | None
    ) = None
    noise_expression: dict[str, NamedNoiseExpression] | None = None
    noise_function: dict[str, NamedNoiseFunction] | None = None
    night_vision_equipment: dict[str, NightVisionEquipmentPrototype] | None = (
        None
    )
    offshore_pump: dict[str, OffshorePumpPrototype] | None = None
    optimized_particle: dict[str, ParticlePrototype] | None = None
    particle_source: dict[str, ParticleSourcePrototype] | None = None
    pipe: dict[str, PipePrototype] | None = None
    pipe_to_ground: dict[str, PipeToGroundPrototype] | None = None
    place_equipment_achievement: (
        dict[str, PlaceEquipmentAchievementPrototype] | None
    ) = None
    planet: dict[str, PlanetPrototype] | None = None
    plant: dict[str, PlantPrototype] | None = None
    player_damaged_achievement: (
        dict[str, PlayerDamagedAchievementPrototype] | None
    ) = None
    player_port: dict[str, PlayerPortPrototype] | None = None
    power_switch: dict[str, PowerSwitchPrototype] | None = None
    procession_layer_inheritance_group: (
        dict[str, ProcessionLayerInheritanceGroup] | None
    ) = None
    procession: dict[str, ProcessionPrototype] | None = None
    produce_achievement: dict[str, ProduceAchievementPrototype] | None = None
    produce_per_hour_achievement: (
        dict[str, ProducePerHourAchievementPrototype] | None
    ) = None
    programmable_speaker: dict[str, ProgrammableSpeakerPrototype] | None = None
    projectile: dict[str, ProjectilePrototype] | None = None
    proxy_container: dict[str, ProxyContainerPrototype] | None = None
    pump: dict[str, PumpPrototype] | None = None
    quality: dict[str, QualityPrototype] | None = None
    radar: dict[str, RadarPrototype] | None = None
    rail_chain_signal: dict[str, RailChainSignalPrototype] | None = None
    rail_planner: dict[str, RailPlannerPrototype] | None = None
    rail_ramp: dict[str, RailRampPrototype] | None = None
    rail_remnants: dict[str, RailRemnantsPrototype] | None = None
    rail_signal: dict[str, RailSignalPrototype] | None = None
    rail_support: dict[str, RailSupportPrototype] | None = None
    reactor: dict[str, ReactorPrototype] | None = None
    recipe_category: dict[str, RecipeCategory] | None = None
    recipe: dict[str, RecipePrototype] | None = None
    remote_controller: dict[str, RemoteControllerPrototype] | None = None
    repair_tool: dict[str, RepairToolPrototype] | None = None
    research_achievement: dict[str, ResearchAchievementPrototype] | None = None
    research_with_science_pack_achievement: (
        dict[str, ResearchWithSciencePackAchievementPrototype] | None
    ) = None
    resource_category: dict[str, ResourceCategory] | None = None
    resource: dict[str, ResourceEntityPrototype] | None = None
    roboport_equipment: dict[str, RoboportEquipmentPrototype] | None = None
    roboport: dict[str, RoboportPrototype] | None = None
    rocket_silo: dict[str, RocketSiloPrototype] | None = None
    rocket_silo_rocket: dict[str, RocketSiloRocketPrototype] | None = None
    rocket_silo_rocket_shadow: (
        dict[str, RocketSiloRocketShadowPrototype] | None
    ) = None
    segment: dict[str, SegmentPrototype] | None = None
    segmented_unit: dict[str, SegmentedUnitPrototype] | None = None
    selection_tool: dict[str, SelectionToolPrototype] | None = None
    selector_combinator: dict[str, SelectorCombinatorPrototype] | None = None
    shoot_achievement: dict[str, ShootAchievementPrototype] | None = None
    shortcut: dict[str, ShortcutPrototype] | None = None
    simple_entity: dict[str, SimpleEntityPrototype] | None = None
    simple_entity_with_force: (
        dict[str, SimpleEntityWithForcePrototype] | None
    ) = None
    simple_entity_with_owner: (
        dict[str, SimpleEntityWithOwnerPrototype] | None
    ) = None
    smoke_with_trigger: dict[str, SmokeWithTriggerPrototype] | None = None
    solar_panel_equipment: dict[str, SolarPanelEquipmentPrototype] | None = None
    solar_panel: dict[str, SolarPanelPrototype] | None = None
    sound: dict[str, SoundPrototype] | None = None
    space_connection_distance_traveled_achievement: (
        dict[str, SpaceConnectionDistanceTraveledAchievementPrototype] | None
    ) = None
    space_connection: dict[str, SpaceConnectionPrototype] | None = None
    space_location: dict[str, SpaceLocationPrototype] | None = None
    space_platform_hub: dict[str, SpacePlatformHubPrototype] | None = None
    space_platform_starter_pack: (
        dict[str, SpacePlatformStarterPackPrototype] | None
    ) = None
    spectator_controller: dict[str, SpectatorControllerPrototype] | None = None
    speech_bubble: dict[str, SpeechBubblePrototype] | None = None
    spider_leg: dict[str, SpiderLegPrototype] | None = None
    spider_unit: dict[str, SpiderUnitPrototype] | None = None
    spider_vehicle: dict[str, SpiderVehiclePrototype] | None = None
    spidertron_remote: dict[str, SpidertronRemotePrototype] | None = None
    splitter: dict[str, SplitterPrototype] | None = None
    sprite: dict[str, SpritePrototype] | None = None
    sticker: dict[str, StickerPrototype] | None = None
    storage_tank: dict[str, StorageTankPrototype] | None = None
    straight_rail: dict[str, StraightRailPrototype] | None = None
    surface_property: dict[str, SurfacePropertyPrototype] | None = None
    surface: dict[str, SurfacePrototype] | None = None
    technology: dict[str, TechnologyPrototype] | None = None
    temporary_container: dict[str, TemporaryContainerPrototype] | None = None
    thruster: dict[str, ThrusterPrototype] | None = None
    tile_effect: dict[str, TileEffectDefinition] | None = None
    tile_ghost: dict[str, TileGhostPrototype] | None = None
    tile: dict[str, TilePrototype] | None = None
    tips_and_tricks_item: dict[str, TipsAndTricksItem] | None = None
    tips_and_tricks_item_category: (
        dict[str, TipsAndTricksItemCategory] | None
    ) = None
    tool: dict[str, ToolPrototype] | None = None
    train_path_achievement: dict[str, TrainPathAchievementPrototype] | None = (
        None
    )
    train_stop: dict[str, TrainStopPrototype] | None = None
    transport_belt: dict[str, TransportBeltPrototype] | None = None
    tree: dict[str, TreePrototype] | None = None
    trigger_target_type: dict[str, TriggerTargetType] | None = None
    trivial_smoke: dict[str, TrivialSmokePrototype] | None = None
    turret: dict[str, TurretPrototype] | None = None
    tutorial: dict[str, TutorialDefinition] | None = None
    underground_belt: dict[str, UndergroundBeltPrototype] | None = None
    unit: dict[str, UnitPrototype] | None = None
    upgrade_item: dict[str, UpgradeItemPrototype] | None = None
    use_entity_in_energy_production_achievement: (
        dict[str, UseEntityInEnergyProductionAchievementPrototype] | None
    ) = None
    use_item_achievement: dict[str, UseItemAchievementPrototype] | None = None
    utility_constants: dict[str, UtilityConstants] | None = None
    utility_sounds: dict[str, UtilitySounds] | None = None
    utility_sprites: dict[str, UtilitySprites] | None = None
    valve: dict[str, ValvePrototype] | None = None
    virtual_signal: dict[str, VirtualSignalPrototype] | None = None
    wall: dict[str, WallPrototype] | None = None


@dataclass
class AmmoType:
    action: Trigger | None = None
    clamp_position: Boolean | None = None
    energy_consumption: Energy | None = None
    range_modifier: Double | None = None
    cooldown_modifier: Double | None = None
    consumption_modifier: Float | None = None
    target_type: TargetType | None = None
    source_type: AmmoSourceType | None = None
    target_filter: list[EntityID] | dict[str, Any] | None = None


@dataclass
class AndTipTrigger:
    type: Literal["and"]
    triggers: list[TipTrigger] | dict[str, Any]


@dataclass
class AreaTriggerItem:
    type: Literal["area"]
    radius: Double
    entity_flags: EntityPrototypeFlags | None = None
    collision_mask: CollisionMaskConnector | None = None
    ignore_collision_condition: Boolean | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    repeat_count: Uint32 | None = None
    probability: Float | None = None
    action_delivery: (
        TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None
    ) = None
    force: ForceCondition | None = None
    trigger_from_target: Boolean | None = None
    target_entities: Boolean | None = None
    target_enemies: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    collision_mode: CollisionMode | None = None


@dataclass
class ArtilleryTriggerDelivery:
    type: Literal["artillery"]
    projectile: EntityID
    starting_speed: Float
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None
    starting_speed_deviation: Float | None = None
    direction_deviation: Float | None = None
    range_deviation: Float | None = None
    trigger_fired_artillery: Boolean | None = None


type AttackParameters = (
    ProjectileAttackParameters | BeamAttackParameters | StreamAttackParameters
)


@dataclass
class AttackReactionItem:
    range: Float
    action: Trigger | None = None
    reaction_modifier: Float | None = None
    damage_type: DamageTypeID | None = None


@dataclass
class BeamAttackParameters:
    range: Float
    cooldown: Float
    type: Literal["beam"]
    min_range: Float | None = None
    turn_range: Float | None = None
    fire_penalty: Float | None = None
    rotate_penalty: Float | None = None
    health_penalty: Float | None = None
    range_mode: RangeMode | None = None
    min_attack_distance: Float | None = None
    damage_modifier: Float | None = None
    ammo_consumption_modifier: Float | None = None
    cooldown_deviation: Float | None = None
    warmup: Uint32 | None = None
    lead_target_for_projectile_speed: Float | None = None
    lead_target_for_projectile_delay: Uint32 | None = None
    movement_slow_down_cooldown: Float | None = None
    movement_slow_down_factor: Double | None = None
    ammo_type: AmmoType | None = None
    activation_type: ActivationType | None = None
    sound: LayeredSound | None = None
    animation: RotatedAnimation | None = None
    cyclic_sound: CyclicSound | None = None
    use_shooter_direction: Boolean | None = None
    ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None
    ammo_category: AmmoCategoryID | None = None
    true_collinear_ejection: Boolean | None = None
    source_direction_count: Uint32 | None = None
    source_offset: Vector | None = None


@dataclass
class BeamTriggerDelivery:
    type: Literal["beam"]
    beam: EntityID
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None
    add_to_shooter: Boolean | None = None
    max_length: Uint32 | None = None
    duration: Uint32 | None = None
    source_offset: Vector | None = None
    destroy_with_source_or_target: Boolean | None = None


type CapsuleAction = (
    ThrowCapsuleAction
    | ActivateEquipmentCapsuleAction
    | UseOnSelfCapsuleAction
    | DestroyCliffsCapsuleAction
    | ArtilleryRemoteCapsuleAction
)


@dataclass
class ChainTriggerDelivery:
    type: Literal["chain"]
    chain: ActiveTriggerID
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None


@dataclass
class ClusterTriggerItem:
    type: Literal["cluster"]
    cluster_count: Uint32
    distance: Float
    entity_flags: EntityPrototypeFlags | None = None
    collision_mask: CollisionMaskConnector | None = None
    ignore_collision_condition: Boolean | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    repeat_count: Uint32 | None = None
    probability: Float | None = None
    action_delivery: (
        TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None
    ) = None
    force: ForceCondition | None = None
    distance_deviation: Float | None = None


@dataclass
class CreateEntityTriggerEffectItem:
    type: Literal["create-entity"]
    entity_name: EntityID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    trigger_created_entity: Boolean | None = None
    check_buildability: Boolean | None = None
    only_when_visible: Boolean | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    as_enemy: Boolean | None = None
    ignore_no_enemies_mode: Boolean | None = None
    find_non_colliding_position: Boolean | None = None
    abort_if_over_space: Boolean | None = None
    non_colliding_search_radius: Double | None = None
    non_colliding_search_precision: Double | None = None
    non_colliding_fail_result: Trigger | None = None
    protected: Boolean | None = None


@dataclass
class CreateExplosionTriggerEffectItem:
    type: Literal["create-explosion"]
    entity_name: EntityID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    trigger_created_entity: Boolean | None = None
    check_buildability: Boolean | None = None
    only_when_visible: Boolean | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    as_enemy: Boolean | None = None
    ignore_no_enemies_mode: Boolean | None = None
    find_non_colliding_position: Boolean | None = None
    abort_if_over_space: Boolean | None = None
    non_colliding_search_radius: Double | None = None
    non_colliding_search_precision: Double | None = None
    non_colliding_fail_result: Trigger | None = None
    protected: Boolean | None = None
    max_movement_distance: Float | None = None
    max_movement_distance_deviation: Float | None = None
    inherit_movement_distance_from_projectile: Boolean | None = None
    cycle_while_moving: Boolean | None = None


@dataclass
class CreateFireTriggerEffectItem:
    type: Literal["create-fire"]
    entity_name: EntityID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    trigger_created_entity: Boolean | None = None
    check_buildability: Boolean | None = None
    only_when_visible: Boolean | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    as_enemy: Boolean | None = None
    ignore_no_enemies_mode: Boolean | None = None
    find_non_colliding_position: Boolean | None = None
    abort_if_over_space: Boolean | None = None
    non_colliding_search_radius: Double | None = None
    non_colliding_search_precision: Double | None = None
    non_colliding_fail_result: Trigger | None = None
    protected: Boolean | None = None
    initial_ground_flame_count: Uint8 | None = None


@dataclass
class CreateSmokeTriggerEffectItem:
    type: Literal["create-smoke"]
    entity_name: EntityID
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None
    offset_deviation: BoundingBox | None = None
    trigger_created_entity: Boolean | None = None
    check_buildability: Boolean | None = None
    only_when_visible: Boolean | None = None
    tile_collision_mask: CollisionMaskConnector | None = None
    offsets: list[Vector] | dict[str, Any] | None = None
    as_enemy: Boolean | None = None
    ignore_no_enemies_mode: Boolean | None = None
    find_non_colliding_position: Boolean | None = None
    abort_if_over_space: Boolean | None = None
    non_colliding_search_radius: Double | None = None
    non_colliding_search_precision: Double | None = None
    non_colliding_fail_result: Trigger | None = None
    protected: Boolean | None = None
    initial_height: Float | None = None
    speed: Vector | None = None
    speed_multiplier: Float | None = None
    speed_multiplier_deviation: Float | None = None
    starting_frame: Float | None = None
    starting_frame_deviation: Float | None = None
    speed_from_center: Float | None = None
    speed_from_center_deviation: Float | None = None


@dataclass
class DelayedTriggerDelivery:
    type: Literal["delayed"]
    delayed_trigger: ActiveTriggerID
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None


@dataclass
class DestroyCliffsCapsuleAction:
    type: Literal["destroy-cliffs"]
    attack_parameters: AttackParameters
    radius: Float
    timeout: Uint32 | None = None
    play_sound_on_failure: Boolean | None = None
    uses_stack: Boolean | None = None


@dataclass
class DirectTriggerItem:
    type: Literal["direct"]
    entity_flags: EntityPrototypeFlags | None = None
    collision_mask: CollisionMaskConnector | None = None
    ignore_collision_condition: Boolean | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    repeat_count: Uint32 | None = None
    probability: Float | None = None
    action_delivery: (
        TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None
    ) = None
    force: ForceCondition | None = None
    filter_enabled: Boolean | None = None


@dataclass
class InstantTriggerDelivery:
    type: Literal["instant"]
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None


@dataclass
class LineTriggerItem:
    type: Literal["line"]
    range: Double
    width: Double
    entity_flags: EntityPrototypeFlags | None = None
    collision_mask: CollisionMaskConnector | None = None
    ignore_collision_condition: Boolean | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    repeat_count: Uint32 | None = None
    probability: Float | None = None
    action_delivery: (
        TriggerDelivery | list[TriggerDelivery] | dict[str, Any] | None
    ) = None
    force: ForceCondition | None = None
    range_effects: TriggerEffect | None = None


@dataclass
class MinableProperties:
    mining_time: Double
    include_in_show_counts: Boolean | None = None
    transfer_entity_health_to_products: Boolean | None = None
    results: list[ProductPrototype] | dict[str, Any] | None = None
    result: ItemID | None = None
    fluid_amount: FluidAmount | None = None
    mining_particle: ParticleID | None = None
    required_fluid: FluidID | None = None
    count: Uint16 | None = None
    mining_trigger: Trigger | None = None


@dataclass
class NestedTriggerEffectItem:
    type: Literal["nested-result"]
    action: Trigger
    repeat_count: Uint16 | None = None
    repeat_count_deviation: Uint16 | None = None
    probability: Float | None = None
    affects_target: Boolean | None = None
    show_in_tooltip: Boolean | None = None
    damage_type_filters: DamageTypeFilters | None = None


@dataclass
class OrTipTrigger:
    type: Literal["or"]
    triggers: list[TipTrigger] | dict[str, Any]


@dataclass
class ProjectileAttackParameters:
    range: Float
    cooldown: Float
    type: Literal["projectile"]
    min_range: Float | None = None
    turn_range: Float | None = None
    fire_penalty: Float | None = None
    rotate_penalty: Float | None = None
    health_penalty: Float | None = None
    range_mode: RangeMode | None = None
    min_attack_distance: Float | None = None
    damage_modifier: Float | None = None
    ammo_consumption_modifier: Float | None = None
    cooldown_deviation: Float | None = None
    warmup: Uint32 | None = None
    lead_target_for_projectile_speed: Float | None = None
    lead_target_for_projectile_delay: Uint32 | None = None
    movement_slow_down_cooldown: Float | None = None
    movement_slow_down_factor: Double | None = None
    ammo_type: AmmoType | None = None
    activation_type: ActivationType | None = None
    sound: LayeredSound | None = None
    animation: RotatedAnimation | None = None
    cyclic_sound: CyclicSound | None = None
    use_shooter_direction: Boolean | None = None
    ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None
    ammo_category: AmmoCategoryID | None = None
    true_collinear_ejection: Boolean | None = None
    apply_projection_to_projectile_creation_position: Boolean | None = None
    projectile_center: Vector | None = None
    projectile_creation_distance: Float | None = None
    shell_particle: CircularParticleCreationSpecification | None = None
    projectile_creation_parameters: (
        CircularProjectileCreationSpecification | None
    ) = None
    projectile_orientation_offset: RealOrientation | None = None
    projectile_creation_offsets: list[Vector] | dict[str, Any] | None = None


@dataclass
class ProjectileTriggerDelivery:
    type: Literal["projectile"]
    projectile: EntityID
    starting_speed: Float
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None
    starting_speed_deviation: Float | None = None
    direction_deviation: Float | None = None
    range_deviation: Float | None = None
    max_range: Double | None = None
    min_range: Double | None = None


@dataclass
class SequenceTipTrigger:
    type: Literal["sequence"]
    triggers: list[TipTrigger] | dict[str, Any]


@dataclass
class SpiderEngineSpecification:
    legs: SpiderLegSpecification | list[SpiderLegSpecification] | dict[str, Any]
    walking_group_overlap: Float | None = None


@dataclass
class SpiderLegSpecification:
    leg: EntityID
    mount_position: Vector
    ground_position: Vector
    walking_group: Uint8
    leg_hit_the_ground_trigger: TriggerEffect | None = None
    leg_hit_the_ground_when_attacking_trigger: TriggerEffect | None = None


@dataclass
class SpiderLegTriggerEffect:
    position: Float
    effect: TriggerEffect


@dataclass
class SpoilToTriggerResult:
    trigger: Trigger
    items_per_trigger: ItemCountType


@dataclass
class StreamAttackParameters:
    range: Float
    cooldown: Float
    type: Literal["stream"]
    min_range: Float | None = None
    turn_range: Float | None = None
    fire_penalty: Float | None = None
    rotate_penalty: Float | None = None
    health_penalty: Float | None = None
    range_mode: RangeMode | None = None
    min_attack_distance: Float | None = None
    damage_modifier: Float | None = None
    ammo_consumption_modifier: Float | None = None
    cooldown_deviation: Float | None = None
    warmup: Uint32 | None = None
    lead_target_for_projectile_speed: Float | None = None
    lead_target_for_projectile_delay: Uint32 | None = None
    movement_slow_down_cooldown: Float | None = None
    movement_slow_down_factor: Double | None = None
    ammo_type: AmmoType | None = None
    activation_type: ActivationType | None = None
    sound: LayeredSound | None = None
    animation: RotatedAnimation | None = None
    cyclic_sound: CyclicSound | None = None
    use_shooter_direction: Boolean | None = None
    ammo_categories: list[AmmoCategoryID] | dict[str, Any] | None = None
    ammo_category: AmmoCategoryID | None = None
    true_collinear_ejection: Boolean | None = None
    fluid_consumption: FluidAmount | None = None
    gun_barrel_length: Float | None = None
    projectile_creation_parameters: (
        CircularProjectileCreationSpecification | None
    ) = None
    gun_center_shift: Vector | GunCenterShift | None = None
    fluids: list[Fluid] | dict[str, Any] | None = None


@dataclass
class StreamTriggerDelivery:
    type: Literal["stream"]
    stream: EntityID
    source_effects: TriggerEffect | None = None
    target_effects: TriggerEffect | None = None
    source_offset: Vector | None = None


@dataclass
class ThrowCapsuleAction:
    type: Literal["throw"]
    attack_parameters: AttackParameters
    uses_stack: Boolean | None = None


type TipTrigger = (
    OrTipTrigger
    | AndTipTrigger
    | SequenceTipTrigger
    | DependenciesMetTipTrigger
    | TimeElapsedTipTrigger
    | TimeSinceLastTipActivationTipTrigger
    | ResearchTechnologyTipTrigger
    | ResearchWithSciencePackTipTrigger
    | UnlockRecipeTipTrigger
    | CraftItemTipTrigger
    | BuildEntityTipTrigger
    | ManualTransferTipTrigger
    | ModuleTransferTipTrigger
    | StackTransferTipTrigger
    | EntityTransferTipTrigger
    | DropItemTipTrigger
    | SetRecipeTipTrigger
    | SetFilterTipTrigger
    | LimitChestTipTrigger
    | UsePipetteTipTrigger
    | SetLogisticRequestTipTrigger
    | UseConfirmTipTrigger
    | ToggleShowEntityInfoTipTrigger
    | GeneratingPowerTipTrigger
    | LowPowerTipTrigger
    | PasteEntitySettingsTipTrigger
    | FastReplaceTipTrigger
    | GroupAttackTipTrigger
    | FastBeltBendTipTrigger
    | BeltTraverseTipTrigger
    | PlaceEquipmentTipTrigger
    | ClearCursorTipTrigger
    | RotateEntityTipTrigger
    | FlipEntityTipTrigger
    | AlternativeBuildTipTrigger
    | GateOverRailBuildTipTrigger
    | ManualWireDragTipTrigger
    | ShootTipTrigger
    | ChangeSurfaceTipTrigger
    | ApplyStarterPackTipTrigger
    | MineItemByRobotTipTrigger
    | BuildEntityByRobotTipTrigger
    | PlanTrainPathTipTrigger
    | UseRailPlannerTipTrigger
    | ToggleRailLayerTipTrigger
    | EnterVehicleTipTrigger
    | SendSpidertronTipTrigger
    | ActivatePasteTipTrigger
    | KillTipTrigger
)


type Trigger = (
    DirectTriggerItem
    | AreaTriggerItem
    | LineTriggerItem
    | ClusterTriggerItem
    | list[
        DirectTriggerItem
        | AreaTriggerItem
        | LineTriggerItem
        | ClusterTriggerItem
    ]
    | dict[str, Any]
)


type TriggerDelivery = (
    InstantTriggerDelivery
    | ProjectileTriggerDelivery
    | BeamTriggerDelivery
    | StreamTriggerDelivery
    | ArtilleryTriggerDelivery
    | ChainTriggerDelivery
    | DelayedTriggerDelivery
)


type TriggerEffect = (
    DamageEntityTriggerEffectItem
    | DamageTileTriggerEffectItem
    | CreateEntityTriggerEffectItem
    | CreateExplosionTriggerEffectItem
    | CreateFireTriggerEffectItem
    | CreateSmokeTriggerEffectItem
    | CreateTrivialSmokeEffectItem
    | CreateAsteroidChunkEffectItem
    | CreateParticleTriggerEffectItem
    | CreateStickerTriggerEffectItem
    | CreateDecorativesTriggerEffectItem
    | NestedTriggerEffectItem
    | PlaySoundTriggerEffectItem
    | PushBackTriggerEffectItem
    | DestroyCliffsTriggerEffectItem
    | ShowExplosionOnChartTriggerEffectItem
    | InsertItemTriggerEffectItem
    | ScriptTriggerEffectItem
    | SetTileTriggerEffectItem
    | InvokeTileEffectTriggerEffectItem
    | DestroyDecorativesTriggerEffectItem
    | CameraEffectTriggerEffectItem
    | ActivateImpactTriggerEffectItem
    | list[
        DamageEntityTriggerEffectItem
        | DamageTileTriggerEffectItem
        | CreateEntityTriggerEffectItem
        | CreateExplosionTriggerEffectItem
        | CreateFireTriggerEffectItem
        | CreateSmokeTriggerEffectItem
        | CreateTrivialSmokeEffectItem
        | CreateAsteroidChunkEffectItem
        | CreateParticleTriggerEffectItem
        | CreateStickerTriggerEffectItem
        | CreateDecorativesTriggerEffectItem
        | NestedTriggerEffectItem
        | PlaySoundTriggerEffectItem
        | PushBackTriggerEffectItem
        | DestroyCliffsTriggerEffectItem
        | ShowExplosionOnChartTriggerEffectItem
        | InsertItemTriggerEffectItem
        | ScriptTriggerEffectItem
        | SetTileTriggerEffectItem
        | InvokeTileEffectTriggerEffectItem
        | DestroyDecorativesTriggerEffectItem
        | CameraEffectTriggerEffectItem
        | ActivateImpactTriggerEffectItem
    ]
    | dict[str, Any]
)


@dataclass
class TriggerEffectWithCooldown:
    effect: TriggerEffect
    distance_cooldown: Double | None = None
    initial_distance_cooldown: Double | None = None
    time_cooldown: MapTick | None = None
    initial_time_cooldown: MapTick | None = None


@dataclass
class UseOnSelfCapsuleAction:
    type: Literal["use-on-self"]
    attack_parameters: AttackParameters
    uses_stack: Boolean | None = None


@dataclass
class AccumulatorPrototype:
    type: Literal["accumulator"]
    name: String
    energy_source: ElectricEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    chargable_graphics: ChargableGraphics | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_output_signal: SignalIDConnector | None = None


@dataclass
class ActiveDefenseEquipmentPrototype:
    type: Literal["active-defense-equipment"]
    name: String
    sprite: Sprite
    shape: EquipmentShape
    categories: list[EquipmentCategoryID] | dict[str, Any]
    energy_source: ElectricEnergySource
    automatic: Boolean
    attack_parameters: AttackParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    take_result: ItemID | None = None
    background_color: Color | None = None
    background_border_color: Color | None = None
    grabbed_background_color: Color | None = None


@dataclass
class AgriculturalTowerPrototype:
    type: Literal["agricultural-tower"]
    name: String
    crane: AgriculturalCraneProperties
    energy_source: EnergySource
    input_inventory_size: ItemStackIndex
    energy_usage: Energy
    crane_energy_usage: Energy
    radius: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: CraftingMachineGraphicsSet | None = None
    output_inventory_size: ItemStackIndex | None = None
    growth_grid_tile_size: Uint32 | None = None
    growth_area_radius: Double | None = None
    random_growth_offset: Double | None = None
    randomize_planting_tile: Boolean | None = None
    radius_visualisation_picture: Sprite | None = None
    central_orienting_sound: InterruptibleSound | None = None
    arm_extending_sound: InterruptibleSound | None = None
    grappler_orienting_sound: InterruptibleSound | None = None
    grappler_extending_sound: InterruptibleSound | None = None
    planting_sound: Sound | None = None
    harvesting_sound: Sound | None = None
    central_orienting_sound_source: String | None = None
    arm_extending_sound_source: String | None = None
    grappler_orienting_sound_source: String | None = None
    grappler_extending_sound_source: String | None = None
    planting_procedure_points: list[Vector3D] | dict[str, Any] | None = None
    harvesting_procedure_points: list[Vector3D] | dict[str, Any] | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    accepted_seeds: list[ItemID] | dict[str, Any] | None = None


@dataclass
class AmmoItemPrototype:
    type: Literal["ammo"]
    name: String
    stack_size: ItemCountType
    ammo_type: AmmoType | list[AmmoType] | dict[str, Any]
    ammo_category: AmmoCategoryID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    magazine_size: Float | None = None
    reload_time: Float | None = None
    shoot_protected: Boolean | None = None


@dataclass
class AmmoTurretPrototype:
    type: Literal["ammo-turret"]
    name: String
    attack_parameters: AttackParameters
    folded_animation: RotatedAnimation8Way
    call_for_help_radius: Double
    graphics_set: TurretGraphicsSet
    inventory_size: ItemStackIndex
    automated_ammo_count: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    attack_target_mask: TriggerTargetMask | None = None
    ignore_target_mask: TriggerTargetMask | None = None
    shoot_in_prepare_state: Boolean | None = None
    start_attacking_only_when_can_shoot: Boolean | None = None
    turret_base_has_direction: Boolean | None = None
    random_animation_offset: Boolean | None = None
    attack_from_start_frame: Boolean | None = None
    allow_turning_when_starting_attack: Boolean | None = None
    gun_animation_secondary_draw_order: Uint8 | None = None
    gun_animation_render_layer: RenderLayer | None = None
    preparing_animation: RotatedAnimation8Way | None = None
    prepared_animation: RotatedAnimation8Way | None = None
    prepared_alternative_animation: RotatedAnimation8Way | None = None
    starting_attack_animation: RotatedAnimation8Way | None = None
    attacking_animation: RotatedAnimation8Way | None = None
    energy_glow_animation: RotatedAnimation8Way | None = None
    resource_indicator_animation: RotatedAnimation8Way | None = None
    ending_attack_animation: RotatedAnimation8Way | None = None
    folding_animation: RotatedAnimation8Way | None = None
    integration: Sprite | None = None
    special_effect: TurretSpecialEffect | None = None
    glow_light_intensity: Float | None = None
    energy_glow_animation_flicker_strength: Float | None = None
    starting_attack_sound: Sound | None = None
    dying_sound: Sound | None = None
    preparing_sound: Sound | None = None
    folding_sound: Sound | None = None
    prepared_sound: Sound | None = None
    prepared_alternative_sound: Sound | None = None
    rotating_sound: InterruptibleSound | None = None
    default_speed: Float | None = None
    default_speed_secondary: Float | None = None
    default_speed_when_killed: Float | None = None
    default_starting_progress_when_killed: Float | None = None
    rotation_speed: Float | None = None
    rotation_speed_secondary: Float | None = None
    rotation_speed_when_killed: Float | None = None
    rotation_starting_progress_when_killed: Float | None = None
    preparing_speed: Float | None = None
    preparing_speed_secondary: Float | None = None
    preparing_speed_when_killed: Float | None = None
    preparing_starting_progress_when_killed: Float | None = None
    folded_speed: Float | None = None
    folded_speed_secondary: Float | None = None
    folded_speed_when_killed: Float | None = None
    folded_starting_progress_when_killed: Float | None = None
    prepared_speed: Float | None = None
    prepared_speed_secondary: Float | None = None
    prepared_speed_when_killed: Float | None = None
    prepared_starting_progress_when_killed: Float | None = None
    prepared_alternative_speed: Float | None = None
    prepared_alternative_speed_secondary: Float | None = None
    prepared_alternative_speed_when_killed: Float | None = None
    prepared_alternative_starting_progress_when_killed: Float | None = None
    prepared_alternative_chance: Float | None = None
    starting_attack_speed: Float | None = None
    starting_attack_speed_secondary: Float | None = None
    starting_attack_speed_when_killed: Float | None = None
    starting_attack_starting_progress_when_killed: Float | None = None
    attacking_speed: Float | None = None
    ending_attack_speed: Float | None = None
    ending_attack_speed_secondary: Float | None = None
    ending_attack_speed_when_killed: Float | None = None
    ending_attack_starting_progress_when_killed: Float | None = None
    folding_speed: Float | None = None
    folding_speed_secondary: Float | None = None
    folding_speed_when_killed: Float | None = None
    folding_starting_progress_when_killed: Float | None = None
    prepare_range: Double | None = None
    alert_when_attacking: Boolean | None = None
    spawn_decorations_on_expansion: Boolean | None = None
    folded_animation_is_stateless: Boolean | None = None
    unfolds_before_dying: Boolean | None = None
    spawn_decoration: (
        list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None
    ) = None
    folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = (
        None
    )
    can_retarget_while_starting_attack: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None
    energy_source: ElectricEnergySource | None = None
    energy_per_shot: Energy | None = None
    prepare_with_no_ammo: Boolean | None = None


@dataclass
class ArithmeticCombinatorPrototype:
    type: Literal["arithmetic-combinator"]
    name: String
    energy_source: ElectricEnergySource | VoidEnergySource
    active_energy_usage: Energy
    input_connection_bounding_box: BoundingBox
    output_connection_bounding_box: BoundingBox
    activity_led_light_offsets: list[Vector]
    screen_light_offsets: list[Vector]
    input_connection_points: list[WireConnectionPoint]
    output_connection_points: list[WireConnectionPoint]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprites: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    activity_led_sprites: Sprite4Way | None = None
    activity_led_light: LightDefinition | None = None
    screen_light: LightDefinition | None = None
    activity_led_hold_time: Uint8 | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    plus_symbol_sprites: Sprite4Way | None = None
    minus_symbol_sprites: Sprite4Way | None = None
    multiply_symbol_sprites: Sprite4Way | None = None
    divide_symbol_sprites: Sprite4Way | None = None
    modulo_symbol_sprites: Sprite4Way | None = None
    power_symbol_sprites: Sprite4Way | None = None
    left_shift_symbol_sprites: Sprite4Way | None = None
    right_shift_symbol_sprites: Sprite4Way | None = None
    and_symbol_sprites: Sprite4Way | None = None
    or_symbol_sprites: Sprite4Way | None = None
    xor_symbol_sprites: Sprite4Way | None = None


@dataclass
class ArmorPrototype:
    type: Literal["armor"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    durability: Double | None = None
    durability_description_key: String | None = None
    durability_description_value: String | None = None
    infinite: Boolean | None = None
    equipment_grid: EquipmentGridID | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    inventory_size_bonus: ItemStackIndex | None = None
    provides_flight: Boolean | None = None
    collision_box: BoundingBox | None = None
    drawing_box: BoundingBox | None = None
    takeoff_sound: Sound | None = None
    flight_sound: InterruptibleSound | None = None
    landing_sound: Sound | None = None
    steps_sound: Sound | None = None
    moving_sound: Sound | None = None


@dataclass
class ArrowPrototype:
    type: Literal["arrow"]
    name: String
    arrow_picture: Sprite
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    circle_picture: Sprite | None = None
    blinking: Boolean | None = None


@dataclass
class ArtilleryFlarePrototype:
    type: Literal["artillery-flare"]
    name: String
    map_color: Color
    life_time: Uint16
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    pictures: AnimationVariations | None = None
    shadows: AnimationVariations | None = None
    render_layer: RenderLayer | None = None
    render_layer_when_on_ground: RenderLayer | None = None
    regular_trigger_effect: TriggerEffect | None = None
    regular_trigger_effect_frequency: Uint32 | None = None
    ended_in_water_trigger_effect: TriggerEffect | None = None
    movement_modifier_when_on_ground: Double | None = None
    movement_modifier: Double | None = None
    creation_shift: Vector | None = None
    initial_speed: Vector | None = None
    initial_height: Float | None = None
    initial_vertical_speed: Float | None = None
    initial_frame_speed: Float | None = None
    shots_per_flare: Uint32 | None = None
    early_death_ticks: Uint32 | None = None
    shot_category: AmmoCategoryID | None = None


@dataclass
class ArtilleryProjectilePrototype:
    type: Literal["artillery-projectile"]
    name: String
    map_color: Color
    reveal_map: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    picture: Sprite | None = None
    shadow: Sprite | None = None
    chart_picture: Sprite | None = None
    action: Trigger | None = None
    final_action: Trigger | None = None
    height_from_ground: Float | None = None
    rotatable: Boolean | None = None


@dataclass
class ArtilleryTurretPrototype:
    type: Literal["artillery-turret"]
    name: String
    gun: ItemID
    inventory_size: ItemStackIndex
    ammo_stack_limit: ItemCountType
    turret_rotation_speed: Double
    manual_range_modifier: Double
    cannon_base_shift: Vector3D
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    automated_ammo_count: ItemCountType | None = None
    alert_when_attacking: Boolean | None = None
    disable_automatic_firing: Boolean | None = None
    base_picture_secondary_draw_order: Uint8 | None = None
    base_picture_render_layer: RenderLayer | None = None
    base_picture: Animation4Way | None = None
    cannon_base_pictures: RotatedSprite | None = None
    cannon_barrel_pictures: RotatedSprite | None = None
    rotating_sound: InterruptibleSound | None = None
    turn_after_shooting_cooldown: Uint16 | None = None
    cannon_parking_frame_count: Uint16 | None = None
    cannon_parking_speed: Float | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    cannon_barrel_recoil_shiftings: list[Vector3D] | dict[str, Any] | None = (
        None
    )
    cannon_barrel_recoil_shiftings_load_correction_matrix: (
        list[Vector3D] | dict[str, Any] | None
    ) = None
    cannon_barrel_light_direction: Vector3D | None = None


@dataclass
class ArtilleryWagonPrototype:
    type: Literal["artillery-wagon"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    max_speed: Double
    air_resistance: Double
    joint_distance: Double
    connection_distance: Double
    vertical_selection_shift: Double
    gun: ItemID
    inventory_size: ItemStackIndex
    ammo_stack_limit: ItemCountType
    turret_rotation_speed: Double
    manual_range_modifier: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    pictures: RollingStockRotatedSlopedGraphics | None = None
    wheels: RollingStockRotatedSlopedGraphics | None = None
    drive_over_tie_trigger: TriggerEffect | None = None
    drive_over_tie_trigger_minimal_speed: Double | None = None
    tie_distance: Double | None = None
    back_light: LightDefinition | None = None
    stand_by_light: LightDefinition | None = None
    horizontal_doors: Animation | None = None
    vertical_doors: Animation | None = None
    color: Color | None = None
    allow_manual_color: Boolean | None = None
    allow_robot_dispatch_in_automatic_mode: Boolean | None = None
    default_copy_color_from_train_stop: Boolean | None = None
    transition_collision_mask: CollisionMaskConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None
    elevated_rail_sound: MainSound | None = None
    drive_over_elevated_tie_trigger: TriggerEffect | None = None
    door_opening_sound: InterruptibleSound | None = None
    door_closing_sound: InterruptibleSound | None = None
    automated_ammo_count: ItemCountType | None = None
    disable_automatic_firing: Boolean | None = None
    cannon_base_pictures: RollingStockRotatedSlopedGraphics | None = None
    cannon_base_height: Double | None = None
    cannon_base_shift_when_vertical: Double | None = None
    cannon_base_shift_when_horizontal: Double | None = None
    cannon_barrel_pictures: RollingStockRotatedSlopedGraphics | None = None
    rotating_sound: InterruptibleSound | None = None
    turn_after_shooting_cooldown: Uint16 | None = None
    cannon_parking_frame_count: Uint16 | None = None
    cannon_parking_speed: Float | None = None
    cannon_barrel_recoil_shiftings: list[Vector3D] | dict[str, Any] | None = (
        None
    )
    cannon_barrel_recoil_shiftings_load_correction_matrix: (
        list[Vector3D] | dict[str, Any] | None
    ) = None
    cannon_barrel_light_direction: Vector3D | None = None


@dataclass
class AssemblingMachinePrototype:
    type: Literal["assembling-machine"]
    name: String
    energy_usage: Energy
    crafting_speed: Double
    crafting_categories: list[RecipeCategoryID] | dict[str, Any]
    energy_source: EnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_energy_usage: Boolean | None = None
    fluid_boxes: list[FluidBox] | dict[str, Any] | None = None
    effect_receiver: EffectReceiver | None = None
    module_slots: ItemStackIndex | None = None
    quality_affects_module_slots: Boolean | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    show_recipe_icon: Boolean | None = None
    return_ingredients_on_change: Boolean | None = None
    draw_entity_info_icon_background: Boolean | None = None
    match_animation_speed_to_activity: Boolean | None = None
    show_recipe_icon_on_map: Boolean | None = None
    fast_transfer_modules_into_module_slots_only: Boolean | None = None
    ignore_output_full: Boolean | None = None
    graphics_set: CraftingMachineGraphicsSet | None = None
    graphics_set_flipped: CraftingMachineGraphicsSet | None = None
    perceived_performance: PerceivedPerformance | None = None
    production_health_effect: ProductionHealthEffect | None = None
    trash_inventory_size: ItemStackIndex | None = None
    vector_to_place_result: Vector | None = None
    forced_symmetry: Mirroring | None = None
    crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None
    module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None
    energy_usage_quality_multiplier: dict[QualityID, Double] | None = None
    fixed_recipe: RecipeID | None = None
    fixed_quality: QualityID | None = None
    gui_title_key: String | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_recipe_finished_signal: SignalIDConnector | None = None
    default_working_signal: SignalIDConnector | None = None
    enable_logistic_control_behavior: Boolean | None = None
    ingredient_count: Uint16 | None = None
    max_item_product_count: Uint16 | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None
    fluid_boxes_off_when_no_fluid_recipe: Boolean | None = None
    disabled_when_recipe_not_researched: Boolean | None = None


@dataclass
class AsteroidChunkPrototype:
    type: Literal["asteroid-chunk"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    minable: MinableProperties | None = None
    dying_trigger_effect: TriggerEffect | None = None
    graphics_set: AsteroidGraphicsSet | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    hide_from_signal_gui: Boolean | None = None


@dataclass
class AsteroidCollectorPrototype:
    type: Literal["asteroid-collector"]
    name: String
    graphics_set: GraphicsSet
    passive_energy_usage: Energy
    arm_energy_usage: Energy
    arm_slow_energy_usage: Energy
    energy_source: ElectricEnergySource | VoidEnergySource
    collection_radius: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    arm_inventory_size: ItemStackIndex | None = None
    arm_inventory_size_quality_increase: ItemStackIndex | None = None
    inventory_size: ItemStackIndex | None = None
    inventory_size_quality_increase: ItemStackIndex | None = None
    energy_usage_quality_scaling: Float | None = None
    arm_count_base: Uint32 | None = None
    arm_count_quality_scaling: Uint32 | None = None
    head_collection_radius: Float | None = None
    collection_box_offset: Float | None = None
    deposit_radius: Float | None = None
    arm_speed_base: Float | None = None
    arm_speed_quality_scaling: Float | None = None
    arm_angular_speed_cap_base: Float | None = None
    arm_angular_speed_cap_quality_scaling: Float | None = None
    tether_size: Float | None = None
    unpowered_arm_speed_scale: Float | None = None
    minimal_arm_swing_segment_retraction: Uint32 | None = None
    held_items_offset: Float | None = None
    held_items_spread: Float | None = None
    held_items_display_count: Uint8 | None = None
    munch_sound: Sound | None = None
    deposit_sound: Sound | None = None
    arm_extend_sound: Sound | None = None
    arm_retract_sound: Sound | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    radius_visualisation_picture: Sprite | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    arm_color_gradient: list[Color] | dict[str, Any] | None = None


@dataclass
class AsteroidPrototype:
    type: Literal["asteroid"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    mass: Double | None = None
    graphics_set: AsteroidGraphicsSet | None = None


@dataclass
class BeaconPrototype:
    type: Literal["beacon"]
    name: String
    energy_usage: Energy
    energy_source: ElectricEnergySource | VoidEnergySource
    supply_area_distance: Uint32
    distribution_effectivity: Double
    module_slots: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    distribution_effectivity_bonus_per_quality_level: Double | None = None
    quality_affects_module_slots: Boolean | None = None
    quality_affects_supply_area_distance: Boolean | None = None
    graphics_set: BeaconGraphicsSet | None = None
    animation: Animation | None = None
    base_picture: Animation | None = None
    perceived_performance: PerceivedPerformance | None = None
    radius_visualisation_picture: Sprite | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    profile: list[Double] | dict[str, Any] | None = None
    beacon_counter: BeaconCounter | None = None


@dataclass
class BeamPrototype:
    type: Literal["beam"]
    name: String
    width: Float
    damage_interval: Uint32
    graphics_set: BeamGraphicsSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    action: Trigger | None = None
    target_offset: Vector | None = None
    random_target_offset: Boolean | None = None
    action_triggered_automatically: Boolean | None = None


@dataclass
class BlueprintBookPrototype:
    type: Literal["blueprint-book"]
    name: String
    stack_size: Literal[1]
    inventory_size: ItemStackIndex | Literal["dynamic"]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    item_filters: list[ItemID] | dict[str, Any] | None = None
    item_group_filters: list[ItemGroupID] | dict[str, Any] | None = None
    item_subgroup_filters: list[ItemSubGroupID] | dict[str, Any] | None = None
    filter_mode: FilterMode | None = None
    filter_message_key: String | None = None


@dataclass
class BlueprintItemPrototype:
    type: Literal["blueprint"]
    name: String
    stack_size: Literal[1]
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None


@dataclass
class BoilerPrototype:
    type: Literal["boiler"]
    name: String
    energy_source: EnergySource
    fluid_box: FluidBox
    output_fluid_box: FluidBox
    energy_consumption: Energy
    burning_cooldown: Uint16
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: Pictures | None = None
    target_temperature: Float | None = None
    fire_glow_flicker_enabled: Boolean | None = None
    fire_flicker_enabled: Boolean | None = None
    mode: Mode | None = None


@dataclass
class BurnerGeneratorPrototype:
    type: Literal["burner-generator"]
    name: String
    energy_source: ElectricEnergySource
    burner: BurnerEnergySource
    max_power_output: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    animation: Animation4Way | None = None
    idle_animation: Animation4Way | None = None
    always_draw_idle_animation: Boolean | None = None
    perceived_performance: PerceivedPerformance | None = None


@dataclass
class CapsulePrototype:
    type: Literal["capsule"]
    name: String
    stack_size: ItemCountType
    capsule_action: CapsuleAction
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    radius_color: Color | None = None


@dataclass
class CaptureRobotPrototype:
    type: Literal["capture-robot"]
    name: String
    speed: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    max_speed: Double | None = None
    max_energy: Energy | None = None
    energy_per_move: Energy | None = None
    energy_per_tick: Energy | None = None
    min_to_charge: Float | None = None
    max_to_charge: Float | None = None
    speed_multiplier_when_out_of_energy: Float | None = None
    capture_speed: Double | None = None
    search_radius: Double | None = None
    destroy_action: Trigger | None = None
    capture_animation: Animation | None = None


@dataclass
class CarPrototype:
    type: Literal["car"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    effectivity: Double
    consumption: Energy
    rotation_speed: Double
    energy_source: BurnerEnergySource | VoidEnergySource
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    animation: RotatedAnimation | None = None
    rotation_snap_angle: Double | None = None
    turret_animation: RotatedAnimation | None = None
    light_animation: RotatedAnimation | None = None
    render_layer: RenderLayer | None = None
    tank_driving: Boolean | None = None
    auto_sort_inventory: Boolean | None = None
    has_belt_immunity: Boolean | None = None
    immune_to_tree_impacts: Boolean | None = None
    immune_to_rock_impacts: Boolean | None = None
    immune_to_cliff_impacts: Boolean | None = None
    turret_rotation_speed: Float | None = None
    turret_return_timeout: Uint32 | None = None
    trash_inventory_size: ItemStackIndex | None = None
    light: LightDefinition | None = None
    sound_no_fuel: Sound | None = None
    darkness_to_render_light_animation: Float | None = None
    track_particle_triggers: FootstepTriggerEffectList | None = None
    guns: list[ItemID] | dict[str, Any] | None = None


@dataclass
class CargoBayPrototype:
    type: Literal["cargo-bay"]
    name: String
    inventory_size_bonus: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: CargoBayConnectableGraphicsSet | None = None
    platform_graphics_set: CargoBayConnectableGraphicsSet | None = None
    hatch_definitions: list[CargoHatchDefinition] | dict[str, Any] | None = None


@dataclass
class CargoLandingPadPrototype:
    type: Literal["cargo-landing-pad"]
    name: String
    inventory_size: ItemStackIndex
    cargo_station_parameters: CargoStationParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: CargoBayConnectableGraphicsSet | None = None
    trash_inventory_size: ItemStackIndex | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    robot_animation: Animation | None = None
    robot_landing_location_offset: Vector | None = None
    robot_opened_duration: Uint8 | None = None
    robot_animation_sound: Sound | None = None
    radar_range: Uint32 | None = None
    radar_visualisation_color: Color | None = None


@dataclass
class CargoPodPrototype:
    type: Literal["cargo-pod"]
    name: String
    inventory_size: ItemStackIndex
    spawned_container: EntityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    default_graphic: ProcessionGraphic | None = None
    default_shadow_graphic: ProcessionGraphic | None = None
    procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None
    procession_audio_catalogue: ProcessionAudioCatalogue | None = None
    shadow_slave_entity: EntityID | None = None
    impact_trigger: Trigger | None = None


@dataclass
class CargoWagonPrototype:
    type: Literal["cargo-wagon"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    max_speed: Double
    air_resistance: Double
    joint_distance: Double
    connection_distance: Double
    vertical_selection_shift: Double
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    pictures: RollingStockRotatedSlopedGraphics | None = None
    wheels: RollingStockRotatedSlopedGraphics | None = None
    drive_over_tie_trigger: TriggerEffect | None = None
    drive_over_tie_trigger_minimal_speed: Double | None = None
    tie_distance: Double | None = None
    back_light: LightDefinition | None = None
    stand_by_light: LightDefinition | None = None
    horizontal_doors: Animation | None = None
    vertical_doors: Animation | None = None
    color: Color | None = None
    allow_manual_color: Boolean | None = None
    allow_robot_dispatch_in_automatic_mode: Boolean | None = None
    default_copy_color_from_train_stop: Boolean | None = None
    transition_collision_mask: CollisionMaskConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None
    elevated_rail_sound: MainSound | None = None
    drive_over_elevated_tie_trigger: TriggerEffect | None = None
    door_opening_sound: InterruptibleSound | None = None
    door_closing_sound: InterruptibleSound | None = None
    quality_affects_inventory_size: Boolean | None = None


@dataclass
class ChainActiveTriggerPrototype:
    type: Literal["chain-active-trigger"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    action: Trigger | None = None
    max_jumps: Uint32 | None = None
    max_range_per_jump: Double | None = None
    max_range: Double | None = None
    jump_delay_ticks: MapTick | None = None
    fork_chance: Double | None = None
    fork_chance_increase_per_quality_level: Double | None = None
    max_forks_per_jump: Uint32 | None = None
    max_forks: Uint32 | None = None


@dataclass
class CharacterCorpsePrototype:
    type: Literal["character-corpse"]
    name: String
    time_to_live: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    render_layer: RenderLayer | None = None
    pictures: AnimationVariations | None = None
    picture: Animation | None = None
    armor_picture_mapping: dict[ItemID, Int32] | None = None


@dataclass
class CharacterPrototype:
    type: Literal["character"]
    name: String
    mining_speed: Double
    running_speed: Double
    distance_per_frame: Double
    maximum_corner_sliding_distance: Double
    inventory_size: ItemStackIndex
    build_distance: Uint32
    drop_item_distance: Uint32
    reach_distance: Uint32
    reach_resource_distance: Double
    item_pickup_distance: Double
    loot_pickup_distance: Double
    ticks_to_keep_gun: Uint32
    ticks_to_keep_aiming_direction: Uint32
    ticks_to_stay_in_combat: Uint32
    damage_hit_tint: Color
    mining_with_tool_particles_animation_positions: list[Float] | dict[str, Any]
    running_sound_animation_positions: list[Float] | dict[str, Any]
    moving_sound_animation_positions: list[Float] | dict[str, Any]
    animations: list[CharacterArmorAnimation] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    crafting_speed: Double | None = None
    heartbeat: Sound | None = None
    guns_inventory_size: ItemStackIndex | None = None
    crafting_categories: list[RecipeCategoryID] | dict[str, Any] | None = None
    mining_categories: list[ResourceCategoryID] | dict[str, Any] | None = None
    light: LightDefinition | None = None
    flying_bob_speed: Float | None = None
    grounded_landing_search_radius: Double | None = None
    enter_vehicle_distance: Double | None = None
    tool_attack_distance: Double | None = None
    respawn_time: Uint32 | None = None
    has_belt_immunity: Boolean | None = None
    character_corpse: EntityID | None = None
    flying_collision_mask: CollisionMaskConnector | None = None
    tool_attack_result: Trigger | None = None
    footstep_particle_triggers: FootstepTriggerEffectList | None = None
    synced_footstep_particle_triggers: FootstepTriggerEffectList | None = None
    footprint_particles: list[FootprintParticle] | dict[str, Any] | None = None
    left_footprint_offset: Vector | None = None
    right_footprint_offset: Vector | None = None
    right_footprint_frames: list[Float] | dict[str, Any] | None = None
    left_footprint_frames: list[Float] | dict[str, Any] | None = None


@dataclass
class CliffPrototype:
    type: Literal["cliff"]
    name: String
    orientations: Orientations
    grid_size: Vector
    grid_offset: Vector
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    cliff_explosive: ItemID | None = None
    place_as_crater: CraterPlacementDefinition | None = None


@dataclass
class CombatRobotPrototype:
    type: Literal["combat-robot"]
    name: String
    speed: Double
    time_to_live: Uint32
    attack_parameters: AttackParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    max_speed: Double | None = None
    max_energy: Energy | None = None
    energy_per_move: Energy | None = None
    energy_per_tick: Energy | None = None
    min_to_charge: Float | None = None
    max_to_charge: Float | None = None
    speed_multiplier_when_out_of_energy: Float | None = None
    idle: RotatedAnimation | None = None
    shadow_idle: RotatedAnimation | None = None
    in_motion: RotatedAnimation | None = None
    shadow_in_motion: RotatedAnimation | None = None
    range_from_player: Double | None = None
    friction: Double | None = None
    destroy_action: Trigger | None = None
    follows_player: Boolean | None = None
    light: LightDefinition | None = None


@dataclass
class ConstantCombinatorPrototype:
    type: Literal["constant-combinator"]
    name: String
    activity_led_light_offsets: list[Vector]
    circuit_wire_connection_points: list[WireConnectionPoint]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprites: Sprite4Way | None = None
    activity_led_sprites: Sprite4Way | None = None
    activity_led_light: LightDefinition | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    pulse_duration: Uint32 | None = None


@dataclass
class ConstructionRobotPrototype:
    type: Literal["construction-robot"]
    name: String
    speed: Double
    max_payload_size: ItemCountType
    construction_vector: Vector
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    max_speed: Double | None = None
    max_energy: Energy | None = None
    energy_per_move: Energy | None = None
    energy_per_tick: Energy | None = None
    min_to_charge: Float | None = None
    max_to_charge: Float | None = None
    speed_multiplier_when_out_of_energy: Float | None = None
    max_payload_size_after_bonus: ItemCountType | None = None
    idle: RotatedAnimation | None = None
    in_motion: RotatedAnimation | None = None
    shadow_idle: RotatedAnimation | None = None
    shadow_in_motion: RotatedAnimation | None = None
    destroy_action: Trigger | None = None
    draw_cargo: Boolean | None = None
    charging_sound: InterruptibleSound | None = None
    working: RotatedAnimation | None = None
    shadow_working: RotatedAnimation | None = None
    smoke: Animation | None = None
    sparks: AnimationVariations | None = None
    repairing_sound: Sound | None = None
    mined_sound_volume_modifier: Float | None = None
    working_light: LightDefinition | None = None


@dataclass
class ContainerPrototype:
    type: Literal["container"]
    name: String
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_inventory_size: Boolean | None = None
    picture: Sprite | None = None
    inventory_type: InventoryType | None = None
    inventory_properties: InventoryWithCustomStackSizeSpecification | None = (
        None
    )
    inventory_weight_limit: Weight | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_status: EntityStatus | None = None


@dataclass
class CopyPasteToolPrototype:
    type: Literal["copy-paste-tool"]
    name: String
    stack_size: Literal[1]
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None
    cuts: Boolean | None = None


@dataclass
class CorpsePrototype:
    type: Literal["corpse"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    dying_speed: Float | None = None
    splash_speed: Float | None = None
    time_before_shading_off: Uint32 | None = None
    time_before_removed: Uint32 | None = None
    expires: Boolean | None = None
    remove_on_entity_placement: Boolean | None = None
    remove_on_tile_placement: Boolean | None = None
    auto_setup_collision_box: Boolean | None = None
    final_render_layer: RenderLayer | None = None
    ground_patch_render_layer: RenderLayer | None = None
    animation_render_layer: RenderLayer | None = None
    splash_render_layer: RenderLayer | None = None
    animation_overlay_render_layer: RenderLayer | None = None
    animation_overlay_final_render_layer: RenderLayer | None = None
    shuffle_directions_at_frame: Uint8 | None = None
    use_tile_color_for_ground_patch_tint: Boolean | None = None
    use_decay_layer: Boolean | None = None
    underwater_layer_offset: Int8 | None = None
    ground_patch_fade_in_delay: Float | None = None
    ground_patch_fade_in_speed: Float | None = None
    ground_patch_fade_out_start: Float | None = None
    decay_frame_transition_duration: Float | None = None
    animation: RotatedAnimationVariations | None = None
    animation_overlay: RotatedAnimationVariations | None = None
    decay_animation: RotatedAnimationVariations | None = None
    splash: AnimationVariations | None = None
    ground_patch: AnimationVariations | None = None
    ground_patch_higher: AnimationVariations | None = None
    ground_patch_decay: AnimationVariations | None = None
    underwater_patch: RotatedSprite | None = None
    ground_patch_fade_out_duration: Float | None = None
    direction_shuffle: (
        list[list[Uint16] | dict[str, Any]] | dict[str, Any] | None
    ) = None


@dataclass
class CurvedRailAPrototype:
    type: Literal["curved-rail-a"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class CurvedRailBPrototype:
    type: Literal["curved-rail-b"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class DeciderCombinatorPrototype:
    type: Literal["decider-combinator"]
    name: String
    energy_source: ElectricEnergySource | VoidEnergySource
    active_energy_usage: Energy
    input_connection_bounding_box: BoundingBox
    output_connection_bounding_box: BoundingBox
    activity_led_light_offsets: list[Vector]
    screen_light_offsets: list[Vector]
    input_connection_points: list[WireConnectionPoint]
    output_connection_points: list[WireConnectionPoint]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprites: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    activity_led_sprites: Sprite4Way | None = None
    activity_led_light: LightDefinition | None = None
    screen_light: LightDefinition | None = None
    activity_led_hold_time: Uint8 | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    equal_symbol_sprites: Sprite4Way | None = None
    greater_symbol_sprites: Sprite4Way | None = None
    less_symbol_sprites: Sprite4Way | None = None
    not_equal_symbol_sprites: Sprite4Way | None = None
    greater_or_equal_symbol_sprites: Sprite4Way | None = None
    less_or_equal_symbol_sprites: Sprite4Way | None = None


@dataclass
class DeconstructibleTileProxyPrototype:
    type: Literal["deconstructible-tile-proxy"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )


@dataclass
class DeconstructionItemPrototype:
    type: Literal["deconstruction-item"]
    name: String
    stack_size: Literal[1]
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None
    entity_filter_count: ItemStackIndex | None = None
    tile_filter_count: ItemStackIndex | None = None


@dataclass
class DecorativePrototype:
    type: Literal["optimized-decorative"]
    name: String
    pictures: SpriteVariations
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None
    collision_box: BoundingBox | None = None
    render_layer: RenderLayer | None = None
    grows_through_rail_path: Boolean | None = None
    opacity_over_water: Float | None = None
    tile_layer: Int16 | None = None
    decal_overdraw_priority: Uint16 | None = None
    collision_mask: CollisionMaskConnector | None = None
    walking_sound: Sound | None = None
    trigger_effect: TriggerEffect | None = None
    minimal_separation: Double | None = None
    target_count: Uint16 | None = None
    placed_effect: TriggerEffect | None = None
    autoplace: AutoplaceSpecification | None = None


@dataclass
class DelayedActiveTriggerPrototype:
    type: Literal["delayed-active-trigger"]
    name: String
    action: Trigger
    delay: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    repeat_count: Uint32 | None = None
    repeat_delay: Uint32 | None = None
    cancel_when_source_is_destroyed: Boolean | None = None


@dataclass
class DeliverImpactCombination:
    type: Literal["deliver-impact-combination"]
    name: String
    impact_category: String
    deliver_category: String
    trigger_effect_item: TriggerEffect


@dataclass
class DisplayPanelPrototype:
    type: Literal["display-panel"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprites: Sprite4Way | None = None
    max_text_width: Uint32 | None = None
    text_shift: Vector | None = None
    text_color: Color | None = None
    background_color: Color | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None


@dataclass
class ElectricEnergyInterfacePrototype:
    type: Literal["electric-energy-interface"]
    name: String
    energy_source: ElectricEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    energy_production: Energy | None = None
    energy_usage: Energy | None = None
    gui_mode: GuiMode | None = None
    continuous_animation: Boolean | None = None
    render_layer: RenderLayer | None = None
    light: LightDefinition | None = None
    picture: Sprite | None = None
    pictures: Sprite4Way | None = None
    animation: Animation | None = None
    animations: Animation4Way | None = None


@dataclass
class ElectricPolePrototype:
    type: Literal["electric-pole"]
    name: String
    supply_area_distance: Double
    connection_points: list[WireConnectionPoint] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: RotatedSprite | None = None
    radius_visualisation_picture: Sprite | None = None
    active_picture: Sprite | None = None
    maximum_wire_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    light: LightDefinition | None = None
    track_coverage_during_build_by_moving: Boolean | None = None
    auto_connect_up_to_n_wires: Uint8 | None = None
    rewire_neighbours_when_destroying: Boolean | None = None


@dataclass
class ElectricTurretPrototype:
    type: Literal["electric-turret"]
    name: String
    attack_parameters: AttackParameters
    folded_animation: RotatedAnimation8Way
    call_for_help_radius: Double
    graphics_set: TurretGraphicsSet
    energy_source: ElectricEnergySource | VoidEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    attack_target_mask: TriggerTargetMask | None = None
    ignore_target_mask: TriggerTargetMask | None = None
    shoot_in_prepare_state: Boolean | None = None
    start_attacking_only_when_can_shoot: Boolean | None = None
    turret_base_has_direction: Boolean | None = None
    random_animation_offset: Boolean | None = None
    attack_from_start_frame: Boolean | None = None
    allow_turning_when_starting_attack: Boolean | None = None
    gun_animation_secondary_draw_order: Uint8 | None = None
    gun_animation_render_layer: RenderLayer | None = None
    preparing_animation: RotatedAnimation8Way | None = None
    prepared_animation: RotatedAnimation8Way | None = None
    prepared_alternative_animation: RotatedAnimation8Way | None = None
    starting_attack_animation: RotatedAnimation8Way | None = None
    attacking_animation: RotatedAnimation8Way | None = None
    energy_glow_animation: RotatedAnimation8Way | None = None
    resource_indicator_animation: RotatedAnimation8Way | None = None
    ending_attack_animation: RotatedAnimation8Way | None = None
    folding_animation: RotatedAnimation8Way | None = None
    integration: Sprite | None = None
    special_effect: TurretSpecialEffect | None = None
    glow_light_intensity: Float | None = None
    energy_glow_animation_flicker_strength: Float | None = None
    starting_attack_sound: Sound | None = None
    dying_sound: Sound | None = None
    preparing_sound: Sound | None = None
    folding_sound: Sound | None = None
    prepared_sound: Sound | None = None
    prepared_alternative_sound: Sound | None = None
    rotating_sound: InterruptibleSound | None = None
    default_speed: Float | None = None
    default_speed_secondary: Float | None = None
    default_speed_when_killed: Float | None = None
    default_starting_progress_when_killed: Float | None = None
    rotation_speed: Float | None = None
    rotation_speed_secondary: Float | None = None
    rotation_speed_when_killed: Float | None = None
    rotation_starting_progress_when_killed: Float | None = None
    preparing_speed: Float | None = None
    preparing_speed_secondary: Float | None = None
    preparing_speed_when_killed: Float | None = None
    preparing_starting_progress_when_killed: Float | None = None
    folded_speed: Float | None = None
    folded_speed_secondary: Float | None = None
    folded_speed_when_killed: Float | None = None
    folded_starting_progress_when_killed: Float | None = None
    prepared_speed: Float | None = None
    prepared_speed_secondary: Float | None = None
    prepared_speed_when_killed: Float | None = None
    prepared_starting_progress_when_killed: Float | None = None
    prepared_alternative_speed: Float | None = None
    prepared_alternative_speed_secondary: Float | None = None
    prepared_alternative_speed_when_killed: Float | None = None
    prepared_alternative_starting_progress_when_killed: Float | None = None
    prepared_alternative_chance: Float | None = None
    starting_attack_speed: Float | None = None
    starting_attack_speed_secondary: Float | None = None
    starting_attack_speed_when_killed: Float | None = None
    starting_attack_starting_progress_when_killed: Float | None = None
    attacking_speed: Float | None = None
    ending_attack_speed: Float | None = None
    ending_attack_speed_secondary: Float | None = None
    ending_attack_speed_when_killed: Float | None = None
    ending_attack_starting_progress_when_killed: Float | None = None
    folding_speed: Float | None = None
    folding_speed_secondary: Float | None = None
    folding_speed_when_killed: Float | None = None
    folding_starting_progress_when_killed: Float | None = None
    prepare_range: Double | None = None
    alert_when_attacking: Boolean | None = None
    spawn_decorations_on_expansion: Boolean | None = None
    folded_animation_is_stateless: Boolean | None = None
    unfolds_before_dying: Boolean | None = None
    spawn_decoration: (
        list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None
    ) = None
    folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = (
        None
    )
    can_retarget_while_starting_attack: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None


@dataclass
class ElevatedCurvedRailAPrototype:
    type: Literal["elevated-curved-rail-a"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class ElevatedCurvedRailBPrototype:
    type: Literal["elevated-curved-rail-b"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class ElevatedHalfDiagonalRailPrototype:
    type: Literal["elevated-half-diagonal-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class ElevatedStraightRailPrototype:
    type: Literal["elevated-straight-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class EnemySpawnerPrototype:
    type: Literal["unit-spawner"]
    name: String
    graphics_set: EnemySpawnerGraphicsSet
    max_count_of_owned_units: Uint32
    max_friends_around_to_spawn: Uint32
    spawning_cooldown: list[Double]
    spawning_radius: Double
    spawning_spacing: Double
    max_richness_for_spawn_shift: Double
    max_spawn_shift: Double
    call_for_help_radius: Double
    result_units: list[UnitSpawnDefinition] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Literal[True] = True
    allow_run_time_change_of_is_military_target: Literal[False] = False
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    max_count_of_owned_defensive_units: Uint32 | None = None
    max_defensive_friends_around_to_spawn: Uint32 | None = None
    time_to_capture: Uint32 | None = None
    dying_sound: Sound | None = None
    absorptions_per_second: (
        dict[AirbornePollutantID, EnemySpawnerAbsorption] | None
    ) = None
    min_darkness_to_spawn: Float | None = None
    max_darkness_to_spawn: Float | None = None
    spawn_decorations_on_expansion: Boolean | None = None
    spawn_decoration: (
        list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None
    ) = None
    captured_spawner_entity: EntityID | None = None


@dataclass
class EntityGhostPrototype:
    type: Literal["entity-ghost"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    medium_build_sound: Sound | None = None
    large_build_sound: Sound | None = None
    huge_build_sound: Sound | None = None
    small_build_animated_sound: Sound | None = None
    medium_build_animated_sound: Sound | None = None
    large_build_animated_sound: Sound | None = None
    huge_build_animated_sound: Sound | None = None


@dataclass
class ExplosionPrototype:
    type: Literal["explosion"]
    name: String
    animations: AnimationVariations
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    sound: Sound | None = None
    smoke: TrivialSmokeID | None = None
    height: Float | None = None
    smoke_slow_down_factor: Float | None = None
    smoke_count: Uint16 | None = None
    rotate: Boolean | None = None
    beam: Boolean | None = None
    correct_rotation: Boolean | None = None
    scale_animation_speed: Boolean | None = None
    fade_in_duration: Uint8 | None = None
    fade_out_duration: Uint8 | None = None
    render_layer: RenderLayer | None = None
    scale_in_duration: Uint8 | None = None
    scale_out_duration: Uint8 | None = None
    scale_end: Float | None = None
    scale_increment_per_tick: Float | None = None
    light_intensity_factor_initial: Float | None = None
    light_intensity_factor_final: Float | None = None
    light_size_factor_initial: Float | None = None
    light_size_factor_final: Float | None = None
    light: LightDefinition | None = None
    light_intensity_peak_start_progress: Float | None = None
    light_intensity_peak_end_progress: Float | None = None
    light_size_peak_start_progress: Float | None = None
    light_size_peak_end_progress: Float | None = None
    scale_initial: Float | None = None
    scale_initial_deviation: Float | None = None
    scale: Float | None = None
    scale_deviation: Float | None = None
    delay: MapTick | None = None
    delay_deviation: MapTick | None = None
    explosion_effect: Trigger | None = None


@dataclass
class FireFlamePrototype:
    type: Literal["fire"]
    name: String
    damage_per_tick: DamageParameters
    spread_delay: Uint32
    spread_delay_deviation: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    render_layer: RenderLayer | None = None
    initial_render_layer: RenderLayer | None = None
    secondary_render_layer: RenderLayer | None = None
    small_tree_fire_pictures: AnimationVariations | None = None
    pictures: AnimationVariations | None = None
    smoke_source_pictures: AnimationVariations | None = None
    secondary_pictures: AnimationVariations | None = None
    burnt_patch_pictures: SpriteVariations | None = None
    secondary_picture_fade_out_start: Uint32 | None = None
    secondary_picture_fade_out_duration: Uint32 | None = None
    spawn_entity: EntityID | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    maximum_spread_count: Uint16 | None = None
    initial_flame_count: Uint8 | None = None
    uses_alternative_behavior: Boolean | None = None
    limit_overlapping_particles: Boolean | None = None
    tree_dying_factor: Float | None = None
    fade_in_duration: Uint32 | None = None
    fade_out_duration: Uint32 | None = None
    initial_lifetime: Uint32 | None = None
    damage_multiplier_decrease_per_tick: Float | None = None
    damage_multiplier_increase_per_added_fuel: Float | None = None
    maximum_damage_multiplier: Float | None = None
    lifetime_increase_by: Uint32 | None = None
    lifetime_increase_cooldown: Uint32 | None = None
    maximum_lifetime: Uint32 | None = None
    add_fuel_cooldown: Uint32 | None = None
    delay_between_initial_flames: Uint32 | None = None
    smoke_fade_in_duration: Uint32 | None = None
    smoke_fade_out_duration: Uint32 | None = None
    on_fuel_added_action: Trigger | None = None
    on_damage_tick_effect: Trigger | None = None
    light: LightDefinition | None = None
    light_size_modifier_per_flame: Float | None = None
    light_size_modifier_maximum: Float | None = None
    particle_alpha_blend_duration: Uint16 | None = None
    burnt_patch_lifetime: Uint32 | None = None
    burnt_patch_alpha_default: Float | None = None
    particle_alpha: Float | None = None
    particle_alpha_deviation: Float | None = None
    flame_alpha: Float | None = None
    flame_alpha_deviation: Float | None = None
    burnt_patch_alpha_variations: (
        list[BurntPatchAlphaVariation] | dict[str, Any] | None
    ) = None


@dataclass
class FishPrototype:
    type: Literal["fish"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    pictures: SpriteVariations | None = None


@dataclass
class FluidStreamPrototype:
    type: Literal["stream"]
    name: String
    particle_spawn_interval: Uint16
    particle_horizontal_speed: Float
    particle_horizontal_speed_deviation: Float
    particle_vertical_acceleration: Float
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    initial_action: Trigger | None = None
    action: Trigger | None = None
    special_neutral_target_damage: DamageParameters | None = None
    width: Float | None = None
    particle_buffer_size: Uint32 | None = None
    particle_spawn_timeout: Uint16 | None = None
    particle_start_alpha: Float | None = None
    particle_end_alpha: Float | None = None
    particle_start_scale: Float | None = None
    particle_alpha_per_part: Float | None = None
    particle_scale_per_part: Float | None = None
    particle_fade_out_threshold: Float | None = None
    particle_loop_exit_threshold: Float | None = None
    particle_loop_frame_count: Uint16 | None = None
    particle_fade_out_duration: Uint16 | None = None
    spine_animation: Animation | None = None
    particle: Animation | None = None
    shadow: Animation | None = None
    smoke_sources: list[SmokeSource] | dict[str, Any] | None = None
    progress_to_create_smoke: Float | None = None
    stream_light: LightDefinition | None = None
    ground_light: LightDefinition | None = None
    target_position_deviation: Double | None = None
    oriented_particle: Boolean | None = None
    shadow_scale_enabled: Boolean | None = None
    target_initial_position_only: Boolean | None = None


@dataclass
class FluidTurretPrototype:
    type: Literal["fluid-turret"]
    name: String
    attack_parameters: StreamAttackParameters
    folded_animation: RotatedAnimation8Way
    call_for_help_radius: Double
    turret_base_has_direction: Literal[True]
    graphics_set: TurretGraphicsSet
    fluid_buffer_size: FluidAmount
    fluid_buffer_input_flow: FluidAmount
    activation_buffer_ratio: FluidAmount
    fluid_box: FluidBox
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    attack_target_mask: TriggerTargetMask | None = None
    ignore_target_mask: TriggerTargetMask | None = None
    shoot_in_prepare_state: Boolean | None = None
    start_attacking_only_when_can_shoot: Boolean | None = None
    random_animation_offset: Boolean | None = None
    attack_from_start_frame: Boolean | None = None
    allow_turning_when_starting_attack: Boolean | None = None
    gun_animation_secondary_draw_order: Uint8 | None = None
    gun_animation_render_layer: RenderLayer | None = None
    preparing_animation: RotatedAnimation8Way | None = None
    prepared_animation: RotatedAnimation8Way | None = None
    prepared_alternative_animation: RotatedAnimation8Way | None = None
    starting_attack_animation: RotatedAnimation8Way | None = None
    attacking_animation: RotatedAnimation8Way | None = None
    energy_glow_animation: RotatedAnimation8Way | None = None
    resource_indicator_animation: RotatedAnimation8Way | None = None
    ending_attack_animation: RotatedAnimation8Way | None = None
    folding_animation: RotatedAnimation8Way | None = None
    integration: Sprite | None = None
    special_effect: TurretSpecialEffect | None = None
    glow_light_intensity: Float | None = None
    energy_glow_animation_flicker_strength: Float | None = None
    starting_attack_sound: Sound | None = None
    dying_sound: Sound | None = None
    preparing_sound: Sound | None = None
    folding_sound: Sound | None = None
    prepared_sound: Sound | None = None
    prepared_alternative_sound: Sound | None = None
    rotating_sound: InterruptibleSound | None = None
    default_speed: Float | None = None
    default_speed_secondary: Float | None = None
    default_speed_when_killed: Float | None = None
    default_starting_progress_when_killed: Float | None = None
    rotation_speed: Float | None = None
    rotation_speed_secondary: Float | None = None
    rotation_speed_when_killed: Float | None = None
    rotation_starting_progress_when_killed: Float | None = None
    preparing_speed: Float | None = None
    preparing_speed_secondary: Float | None = None
    preparing_speed_when_killed: Float | None = None
    preparing_starting_progress_when_killed: Float | None = None
    folded_speed: Float | None = None
    folded_speed_secondary: Float | None = None
    folded_speed_when_killed: Float | None = None
    folded_starting_progress_when_killed: Float | None = None
    prepared_speed: Float | None = None
    prepared_speed_secondary: Float | None = None
    prepared_speed_when_killed: Float | None = None
    prepared_starting_progress_when_killed: Float | None = None
    prepared_alternative_speed: Float | None = None
    prepared_alternative_speed_secondary: Float | None = None
    prepared_alternative_speed_when_killed: Float | None = None
    prepared_alternative_starting_progress_when_killed: Float | None = None
    prepared_alternative_chance: Float | None = None
    starting_attack_speed: Float | None = None
    starting_attack_speed_secondary: Float | None = None
    starting_attack_speed_when_killed: Float | None = None
    starting_attack_starting_progress_when_killed: Float | None = None
    attacking_speed: Float | None = None
    ending_attack_speed: Float | None = None
    ending_attack_speed_secondary: Float | None = None
    ending_attack_speed_when_killed: Float | None = None
    ending_attack_starting_progress_when_killed: Float | None = None
    folding_speed: Float | None = None
    folding_speed_secondary: Float | None = None
    folding_speed_when_killed: Float | None = None
    folding_starting_progress_when_killed: Float | None = None
    prepare_range: Double | None = None
    alert_when_attacking: Boolean | None = None
    spawn_decorations_on_expansion: Boolean | None = None
    folded_animation_is_stateless: Boolean | None = None
    unfolds_before_dying: Boolean | None = None
    spawn_decoration: (
        list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None
    ) = None
    folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = (
        None
    )
    can_retarget_while_starting_attack: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None
    muzzle_light: LightDefinition | None = None
    enough_fuel_indicator_light: LightDefinition | None = None
    not_enough_fuel_indicator_light: LightDefinition | None = None
    muzzle_animation: Animation | None = None
    folded_muzzle_animation_shift: AnimatedVector | None = None
    preparing_muzzle_animation_shift: AnimatedVector | None = None
    prepared_muzzle_animation_shift: AnimatedVector | None = None
    starting_attack_muzzle_animation_shift: AnimatedVector | None = None
    attacking_muzzle_animation_shift: AnimatedVector | None = None
    ending_attack_muzzle_animation_shift: AnimatedVector | None = None
    folding_muzzle_animation_shift: AnimatedVector | None = None
    enough_fuel_indicator_picture: Sprite4Way | None = None
    not_enough_fuel_indicator_picture: Sprite4Way | None = None
    out_of_ammo_alert_icon: Sprite | None = None


@dataclass
class FluidWagonPrototype:
    type: Literal["fluid-wagon"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    max_speed: Double
    air_resistance: Double
    joint_distance: Double
    connection_distance: Double
    vertical_selection_shift: Double
    capacity: FluidAmount
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    pictures: RollingStockRotatedSlopedGraphics | None = None
    wheels: RollingStockRotatedSlopedGraphics | None = None
    drive_over_tie_trigger: TriggerEffect | None = None
    drive_over_tie_trigger_minimal_speed: Double | None = None
    tie_distance: Double | None = None
    back_light: LightDefinition | None = None
    stand_by_light: LightDefinition | None = None
    horizontal_doors: Animation | None = None
    vertical_doors: Animation | None = None
    color: Color | None = None
    allow_manual_color: Boolean | None = None
    allow_robot_dispatch_in_automatic_mode: Boolean | None = None
    default_copy_color_from_train_stop: Boolean | None = None
    transition_collision_mask: CollisionMaskConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None
    elevated_rail_sound: MainSound | None = None
    drive_over_elevated_tie_trigger: TriggerEffect | None = None
    door_opening_sound: InterruptibleSound | None = None
    door_closing_sound: InterruptibleSound | None = None
    quality_affects_capacity: Boolean | None = None
    tank_count: Uint8 | None = None
    connection_category: String | list[String] | dict[str, Any] | None = None


@dataclass
class FurnacePrototype:
    type: Literal["furnace"]
    name: String
    energy_usage: Energy
    crafting_speed: Double
    crafting_categories: list[RecipeCategoryID] | dict[str, Any]
    energy_source: EnergySource
    result_inventory_size: ItemStackIndex
    source_inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_energy_usage: Boolean | None = None
    fluid_boxes: list[FluidBox] | dict[str, Any] | None = None
    effect_receiver: EffectReceiver | None = None
    module_slots: ItemStackIndex | None = None
    quality_affects_module_slots: Boolean | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    show_recipe_icon: Boolean | None = None
    return_ingredients_on_change: Boolean | None = None
    draw_entity_info_icon_background: Boolean | None = None
    match_animation_speed_to_activity: Boolean | None = None
    show_recipe_icon_on_map: Boolean | None = None
    fast_transfer_modules_into_module_slots_only: Boolean | None = None
    ignore_output_full: Boolean | None = None
    graphics_set: CraftingMachineGraphicsSet | None = None
    graphics_set_flipped: CraftingMachineGraphicsSet | None = None
    perceived_performance: PerceivedPerformance | None = None
    production_health_effect: ProductionHealthEffect | None = None
    trash_inventory_size: ItemStackIndex | None = None
    vector_to_place_result: Vector | None = None
    forced_symmetry: Mirroring | None = None
    crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None
    module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None
    energy_usage_quality_multiplier: dict[QualityID, Double] | None = None
    cant_insert_at_source_message_key: String | None = None
    custom_input_slot_tooltip_key: String | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_recipe_finished_signal: SignalIDConnector | None = None
    default_working_signal: SignalIDConnector | None = None


@dataclass
class FusionGeneratorPrototype:
    type: Literal["fusion-generator"]
    name: String
    energy_source: ElectricEnergySource
    input_fluid_box: FluidBox
    output_fluid_box: FluidBox
    max_fluid_usage: FluidAmount
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: FusionGeneratorGraphicsSet | None = None
    perceived_performance: PerceivedPerformance | None = None
    burns_fluid: Boolean | None = None
    effectivity: Double | None = None


@dataclass
class FusionReactorPrototype:
    type: Literal["fusion-reactor"]
    name: String
    energy_source: ElectricEnergySource
    burner: BurnerEnergySource
    graphics_set: FusionReactorGraphicsSet
    input_fluid_box: FluidBox
    output_fluid_box: FluidBox
    power_input: Energy
    max_fluid_usage: FluidAmount
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    neighbour_connectable: NeighbourConnectable | None = None
    two_direction_only: Boolean | None = None
    neighbour_bonus: Float | None = None
    target_temperature: Float | None = None
    perceived_performance: PerceivedPerformance | None = None


@dataclass
class GatePrototype:
    type: Literal["gate"]
    name: String
    opening_speed: Float
    activation_distance: Double
    timeout_to_close: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    vertical_animation: Animation | None = None
    horizontal_animation: Animation | None = None
    vertical_rail_animation_left: Animation | None = None
    vertical_rail_animation_right: Animation | None = None
    horizontal_rail_animation_left: Animation | None = None
    horizontal_rail_animation_right: Animation | None = None
    vertical_rail_base: Animation | None = None
    horizontal_rail_base: Animation | None = None
    wall_patch: Animation | None = None
    opening_sound: Sound | None = None
    closing_sound: Sound | None = None
    fadeout_interval: Uint32 | None = None
    opened_collision_mask: CollisionMaskConnector | None = None


@dataclass
class GeneratorPrototype:
    type: Literal["generator"]
    name: String
    energy_source: ElectricEnergySource
    fluid_box: FluidBox
    fluid_usage_per_tick: FluidAmount
    maximum_temperature: Float
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    horizontal_animation: Animation | None = None
    vertical_animation: Animation | None = None
    horizontal_frozen_patch: Sprite | None = None
    vertical_frozen_patch: Sprite | None = None
    effectivity: Double | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    burns_fluid: Boolean | None = None
    scale_fluid_usage: Boolean | None = None
    destroy_non_fuel_fluid: Boolean | None = None
    perceived_performance: PerceivedPerformance | None = None
    max_power_output: Energy | None = None


@dataclass
class GunPrototype:
    type: Literal["gun"]
    name: String
    stack_size: ItemCountType
    attack_parameters: AttackParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None


@dataclass
class HalfDiagonalRailPrototype:
    type: Literal["half-diagonal-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class HeatInterfacePrototype:
    type: Literal["heat-interface"]
    name: String
    heat_buffer: HeatBuffer
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture: Sprite | None = None
    gui_mode: GuiMode | None = None
    heating_radius: Float | None = None


@dataclass
class HeatPipePrototype:
    type: Literal["heat-pipe"]
    name: String
    heat_buffer: HeatBuffer
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    connection_sprites: ConnectableEntityGraphics | None = None
    heat_glow_sprites: ConnectableEntityGraphics | None = None
    heating_radius: Float | None = None


@dataclass
class HighlightBoxEntityPrototype:
    type: Literal["highlight-box"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )


@dataclass
class InfinityCargoWagonPrototype:
    type: Literal["infinity-cargo-wagon"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    max_speed: Double
    air_resistance: Double
    joint_distance: Double
    connection_distance: Double
    vertical_selection_shift: Double
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    pictures: RollingStockRotatedSlopedGraphics | None = None
    wheels: RollingStockRotatedSlopedGraphics | None = None
    drive_over_tie_trigger: TriggerEffect | None = None
    drive_over_tie_trigger_minimal_speed: Double | None = None
    tie_distance: Double | None = None
    back_light: LightDefinition | None = None
    stand_by_light: LightDefinition | None = None
    horizontal_doors: Animation | None = None
    vertical_doors: Animation | None = None
    color: Color | None = None
    allow_manual_color: Boolean | None = None
    allow_robot_dispatch_in_automatic_mode: Boolean | None = None
    default_copy_color_from_train_stop: Boolean | None = None
    transition_collision_mask: CollisionMaskConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None
    elevated_rail_sound: MainSound | None = None
    drive_over_elevated_tie_trigger: TriggerEffect | None = None
    door_opening_sound: InterruptibleSound | None = None
    door_closing_sound: InterruptibleSound | None = None
    quality_affects_inventory_size: Boolean | None = None
    erase_contents_when_mined: Boolean | None = None
    preserve_contents_when_created: Boolean | None = None
    gui_mode: GuiMode | None = None


@dataclass
class InfinityContainerPrototype:
    type: Literal["infinity-container"]
    name: String
    inventory_size: ItemStackIndex
    erase_contents_when_mined: Boolean
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_inventory_size: Boolean | None = None
    picture: Sprite | None = None
    inventory_type: InventoryType | None = None
    inventory_properties: InventoryWithCustomStackSizeSpecification | None = (
        None
    )
    inventory_weight_limit: Weight | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_status: EntityStatus | None = None
    logistic_mode: LogisticMode | None = None
    max_logistic_slots: Uint16 | None = None
    trash_inventory_size: ItemStackIndex | None = None
    render_not_in_network_icon: Boolean | None = None
    opened_duration: Uint8 | None = None
    animation: Animation | None = None
    landing_location_offset: Vector | None = None
    use_exact_mode: Boolean | None = None
    animation_sound: Sound | None = None
    preserve_contents_when_created: Boolean | None = None
    gui_mode: GuiMode | None = None


@dataclass
class InfinityPipePrototype:
    type: Literal["infinity-pipe"]
    name: String
    fluid_box: FluidBox
    horizontal_window_bounding_box: BoundingBox
    vertical_window_bounding_box: BoundingBox
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: PipePictures | None = None
    gui_mode: GuiMode | None = None


@dataclass
class InserterPrototype:
    type: Literal["inserter"]
    name: String
    extension_speed: Double
    rotation_speed: Double
    insert_position: Vector
    pickup_position: Vector
    energy_source: EnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    starting_distance: Double | None = None
    platform_picture: Sprite4Way | None = None
    platform_frozen: Sprite4Way | None = None
    hand_base_picture: Sprite | None = None
    hand_open_picture: Sprite | None = None
    hand_closed_picture: Sprite | None = None
    hand_base_frozen: Sprite | None = None
    hand_open_frozen: Sprite | None = None
    hand_closed_frozen: Sprite | None = None
    hand_base_shadow: Sprite | None = None
    hand_open_shadow: Sprite | None = None
    hand_closed_shadow: Sprite | None = None
    energy_per_movement: Energy | None = None
    energy_per_rotation: Energy | None = None
    bulk: Boolean | None = None
    uses_inserter_stack_size_bonus: Boolean | None = None
    allow_custom_vectors: Boolean | None = None
    allow_burner_leech: Boolean | None = None
    draw_held_item: Boolean | None = None
    use_easter_egg: Boolean | None = None
    grab_less_to_match_belt_stack: Boolean | None = None
    wait_for_full_hand: Boolean | None = None
    enter_drop_mode_if_held_stack_spoiled: Boolean | None = None
    max_belt_stack_size: Uint8 | None = None
    filter_count: Uint8 | None = None
    hand_size: Double | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_stack_control_input_signal: SignalIDConnector | None = None
    draw_inserter_arrow: Boolean | None = None
    chases_belt_items: Boolean | None = None
    stack_size_bonus: Uint8 | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None


@dataclass
class ItemEntityPrototype:
    type: Literal["item-entity"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )


@dataclass
class ItemPrototype:
    type: Literal["item"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None


@dataclass
class ItemRequestProxyPrototype:
    type: Literal["item-request-proxy"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    use_target_entity_alert_icon_shift: Boolean | None = None


@dataclass
class ItemWithEntityDataPrototype:
    type: Literal["item-with-entity-data"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    icon_tintable_masks: list[IconData] | dict[str, Any] | None = None
    icon_tintable_mask: FileName | None = None
    icon_tintable_mask_size: SpriteSizeType | None = None
    icon_tintables: list[IconData] | dict[str, Any] | None = None
    icon_tintable: FileName | None = None
    icon_tintable_size: SpriteSizeType | None = None


@dataclass
class ItemWithInventoryPrototype:
    type: Literal["item-with-inventory"]
    name: String
    stack_size: Literal[1]
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    item_filters: list[ItemID] | dict[str, Any] | None = None
    item_group_filters: list[ItemGroupID] | dict[str, Any] | None = None
    item_subgroup_filters: list[ItemSubGroupID] | dict[str, Any] | None = None
    filter_mode: FilterMode | None = None
    filter_message_key: String | None = None


@dataclass
class ItemWithLabelPrototype:
    type: Literal["item-with-label"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None


@dataclass
class ItemWithTagsPrototype:
    type: Literal["item-with-tags"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None


@dataclass
class LabPrototype:
    type: Literal["lab"]
    name: String
    energy_usage: Energy
    energy_source: EnergySource
    inputs: list[ItemID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    on_animation: Animation | None = None
    off_animation: Animation | None = None
    frozen_patch: Sprite | None = None
    researching_speed: Double | None = None
    effect_receiver: EffectReceiver | None = None
    module_slots: ItemStackIndex | None = None
    quality_affects_module_slots: Boolean | None = None
    uses_quality_drain_modifier: Boolean | None = None
    science_pack_drain_rate_percent: Uint8 | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    light: LightDefinition | None = None
    trash_inventory_size: ItemStackIndex | None = None


@dataclass
class LampPrototype:
    type: Literal["lamp"]
    name: String
    energy_usage_per_tick: Energy
    energy_source: ElectricEnergySource | VoidEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture_on: Sprite | None = None
    picture_off: Sprite | None = None
    light: LightDefinition | None = None
    light_when_colored: LightDefinition | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    glow_size: Float | None = None
    glow_color_intensity: Float | None = None
    darkness_for_all_lamps_on: Float | None = None
    darkness_for_all_lamps_off: Float | None = None
    always_on: Boolean | None = None
    signal_to_color_mapping: (
        list[SignalColorMapping] | dict[str, Any] | None
    ) = None
    glow_render_mode: GlowRenderMode | None = None
    default_red_signal: SignalIDConnector | None = None
    default_green_signal: SignalIDConnector | None = None
    default_blue_signal: SignalIDConnector | None = None
    default_rgb_signal: SignalIDConnector | None = None


@dataclass
class LandMinePrototype:
    type: Literal["land-mine"]
    name: String
    trigger_radius: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture_safe: Sprite | None = None
    picture_set: Sprite | None = None
    picture_set_enemy: Sprite | None = None
    timeout: Uint32 | None = None
    trigger_interval: Uint32 | None = None
    action: Trigger | None = None
    ammo_category: AmmoCategoryID | None = None
    force_die_on_attack: Boolean | None = None
    trigger_force: ForceCondition | None = None
    trigger_collision_mask: CollisionMaskConnector | None = None


@dataclass
class LaneSplitterPrototype:
    type: Literal["lane-splitter"]
    name: String
    speed: Double
    structure: Animation4Way
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure_animation_speed_coefficient: Double | None = None
    structure_animation_movement_cooldown: Uint32 | None = None
    structure_patch: Animation4Way | None = None


@dataclass
class LegacyCurvedRailPrototype:
    type: Literal["legacy-curved-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class LegacyStraightRailPrototype:
    type: Literal["legacy-straight-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class LightningAttractorPrototype:
    type: Literal["lightning-attractor"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    chargable_graphics: ChargableGraphics | None = None
    lightning_strike_offset: MapPosition | None = None
    efficiency: Double | None = None
    range_elongation: Double | None = None
    energy_source: ElectricEnergySource | None = None


@dataclass
class LightningPrototype:
    type: Literal["lightning"]
    name: String
    effect_duration: Uint16
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    graphics_set: LightningGraphicsSet | None = None
    sound: Sound | None = None
    attracted_volume_modifier: Float | None = None
    strike_effect: Trigger | None = None
    attractor_hit_effect: Trigger | None = None
    source_offset: Vector | None = None
    source_variance: Vector | None = None
    damage: Double | None = None
    energy: Energy | None = None
    time_to_damage: Uint16 | None = None


@dataclass
class LinkedBeltPrototype:
    type: Literal["linked-belt"]
    name: String
    speed: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure: Structure | None = None
    structure_render_layer: RenderLayer | None = None
    allow_clone_connection: Boolean | None = None
    allow_blueprint_connection: Boolean | None = None
    allow_side_loading: Boolean | None = None


@dataclass
class LinkedContainerPrototype:
    type: Literal["linked-container"]
    name: String
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture: Sprite | None = None
    inventory_type: InventoryType | None = None
    inventory_properties: InventoryWithCustomStackSizeSpecification | None = (
        None
    )
    inventory_weight_limit: Weight | None = None
    gui_mode: GuiMode | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None


@dataclass
class Loader1x1Prototype:
    type: Literal["loader-1x1"]
    name: String
    speed: Double
    filter_count: Uint8
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure: LoaderStructure | None = None
    structure_render_layer: RenderLayer | None = None
    circuit_connector_layer: RenderLayer | None = None
    container_distance: Double | None = None
    allow_rail_interaction: Boolean | None = None
    allow_container_interaction: Boolean | None = None
    per_lane_filters: Boolean | None = None
    max_belt_stack_size: Uint8 | None = None
    adjustable_belt_stack_size: Boolean | None = None
    wait_for_full_stack: Boolean | None = None
    respect_insert_limits: Boolean | None = None
    belt_length: Double | None = None
    energy_source: (
        ElectricEnergySource
        | HeatEnergySource
        | FluidEnergySource
        | VoidEnergySource
        | None
    ) = None
    energy_per_item: Energy | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None


@dataclass
class Loader1x2Prototype:
    type: Literal["loader"]
    name: String
    speed: Double
    filter_count: Uint8
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure: LoaderStructure | None = None
    structure_render_layer: RenderLayer | None = None
    circuit_connector_layer: RenderLayer | None = None
    container_distance: Double | None = None
    allow_rail_interaction: Boolean | None = None
    allow_container_interaction: Boolean | None = None
    per_lane_filters: Boolean | None = None
    max_belt_stack_size: Uint8 | None = None
    adjustable_belt_stack_size: Boolean | None = None
    wait_for_full_stack: Boolean | None = None
    respect_insert_limits: Boolean | None = None
    belt_length: Double | None = None
    energy_source: (
        ElectricEnergySource
        | HeatEnergySource
        | FluidEnergySource
        | VoidEnergySource
        | None
    ) = None
    energy_per_item: Energy | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None


@dataclass
class LocomotivePrototype:
    type: Literal["locomotive"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    max_speed: Double
    air_resistance: Double
    joint_distance: Double
    connection_distance: Double
    vertical_selection_shift: Double
    max_power: Energy
    reversing_power_modifier: Double
    energy_source: BurnerEnergySource | VoidEnergySource
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    pictures: RollingStockRotatedSlopedGraphics | None = None
    wheels: RollingStockRotatedSlopedGraphics | None = None
    drive_over_tie_trigger: TriggerEffect | None = None
    drive_over_tie_trigger_minimal_speed: Double | None = None
    tie_distance: Double | None = None
    back_light: LightDefinition | None = None
    stand_by_light: LightDefinition | None = None
    horizontal_doors: Animation | None = None
    vertical_doors: Animation | None = None
    color: Color | None = None
    allow_manual_color: Boolean | None = None
    allow_robot_dispatch_in_automatic_mode: Boolean | None = None
    default_copy_color_from_train_stop: Boolean | None = None
    transition_collision_mask: CollisionMaskConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None
    elevated_rail_sound: MainSound | None = None
    drive_over_elevated_tie_trigger: TriggerEffect | None = None
    door_opening_sound: InterruptibleSound | None = None
    door_closing_sound: InterruptibleSound | None = None
    front_light: LightDefinition | None = None
    front_light_pictures: RollingStockRotatedSlopedGraphics | None = None
    darkness_to_render_light_animation: Float | None = None
    max_snap_to_train_stop_distance: Float | None = None


@dataclass
class LogisticContainerPrototype:
    type: Literal["logistic-container"]
    name: String
    inventory_size: ItemStackIndex
    logistic_mode: LogisticMode
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_inventory_size: Boolean | None = None
    picture: Sprite | None = None
    inventory_type: InventoryType | None = None
    inventory_properties: InventoryWithCustomStackSizeSpecification | None = (
        None
    )
    inventory_weight_limit: Weight | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_status: EntityStatus | None = None
    max_logistic_slots: Uint16 | None = None
    trash_inventory_size: ItemStackIndex | None = None
    render_not_in_network_icon: Boolean | None = None
    opened_duration: Uint8 | None = None
    animation: Animation | None = None
    landing_location_offset: Vector | None = None
    use_exact_mode: Boolean | None = None
    animation_sound: Sound | None = None


@dataclass
class LogisticRobotPrototype:
    type: Literal["logistic-robot"]
    name: String
    speed: Double
    max_payload_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    max_speed: Double | None = None
    max_energy: Energy | None = None
    energy_per_move: Energy | None = None
    energy_per_tick: Energy | None = None
    min_to_charge: Float | None = None
    max_to_charge: Float | None = None
    speed_multiplier_when_out_of_energy: Float | None = None
    max_payload_size_after_bonus: ItemCountType | None = None
    idle: RotatedAnimation | None = None
    in_motion: RotatedAnimation | None = None
    shadow_idle: RotatedAnimation | None = None
    shadow_in_motion: RotatedAnimation | None = None
    destroy_action: Trigger | None = None
    draw_cargo: Boolean | None = None
    charging_sound: InterruptibleSound | None = None
    idle_with_cargo: RotatedAnimation | None = None
    in_motion_with_cargo: RotatedAnimation | None = None
    shadow_idle_with_cargo: RotatedAnimation | None = None
    shadow_in_motion_with_cargo: RotatedAnimation | None = None


@dataclass
class MarketPrototype:
    type: Literal["market"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture: Sprite | None = None
    allow_access_to_all_forces: Boolean | None = None


@dataclass
class MiningDrillPrototype:
    type: Literal["mining-drill"]
    name: String
    vector_to_place_result: Vector
    resource_searching_radius: Double
    energy_usage: Energy
    mining_speed: Double
    energy_source: EnergySource
    resource_categories: list[ResourceCategoryID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    resource_searching_offset: Vector | None = None
    output_fluid_box: FluidBox | None = None
    input_fluid_box: FluidBox | None = None
    graphics_set: MiningDrillGraphicsSet | None = None
    wet_mining_graphics_set: MiningDrillGraphicsSet | None = None
    perceived_performance: PerceivedPerformance | None = None
    base_picture: Sprite4Way | None = None
    effect_receiver: EffectReceiver | None = None
    module_slots: ItemStackIndex | None = None
    quality_affects_module_slots: Boolean | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    radius_visualisation_picture: Sprite | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    base_render_layer: RenderLayer | None = None
    resource_drain_rate_percent: Uint8 | None = None
    shuffle_resources_to_mine: Boolean | None = None
    drops_full_belt_stacks: Boolean | None = None
    uses_force_mining_productivity_bonus: Boolean | None = None
    quality_affects_mining_radius: Boolean | None = None
    moving_sound: InterruptibleSound | None = None
    drilling_sound: InterruptibleSound | None = None
    drilling_sound_animation_start_frame: Uint16 | None = None
    drilling_sound_animation_end_frame: Uint16 | None = None
    monitor_visualization_tint: Color | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    filter_count: Uint8 | None = None


@dataclass
class ModulePrototype:
    type: Literal["module"]
    name: String
    stack_size: ItemCountType
    category: ModuleCategoryID
    tier: Uint32
    effect: Effect6
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    requires_beacon_alt_mode: Boolean | None = None
    art_style: String | None = None
    beacon_tint: BeaconTint | None = None


@dataclass
class OffshorePumpPrototype:
    type: Literal["offshore-pump"]
    name: String
    fluid_box: FluidBox
    pumping_speed: FluidAmount
    fluid_source_offset: Vector
    energy_source: EnergySource
    energy_usage: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    perceived_performance: PerceivedPerformance | None = None
    graphics_set: OffshorePumpGraphicsSet | None = None
    remove_on_tile_collision: Boolean | None = None
    always_draw_fluid: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None


@dataclass
class ParticlePrototype:
    type: Literal["optimized-particle"]
    name: String
    life_time: Uint16
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    pictures: AnimationVariations | None = None
    shadows: AnimationVariations | None = None
    draw_shadow_when_on_ground: Boolean | None = None
    regular_trigger_effect: TriggerEffect | None = None
    ended_in_water_trigger_effect: TriggerEffect | None = None
    ended_on_ground_trigger_effect: TriggerEffect | None = None
    render_layer: RenderLayer | None = None
    render_layer_when_on_ground: RenderLayer | None = None
    regular_trigger_effect_frequency: Uint32 | None = None
    movement_modifier_when_on_ground: Float | None = None
    movement_modifier: Float | None = None
    vertical_acceleration: Float | None = None
    mining_particle_frame_speed: Float | None = None
    fade_away_duration: Uint16 | None = None


@dataclass
class ParticleSourcePrototype:
    type: Literal["particle-source"]
    name: String
    time_to_live: Float
    time_before_start: Float
    height: Float
    vertical_speed: Float
    horizontal_speed: Float
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    particle: ParticleID | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    time_to_live_deviation: Float | None = None
    time_before_start_deviation: Float | None = None
    height_deviation: Float | None = None
    vertical_speed_deviation: Float | None = None
    horizontal_speed_deviation: Float | None = None


@dataclass
class PipePrototype:
    type: Literal["pipe"]
    name: String
    fluid_box: FluidBox
    horizontal_window_bounding_box: BoundingBox
    vertical_window_bounding_box: BoundingBox
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: PipePictures | None = None


@dataclass
class PipeToGroundPrototype:
    type: Literal["pipe-to-ground"]
    name: String
    fluid_box: FluidBox
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    visualization: Sprite4Way | None = None
    disabled_visualization: Sprite4Way | None = None
    draw_fluid_icon_override: Boolean | None = None


@dataclass
class PlanetPrototype:
    type: Literal["planet"]
    name: String
    distance: Double
    orientation: RealOrientation
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    gravity_pull: Double | None = None
    magnitude: Double | None = None
    parked_platforms_orientation: RealOrientation | None = None
    label_orientation: RealOrientation | None = None
    draw_orbit: Boolean | None = None
    solar_power_in_space: Double | None = None
    asteroid_spawn_influence: Double | None = None
    fly_condition: Boolean | None = None
    auto_save_on_first_trip: Boolean | None = None
    procession_graphic_catalogue: ProcessionGraphicCatalogue | None = None
    procession_audio_catalogue: ProcessionAudioCatalogue | None = None
    platform_procession_set: ProcessionSet | None = None
    planet_procession_set: ProcessionSet | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    starmap_icons: list[IconData] | dict[str, Any] | None = None
    starmap_icon: FileName | None = None
    starmap_icon_size: SpriteSizeType | None = None
    starmap_icon_orientation: RealOrientation | None = None
    asteroid_spawn_definitions: (
        list[SpaceLocationAsteroidSpawnDefinition] | dict[str, Any] | None
    ) = None
    map_seed_offset: Uint32 | None = None
    entities_require_heating: Boolean | None = None
    pollutant_type: AirbornePollutantID | None = None
    persistent_ambient_sounds: PersistentWorldAmbientSoundsDefinition | None = (
        None
    )
    surface_render_parameters: SurfaceRenderParameters | None = None
    player_effects: Trigger | None = None
    ticks_between_player_effects: MapTick | None = None
    map_gen_settings: PlanetPrototypeMapGenSettings | None = None
    surface_properties: dict[SurfacePropertyID, Double] | None = None
    lightning_properties: LightningProperties | None = None


@dataclass
class PlantPrototype:
    type: Literal["plant"]
    name: String
    growth_ticks: MapTick
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    variation_weights: list[Float] | dict[str, Any] | None = None
    darkness_of_burnt_tree: Float | None = None
    pictures: SpriteVariations | None = None
    variations: list[TreeVariation] | dict[str, Any] | None = None
    colors: list[Color] | dict[str, Any] | None = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None
    harvest_emissions: dict[AirbornePollutantID, Double] | None = None
    agricultural_tower_tint: RecipeTints | None = None


@dataclass
class PlayerPortPrototype:
    type: Literal["player-port"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None


@dataclass
class PowerSwitchPrototype:
    type: Literal["power-switch"]
    name: String
    overlay_start_delay: Uint8
    circuit_wire_connection_point: WireConnectionPoint
    left_wire_connection_point: WireConnectionPoint
    right_wire_connection_point: WireConnectionPoint
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    power_on_animation: Animation | None = None
    overlay_start: Animation | None = None
    overlay_loop: Animation | None = None
    led_on: Sprite | None = None
    led_off: Sprite | None = None
    frozen_patch: Sprite | None = None
    wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None


@dataclass
class ProgrammableSpeakerPrototype:
    type: Literal["programmable-speaker"]
    name: String
    energy_source: ElectricEnergySource | VoidEnergySource
    energy_usage_per_tick: Energy
    maximum_polyphony: Uint32
    instruments: list[Instrument] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprite: Sprite | None = None
    audible_distance_modifier: Float | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None


@dataclass
class ProjectilePrototype:
    type: Literal["projectile"]
    name: String
    acceleration: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    animation: RotatedAnimationVariations | None = None
    rotatable: Boolean | None = None
    enable_drawing_with_mask: Boolean | None = None
    direction_only: Boolean | None = None
    hit_at_collision_position: Boolean | None = None
    force_condition: ForceCondition | None = None
    piercing_damage: Float | None = None
    max_speed: Double | None = None
    turn_speed: Float | None = None
    speed_modifier: Vector | None = None
    height: Double | None = None
    action: Trigger | None = None
    final_action: Trigger | None = None
    light: LightDefinition | None = None
    smoke: list[SmokeSource] | dict[str, Any] | None = None
    hit_collision_mask: CollisionMaskConnector | None = None
    turning_speed_increases_exponentially_with_projectile_speed: (
        Boolean | None
    ) = None
    shadow: RotatedAnimationVariations | None = None


@dataclass
class ProxyContainerPrototype:
    type: Literal["proxy-container"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture: Sprite | None = None
    draw_inventory_content: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None


@dataclass
class PumpPrototype:
    type: Literal["pump"]
    name: String
    fluid_box: FluidBox
    energy_source: EnergySource
    energy_usage: Energy
    pumping_speed: FluidAmount
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    animations: Animation4Way | None = None
    fluid_wagon_connector_speed: Double | None = None
    fluid_wagon_connector_alignment_tolerance: Double | None = None
    fluid_wagon_connector_frame_count: Uint8 | None = None
    flow_scaling: Boolean | None = None
    fluid_animation: Animation4Way | None = None
    glass_pictures: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    fluid_wagon_connector_graphics: FluidWagonConnectorGraphics | None = None


@dataclass
class RadarPrototype:
    type: Literal["radar"]
    name: String
    energy_usage: Energy
    energy_per_sector: Energy
    energy_per_nearby_scan: Energy
    energy_source: EnergySource
    max_distance_of_sector_revealed: Uint32
    max_distance_of_nearby_sector_revealed: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: RotatedSprite | None = None
    frozen_patch: Sprite | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    radius_minimap_visualisation_color: Color | None = None
    rotation_speed: Double | None = None
    connects_to_other_radars: Boolean | None = None
    reset_orientation_when_frozen: Boolean | None = None
    energy_fraction_to_connect: Float | None = None
    energy_fraction_to_disconnect: Float | None = None


@dataclass
class RailChainSignalPrototype:
    type: Literal["rail-chain-signal"]
    name: String
    ground_picture_set: RailSignalPictureSet
    elevated_picture_set: RailSignalPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_red_output_signal: SignalIDConnector | None = None
    default_orange_output_signal: SignalIDConnector | None = None
    default_green_output_signal: SignalIDConnector | None = None
    default_blue_output_signal: SignalIDConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None


@dataclass
class RailPlannerPrototype:
    type: Literal["rail-planner"]
    name: String
    stack_size: ItemCountType
    rails: list[EntityID] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    support: EntityID | None = None
    manual_length_limit: Double | None = None


@dataclass
class RailRampPrototype:
    type: Literal["rail-ramp"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None
    support_range: Float | None = None
    collision_mask_allow_on_deep_oil_ocean: CollisionMaskConnector | None = None


@dataclass
class RailRemnantsPrototype:
    type: Literal["rail-remnants"]
    name: String
    pictures: RailPictureSet
    related_rail: EntityID
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    dying_speed: Float | None = None
    splash_speed: Float | None = None
    time_before_shading_off: Uint32 | None = None
    time_before_removed: Uint32 | None = None
    expires: Boolean | None = None
    remove_on_entity_placement: Boolean | None = None
    remove_on_tile_placement: Boolean | None = None
    auto_setup_collision_box: Boolean | None = None
    final_render_layer: RenderLayer | None = None
    ground_patch_render_layer: RenderLayer | None = None
    animation_render_layer: RenderLayer | None = None
    splash_render_layer: RenderLayer | None = None
    animation_overlay_render_layer: RenderLayer | None = None
    animation_overlay_final_render_layer: RenderLayer | None = None
    shuffle_directions_at_frame: Uint8 | None = None
    use_tile_color_for_ground_patch_tint: Boolean | None = None
    use_decay_layer: Boolean | None = None
    underwater_layer_offset: Int8 | None = None
    ground_patch_fade_in_delay: Float | None = None
    ground_patch_fade_in_speed: Float | None = None
    ground_patch_fade_out_start: Float | None = None
    decay_frame_transition_duration: Float | None = None
    animation: RotatedAnimationVariations | None = None
    animation_overlay: RotatedAnimationVariations | None = None
    decay_animation: RotatedAnimationVariations | None = None
    splash: AnimationVariations | None = None
    ground_patch: AnimationVariations | None = None
    ground_patch_higher: AnimationVariations | None = None
    ground_patch_decay: AnimationVariations | None = None
    underwater_patch: RotatedSprite | None = None
    ground_patch_fade_out_duration: Float | None = None
    direction_shuffle: (
        list[list[Uint16] | dict[str, Any]] | dict[str, Any] | None
    ) = None
    secondary_collision_box: BoundingBox | None = None


@dataclass
class RailSignalPrototype:
    type: Literal["rail-signal"]
    name: String
    ground_picture_set: RailSignalPictureSet
    elevated_picture_set: RailSignalPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_red_output_signal: SignalIDConnector | None = None
    default_orange_output_signal: SignalIDConnector | None = None
    default_green_output_signal: SignalIDConnector | None = None
    default_blue_output_signal: SignalIDConnector | None = None
    elevated_collision_mask: CollisionMaskConnector | None = None
    elevated_selection_priority: Uint8 | None = None


@dataclass
class RailSupportPrototype:
    type: Literal["rail-support"]
    name: String
    graphics_set: GraphicsSet1
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    support_range: Float | None = None
    not_buildable_if_no_rails: Boolean | None = None
    snap_to_spots_distance: Float | None = None
    collision_mask_allow_on_deep_oil_ocean: CollisionMaskConnector | None = None
    elevated_selection_boxes: list[BoundingBox] | dict[str, Any] | None = None


@dataclass
class ReactorPrototype:
    type: Literal["reactor"]
    name: String
    heat_buffer: HeatBuffer
    energy_source: EnergySource
    consumption: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    working_light_picture: Animation | None = None
    heating_radius: Double | None = None
    connection_patches_connected: SpriteVariations | None = None
    connection_patches_disconnected: SpriteVariations | None = None
    heat_connection_patches_connected: SpriteVariations | None = None
    heat_connection_patches_disconnected: SpriteVariations | None = None
    lower_layer_picture: Sprite | None = None
    heat_lower_layer_picture: Sprite | None = None
    picture: Sprite | None = None
    light: LightDefinition | None = None
    meltdown_action: Trigger | None = None
    neighbour_bonus: Double | None = None
    scale_energy_usage: Boolean | None = None
    use_fuel_glow_color: Boolean | None = None
    default_fuel_glow_color: Color | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_temperature_signal: SignalIDConnector | None = None


@dataclass
class RepairToolPrototype:
    type: Literal["repair-tool"]
    name: String
    stack_size: ItemCountType
    speed: Float
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    durability: Double | None = None
    durability_description_key: String | None = None
    durability_description_value: String | None = None
    infinite: Boolean | None = None


@dataclass
class ResourceEntityPrototype:
    type: Literal["resource"]
    name: String
    stage_counts: list[Uint32] | dict[str, Any]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    stages: AnimationVariations | None = None
    infinite: Boolean | None = None
    highlight: Boolean | None = None
    randomize_visual_position: Boolean | None = None
    map_grid: Boolean | None = None
    draw_stateless_visualisation_under_building: Boolean | None = None
    minimum: Uint32 | None = None
    normal: Uint32 | None = None
    infinite_depletion_amount: Uint32 | None = None
    resource_patch_search_radius: Uint32 | None = None
    category: ResourceCategoryID | None = None
    walking_sound: Sound | None = None
    driving_sound: InterruptibleSound | None = None
    stages_effect: AnimationVariations | None = None
    effect_animation_period: Float | None = None
    effect_animation_period_deviation: Float | None = None
    effect_darkness_multiplier: Float | None = None
    min_effect_alpha: Float | None = None
    max_effect_alpha: Float | None = None
    tree_removal_probability: Double | None = None
    cliff_removal_probability: Double | None = None
    tree_removal_max_distance: Double | None = None
    mining_visualisation_tint: Color | None = None


@dataclass
class RoboportPrototype:
    type: Literal["roboport"]
    name: String
    energy_source: ElectricEnergySource | VoidEnergySource
    energy_usage: Energy
    recharge_minimum: Energy
    robot_slots_count: ItemStackIndex
    material_slots_count: ItemStackIndex
    request_to_open_door_timeout: Uint32
    spawn_and_station_height: Float
    charge_approach_distance: Float
    logistics_radius: Float
    construction_radius: Float
    charging_energy: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    base: Sprite | None = None
    base_patch: Sprite | None = None
    frozen_patch: Sprite | None = None
    base_animation: Animation | None = None
    door_animation_up: Animation | None = None
    door_animation_down: Animation | None = None
    radar_range: Uint32 | None = None
    radar_visualisation_color: Color | None = None
    recharging_animation: Animation | None = None
    open_door_trigger_effect: TriggerEffect | None = None
    close_door_trigger_effect: TriggerEffect | None = None
    default_available_logistic_output_signal: SignalIDConnector | None = None
    default_total_logistic_output_signal: SignalIDConnector | None = None
    default_available_construction_output_signal: SignalIDConnector | None = (
        None
    )
    default_total_construction_output_signal: SignalIDConnector | None = None
    default_roboport_count_output_signal: SignalIDConnector | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    render_recharge_icon: Boolean | None = None
    max_logistic_slots: LogisticFilterIndex | None = None
    spawn_and_station_shadow_height_offset: Float | None = None
    stationing_render_layer_swap_height: Float | None = None
    draw_logistic_radius_visualization: Boolean | None = None
    draw_construction_radius_visualization: Boolean | None = None
    recharging_light: LightDefinition | None = None
    charging_station_count: Uint32 | None = None
    charging_station_count_affected_by_quality: Boolean | None = None
    charging_distance: Float | None = None
    charging_station_shift: Vector | None = None
    charging_threshold_distance: Float | None = None
    robot_vertical_acceleration: Float | None = None
    stationing_offset: Vector | None = None
    robot_limit: ItemCountType | None = None
    robots_shrink_when_entering_and_exiting: Boolean | None = None
    charging_offsets: list[Vector] | dict[str, Any] | None = None
    logistics_connection_distance: Float | None = None


@dataclass
class RocketSiloPrototype:
    type: Literal["rocket-silo"]
    name: String
    energy_usage: Energy
    crafting_speed: Double
    crafting_categories: list[RecipeCategoryID] | dict[str, Any]
    energy_source: EnergySource
    active_energy_usage: Energy
    lamp_energy_usage: Energy
    rocket_entity: EntityID
    hole_clipping_box: BoundingBox
    door_back_open_offset: Vector
    door_front_open_offset: Vector
    silo_fade_out_start_distance: Double
    silo_fade_out_end_distance: Double
    times_to_blink: Uint8
    light_blinking_speed: Double
    door_opening_speed: Double
    rocket_parts_required: Uint32
    rocket_quick_relaunch_start_offset: Double
    cargo_station_parameters: CargoStationParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_energy_usage: Boolean | None = None
    fluid_boxes: list[FluidBox] | dict[str, Any] | None = None
    effect_receiver: EffectReceiver | None = None
    module_slots: ItemStackIndex | None = None
    quality_affects_module_slots: Boolean | None = None
    allowed_effects: EffectTypeLimitation | None = None
    allowed_module_categories: (
        list[ModuleCategoryID] | dict[str, Any] | None
    ) = None
    show_recipe_icon: Boolean | None = None
    return_ingredients_on_change: Boolean | None = None
    draw_entity_info_icon_background: Boolean | None = None
    match_animation_speed_to_activity: Boolean | None = None
    show_recipe_icon_on_map: Boolean | None = None
    fast_transfer_modules_into_module_slots_only: Boolean | None = None
    ignore_output_full: Boolean | None = None
    graphics_set: CraftingMachineGraphicsSet | None = None
    graphics_set_flipped: CraftingMachineGraphicsSet | None = None
    perceived_performance: PerceivedPerformance | None = None
    production_health_effect: ProductionHealthEffect | None = None
    trash_inventory_size: ItemStackIndex | None = None
    vector_to_place_result: Vector | None = None
    forced_symmetry: Mirroring | None = None
    crafting_speed_quality_multiplier: dict[QualityID, Double] | None = None
    module_slots_quality_bonus: dict[QualityID, ItemStackIndex] | None = None
    energy_usage_quality_multiplier: dict[QualityID, Double] | None = None
    fixed_recipe: RecipeID | None = None
    fixed_quality: QualityID | None = None
    gui_title_key: String | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    default_recipe_finished_signal: SignalIDConnector | None = None
    default_working_signal: SignalIDConnector | None = None
    enable_logistic_control_behavior: Boolean | None = None
    ingredient_count: Uint16 | None = None
    max_item_product_count: Uint16 | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    circuit_connector_flipped: list[CircuitConnectorDefinition] | None = None
    fluid_boxes_off_when_no_fluid_recipe: Boolean | None = None
    disabled_when_recipe_not_researched: Boolean | None = None
    arm_02_right_animation: Animation | None = None
    arm_01_back_animation: Animation | None = None
    arm_03_front_animation: Animation | None = None
    shadow_sprite: Sprite | None = None
    hole_sprite: Sprite | None = None
    hole_light_sprite: Sprite | None = None
    rocket_shadow_overlay_sprite: Sprite | None = None
    rocket_glow_overlay_sprite: Sprite | None = None
    door_back_sprite: Sprite | None = None
    door_front_sprite: Sprite | None = None
    base_day_sprite: Sprite | None = None
    base_front_sprite: Sprite | None = None
    red_lights_back_sprites: Sprite | None = None
    red_lights_front_sprites: Sprite | None = None
    base_frozen: Sprite | None = None
    base_front_frozen: Sprite | None = None
    hole_frozen: Sprite | None = None
    door_back_frozen: Sprite | None = None
    door_front_frozen: Sprite | None = None
    satellite_animation: Animation | None = None
    satellite_shadow_animation: Animation | None = None
    base_night_sprite: Sprite | None = None
    base_light: LightDefinition | None = None
    base_engine_light: LightDefinition | None = None
    rocket_rising_delay: Uint8 | None = None
    launch_wait_time: Uint8 | None = None
    render_not_in_network_icon: Boolean | None = None
    rocket_parts_storage_cap: Uint32 | None = None
    alarm_trigger: TriggerEffect | None = None
    clamps_on_trigger: TriggerEffect | None = None
    clamps_off_trigger: TriggerEffect | None = None
    doors_trigger: TriggerEffect | None = None
    raise_rocket_trigger: TriggerEffect | None = None
    alarm_sound: Sound | None = None
    quick_alarm_sound: Sound | None = None
    clamps_on_sound: Sound | None = None
    clamps_off_sound: Sound | None = None
    doors_sound: Sound | None = None
    raise_rocket_sound: Sound | None = None
    to_be_inserted_to_rocket_inventory_size: ItemStackIndex | None = None
    logistic_trash_inventory_size: ItemStackIndex | None = None
    launch_to_space_platforms: Boolean | None = None
    can_launch_without_landing_pads: Boolean | None = None


@dataclass
class RocketSiloRocketPrototype:
    type: Literal["rocket-silo-rocket"]
    name: String
    cargo_pod_entity: EntityID
    rocket_rise_offset: Vector
    rocket_flame_left_rotation: Float
    rocket_flame_right_rotation: Float
    rocket_render_layer_switch_distance: Double
    full_render_layer_switch_distance: Double
    rocket_launch_offset: Vector
    effects_fade_in_start_distance: Double
    effects_fade_in_end_distance: Double
    shadow_fade_out_start_ratio: Double
    shadow_fade_out_end_ratio: Double
    rocket_visible_distance_from_center: Float
    rising_speed: Double
    engine_starting_speed: Double
    flying_speed: Double
    flying_acceleration: Double
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    shadow_slave_entity: EntityID | None = None
    dying_explosion: EntityID | None = None
    glow_light: LightDefinition | None = None
    rocket_sprite: Sprite | None = None
    rocket_shadow_sprite: Sprite | None = None
    rocket_glare_overlay_sprite: Sprite | None = None
    rocket_smoke_bottom1_animation: Animation | None = None
    rocket_smoke_bottom2_animation: Animation | None = None
    rocket_smoke_top1_animation: Animation | None = None
    rocket_smoke_top2_animation: Animation | None = None
    rocket_smoke_top3_animation: Animation | None = None
    rocket_flame_animation: Animation | None = None
    rocket_flame_left_animation: Animation | None = None
    rocket_flame_right_animation: Animation | None = None
    rocket_initial_offset: Vector | None = None
    cargo_attachment_offset: Vector | None = None
    rocket_above_wires_slice_offset_from_center: Float | None = None
    rocket_air_object_slice_offset_from_center: Float | None = None
    rocket_fog_mask: FogMaskShapeDefinition | None = None
    flying_trigger: TriggerEffect | None = None
    flying_sound: Sound | None = None


@dataclass
class RocketSiloRocketShadowPrototype:
    type: Literal["rocket-silo-rocket-shadow"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )


@dataclass
class SegmentPrototype:
    type: Literal["segment"]
    name: String
    animation: RotatedAnimation
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    dying_sound: Sound | None = None
    dying_sound_volume_modifier: Float | None = None
    render_layer: RenderLayer | None = None
    forward_overlap: Uint8 | None = None
    backward_overlap: Uint8 | None = None
    forward_padding: Double | None = None
    backward_padding: Double | None = None
    update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = (
        None
    )
    update_effects_while_enraged: (
        list[TriggerEffectWithCooldown] | dict[str, Any] | None
    ) = None


@dataclass
class SegmentedUnitPrototype:
    type: Literal["segmented-unit"]
    name: String
    animation: RotatedAnimation
    vision_distance: Double
    territory_radius: Uint32
    enraged_duration: MapTick
    patrolling_speed: Double
    investigating_speed: Double
    attacking_speed: Double
    enraged_speed: Double
    acceleration_rate: Double
    turn_radius: Double
    segment_engine: SegmentEngineSpecification
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    dying_sound: Sound | None = None
    dying_sound_volume_modifier: Float | None = None
    render_layer: RenderLayer | None = None
    forward_overlap: Uint8 | None = None
    backward_overlap: Uint8 | None = None
    forward_padding: Double | None = None
    backward_padding: Double | None = None
    update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = (
        None
    )
    update_effects_while_enraged: (
        list[TriggerEffectWithCooldown] | dict[str, Any] | None
    ) = None
    attack_parameters: AttackParameters | None = None
    revenge_attack_parameters: AttackParameters | None = None
    patrolling_turn_radius: Double | None = None
    turn_smoothing: Double | None = None
    ticks_per_scan: Uint32 | None = None
    roar: Sound | None = None
    roar_probability: Float | None = None
    hurt_roar: Sound | None = None
    hurt_thresholds: list[Float] | dict[str, Any] | None = None


@dataclass
class SelectionToolPrototype:
    type: Literal["selection-tool"]
    name: String
    stack_size: ItemCountType
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None


@dataclass
class SelectorCombinatorPrototype:
    type: Literal["selector-combinator"]
    name: String
    energy_source: ElectricEnergySource | VoidEnergySource
    active_energy_usage: Energy
    input_connection_bounding_box: BoundingBox
    output_connection_bounding_box: BoundingBox
    activity_led_light_offsets: list[Vector]
    screen_light_offsets: list[Vector]
    input_connection_points: list[WireConnectionPoint]
    output_connection_points: list[WireConnectionPoint]
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    sprites: Sprite4Way | None = None
    frozen_patch: Sprite4Way | None = None
    activity_led_sprites: Sprite4Way | None = None
    activity_led_light: LightDefinition | None = None
    screen_light: LightDefinition | None = None
    activity_led_hold_time: Uint8 | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    max_symbol_sprites: Sprite4Way | None = None
    min_symbol_sprites: Sprite4Way | None = None
    count_symbol_sprites: Sprite4Way | None = None
    random_symbol_sprites: Sprite4Way | None = None
    stack_size_sprites: Sprite4Way | None = None
    rocket_capacity_sprites: Sprite4Way | None = None
    quality_symbol_sprites: Sprite4Way | None = None


@dataclass
class SimpleEntityPrototype:
    type: Literal["simple-entity"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    count_as_rock_for_filtered_deconstruction: Boolean | None = None
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    random_animation_offset: Boolean | None = None
    random_variation_on_create: Boolean | None = None
    pictures: SpriteVariations | None = None
    picture: Sprite4Way | None = None
    animations: AnimationVariations | None = None
    lower_render_layer: RenderLayer | None = None
    lower_pictures: SpriteVariations | None = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None


@dataclass
class SimpleEntityWithForcePrototype:
    type: Literal["simple-entity-with-force"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    random_animation_offset: Boolean | None = None
    random_variation_on_create: Boolean | None = None
    pictures: SpriteVariations | None = None
    picture: Sprite4Way | None = None
    animations: AnimationVariations | None = None
    lower_render_layer: RenderLayer | None = None
    lower_pictures: SpriteVariations | None = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None
    force_visibility: ForceCondition | None = None


@dataclass
class SimpleEntityWithOwnerPrototype:
    type: Literal["simple-entity-with-owner"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    render_layer: RenderLayer | None = None
    secondary_draw_order: Int8 | None = None
    random_animation_offset: Boolean | None = None
    random_variation_on_create: Boolean | None = None
    pictures: SpriteVariations | None = None
    picture: Sprite4Way | None = None
    animations: AnimationVariations | None = None
    lower_render_layer: RenderLayer | None = None
    lower_pictures: SpriteVariations | None = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None
    force_visibility: ForceCondition | None = None


@dataclass
class SmokeWithTriggerPrototype:
    type: Literal["smoke-with-trigger"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    animation: Animation | None = None
    cyclic: Boolean | None = None
    duration: Uint32 | None = None
    spread_duration: Uint32 | None = None
    fade_away_duration: Uint32 | None = None
    fade_in_duration: Uint32 | None = None
    start_scale: Double | None = None
    end_scale: Double | None = None
    color: Color | None = None
    affected_by_wind: Boolean | None = None
    show_when_smoke_off: Boolean | None = None
    render_layer: RenderLayer | None = None
    movement_slow_down_factor: Double | None = None
    glow_fade_away_duration: Uint32 | None = None
    glow_animation: Animation | None = None
    action: Trigger | None = None
    action_cooldown: Uint32 | None = None
    particle_count: Uint8 | None = None
    particle_distance_scale_factor: Float | None = None
    spread_duration_variation: Uint32 | None = None
    particle_duration_variation: Uint32 | None = None
    particle_spread: Vector | None = None
    particle_scale_factor: Vector | None = None
    wave_distance: Vector | None = None
    wave_speed: Vector | None = None
    attach_to_target: Boolean | None = None
    fade_when_attachment_is_destroyed: Boolean | None = None


@dataclass
class SolarPanelPrototype:
    type: Literal["solar-panel"]
    name: String
    energy_source: ElectricEnergySource
    production: Energy
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    picture: SpriteVariations | None = None
    overlay: SpriteVariations | None = None
    performance_at_day: Double | None = None
    performance_at_night: Double | None = None
    solar_coefficient_property: SurfacePropertyID | None = None


@dataclass
class SpacePlatformHubPrototype:
    type: Literal["space-platform-hub"]
    name: String
    inventory_size: ItemStackIndex
    dump_container: EntityID
    cargo_station_parameters: CargoStationParameters
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[256] = 256
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: CargoBayConnectableGraphicsSet | None = None
    persistent_ambient_sounds: PersistentWorldAmbientSoundsDefinition | None = (
        None
    )
    surface_render_parameters: SurfaceRenderParameters | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_speed_signal: SignalIDConnector | None = None
    default_damage_taken_signal: SignalIDConnector | None = None
    platform_repair_speed_modifier: Float | None = None
    weight: Weight | None = None


@dataclass
class SpacePlatformStarterPackPrototype:
    type: Literal["space-platform-starter-pack"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    trigger: Trigger | None = None
    surface: SurfaceID | None = None
    create_electric_network: Boolean | None = None
    tiles: list[SpacePlatformTileDefinition] | dict[str, Any] | None = None
    initial_items: list[ItemProductPrototype] | dict[str, Any] | None = None


@dataclass
class SpeechBubblePrototype:
    type: Literal["speech-bubble"]
    name: String
    style: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    wrapper_flow_style: String | None = None
    y_offset: Double | None = None
    fade_in_out_ticks: Uint32 | None = None


@dataclass
class SpiderLegPrototype:
    type: Literal["spider-leg"]
    name: String
    knee_height: Double
    knee_distance_factor: Double
    initial_movement_speed: Double
    movement_acceleration: Double
    target_position_randomisation_distance: Double
    minimal_step_size: Double
    base_position_selection_distance: Double
    movement_based_position_selection_distance: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    stretch_force_scalar: Double | None = None
    hip_flexibility: Double | None = None
    ankle_height: Double | None = None
    graphics_set: GraphicsSet2 | None = None
    walking_sound_volume_modifier: Float | None = None
    walking_sound_speed_modifier: Float | None = None
    upper_leg_dying_trigger_effects: (
        list[SpiderLegTriggerEffect] | dict[str, Any] | None
    ) = None
    lower_leg_dying_trigger_effects: (
        list[SpiderLegTriggerEffect] | dict[str, Any] | None
    ) = None


@dataclass
class SpiderUnitPrototype:
    type: Literal["spider-unit"]
    name: String
    spider_engine: SpiderEngineSpecification
    height: Float
    attack_parameters: AttackParameters
    vision_distance: Double
    distraction_cooldown: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    torso_bob_speed: Float | None = None
    torso_rotation_speed: Float | None = None
    graphics_set: SpiderTorsoGraphicsSet | None = None
    absorptions_to_join_attack: dict[AirbornePollutantID, Float] | None = None
    spawning_time_modifier: Double | None = None
    radar_range: Uint32 | None = None
    dying_sound: Sound | None = None
    warcry: Sound | None = None
    min_pursue_time: Uint32 | None = None
    max_pursue_distance: Double | None = None
    ai_settings: UnitAISettings | None = None


@dataclass
class SpiderVehiclePrototype:
    type: Literal["spider-vehicle"]
    name: String
    weight: Double
    energy_per_hit_point: Double
    energy_source: BurnerEnergySource | VoidEnergySource
    inventory_size: ItemStackIndex
    spider_engine: SpiderEngineSpecification
    height: Float
    movement_energy_consumption: Energy
    automatic_weapon_cycling: Boolean
    chain_shooting_cooldown_modifier: Float
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    braking_power: Energy | Double | None = None
    braking_force: Energy | Double | None = None
    friction: Double | None = None
    friction_force: Double | None = None
    terrain_friction_modifier: Float | None = None
    impact_speed_to_volume_ratio: Double | None = None
    stop_trigger_speed: Double | None = None
    crash_trigger: TriggerEffect | None = None
    stop_trigger: TriggerEffect | None = None
    equipment_grid: EquipmentGridID | None = None
    minimap_representation: Sprite | None = None
    selected_minimap_representation: Sprite | None = None
    allow_passengers: Boolean | None = None
    deliver_category: String | None = None
    chunk_exploration_radius: Uint32 | None = None
    allow_remote_driving: Boolean | None = None
    graphics_set: SpiderVehicleGraphicsSet | None = None
    torso_rotation_speed: Float | None = None
    torso_bob_speed: Float | None = None
    trash_inventory_size: ItemStackIndex | None = None
    guns: list[ItemID] | dict[str, Any] | None = None


@dataclass
class SpidertronRemotePrototype:
    type: Literal["spidertron-remote"]
    name: String
    stack_size: Literal[1]
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None
    icon_color_indicator_mask: FileName | None = None


@dataclass
class SplitterPrototype:
    type: Literal["splitter"]
    name: String
    speed: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure: Animation4Way | None = None
    structure_patch: Animation4Way | None = None
    frozen_patch: Sprite4Way | None = None
    structure_animation_speed_coefficient: Double | None = None
    structure_animation_movement_cooldown: Uint32 | None = None
    related_transport_belt: EntityID | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None
    default_input_left_condition: CircuitConditionConnector | None = None
    default_input_right_condition: CircuitConditionConnector | None = None
    default_output_left_condition: CircuitConditionConnector | None = None
    default_output_right_condition: CircuitConditionConnector | None = None


@dataclass
class StickerPrototype:
    type: Literal["sticker"]
    name: String
    duration_in_ticks: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Literal[True] = True
    hidden_in_factoriopedia: Literal[True] = True
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    animation: Animation | None = None
    render_layer: RenderLayer | None = None
    damage_interval: Uint32 | None = None
    spread_fire_entity: EntityID | None = None
    fire_spread_cooldown: Uint8 | None = None
    fire_spread_radius: Float | None = None
    stickers_per_square_meter: Float | None = None
    force_visibility: ForceCondition | None = None
    single_particle: Boolean | None = None
    use_damage_substitute: Boolean | None = None
    damage_per_tick: DamageParameters | None = None
    target_movement_modifier: Float | None = None
    target_movement_modifier_from: Float | None = None
    target_movement_modifier_to: Float | None = None
    target_movement_max: Float | None = None
    target_movement_max_from: Float | None = None
    target_movement_max_to: Float | None = None
    ground_target: Boolean | None = None
    vehicle_speed_modifier: Float | None = None
    vehicle_speed_modifier_from: Float | None = None
    vehicle_speed_modifier_to: Float | None = None
    vehicle_speed_max: Float | None = None
    vehicle_speed_max_from: Float | None = None
    vehicle_speed_max_to: Float | None = None
    vehicle_friction_modifier: Float | None = None
    vehicle_friction_modifier_from: Float | None = None
    vehicle_friction_modifier_to: Float | None = None
    selection_box_type: CursorBoxType | None = None
    update_effects: list[TriggerEffectWithCooldown] | dict[str, Any] | None = (
        None
    )


@dataclass
class StorageTankPrototype:
    type: Literal["storage-tank"]
    name: String
    fluid_box: FluidBox
    window_bounding_box: BoundingBox
    flow_length_in_ticks: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: Pictures1 | None = None
    two_direction_only: Boolean | None = None
    show_fluid_icon: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None


@dataclass
class StraightRailPrototype:
    type: Literal["straight-rail"]
    name: String
    pictures: RailPictureSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    walking_sound: Sound | None = None
    fence_pictures: RailFenceGraphicsSet | None = None
    extra_planner_penalty: Double | None = None
    extra_planner_goal_penalty: Double | None = None
    forced_fence_segment_count: Uint8 | None = None
    ending_shifts: list[Vector] | dict[str, Any] | None = None
    deconstruction_marker_positions: list[Vector] | dict[str, Any] | None = None
    removes_soft_decoratives: Boolean | None = None


@dataclass
class TemporaryContainerPrototype:
    type: Literal["temporary-container"]
    name: String
    inventory_size: ItemStackIndex
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    quality_affects_inventory_size: Boolean | None = None
    picture: Sprite | None = None
    inventory_type: InventoryType | None = None
    inventory_properties: InventoryWithCustomStackSizeSpecification | None = (
        None
    )
    inventory_weight_limit: Weight | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_status: EntityStatus | None = None
    destroy_on_empty: Boolean | None = None
    time_to_live: Uint32 | None = None
    alert_after_time: Uint32 | None = None


@dataclass
class ThrusterPrototype:
    type: Literal["thruster"]
    name: String
    min_performance: ThrusterPerformancePoint
    max_performance: ThrusterPerformancePoint
    fuel_fluid_box: FluidBox
    oxidizer_fluid_box: FluidBox
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    graphics_set: ThrusterGraphicsSet | None = None
    plumes: PlumesSpecification | None = None


@dataclass
class TileGhostPrototype:
    type: Literal["tile-ghost"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )


@dataclass
class TilePrototype:
    type: Literal["tile"]
    name: String
    collision_mask: CollisionMaskConnector
    layer: Uint8
    variants: TileTransitionsVariants
    map_color: Color
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    build_animations: Animation4Way | None = None
    build_animations_background: Animation4Way | None = None
    built_animation_frame: Uint32 | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    lowland_fog: Boolean | None = None
    transition_overlay_layer_offset: Int8 | None = None
    sprite_usage_surface: SpriteUsageSurfaceHint | None = None
    layer_group: TileRenderLayer | None = None
    transition_merges_with_tile: TileID | None = None
    effect_color: Color | None = None
    tint: Color | None = None
    particle_tints: TileBasedParticleTints | None = None
    walking_sound: Sound | None = None
    landing_steps_sound: Sound | None = None
    driving_sound: InterruptibleSound | None = None
    build_sound: Sound | BuildSound | None = None
    mined_sound: Sound | None = None
    walking_speed_modifier: Double | None = None
    vehicle_friction_modifier: Double | None = None
    decorative_removal_probability: Float | None = None
    allowed_neighbors: list[TileID] | dict[str, Any] | None = None
    needs_correction: Boolean | None = None
    minable: MinableProperties | None = None
    fluid: FluidID | None = None
    next_direction: TileID | None = None
    can_be_part_of_blueprint: Boolean | None = None
    is_foundation: Boolean | None = None
    destroys_dropped_items: Boolean | None = None
    allows_being_covered: Boolean | None = None
    searchable: Boolean | None = None
    max_health: Float | None = None
    weight: Weight | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    absorptions_per_second: dict[AirbornePollutantID, Double] | None = None
    default_cover_tile: TileID | None = None
    frozen_variant: TileID | None = None
    thawed_variant: TileID | None = None
    effect: TileEffectDefinitionID | None = None
    trigger_effect: TriggerEffect | None = None
    default_destroyed_dropped_item_trigger: Trigger | None = None
    scorch_mark_color: Color | None = None
    check_collision_with_entities: Boolean | None = None
    effect_color_secondary: Color | None = None
    effect_is_opaque: Boolean | None = None
    transitions: list[TileTransitionsToTiles] | dict[str, Any] | None = None
    transitions_between_transitions: (
        list[TileTransitionsBetweenTransitions] | dict[str, Any] | None
    ) = None
    autoplace: AutoplaceSpecification | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    bound_decoratives: (
        DecorativeID | list[DecorativeID] | dict[str, Any] | None
    ) = None
    ambient_sounds_group: TileID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None


@dataclass
class TipsAndTricksItem:
    type: Literal["tips-and-tricks-item"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    image: FileName | None = None
    simulation: SimulationDefinition | None = None
    tag: String | None = None
    category: String | None = None
    indent: Uint8 | None = None
    is_title: Boolean | None = None
    trigger: TipTrigger | None = None
    skip_trigger: TipTrigger | None = None
    tutorial: String | None = None
    starting_status: TipStatus | None = None
    dependencies: list[String] | dict[str, Any] | None = None
    player_input_method_filter: PlayerInputMethodFilter | None = None
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None


@dataclass
class ToolPrototype:
    type: Literal["tool"]
    name: String
    stack_size: ItemCountType
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    durability: Double | None = None
    durability_description_key: String | None = None
    durability_description_value: String | None = None
    infinite: Boolean | None = None


@dataclass
class TrainStopPrototype:
    type: Literal["train-stop"]
    name: String
    animation_ticks_per_frame: Uint32
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Literal[2] = 2
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    rail_overlay_animations: Animation4Way | None = None
    animations: Animation4Way | None = None
    top_animations: Animation4Way | None = None
    default_train_stopped_signal: SignalIDConnector | None = None
    default_trains_count_signal: SignalIDConnector | None = None
    default_trains_limit_signal: SignalIDConnector | None = None
    default_priority_signal: SignalIDConnector | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    color: Color | None = None
    chart_name: Boolean | None = None
    light1: TrainStopLight | None = None
    light2: TrainStopLight | None = None
    drawing_boxes: DrawingBoxes | None = None
    circuit_connector: list[CircuitConnectorDefinition] | None = None


@dataclass
class TransportBeltPrototype:
    type: Literal["transport-belt"]
    name: String
    speed: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSetWithCorners | None = None
    animation_speed_coefficient: Double | None = None
    connector_frame_sprites: TransportBeltConnectorFrame | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None
    related_underground_belt: EntityID | None = None


@dataclass
class TreePrototype:
    type: Literal["tree"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    variation_weights: list[Float] | dict[str, Any] | None = None
    darkness_of_burnt_tree: Float | None = None
    pictures: SpriteVariations | None = None
    variations: list[TreeVariation] | dict[str, Any] | None = None
    colors: list[Color] | dict[str, Any] | None = None
    stateless_visualisation_variations: (
        list[
            StatelessVisualisation
            | list[StatelessVisualisation]
            | dict[str, Any]
        ]
        | dict[str, Any]
        | None
    ) = None


@dataclass
class TurretPrototype:
    type: Literal["turret"]
    name: String
    attack_parameters: AttackParameters
    folded_animation: RotatedAnimation8Way
    call_for_help_radius: Double
    graphics_set: TurretGraphicsSet
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    attack_target_mask: TriggerTargetMask | None = None
    ignore_target_mask: TriggerTargetMask | None = None
    shoot_in_prepare_state: Boolean | None = None
    start_attacking_only_when_can_shoot: Boolean | None = None
    turret_base_has_direction: Boolean | None = None
    random_animation_offset: Boolean | None = None
    attack_from_start_frame: Boolean | None = None
    allow_turning_when_starting_attack: Boolean | None = None
    gun_animation_secondary_draw_order: Uint8 | None = None
    gun_animation_render_layer: RenderLayer | None = None
    preparing_animation: RotatedAnimation8Way | None = None
    prepared_animation: RotatedAnimation8Way | None = None
    prepared_alternative_animation: RotatedAnimation8Way | None = None
    starting_attack_animation: RotatedAnimation8Way | None = None
    attacking_animation: RotatedAnimation8Way | None = None
    energy_glow_animation: RotatedAnimation8Way | None = None
    resource_indicator_animation: RotatedAnimation8Way | None = None
    ending_attack_animation: RotatedAnimation8Way | None = None
    folding_animation: RotatedAnimation8Way | None = None
    integration: Sprite | None = None
    special_effect: TurretSpecialEffect | None = None
    glow_light_intensity: Float | None = None
    energy_glow_animation_flicker_strength: Float | None = None
    starting_attack_sound: Sound | None = None
    dying_sound: Sound | None = None
    preparing_sound: Sound | None = None
    folding_sound: Sound | None = None
    prepared_sound: Sound | None = None
    prepared_alternative_sound: Sound | None = None
    rotating_sound: InterruptibleSound | None = None
    default_speed: Float | None = None
    default_speed_secondary: Float | None = None
    default_speed_when_killed: Float | None = None
    default_starting_progress_when_killed: Float | None = None
    rotation_speed: Float | None = None
    rotation_speed_secondary: Float | None = None
    rotation_speed_when_killed: Float | None = None
    rotation_starting_progress_when_killed: Float | None = None
    preparing_speed: Float | None = None
    preparing_speed_secondary: Float | None = None
    preparing_speed_when_killed: Float | None = None
    preparing_starting_progress_when_killed: Float | None = None
    folded_speed: Float | None = None
    folded_speed_secondary: Float | None = None
    folded_speed_when_killed: Float | None = None
    folded_starting_progress_when_killed: Float | None = None
    prepared_speed: Float | None = None
    prepared_speed_secondary: Float | None = None
    prepared_speed_when_killed: Float | None = None
    prepared_starting_progress_when_killed: Float | None = None
    prepared_alternative_speed: Float | None = None
    prepared_alternative_speed_secondary: Float | None = None
    prepared_alternative_speed_when_killed: Float | None = None
    prepared_alternative_starting_progress_when_killed: Float | None = None
    prepared_alternative_chance: Float | None = None
    starting_attack_speed: Float | None = None
    starting_attack_speed_secondary: Float | None = None
    starting_attack_speed_when_killed: Float | None = None
    starting_attack_starting_progress_when_killed: Float | None = None
    attacking_speed: Float | None = None
    ending_attack_speed: Float | None = None
    ending_attack_speed_secondary: Float | None = None
    ending_attack_speed_when_killed: Float | None = None
    ending_attack_starting_progress_when_killed: Float | None = None
    folding_speed: Float | None = None
    folding_speed_secondary: Float | None = None
    folding_speed_when_killed: Float | None = None
    folding_starting_progress_when_killed: Float | None = None
    prepare_range: Double | None = None
    alert_when_attacking: Boolean | None = None
    spawn_decorations_on_expansion: Boolean | None = None
    folded_animation_is_stateless: Boolean | None = None
    unfolds_before_dying: Boolean | None = None
    spawn_decoration: (
        list[CreateDecorativesTriggerEffectItem] | dict[str, Any] | None
    ) = None
    folded_state_corpse: EntityID | list[EntityID] | dict[str, Any] | None = (
        None
    )
    can_retarget_while_starting_attack: Boolean | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: (
        list[CircuitConnectorDefinition] | dict[str, Any] | None
    ) = None


@dataclass
class UndergroundBeltPrototype:
    type: Literal["underground-belt"]
    name: String
    speed: Double
    max_distance: Uint8
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    belt_animation_set: TransportBeltAnimationSet | None = None
    animation_speed_coefficient: Double | None = None
    structure: Structure1 | None = None
    underground_sprite: Sprite | None = None
    underground_remove_belts_sprite: Sprite | None = None
    max_distance_underground_remove_belts_sprite: Sprite | None = None
    underground_collision_mask: CollisionMaskConnector | None = None
    max_distance_tint: Color | None = None


@dataclass
class UnitPrototype:
    type: Literal["unit"]
    name: String
    run_animation: RotatedAnimation
    attack_parameters: AttackParameters
    movement_speed: Float
    distance_per_frame: Float
    distraction_cooldown: Uint32
    vision_distance: Double
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Literal[True] = True
    allow_run_time_change_of_is_military_target: Literal[False] = False
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    warcry: Sound | None = None
    rotation_speed: Float | None = None
    dying_sound: Sound | None = None
    min_pursue_time: Uint32 | None = None
    has_belt_immunity: Boolean | None = None
    max_pursue_distance: Double | None = None
    radar_range: Uint32 | None = None
    ai_settings: UnitAISettings | None = None
    move_while_shooting: Boolean | None = None
    can_open_gates: Boolean | None = None
    affected_by_tiles: Boolean | None = None
    render_layer: RenderLayer | None = None
    light: LightDefinition | None = None
    absorptions_to_join_attack: dict[AirbornePollutantID, Float] | None = None
    spawning_time_modifier: Double | None = None
    walking_sound: Sound | None = None
    alternative_attacking_frame_sequence: (
        UnitAlternativeFrameSequence | None
    ) = None
    running_sound_animation_positions: list[Float] | dict[str, Any] | None = (
        None
    )


@dataclass
class UpgradeItemPrototype:
    type: Literal["upgrade-item"]
    name: String
    stack_size: Literal[1]
    select: SelectionModeData
    alt_select: SelectionModeData
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    dark_background_icons: list[IconData] | dict[str, Any] | None = None
    dark_background_icon: FileName | None = None
    dark_background_icon_size: SpriteSizeType | None = None
    place_result: EntityID | None = None
    place_as_equipment_result: EquipmentID | None = None
    fuel_category: FuelCategoryID | None = None
    burnt_result: ItemID | None = None
    spoil_result: ItemID | None = None
    plant_result: EntityID | None = None
    place_as_tile: PlaceAsTile | None = None
    pictures: SpriteVariations | None = None
    flags: ItemPrototypeFlags | None = None
    spoil_ticks: Uint32 | None = None
    fuel_value: Energy | None = None
    fuel_acceleration_multiplier: Double | None = None
    fuel_top_speed_multiplier: Double | None = None
    fuel_emissions_multiplier: Double | None = None
    fuel_acceleration_multiplier_quality_bonus: Double | None = None
    fuel_top_speed_multiplier_quality_bonus: Double | None = None
    weight: Weight | None = None
    ingredient_to_weight_coefficient: Double | None = None
    fuel_glow_color: Color | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    pick_sound: Sound | None = None
    drop_sound: Sound | None = None
    inventory_move_sound: Sound | None = None
    default_import_location: SpaceLocationID | None = None
    color_hint: ColorHintSpecification | None = None
    has_random_tint: Boolean | None = None
    spoil_to_trigger_result: SpoilToTriggerResult | None = None
    destroyed_by_dropping_trigger: Trigger | None = None
    rocket_launch_products: (
        list[ItemProductPrototype] | dict[str, Any] | None
    ) = None
    send_to_orbit_mode: SendToOrbitMode | None = None
    moved_to_hub_when_building: Boolean | None = None
    random_tint_color: Color | None = None
    spoil_level: Uint8 | None = None
    auto_recycle: Boolean | None = None
    default_label_color: Color | None = None
    draw_label_for_cursor_render: Boolean | None = None
    super_forced_select: SelectionModeData | None = None
    reverse_select: SelectionModeData | None = None
    alt_reverse_select: SelectionModeData | None = None
    always_include_tiles: Boolean | None = None
    mouse_cursor: MouseCursorID | None = None
    skip_fog_of_war: Boolean | None = None


@dataclass
class ValvePrototype:
    type: Literal["valve"]
    name: String
    mode: ValveMode
    fluid_box: FluidBox
    flow_rate: FluidAmount
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    threshold: Float | None = None
    animations: Animation4Way | None = None
    frozen_patch: Sprite4Way | None = None


@dataclass
class WallPrototype:
    type: Literal["wall"]
    name: String
    order: Order | None = None
    localised_name: LocalisedString | None = None
    localised_description: LocalisedString | None = None
    factoriopedia_description: LocalisedString | None = None
    subgroup: ItemSubGroupID | None = None
    hidden: Boolean | None = None
    hidden_in_factoriopedia: Boolean | None = None
    parameter: Boolean | None = None
    factoriopedia_simulation: SimulationDefinition | None = None
    factoriopedia_alternative: String | None = None
    custom_tooltip_fields: list[CustomTooltipField] | dict[str, Any] | None = (
        None
    )
    icons: list[IconData] | dict[str, Any] | None = None
    icon: FileName | None = None
    icon_size: SpriteSizeType | None = None
    collision_box: BoundingBox | None = None
    collision_mask: CollisionMaskConnector | None = None
    map_generator_bounding_box: BoundingBox | None = None
    selection_box: BoundingBox | None = None
    drawing_box_vertical_extension: Double | None = None
    sticker_box: BoundingBox | None = None
    hit_visualization_box: BoundingBox | None = None
    trigger_target_mask: TriggerTargetMask | None = None
    flags: EntityPrototypeFlags | None = None
    tile_buildability_rules: (
        list[TileBuildabilityRule] | dict[str, Any] | None
    ) = None
    minable: MinableProperties | None = None
    surface_conditions: list[SurfaceCondition] | dict[str, Any] | None = None
    deconstruction_alternative: EntityID | None = None
    selection_priority: Uint8 | None = None
    build_grid_size: Uint8 | None = None
    remove_decoratives: RemoveDecoratives | None = None
    emissions_per_second: dict[AirbornePollutantID, Double] | None = None
    shooting_cursor_size: Double | None = None
    created_smoke: CreateTrivialSmokeEffectItem | None = None
    working_sound: WorkingSound | None = None
    created_effect: Trigger | None = None
    build_sound: Sound | None = None
    mined_sound: Sound | None = None
    mining_sound: Sound | None = None
    rotated_sound: Sound | None = None
    impact_category: String | None = None
    open_sound: Sound | None = None
    close_sound: Sound | None = None
    placeable_position_visualization: Sprite | None = None
    radius_visualisation_specification: (
        RadiusVisualisationSpecification | None
    ) = None
    stateless_visualisation: (
        StatelessVisualisation
        | list[StatelessVisualisation]
        | dict[str, Any]
        | None
    ) = None
    draw_stateless_visualisations_in_ghost: Boolean | None = None
    build_base_evolution_requirement: Double | None = None
    alert_icon_shift: Vector | None = None
    alert_icon_scale: Float | None = None
    fast_replaceable_group: String | None = None
    next_upgrade: EntityID | None = None
    protected_from_tile_building: Boolean | None = None
    heating_energy: Energy | None = None
    allow_copy_paste: Boolean | None = None
    selectable_in_game: Boolean | None = None
    placeable_by: ItemToPlace | list[ItemToPlace] | dict[str, Any] | None = None
    remains_when_mined: EntityID | list[EntityID] | dict[str, Any] | None = None
    additional_pastable_entities: list[EntityID] | dict[str, Any] | None = None
    tile_width: Int32 | None = None
    tile_height: Int32 | None = None
    diagonal_tile_grid_size: TilePosition | None = None
    autoplace: AutoplaceSpecification | None = None
    map_color: Color | None = None
    friendly_map_color: Color | None = None
    enemy_map_color: Color | None = None
    water_reflection: WaterReflectionDefinition | None = None
    ambient_sounds_group: EntityID | None = None
    ambient_sounds: (
        WorldAmbientSoundDefinition
        | list[WorldAmbientSoundDefinition]
        | dict[str, Any]
        | None
    ) = None
    icon_draw_specification: IconDrawSpecification | None = None
    icons_positioning: list[IconSequencePositioning] | dict[str, Any] | None = (
        None
    )
    max_health: Float | None = None
    healing_per_tick: Float | None = None
    repair_speed_modifier: Float | None = None
    dying_explosion: (
        ExplosionDefinition | list[ExplosionDefinition] | dict[str, Any] | None
    ) = None
    dying_trigger_effect: TriggerEffect | None = None
    damaged_trigger_effect: TriggerEffect | None = None
    loot: list[LootItem] | dict[str, Any] | None = None
    resistances: list[Resistance] | dict[str, Any] | None = None
    attack_reaction: (
        AttackReactionItem | list[AttackReactionItem] | dict[str, Any] | None
    ) = None
    repair_sound: Sound | None = None
    alert_when_damaged: Boolean | None = None
    hide_resistances: Boolean | None = None
    create_ghost_on_death: Boolean | None = None
    random_corpse_variation: Boolean | None = None
    integration_patch_render_layer: RenderLayer | None = None
    corpse: EntityID | list[EntityID] | dict[str, Any] | None = None
    integration_patch: Sprite4Way | None = None
    overkill_fraction: Float | None = None
    is_military_target: Boolean | None = None
    allow_run_time_change_of_is_military_target: Boolean | None = None
    quality_indicator_shift: Vector | None = None
    quality_indicator_scale: Double | None = None
    pictures: Pictures2 | None = None
    visual_merge_group: Uint32 | None = None
    circuit_wire_max_distance: Double | None = None
    draw_copper_wires: Boolean | None = None
    draw_circuit_wires: Boolean | None = None
    circuit_connector: CircuitConnectorDefinition | None = None
    default_output_signal: SignalIDConnector | None = None
    wall_diode_green: Sprite4Way | None = None
    wall_diode_red: Sprite4Way | None = None
    wall_diode_green_light_top: LightDefinition | None = None
    wall_diode_green_light_right: LightDefinition | None = None
    wall_diode_green_light_bottom: LightDefinition | None = None
    wall_diode_green_light_left: LightDefinition | None = None
    wall_diode_red_light_top: LightDefinition | None = None
    wall_diode_red_light_right: LightDefinition | None = None
    wall_diode_red_light_bottom: LightDefinition | None = None
    wall_diode_red_light_left: LightDefinition | None = None
    connected_gate_visualization: Sprite | None = None
