export interface WeaponProfile { name: string; range: string; A: string; BS?: string; WS?: string; S: string; AP: string; D: string; keywords: string[]; } export interface UnitStats { M: string; T: string; SV: string; W: string; LD: string; OC: string; } export interface Ability { name: string; description: string; } export interface TransportCapacity { capacity: string; } export interface CuratedUnit { id: string; name: string; points: number; keywords: string[]; factionKeywords: string[]; stats: UnitStats; rangedWeapons: WeaponProfile[]; meleeWeapons: WeaponProfile[]; abilities: Ability[]; transportCapacity?: string; leader?: string[]; } export interface Enhancement { name: string; points: number; description: string; detachment?: string; } export interface SharedRule { id: string; name: string; description: string; alias?: string; } export interface ProfileTypeDefinition { id: string; name: string; characteristics: { id: string; name: string; }[]; } export interface CategoryDefinition { id: string; name: string; } export interface CuratedGameSystem { id: string; name: string; revision: string; profileTypes: ProfileTypeDefinition[]; categories: CategoryDefinition[]; sharedRules: SharedRule[]; } export interface CuratedFaction { id: string; name: string; catalogueName: string; units: CuratedUnit[]; enhancements: Enhancement[]; } export interface FactionManifestEntry { id: string; name: string; catalogueName: string; filename: string; unitCount: number; } export interface FactionManifest { gameSystem: string; factions: FactionManifestEntry[]; }