export interface Item { id: string; name: string; count: number; type: 'tool' | 'block' | 'consumable' | 'misc'; rarity?: 'common' | 'uncommon' | 'rare' | 'epic'; nbtSummary?: string; } export interface MinecraftStats { char: { health: number; maxHealth: number; foodLevel: number; xpLevel: number; position: { x: number; y: number; z: number; }; }; statistics: { general: { [key: string]: number }; kills: { [key: string]: number }; killed_by: { [key: string]: number }; }; advancements: Array<{ id: string; title: string; }>; lastSync: number; } export interface PlayerStats { playtimeHours: number; level: number; role: string; organizationId?: string; } export interface Player { uuid: string; username: string; skinUrl?: string; // Placeholder in a real app inventory: (Item | null)[]; stats: PlayerStats; minecraftStats?: MinecraftStats; storyMarkdown: string; tags: string[]; isOnline: boolean; } export interface CityStats { taxRate: number; biome: string; defenseRating: number; // 0-10 government: string; specialty: string; } export interface Organization { id: string; name: string; type: 'City' | 'Guild' | 'Company'; description: string; memberCount: number; status: 'active' | 'archived'; bannerUrl?: string; gallery?: string[]; establishedYear?: string; mayor?: string; cityStats?: CityStats; } export interface ShopItem { id: string; name: string; description?: string; price: number; currency: 'Gold' | 'Credits' | 'Barter' | 'Diamonds'; stock: number; type: 'item' | 'service' | 'blueprint'; imageUrl?: string; materialsRequired?: string; // e.g. "Customer provides Stone" } export interface GalleryImage { id: string; url: string; } export interface Project { id: string; title: string; description: string; category: 'Enterprise' | 'Service' | 'Story Arc' | 'Faction' | 'Black Market'; status: 'active' | 'recruiting' | 'private' | 'completed'; progress: number; // For story arcs completion or company reputation owner: string; employees: string[]; hiring: boolean; foundedDate?: string; associatedOrgId?: string; // Links this project to a city or guild shopCatalog?: ShopItem[]; gallery?: GalleryImage[]; bannerUrl?: string; logoUrl?: string; } export interface DiscordUser { id: string; username: string; discriminator: string; avatarUrl: string; linkedPlayerUuid?: string | null; }