export interface Player { id: string; name: string; color: string; x: number; y: number; score: number; party_id?: string | null; is_party_leader?: boolean; created_at: string; } export interface Party { id: string; name: string; leader_id: string; leader_name: string; member_ids: string[]; created_at?: string; } export interface BoardConfig { min_x: number; max_x: number; min_y: number; max_y: number; grid_cells_x: number; grid_cells_y: number; } export interface TurnInfo { current_player_id: string | null; current_player_name: string | null; round_number: number; turn_number: number; turn_order: string[]; } export interface BoardState { config: BoardConfig; player_count: number; players: Player[]; parties: Party[]; turn: TurnInfo; } export interface PlayerCreateRequest { name: string; color: string; } export interface MoveCheckResult { direction: string; dx: number; dy: number; target_x: number; target_y: number; available: boolean; reason?: string | null; } export interface AvailableMovesResponse { player_id: string; player_name: string; current_x: number; current_y: number; is_turn: boolean; is_party_leader: boolean; party_id?: string | null; party_member_count: number; current_turn_player_id?: string | null; moves: Record; } export interface MoveResponse { success: boolean; player: Player; direction: string; party_moved?: boolean; affected_players?: Player[]; previous_position: { x: number; y: number }; new_position: { x: number; y: number }; turn: TurnInfo; } export interface PartyDefeatResult { party_id: string; killed_leader_id: string; killed_leader_name: string; killed_leader_new_score: number; killed_leader_respawn_position: { x: number; y: number }; new_leader_id?: string | null; new_leader_name?: string | null; remaining_members: string[]; party_dissolved: boolean; } export interface BattleResult { winner_id: string; winner_name: string; loser_id: string; loser_name: string; defeat_details: PartyDefeatResult; }