import { api } from './client'; import type { User, Character, Monster, CombatLog, CharacterItem, CharacterMaterial, Recipe, CraftJob, Item, } from './types'; // Auth export const authApi = { setSession: (token: string, refreshToken?: string) => api.post('/auth/session', { token, refreshToken }), me: () => api.get('/auth/me'), logout: () => api.post('/auth/logout'), }; // Character export const characterApi = { create: (name: string, stats: Record) => api.post('/characters', { name, ...stats }), me: () => api.get('/characters/me'), distributeStats: (stats: Record) => api.post('/characters/stats', stats), rest: () => api.post<{ hpBefore: number; hpAfter: number; hpMax: number; healed: number }>('/characters/rest'), setTitle: (title: string | null) => api.put('/profile/title', { title }), }; // Combat export const combatApi = { zones: () => api.get('/monsters/zones'), monsters: () => api.get('/monsters'), start: (monsterId: string, attackType: string, count?: number) => api.post('/combat/start', { monsterId, attackType, ...(count && count > 1 ? { count } : {}) }), history: () => api.get('/combat/history'), }; // Items export const itemApi = { catalogue: () => api.get('/items'), inventory: () => api.get('/items/inventory'), equip: (id: string) => api.post(`/items/equip/${id}`), unequip: (slot: 'weapon' | 'armor') => api.post(`/items/unequip/${slot}`), }; // Materials export const materialApi = { inventory: () => api.get('/materials/inventory'), }; // Craft export const craftApi = { recipes: () => api.get('/craft/recipes'), start: (recipeId: string) => api.post('/craft/start', { recipeId }), active: () => api.get('/craft/active'), collect: (jobId: string) => api.post(`/craft/collect/${jobId}`), }; // Quests export const questApi = { available: () => api.get('/quests/available'), active: () => api.get('/quests/active'), completed: () => api.get('/quests/completed'), accept: (questId: string) => api.post(`/quests/accept/${questId}`), claim: (playerQuestId: string) => api.post(`/quests/claim/${playerQuestId}`), abandon: (playerQuestId: string) => api.post(`/quests/abandon/${playerQuestId}`), arcs: () => api.get('/quests/arcs'), }; // Forge export const forgeApi = { upgrade: (charItemId: string) => api.post<{ success: boolean; forgeLevel: number; item: string; goldSpent: number; message: string }>(`/forge/upgrade/${charItemId}`), };