import { components } from './schema'; /** The static `server_overview.json` payload (see `Stats#serverOverview`). */ export type ServerOverview = components['schemas']['server_overview']; interface StatusBlock { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface CreditsParams {} /** One entry per contribution category, e.g. "Game Design" or "Play Testers". */ export type CreditsResult = Array<{ [category: string]: string[]; }>; export type EmpireRankSort = 'empire_size_rank' | 'offense_success_rate_rank' | 'defense_success_rate_rank' | 'dirtiest_rank'; export type AllianceRankSort = | 'average_empire_size_rank' | 'offense_success_rate_rank' | 'defense_success_rate_rank' | 'dirtiest_rank'; export interface EmpireRankParams { sort_by?: EmpireRankSort; /** 25 records per page. Defaults to the page holding the current empire's own rank. */ page_number?: number; } export interface EmpireRankResult extends StatusBlock { empires: Array<{ empire_id: number; empire_name: string; alliance_id: number | null; alliance_name: string | null; colony_count: number; population: number; empire_size: number; building_count: number; average_building_level: number; offense_success_rate: number; defense_success_rate: number; dirtiest: number; }>; total_empires: number; page_number: number; } export interface AllianceRankParams { /** * The server errors on its own default sort, so pass one explicitly - see * README "Spec Discrepancies". */ sort_by: AllianceRankSort; /** 25 records per page. Defaults to the page holding the current empire's own rank. */ page_number?: number; } export interface AllianceRankResult extends StatusBlock { alliances: Array<{ alliance_id: number; alliance_name: string; member_count: number; space_station_count: number; influence: number; colony_count: number; population: number; average_empire_size: number; building_count: number; average_building_level: number; offense_success_rate: number; defense_success_rate: number; dirtiest: number; }>; total_alliances: number; page_number: number; } export interface FindEmpireRankParams { /** Determines which ranking the returned page numbers refer to. */ sort_by: EmpireRankSort; /** Full or partial name. Must be at least 3 characters. */ empire_name: string; } export interface FindEmpireRankResult extends StatusBlock { empires: Array<{ empire_id: number; empire_name: string; page_number: number; }>; } export interface FindAllianceRankParams { /** Determines which ranking the returned page numbers refer to. */ sort_by: AllianceRankSort; /** Full or partial name. Must be at least 3 characters. */ alliance_name: string; } export interface FindAllianceRankResult extends StatusBlock { alliances: Array<{ alliance_id: number; alliance_name: string; page_number: number; }>; } export interface ColonyRankParams { sort_by?: 'population_rank'; } export interface ColonyRankResult extends StatusBlock { colonies: Array<{ empire_id: number; empire_name: string; planet_id: number; planet_name: string; population: number; building_count: number; average_building_level: number; highest_building_level: number; }>; } export interface SpyRankParams { sort_by?: 'level_rank' | 'success_rate_rank' | 'dirtiest_rank'; } export interface SpyRankResult extends StatusBlock { spies: Array<{ empire_id: number; empire_name: string; spy_id: number; spy_name: string; age: number; level: number; success_rate: number; dirtiest: number; }>; } export interface WeeklyMedalWinnersParams {} export interface WeeklyMedalWinnersResult extends StatusBlock { winners: Array<{ empire_id: number; empire_name: string; medal_name: string; medal_image: string; times_earned: number; }>; }