export interface Crop { id: string name: string growthTicks: number waterPerTick: number yield: number yieldType: string fertilityDepletion: number } export interface CropDefinitions { [key: string]: Crop } export interface PlotState { intended?: string current?: { cropId: string progress: number mature: boolean } moisture: number fertility: number } export interface InventoryItem { id: string count: number } export type FieldTool = 'mark' | 'plant' | 'water' | 'harvest' | 'inspect' export interface ConsoleMessage { id: string text: string timestamp: number } export interface UpgradeCost { itemId: string amount: number } export interface Upgrade { id: string name: string description: string cost: UpgradeCost[] } export interface GameState { cash: number inventory: Record fieldSize: number maxFieldSize: number fieldUpgradeCosts: number[] plots: PlotState[][] gameSpeed: number actionCooldown: number consoleMessages: ConsoleMessage[] purchasedUpgrades: string[] piety: number } export interface MarketTransaction { itemId: string amount: number type: 'buy' | 'sell' position: { x: number y: number } }