import { request } from './http'; import type { ActiveMission, AuthResponse, City, ClaimMissionResponse, InventoryResponse, LeaderboardResponse, MarketResponse, Mission, PlayerMeResponse, StartMissionResponse, TradeResponse, TravelResponse, WorldEvent, } from './types'; export const api = { // Auth register: (email: string, password: string, displayName: string) => request('/auth/register', { method: 'POST', body: { email, password, displayName }, }), login: (email: string, password: string) => request('/auth/login', { method: 'POST', body: { email, password } }), // Player playerMe: () => request('/player/me'), travel: (cityId: string) => request('/player/travel', { method: 'POST', body: { cityId } }), // Cities cities: () => request<{ cities: City[] }>('/cities'), // Market market: () => request('/market/current'), buy: (itemId: string, quantity: number) => request('/market/buy', { method: 'POST', body: { itemId, quantity } }), sell: (itemId: string, quantity: number) => request('/market/sell', { method: 'POST', body: { itemId, quantity } }), // Inventory inventory: () => request('/inventory'), // Missions missionsAvailable: () => request<{ missions: Mission[] }>('/missions/available'), missionsActive: () => request<{ missions: ActiveMission[] }>('/missions/active'), startMission: (missionId: string) => request(`/missions/${missionId}/start`, { method: 'POST' }), claimMission: (playerMissionId: string) => request(`/missions/${playerMissionId}/claim`, { method: 'POST' }), // Events events: () => request<{ events: WorldEvent[] }>('/events/current'), // Leaderboard leaderboard: (metric: 'money' | 'reputation', limit = 20) => request(`/leaderboard/${metric}?limit=${limit}`), };