import type { QueueItem, SessionRow, SessionStartInput, AttemptCreateInput } from '@flashcard/shared'; import { api } from './client.js'; export interface StartedSession { session: SessionRow; queue: QueueItem[]; } export interface SessionState { session: SessionRow; queue: QueueItem[]; index: number; } export const sessionsApi = { start: (input: SessionStartInput) => api.post('/sessions', input), startDue: () => api.post(`/sessions/due`), active: () => api.get('/sessions/active'), state: (id: number) => api.get(`/sessions/${id}`), next: (id: number) => api.get<{ done: true } | { done: false; item: QueueItem }>(`/sessions/${id}/next`), attempt: (id: number, input: AttemptCreateInput) => api.post(`/sessions/${id}/attempts`, input), end: (id: number) => api.post(`/sessions/${id}/end`), abandon: (id: number) => api.post(`/sessions/${id}/abandon`), };