import type { Vec2, EntityId } from '../core/types'; export interface PlatformerConfig { moveSpeed: number; jumpForce: number; gravity: number; maxJumps: number; coyoteTime: number; jumpBufferTime: number; wallSlideSpeed: number; wallJumpForce: Vec2; dashSpeed: number; dashDuration: number; groundCheckDistance: number; maxFallSpeed: number; } export declare const DEFAULT_PLATFORMER_CONFIG: PlatformerConfig; export interface PlatformerState { grounded: boolean; jumpsRemaining: number; coyoteTimer: number; jumpBufferTimer: number; wallSliding: boolean; dashing: boolean; dashTimer: number; facingRight: boolean; velocity: Vec2; } export declare function createPlatformerState(): PlatformerState; export declare function updatePlatformer(state: PlatformerState, input: { moveX: number; jump: boolean; dash: boolean; }, config: PlatformerConfig, dt: number): Vec2; export interface RunAndGunConfig { moveSpeed: number; jumpForce: number; gravity: number; fireRate: number; bulletSpeed: number; bulletDamage: number; spreadAngle: number; maxAmmo: number; reloadTime: number; aimDirections: 8 | 4; scrollSpeed: number; } export declare const DEFAULT_RUN_AND_GUN_CONFIG: RunAndGunConfig; export type WeaponType = 'pistol' | 'shotgun' | 'machinegun' | 'rocket' | 'laser' | 'flamethrower'; export interface WeaponDef { type: WeaponType; name: string; damage: number; fireRate: number; bulletSpeed: number; spread: number; bulletsPerShot: number; ammoMax: number; reloadTime: number; piercing: boolean; explosive: boolean; explosionRadius: number; } export declare const PRESET_WEAPONS: Record; export interface BeatEmUpConfig { moveSpeed: number; combo: ComboChain[]; grabRange: number; throwDamage: number; knockbackForce: number; healthMax: number; lives: number; iFrameDuration: number; specialMeterMax: number; specialCostPerUse: number; laneCount: number; laneHeight: number; } export interface ComboChain { name: string; sequence: string[]; damage: number[]; timing: number; } export declare const DEFAULT_BEAT_EM_UP_CONFIG: BeatEmUpConfig; export interface BeatEmUpState { comboIndex: number; comboTimer: number; specialMeter: number; iFrameTimer: number; health: number; lives: number; currentLane: number; } export declare function createBeatEmUpState(config: BeatEmUpConfig): BeatEmUpState; export interface HackAndSlashConfig { moveSpeed: number; attackSpeed: number; attackRange: number; attackArc: number; damage: number; critChance: number; critMultiplier: number; dodgeSpeed: number; dodgeDuration: number; dodgeCooldown: number; healthMax: number; manaMax: number; manaRegen: number; xpPerLevel: number; xpScaling: number; skillSlots: number; } export declare const DEFAULT_HACK_AND_SLASH_CONFIG: HackAndSlashConfig; export interface SkillDef { id: string; name: string; manaCost: number; cooldown: number; damage: number; range: number; aoe: boolean; aoeRadius: number; projectile: boolean; projectileSpeed: number; } export interface TwinStickConfig { moveSpeed: number; fireRate: number; bulletSpeed: number; bulletDamage: number; bulletLifetime: number; healthMax: number; shieldMax: number; shieldRegenRate: number; shieldRegenDelay: number; maxBullets: number; spreadAngle: number; bulletCount: number; homingStrength: number; } export declare const DEFAULT_TWIN_STICK_CONFIG: TwinStickConfig; export interface TwinStickState { health: number; shield: number; shieldRegenTimer: number; fireTimer: number; score: number; killStreak: number; multiplier: number; } export declare function createTwinStickState(config: TwinStickConfig): TwinStickState; export interface Projectile { id: number; x: number; y: number; vx: number; vy: number; damage: number; lifetime: number; ownerId: EntityId; piercing: boolean; hitEntities: Set; } export declare class ProjectilePool { private pool; private active; private nextId; spawn(x: number, y: number, vx: number, vy: number, damage: number, lifetime: number, ownerId: EntityId, piercing?: boolean): Projectile; update(dt: number): void; getActive(): readonly Projectile[]; remove(id: number): void; clear(): void; }