import type { EntityId } from '../core/types'; export interface TowerDefenseConfig { tileSize: number; gridWidth: number; gridHeight: number; startGold: number; startLives: number; waveCount: number; waveInterval: number; interWaveDelay: number; sellRefundRate: number; maxTowersPerType: number; speedMultipliers: number[]; } export declare const DEFAULT_TOWER_DEFENSE_CONFIG: TowerDefenseConfig; export type TowerTargeting = 'first' | 'last' | 'strongest' | 'weakest' | 'closest'; export interface TowerDef { id: string; name: string; cost: number; range: number; damage: number; attackSpeed: number; projectileSpeed: number; aoe: boolean; aoeRadius: number; slowPercent: number; slowDuration: number; targeting: TowerTargeting; upgradePath: string[]; } export interface EnemyWaveDef { waveNumber: number; enemies: Array<{ enemyId: string; count: number; delay: number; pathIndex: number; }>; reward: number; } export interface TDEnemyDef { id: string; name: string; health: number; speed: number; armor: number; reward: number; flying: boolean; special: 'none' | 'heal' | 'shield' | 'split' | 'boss'; } export interface TDState { gold: number; lives: number; wave: number; score: number; towers: Array<{ defId: string; gridX: number; gridY: number; upgradeLevel: number; }>; inWave: boolean; speed: number; } export declare function createTDState(config: TowerDefenseConfig): TDState; export interface RTSConfig { mapWidth: number; mapHeight: number; maxPopulation: number; startResources: RTSResources; buildSpeed: number; gatherRate: number; fogOfWar: boolean; maxSelectCount: number; controlGroups: number; } export interface RTSResources { gold: number; wood: number; food: number; stone: number; } export declare const DEFAULT_RTS_CONFIG: RTSConfig; export type UnitCommand = 'move' | 'attack' | 'patrol' | 'hold' | 'gather' | 'build' | 'repair' | 'stop'; export interface RTSUnitDef { id: string; name: string; health: number; damage: number; attackSpeed: number; range: number; moveSpeed: number; armor: number; cost: RTSResources; buildTime: number; populationCost: number; canGather: boolean; canBuild: boolean; abilities: string[]; } export interface RTSBuildingDef { id: string; name: string; health: number; width: number; height: number; cost: RTSResources; buildTime: number; produces: string[]; researches: string[]; providesPopulation: number; requiresBuilding: string | null; } export interface RTSState { resources: RTSResources; population: number; maxPopulation: number; selectedUnits: EntityId[]; controlGroups: Map; } export declare function createRTSState(config: RTSConfig): RTSState; export interface TacticsConfig { gridWidth: number; gridHeight: number; maxUnitsPerSide: number; movementType: 'manhattan' | 'diagonal'; heightLevels: number; heightAdvantageBonus: number; coverBonus: number; flanking: boolean; flankingBonus: number; criticalHitChance: number; initiativeSystem: boolean; undoMoves: boolean; turnTimeLimit: number; } export declare const DEFAULT_TACTICS_CONFIG: TacticsConfig; export interface TacticsUnitDef { id: string; name: string; classType: string; health: number; moveRange: number; attackRange: number; damage: number; defense: number; initiative: number; skills: TacticsSkillDef[]; } export interface TacticsSkillDef { id: string; name: string; range: number; aoe: number; damage: number; cooldown: number; mpCost: number; effect: string; } export type TacticsTile = 'floor' | 'wall' | 'water' | 'cover_low' | 'cover_high' | 'stairs' | 'pit'; export interface TacticsTurnOrder { units: Array<{ entityId: EntityId; initiative: number; acted: boolean; }>; currentIndex: number; turnNumber: number; } export declare function createTurnOrder(units: Array<{ entityId: EntityId; initiative: number; }>): TacticsTurnOrder; export declare function nextUnit(order: TacticsTurnOrder): EntityId | null; export interface CityBuilderConfig { gridWidth: number; gridHeight: number; startMoney: number; taxRate: number; populationGrowthRate: number; demandCycle: number; buildingCategories: string[]; happinessFactors: string[]; pollutionDecay: number; } export declare const DEFAULT_CITY_BUILDER_CONFIG: CityBuilderConfig; export interface CityBuildingDef { id: string; name: string; category: string; cost: number; width: number; height: number; income: number; upkeep: number; populationCapacity: number; jobCapacity: number; happiness: number; pollution: number; powerRequired: number; waterRequired: number; requirements: string[]; } export interface CityState { money: number; population: number; happiness: number; demand: { residential: number; commercial: number; industrial: number; }; buildings: Array<{ defId: string; gridX: number; gridY: number; }>; totalIncome: number; totalUpkeep: number; } export declare function createCityState(config: CityBuilderConfig): CityState; export declare function updateCity(state: CityState, config: CityBuilderConfig, dt: number): void; export interface IdleConfig { baseClickValue: number; offlineProgressRate: number; maxOfflineHours: number; prestigeThreshold: number; prestigeMultiplier: number; autoSaveInterval: number; notationStyle: 'standard' | 'scientific' | 'engineering'; } export declare const DEFAULT_IDLE_CONFIG: IdleConfig; export interface IdleGeneratorDef { id: string; name: string; baseCost: number; costMultiplier: number; baseOutput: number; unlockAt: number; } export interface IdleUpgradeDef { id: string; name: string; description: string; cost: number; targetGenerator: string; multiplier: number; purchased: boolean; } export interface IdleState { currency: number; totalEarned: number; clickValue: number; generators: Map; upgrades: Set; prestigeCount: number; prestigeMultiplier: number; lastSave: number; } export declare function createIdleState(): IdleState; export declare function getGeneratorCost(def: IdleGeneratorDef, owned: number): number; export declare function getIdleIncome(state: IdleState, defs: IdleGeneratorDef[]): number; export declare function formatNumber(n: number, style?: IdleConfig['notationStyle']): string;