UNPKG

@foxdelta2/dcsjs

Version:

Mission Generator for DCS

2,245 lines (2,243 loc) 603 kB
import { z } from "zod"; type AircraftType = | "Tornado GR4" | "Tornado IDS" | "F/A-18A" | "F/A-18C" | "F-14A" | "Tu-22M3" | "F-4E" | "B-52H" | "MiG-27K" | "Su-27" | "MiG-23MLD" | "Su-25" | "Su-25TM" | "Su-25T" | "Su-33" | "MiG-25PD" | "MiG-25RBT" | "Su-30" | "Su-17M4" | "MiG-31" | "Tu-95MS" | "Su-24M" | "Su-24MR" | "Tu-160" | "F-117A" | "B-1B" | "S-3B" | "S-3B Tanker" | "Mirage 2000-5" | "Mirage-F1CE" | "Mirage-F1EE" | "F-15C" | "F-15E" | "F-15ESE" | "MiG-29A" | "MiG-29G" | "MiG-29S" | "Tu-142" | "C-130" | "An-26B" | "An-30M" | "C-17A" | "A-50" | "E-3A" | "IL-78M" | "E-2C" | "IL-76MD" | "F-16C bl.50" | "F-16C bl.52d" | "F-16A" | "F-16A MLU" | "RQ-1A Predator" | "Yak-40" | "KC-135" | "FW-190D9" | "FW-190A8" | "Bf-109K-4" | "SpitfireLFMkIX" | "SpitfireLFMkIXCW" | "P-51D" | "P-51D-30-NA" | "P-47D-30" | "P-47D-30bl1" | "P-47D-40" | "MosquitoFBMkVI" | "Ju-88A4" | "A-20G" | "A-4E-C" | "A-10A" | "A-10C" | "A-10C_2" | "AJS37" | "AV8BNA" | "KC130" | "KC135MPRS" | "C-101EB" | "C-101CC" | "J-11A" | "JF-17" | "KJ-2000" | "WingLoong-I" | "H-6J" | "Christen Eagle II" | "F-16C_50" | "F-5E" | "F-5E-3" | "F-86F Sabre" | "F-14B" | "F-14A-135-GR" | "FA-18C_hornet" | "Hawk" | "I-16" | "L-39C" | "L-39ZA" | "M-2000C" | "MB-339A" | "MB-339APAN" | "MQ-9 Reaper" | "MiG-15bis" | "MiG-19P" | "MiG-21Bis" | "Su-34" | "TF-51D" | "Mi-24V" | "Mi-8MT" | "Mi-26" | "Ka-27" | "UH-60A" | "UH-60L" | "CH-53E" | "CH-47D" | "SH-3W" | "AH-64A" | "AH-64D" | "AH-1W" | "SH-60B" | "UH-1H" | "Mi-28N" | "OH-58D" | "AH-64D_BLK_II" | "Ka-50" | "Ka-50_3" | "Mi-24P" | "SA342M" | "SA342L" | "SA342Mistral" | "SA342Minigun" | "VSN_F4B" | "VSN_F4C" | "SK-60"; type CountryName = | "Russia" | "Ukraine" | "USA" | "Turkey" | "UK" | "France" | "Germany" | "USAF Aggressors" | "Canada" | "Spain" | "The Netherlands" | "Belgium" | "Norway" | "Denmark" | "Israel" | "Georgia" | "Insurgents" | "Abkhazia" | "South Ossetia" | "Italy" | "Australia" | "Switzerland" | "Austria" | "Belarus" | "Bulgaria" | "Czech Republic" | "China" | "Croatia" | "Egypt" | "Finland" | "Greece" | "Hungary" | "India" | "Iran" | "Iraq" | "Japan" | "Kazakhstan" | "North Korea" | "Pakistan" | "Poland" | "Romania" | "Saudi Arabia" | "Serbia" | "Slovakia" | "South Korea" | "Sweden" | "Syria" | "Yemen" | "Vietnam" | "Venezuela" | "Tunisia" | "Thailand" | "Sudan" | "Philippines" | "Morocco" | "Mexico" | "Malaysia" | "Libya" | "Jordan" | "Indonesia" | "Honduras" | "Ethiopia" | "Chile" | "Brazil" | "Bahrain" | "Third Reich" | "Yugoslavia" | "USSR" | "Italian Social Republic" | "Algeria" | "Kuwait" | "Qatar" | "Oman" | "United Arab Emirates" | "South Africa" | "Cuba" | "Portugal" | "GDR" | "Lebanon" | "Combined Joint Task Forces Blue" | "Combined Joint Task Forces Red" | "United Nations Peacekeepers" | "Argentina" | "Cyprus" | "Slovenia" | "Bolivia" | "Ghana" | "Nigeria" | "Peru" | "Ecuador"; type AirdromeName = | "Anapa-Vityazevo" | "Krasnodar-Center" | "Novorossiysk" | "Krymsk" | "Maykop-Khanskaya" | "Gelendzhik" | "Sochi-Adler" | "Krasnodar-Pashkovsky" | "Sukhumi-Babushara" | "Gudauta" | "Batumi" | "Senaki-Kolkhi" | "Kobuleti" | "Kutaisi" | "Mineralnye Vody" | "Nalchik" | "Mozdok" | "Tbilisi-Lochini" | "Soganlug" | "Vaziani" | "Beslan"; type GroundUnitName = | "2B11 mortar" | "SAU Gvozdika" | "SAU Msta" | "SAU Akatsia" | "SAU 2-C9" | "M-109" | "SpGH_Dana" | "AAV7" | "BMD-1" | "BMP-1" | "BMP-2" | "BMP-3" | "BRDM-2" | "BTR_D" | "Cobra" | "LAV-25" | "M1043 HMMWV Armament" | "M1045 HMMWV TOW" | "M1126 Stryker ICV" | "M-113" | "M1134 Stryker ATGM" | "M-2 Bradley" | "MCV-80" | "MTLB" | "Marder" | "TPZ" | "Grad_FDDM" | "Bunker" | "Paratrooper RPG-16" | "Paratrooper AKS-74" | "Infantry AK Ins" | "Sandbox" | "Soldier AK" | "Infantry AK" | "Soldier M249" | "Soldier M4" | "Soldier M4 GRG" | "Soldier RPG" | "MLRS FDDM" | "Infantry AK ver2" | "Infantry AK ver3" | "Grad-URAL" | "Uragan_BM-27" | "Smerch" | "Smerch_HE" | "MLRS" | "2S6 Tunguska" | "Kub 2P25 ln" | "5p73 s-125 ln" | "S-300PS 5P85C ln" | "S-300PS 5P85D ln" | "SA-11 Buk LN 9A310M1" | "Osa 9A33 ln" | "Tor 9A331" | "Strela-10M3" | "Strela-1 9P31" | "SA-11 Buk CC 9S470M1" | "Patriot AMG" | "Patriot ECS" | "Gepard" | "Hawk pcp" | "Vulcan" | "Hawk ln" | "M48 Chaparral" | "M6 Linebacker" | "Patriot ln" | "M1097 Avenger" | "Patriot EPP" | "Patriot cp" | "Roland ADS" | "S-300PS 54K6 cp" | "Soldier stinger" | "Stinger comm dsr" | "Stinger comm" | "ZSU-23-4 Shilka" | "ZU-23 Emplacement Closed" | "ZU-23 Emplacement" | "Ural-375 ZU-23" | "ZU-23 Closed Insurgent" | "Ural-375 ZU-23 Insurgent" | "ZU-23 Insurgent" | "SA-18 Igla manpad" | "SA-18 Igla comm" | "SA-18 Igla-S manpad" | "SA-18 Igla-S comm" | "Igla manpad INS" | "1L13 EWR" | "Kub 1S91 str" | "S-300PS 40B6M tr" | "S-300PS 40B6MD sr" | "55G6 EWR" | "S-300PS 64H6E sr" | "SA-11 Buk SR 9S18M1" | "Dog Ear radar" | "Hawk tr" | "Hawk sr" | "Patriot str" | "Hawk cwar" | "p-19 s-125 sr" | "Roland Radar" | "snr s-125 tr" | "house1arm" | "house2arm" | "outpost_road" | "outpost" | "houseA_arm" | "TACAN_beacon" | "Challenger2" | "Leclerc" | "M-60" | "M1128 Stryker MGS" | "M-1 Abrams" | "T-55" | "T-72B" | "T-80UD" | "T-90" | "Leopard1A3" | "Merkava_Mk4" | "Ural-4320 APA-5D" | "ATMZ-5" | "ATZ-10" | "GAZ-3307" | "GAZ-3308" | "GAZ-66" | "M978 HEMTT Tanker" | "HEMTT TFFT" | "IKARUS Bus" | "KAMAZ Truck" | "LAZ Bus" | "LiAZ Bus" | "Hummer" | "M 818" | "MAZ-6303" | "Predator GCS" | "Predator TrojanSpirit" | "Suidae" | "Tigr_233036" | "Trolley bus" | "UAZ-469" | "Ural ATsP-6" | "Ural-4320-31" | "Ural-4320T" | "Ural-375 PBU" | "Ural-375" | "VAZ Car" | "ZiL-131 APA-80" | "SKP-11" | "ZIL-131 KUNG" | "ZIL-4331" | "KrAZ6322" | "JTAC" | "Infantry Animated" | "Electric locomotive" | "Locomotive" | "Coach cargo" | "Coach cargo open" | "Coach a tank blue" | "Coach a tank yellow" | "Coach a passenger" | "Coach a platform" | "tacr2a" | "LARC-V" | "KS-19" | "SON_9" | "Scud_B" | "HL_DSHK" | "HL_KORD" | "tt_DSHK" | "tt_KORD" | "HL_ZU-23" | "tt_ZU-23" | "HL_B8M1" | "tt_B8M1" | "NASAMS_Radar_MPQ64F1" | "NASAMS_Command_Post" | "NASAMS_LN_B" | "NASAMS_LN_C" | "M4_Sherman" | "M2A1_halftrack" | "FPS-117 Dome" | "FPS-117 ECS" | "FPS-117" | "BTR-80" | "RD_75" | "S_75M_Volhov" | "SNR_75V" | "RLS_19J6" | "RPC_5N62V" | "S-200_Launcher" | "ZSU_57_2" | "S-60_Type59_Artillery" | "generator_5i57" | "T-72B3" | "PT_76" | "BTR-82A" | "ATZ-5" | "AA8" | "TZ-22_KrAZ" | "ATZ-60_Maz" | "ZIL-135" | "S_75_ZIL" | "rapier_fsa_launcher" | "rapier_fsa_optical_tracker_unit" | "rapier_fsa_blindfire_radar" | "bofors40" | "Chieftain_mk3" | "Bedford_MWD" | "Land_Rover_101_FC" | "Land_Rover_109_S3" | "hy_launcher" | "Silkworm_SR" | "ES44AH" | "Boxcartrinity" | "Tankcartrinity" | "Wellcarnsc" | "flak18" | "Pz_IV_H" | "Leopard-2A5" | "Leopard-2" | "leopard-2A4" | "leopard-2A4_trs" | "Sd_Kfz_251" | "Blitz_36-6700A" | "T155_Firtina" | "VAB_Mephisto" | "ZTZ96B" | "ZBD04A" | "HQ-7_LN_SP" | "HQ-7_LN_EO" | "HQ-7_STR_SP" | "PLZ05" | "TYPE-59"; type Theatre = "Caucasus" | "Syria"; type RouteType = "Turning Point"; type AltitudeType = "BARO" | "RADIO"; type Skill = "Average" | "High" | "Client"; type StartType = "cold" | "hot" | "air" | "runway"; type GroundRoutePointAction = "On Road" | "Off Road"; type ObjectiveType = "Town" | "Terrain" | "Airport" | "POI" | "Ship"; type Era = "WW2" | "Korea" | "Early CW" | "Late CW" | "Modern"; type StrikeTargetType = | "Vehicle" | "AAA" | "Artillery" | "SAM" | "Structure" | "Farp" | "EW"; type TakeOffAction = | "From Parking Area" | "From Parking Area Hot" | "From Ground Area" | "From Runway" | "Turning Point" | "Landing"; type TakeOffType = | "TakeOffParking" | "TakeOffParkingHot" | "TakeOffGround" | "TakeOff" | "Turning Point" | "Land"; type VehicleType = | "MBT" | "Track Radar" | "Search Radar" | "SAM Launcher" | "Unarmored" | "Armored" | "IFV" | "SHORAD" | "Transport" | "Power Generator" | "Refuel" | "Control Unit" | "EW" | "Infantry"; type AiSkill = "Average" | "Good" | "High" | "Excellent"; declare namespace Import { type AirdromeSlot = { crossroad_index: number; large: boolean; plane: boolean; helicopter: boolean; shelter: boolean; } & Position; type Airdrome = { id: number; name: string; airport?: unknown; standlist: Array<AirdromeSlot>; frequencies: { frequencyList: [ [number, number] | number | undefined, [number, number] | number | undefined, [number, number] | number | undefined, [number, number] | number | undefined ]; x: number; y: number; angle: number; }; }; type Objective = { name: string; type: ObjectiveType; position: Position; }; type Country = { id: number; name: CountryName; short_name: string; }; } type AirdromeSlot = { id: string; crossroad_index: number; large: boolean; plane: boolean; helicopter: boolean; shelter: boolean; inUse: boolean; } & Position; type RoutePointTaskAction = { enabled: boolean; auto: boolean; key?: string; id: | "AWACS" | "EngageTargets" | "WrappedAction" | "Orbit" | "AttackGroup" | "Bombing" | "Escort" | "SEAD" | "FireAtPoint" | "EngageTargetsInZone" | "EWR" | "FAC" | "ControlledTask"; name?: string; number: number; params: object; }; type RoutePointTaskActionWithoutNumber = Omit<RoutePointTaskAction, "number">; type RoutePointTask = { id: "ComboTask"; params: { tasks: Array<RoutePointTaskAction>; }; }; type RoutePoint = Waypoint; type TakeOffPoint = { ETA: number; ETA_locked: boolean; action: TakeOffAction; airdromeId?: number; linkUnit?: number; helipadId?: number; alt: number; alt_type: AltitudeType; formation_template: string; name?: string; speed: number; speed_locked: boolean; task: RoutePointTask; type: TakeOffType; } & Position; type Waypoint = { ETA: number; ETA_locked: boolean; action: TakeOffAction; alt: number; alt_type: AltitudeType; name: string; speed: number; speed_locked: boolean; task: RoutePointTask; type: TakeOffType; airdromeId?: number; linkUnit?: number; helipadId?: number; formation_template?: string; } & Position; type GroundWaypoint = { ETA: number; ETA_locked: boolean; type: "Turning Point"; action: GroundRoutePointAction; alt: number; alt_type: AltitudeType; formation_template: string; name?: string; speed: number; speed_locked: boolean; task: RoutePointTask; } & Position; type Route = { points: Array<RoutePoint>; }; type Vehicle$1 = DCS.GroundUnit & { era: Era; vehicleTypes: Array<VehicleType>; }; type GroundGroupUnit = { skill: AiSkill; coldAtStart: boolean; type: GroundUnitName; unitId: number; name: string; heading: number; playerCanDrive: boolean; } & Position; declare namespace DCS { type Plane = { chaff: number; display_name: string; flare: number; ammo_type?: number; gun?: number; max_fuel: number; max_height: number; max_speed: number; name: AircraftType; }; type AirdromeSlot = { id: string; crossroad_index: number; large: boolean; plane: boolean; helicopter: boolean; shelter: boolean; blocked?: boolean; } & Position; type Airdrome = { id: number; name: string; airport?: unknown; standlist: Record<string, object>; frequency: number; frequencyList?: [number, number, number, number]; runwayAngle: number; } & Position; type GroundUnit = { category: string; display_name: string; name: string; playerCanDrive: boolean; }; type CoalitionDefinition = { bullseye: Position; country: Array<CountryDefinition>; nav_points: unknown; }; type CountryDefinition = { id: number; name: CountryName; plane?: { group: Array<FlightGroup>; }; helicopter?: { group: Array<FlightGroup>; }; vehicle?: { group: Array<DCS.GroundGroup>; }; ship?: { group: Array<ShipGroup>; }; static?: { group: Array<StaticGroup>; }; }; type FlightGroupUnit = { alt: number; alt_type: AltitudeType; callsign: | { 1: number; 2: number; 3: number; name: string; } | number | string; name: string; onboard_num: string; parking?: string; parking_id?: string; livery_id: string; payload: Payload; psi: number; skill: Skill; speed: number; type: AircraftType; unitId: number; Radio?: [ { modulations: Record<number, number>; channels: Record<number, number>; channelsNames: object; }, { modulations: Record<number, number>; channels: Record<number, number>; channelsNames: object; } ]; linkUnit?: number; helipadId?: number; AddPropAircraft?: object; } & Position; type FlightGroup = { lateActivation: boolean; communication: boolean; frequency: number; groupId: number; hidden: boolean; hiddenOnMFD: boolean; hiddenOnPlanner: boolean; modulation: number; name: string; radioSet: boolean; route: Route; start_time: number; task: DCS.Task; taskSelected: boolean; tasks: Array<RoutePointTaskAction>; uncontrolled: boolean; units: Array<Partial<FlightGroupUnit>>; } & Position; type GroundGroup = { lateActivation?: boolean; visible: boolean; task?: "Ground Nothing"; tasks?: []; taskSelected?: boolean; uncontrollable: boolean; route: { spans: object; points: Array<GroundWaypoint>; }; groupId: number; hidden: boolean; name: string; units: Array<Partial<GroundGroupUnit>>; start_time?: number; } & Position; type Loadout = { task: Task | "default"; name: string; displayName: string; pylons: Array<Pylon>; }; type Aircraft = Plane & { loadouts: Array<Loadout>; availableTasks: Array<Task>; controllable: boolean; maxWaypoints?: number; isHelicopter: boolean; isMod?: boolean; isLarge?: boolean; cruiseAltitude: number; cruiseSpeed: number; era: Era; carrierCapable: boolean; allowedFrequency?: [number, number]; }; type Pylon = { CLSID: string; num?: number; }; type Payload = { chaff: number; flare: number; fuel: number; gun: number; ammo_type?: number; pylons: Array<Pylon>; }; type Task = | "SEAD" | "DEAD" | "Intercept" | "Antiship Strike" | "AWACS" | "CAP" | "TARCAP" | "CAS" | "Escort" | "Intercept" | "Fighter Sweep" | "Ground Attack" | "Pinpoint Strike" | "Runway Attack" | "Transport" | "Refueling" | "RescueHelo" | "CSAR" | "AFAC"; } declare namespace DCS {} type StaticUnit = { category: string; shape_name?: string; type: string; unitId: number; rate?: number; name: string; heading: number; heliport_callsign_id?: number; heliport_modulation?: number; heliport_frequency?: string; mass?: number; canCargo?: boolean; } & Position; type StaticGroup = { route: { points: [ { alt: number; type: string; name: string; speed: number; formation_template: string; action: string; } & Position ]; }; groupId: number; units: Array<StaticUnit>; name: string; dead: boolean; heading?: number; type?: string; category?: string; frequency?: number; countryName: CountryName; } & Position; type ShipUnit = { skill: Skill; type: string; unitId: number; modulation: 0; name: string; heading: number; frequency: number; } & Position; type ShipGroup = { visible: boolean; tasks: object; uncontrollable: boolean; route: Route; groupId: number; hidden: boolean; units: Array<ShipUnit>; name: string; start_time: number; frequency: number; groupType: "carrier"; } & Position; type Carrier = Position; type AltitudeWind = { speed: number; dir: number; }; type Weather = { atmosphere_type: number; wind: { at8000: AltitudeWind; atGround: AltitudeWind; at2000: AltitudeWind; }; enable_fog: boolean; visibility: { distance: number; }; halo: { preset: "auto" | "off"; }; fog: { thickness: number; visibility: number; density?: number; }; season: { temperature: number; }; type_weather: number; qnh: number; cyclones: object; name: string; dust_density: number; modifiedTime: boolean; groundTurbulence: number; enable_dust: boolean; clouds: { thickness: number; density: number; preset?: string; base: number; iprecptns: number; }; }; type WeatherClouds = { density: number; thickness: number; preset: string; base: number; iprecptns: number; }; type MissionDate = { Day: number; Month: number; Year: number; }; type Mission = { coalitions: Partial<Record<Coalition, number[]>>; coalition: Partial<Record<Coalition, DCS.CoalitionDefinition>>; theatre: Theatre; weather: Weather; date: MissionDate; currentKey: number; version: number; start_time: number; failures: object; goals: object; descriptionBlueTask: string; descriptionRedTask: string; descriptionText: string; pictureFileNameN?: Array<string>; pictureFileNameR?: Array<string>; pictureFileNameB?: Array<string>; }; type CountryWithUnits = DCS.CountryDefinition & { plane?: { group: Array<Partial<DCS.FlightGroup>>; }; vehicle?: { group: Array<Partial<DCS.GroundGroup>>; }; helicopter?: { group: Array<Partial<DCS.FlightGroup>>; }; static?: { group: Array<Partial<StaticGroup>>; }; ship?: { group: Array<Partial<ShipGroup>>; }; }; type GeneratedCoalition = { bullseye: Position; country: Array<CountryWithUnits>; nav_points: unknown; }; type GeneratedTriggerZone = TriggerZone & { zoneId: number; color: [number, number, number, number]; hidden: boolean; }; type GeneratedMission = Omit<Mission, "coalition"> & { requiredModules: Array<unknown>; coalition: Partial<Record<Coalition, GeneratedCoalition>>; map: { centerX: number; centerY: number; zoom: number; }; usedModules: Record<string, boolean>; sortie: string; maxDictId: number; result: { offline: { conditions: unknown; actions: unknown; func: unknown; }; total: number; blue: { conditions: unknown; actions: unknown; func: unknown; }; red: { conditions: unknown; actions: unknown; func: unknown; }; }; groundControl: { passwords: { artillery_commander: unknown; instructor: unknown; observer: unknown; forward_observer: unknown; }; roles: { artillery_commander: { neutrals: number; blue: number; red: number; }; instructor: { neutrals: number; blue: number; red: number; }; observer: { neutrals: number; blue: number; red: number; }; forward_observer: { neutrals: number; blue: number; red: number; }; }; isPilotControlVehicles: false; }; forcedOptions: unknown; trigrules?: Array<object>; trig?: { actions: Array<string>; }; triggers: { zones: Array<GeneratedTriggerZone>; }; }; type WarehouseAirport = { OperatingLevel_Air: number; OperatingLevel_Eqp: number; OperatingLevel_Fuel: number; aircrafts: object; coalition: string; diesel: { InitFuel: number; }; gasoline: { InitFuel: number; }; jet_fuel: { InitFuel: number; }; methanol_mixture: { InitFuel: number; }; periodicity: 30; size: 100; speed: 16.666666; suppliers: object; unlimitedAircrafts: true; unlimitedFuel: true; unlimitedMunitions: true; weapons: object; }; type Warehouse = { airports: Record<number, WarehouseAirport>; warehouses: object; }; type UsableAirdromeSlot = DCS.AirdromeSlot & { reservedTill?: number; }; type UsableAirdrome = Omit<DCS.Airdrome, "standlist"> & { standlist: Record<string, UsableAirdromeSlot>; }; type TriggerZone = { radius: number; name: string; } & Position; type UnitPosition = Position & { heading: number; }; type StrikeTarget = { name: string; position: Position; spans?: [Position, Position]; blueGroup?: Omit<StrikeTarget, "bluGroup">; objectiveName: string; groupId: number; type?: StrikeTargetType; structureType?: string; structureCategory?: string; unitPositions: Array<UnitPosition>; }; type FarpStructure = { position: Position; name: string; type: string; category: string; shapeName: string | undefined; }; type MissionDefinition = { missionType: Task; aircraft: AircraftType; clients: number; startType: "cold" | "hot"; blueFaction: Faction; redFaction: Faction; useCarrier?: boolean; useFARP?: boolean; }; type GroundUnitsTemplate = { name: string; sams: Array<string>; vehicles: Array<string>; infantries: Array<string>; shoradVehicles: Array<string>; shoradInfantries: Array<string>; ews: Array<string>; }; type FactionDefinition = { aircraftTypes: Partial<Record<Task | "Light Attack", Array<string>>>; countryName: string; name: string; year: number; playable: boolean; templateName: string; created?: Date; }; type CampaignUnitState = "idle" | "en route" | "on objective"; type CampaignUnit = { id: string; name: string; displayName: string; category: string; alive: boolean; vehicleTypes: Array<VehicleType>; destroyedTime?: number; state: CampaignUnitState; }; type StaticCategory = "Fortifications" | "Heliports"; type StaticShapeName = | "ceh_ang_a" | "garage_b" | "tr_budka" | "tech" | "PalatkaB" | "kp_ug" | "GSM Rus" | "invisiblefarp" | "SetkaKP" | "him_bak_a" | "tec_a" | "angar_b" | "Workshop A" | "hozdomik2" | "kotelnaya_a" | "aviashtab" | "s2" | "tele_bash"; type StaticType = | "Garage B" | "Tech hangar A" | "Electric power box" | "Repair workshop" | "FARP Tent" | "FARP CP Blindage" | "FARP Fuel Depot" | "Invisible FARP" | "FARP Ammo Dump Coating" | "Chemical tank A" | "Hangar B" | "Workshop A" | "Subsidiary structure 2" | "Boiler-house A" | "Military staff" | "Small werehouse 2" | "TV tower" | "Railway station" | "FARP_SINGLE_01" | "outpost" | "FARP"; type StructureBuilding = { offset: { x: number; y: number; }; heading: number; category: StaticCategory; shapeName: string | undefined; type: StaticType; }; type CampaignStructureBuilding = { name: string; alive: boolean; destroyedTime?: number; repairScore?: number; } & StructureBuilding; type CampaignStructureState = "active" | "destroyed" | "deactivated"; type CampaignStructureBase = { id: string; name: string; position: Position; objectiveName: string; groupId: number; buildings: Array<CampaignStructureBuilding>; state: CampaignStructureState; }; type CampaignStructureDefault = CampaignStructureBase & { structureType: | "Ammo Depot" | "Farp" | "Command Center" | "Power Plant" | "Fuel Storage"; }; type CampaignStructureUnitCamp = CampaignStructureBase & { structureType: "Barrack" | "Depot"; deploymentScore: number; }; type CampaignStructure = CampaignStructureDefault | CampaignStructureUnitCamp; type SamType = "SA-10-300" | "SA-6" | "SA-5" | "SA-3" | "SA-2" | "Hawk"; type CampaignSam = { id: string; position: Position; units: Array<CampaignUnit>; range: number; type: SamType; operational: boolean; weaponReadyTimer: number; fireInterval: number; name: string; objectiveName: string; }; type CampaignHomeBaseType = "airdrome" | "farp" | "carrier"; type CampaignHomeBase = { type: CampaignHomeBaseType; name: string; }; type CampaignAircraftState = | "idle" | "en route" | "on station" | "combat" | "rtb" | "waiting" | "maintenance"; type CampaignWaypoint = { name: string; time: number; duration?: number; speed: number; position: Position; taskStart?: boolean; onGround?: boolean; racetrack?: { position: Position; name: string; distance: number; duration: number; }; hold?: boolean; }; type CampaignFlightGroupUnit = { id: string; name: string; callSign: | number | { 1: number; 2: number; 3: number; name: string; }; client: boolean; }; type CampaignGroundGroupState = "en route" | "on objective" | "combat"; type CampaignGroundGroupType = "armor" | "mbt" | "infantry" | "ew" | "sam"; type Airdromes = Record<string, DCS.Airdrome>; type MapData = { objectives: Array<Import.Objective>; strikeTargets: Record<string, StrikeTarget[]>; airdromes: Airdromes; info: { center: { x: number; y: number; }; weather: { temperature: { amplitude: number; mean: number; }; cloudCover: { baseCloudCover: number; seasonEffect: number; }; wind: { speed: number; direction: number; }; }; night: { startHour: number; endHour: number; }; }; }; declare namespace Enum { const groundGroupType: readonly ["armor", "mbt", "infantry", "ew"]; const structureTypeDefault: readonly [ "Ammo Depot", "Farp", "Command Center", "Power Plant", "Fuel Storage", "Hospital", "Prison" ]; const structureTypeUnitCamp: readonly ["Barrack", "Depot"]; } declare namespace Schema { const coalition: z.ZodEnum<["blue", "red", "neutrals"]>; const aiSkill: z.ZodEnum<["Average", "Good", "High", "Excellent"]>; const mapName: z.ZodEnum< ["caucasus", "normandy", "persianGulf", "southAtlantic", "syria"] >; const aircraftState: z.ZodEnum< [ "idle", "en route", "on station", "combat", "rtb", "waiting", "maintenance" ] >; const homeBaseType: z.ZodEnum<["airdrome", "farp", "carrier"]>; const task: z.ZodEnum< ["DEAD", "AWACS", "CAP", "Escort", "Pinpoint Strike", "CAS", "CSAR"] >; const pylonType: z.ZodEnum< ["Fuel Tank", "Targeting Pod", "Gun Pod", "ECM Pod", "Other", "Weapon"] >; const groundUnitType: z.ZodEnum< [ "MBT", "Track Radar", "Search Radar", "SAM Launcher", "Unarmored", "Armored", "IFV", "SHORAD", "Transport", "Power Generator", "Refuel", "Control Unit", "EW", "Infantry" ] >; const groundUnitState: z.ZodEnum<["idle", "en route", "on objective"]>; const groundGroupState: z.ZodEnum<["en route", "on objective", "combat"]>; const groundGroupType: z.ZodEnum<["armor", "mbt", "infantry", "ew"]>; const samType: z.ZodEnum< ["SA-10-300", "SA-6", "SA-5", "SA-3", "SA-2", "Hawk"] >; const structureState: z.ZodEnum<["active", "destroyed", "deactivated"]>; const buildingCategory: z.ZodEnum<["Fortifications", "Heliports"]>; const structureTypeDefault: z.ZodEnum< [ "Ammo Depot", "Farp", "Command Center", "Power Plant", "Fuel Storage", "Hospital", "Prison" ] >; const structureTypeUnitCamp: z.ZodEnum<["Barrack", "Depot"]>; const structureType: z.ZodEnum< [ "Ammo Depot", "Farp", "Command Center", "Power Plant", "Fuel Storage", "Hospital", "Prison", "Barrack", "Depot" ] >; const A2AWeaponType: z.ZodEnum< ["infrared", "active radar", "semi-active radar"] >; const A2GWeaponType: z.ZodEnum< [ "Bomb", "Cluster", "Rocket", "Laser Guided Bomb", "GPS Guided Bomb", "TV Guided Bomb", "Laser Guided Rocket" ] >; const A2GRangeWeaponType: z.ZodEnum< ["Missile", "Glide Bomb", "Laser Guided Missile", "Cruise Missile"] >; const RangeType: z.ZodEnum<["short", "medium", "long"]>; const A2GWeaponTarget: z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >; const WeaponType: z.ZodUnion< [ z.ZodEnum<["infrared", "active radar", "semi-active radar"]>, z.ZodEnum< [ "Bomb", "Cluster", "Rocket", "Laser Guided Bomb", "GPS Guided Bomb", "TV Guided Bomb", "Laser Guided Rocket" ] >, z.ZodEnum< ["Missile", "Glide Bomb", "Laser Guided Missile", "Cruise Missile"] > ] >; const faction: z.ZodObject< { aircraftTypes: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>; countryName: z.ZodString; name: z.ZodString; year: z.ZodOptional<z.ZodNumber>; playable: z.ZodBoolean; templateName: z.ZodString; carrierName: z.ZodOptional<z.ZodString>; created: z.ZodOptional<z.ZodDate>; }, "strip", z.ZodTypeAny, { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; }, { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; } >; const factions: z.ZodObject< { factions: z.ZodArray< z.ZodObject< { aircraftTypes: z.ZodRecord< z.ZodString, z.ZodArray<z.ZodString, "many"> >; countryName: z.ZodString; name: z.ZodString; year: z.ZodOptional<z.ZodNumber>; playable: z.ZodBoolean; templateName: z.ZodString; carrierName: z.ZodOptional<z.ZodString>; created: z.ZodOptional<z.ZodDate>; }, "strip", z.ZodTypeAny, { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; }, { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; } >, "many" >; version: z.ZodLiteral<0>; }, "strip", z.ZodTypeAny, { version: 0; factions: { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; }[]; }, { version: 0; factions: { name: string; aircraftTypes: Record<string, string[]>; countryName: string; playable: boolean; templateName: string; year?: number | undefined; carrierName?: string | undefined; created?: Date | undefined; }[]; } >; const homeBase: z.ZodObject< { type: z.ZodEnum<["airdrome", "farp", "carrier"]>; name: z.ZodString; }, "strip", z.ZodTypeAny, { name: string; type: "airdrome" | "farp" | "carrier"; }, { name: string; type: "airdrome" | "farp" | "carrier"; } >; const weaponBase: z.ZodObject< { name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; displayName: string; year?: number | undefined; }, { name: string; displayName: string; year?: number | undefined; } >; const a2AWeapon: z.ZodObject< { type: z.ZodEnum<["infrared", "active radar", "semi-active radar"]>; range: z.ZodNumber; rangeType: z.ZodEnum<["short", "medium", "long"]>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; }, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; } >; const a2GWeapon: z.ZodObject< { type: z.ZodEnum< [ "Bomb", "Cluster", "Rocket", "Laser Guided Bomb", "GPS Guided Bomb", "TV Guided Bomb", "Laser Guided Rocket" ] >; target: z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >; weight: z.ZodOptional<z.ZodNumber>; highDrag: z.ZodOptional<z.ZodBoolean>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; }, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; } >; const a2GRangeWeapon: z.ZodObject< { type: z.ZodEnum< ["Missile", "Glide Bomb", "Laser Guided Missile", "Cruise Missile"] >; range: z.ZodNumber; targets: z.ZodArray< z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >, "many" >; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; }, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; } >; const weapon: z.ZodUnion< [ z.ZodObject< { type: z.ZodEnum<["infrared", "active radar", "semi-active radar"]>; range: z.ZodNumber; rangeType: z.ZodEnum<["short", "medium", "long"]>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; }, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; } >, z.ZodObject< { type: z.ZodEnum< [ "Bomb", "Cluster", "Rocket", "Laser Guided Bomb", "GPS Guided Bomb", "TV Guided Bomb", "Laser Guided Rocket" ] >; target: z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >; weight: z.ZodOptional<z.ZodNumber>; highDrag: z.ZodOptional<z.ZodBoolean>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; }, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; } >, z.ZodObject< { type: z.ZodEnum< ["Missile", "Glide Bomb", "Laser Guided Missile", "Cruise Missile"] >; range: z.ZodNumber; targets: z.ZodArray< z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >, "many" >; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; }, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; } > ] >; const pylon: z.ZodObject< { CLSID: z.ZodString; num: z.ZodNumber; total: z.ZodNumber; count: z.ZodNumber; type: z.ZodEnum< ["Fuel Tank", "Targeting Pod", "Gun Pod", "ECM Pod", "Other", "Weapon"] >; weapon: z.ZodOptional< z.ZodUnion< [ z.ZodObject< { type: z.ZodEnum< ["infrared", "active radar", "semi-active radar"] >; range: z.ZodNumber; rangeType: z.ZodEnum<["short", "medium", "long"]>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; }, { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; } >, z.ZodObject< { type: z.ZodEnum< [ "Bomb", "Cluster", "Rocket", "Laser Guided Bomb", "GPS Guided Bomb", "TV Guided Bomb", "Laser Guided Rocket" ] >; target: z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >; weight: z.ZodOptional<z.ZodNumber>; highDrag: z.ZodOptional<z.ZodBoolean>; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; }, { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb" | "TV Guided Bomb" | "Laser Guided Rocket"; target: | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure"; displayName: string; weight?: number | undefined; highDrag?: boolean | undefined; year?: number | undefined; } >, z.ZodObject< { type: z.ZodEnum< [ "Missile", "Glide Bomb", "Laser Guided Missile", "Cruise Missile" ] >; range: z.ZodNumber; targets: z.ZodArray< z.ZodEnum< [ "Anti-Armor", "Hard Target", "Medium Target", "Soft Target", "Ship", "Radar", "Light Structure", "Medium Structure", "Hard Structure" ] >, "many" >; name: z.ZodString; displayName: z.ZodString; year: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; }, { name: string; type: | "Missile" | "Glide Bomb" | "Laser Guided Missile" | "Cruise Missile"; displayName: string; range: number; targets: ( | "Anti-Armor" | "Hard Target" | "Medium Target" | "Soft Target" | "Ship" | "Radar" | "Light Structure" | "Medium Structure" | "Hard Structure" )[]; year?: number | undefined; } > ] > >; }, "strip", z.ZodTypeAny, { type: | "Fuel Tank" | "Targeting Pod" | "Gun Pod" | "ECM Pod" | "Other" | "Weapon"; CLSID: string; num: number; total: number; count: number; weapon?: | { name: string; type: "infrared" | "active radar" | "semi-active radar"; displayName: string; range: number; rangeType: "short" | "medium" | "long"; year?: number | undefined; } | { name: string; type: | "Bomb" | "Cluster" | "Rocket" | "Laser Guided Bomb" | "GPS Guided Bomb"