import apiClient from './client';
import type {
  Verse,
  Chapter,
  VerseFilter,
  VersePaginatedResponse,
  ApiResponse,
} from '@/types';

export const verseApi = {
  getVerses: async (params?: VerseFilter) => {
    const response = await apiClient.get<ApiResponse<VersePaginatedResponse>>('/verses', { params });
    return response.data.data;
  },

  getStudentVerses: async (params?: VerseFilter) => {
    const response = await apiClient.get<{ isSuccess: boolean; message: string; data: import('@/types').StudentVerse[]; meta: { total: number; page: number; lastPage: number } }>('/verses/student', { params });
    return response.data;
  },

  getVerse: async (id: string) => {
    const response = await apiClient.get<ApiResponse<Verse>>(`/verses/${id}`);
    return response.data.data;
  },

  getChapters: async () => {
    const response = await apiClient.get<ApiResponse<Chapter[]>>('/chapters');
    return response.data.data;
  },

  getChapter: async (id: string) => {
    const response = await apiClient.get<ApiResponse<Chapter>>(`/chapters/${id}`);
    return response.data.data;
  },

  searchVerses: async (query: string) => {
    const response = await apiClient.get<ApiResponse<Verse[]>>('/verses/search', {
      params: { q: query },
    });
    return response.data.data;
  },

  toggleBookmark: async (verseId: string) => {
    const response = await apiClient.post<ApiResponse<{ isBookmarked: boolean }>>(
      `/verses/${verseId}/bookmark`
    );
    return response.data.data;
  },
};
