import type { ApiResponse } from '@alqove/types';
import type { AlqoveClient } from '../client';

export interface CartData {
  stores: CartStoreGroup[];
  item_count: number;
  subtotal: number;
  shipping_total: number;
  total: number;
}

export interface CartStoreGroup {
  store: { id: string; name: string; logo_image: string | null };
  items: CartItemData[];
  subtotal: number;
  shipping: number;
  free_shipping_threshold: number | null;
}

export interface CartItemData {
  id: string;
  item: {
    id: string;
    title: string;
    price: number;
    image_url: string | null;
    condition: string;
    is_available: boolean;
  };
  added_at: string;
}

export function createCartEndpoints(client: AlqoveClient) {
  return {
    get() {
      return client.get<ApiResponse<CartData>>('/v1/cart');
    },

    addItem(itemId: string) {
      return client.post<ApiResponse<CartItemData>>('/v1/cart/items', { item_id: itemId });
    },

    removeItem(itemId: string) {
      return client.delete<void>(`/v1/cart/items/${itemId}`);
    },
  };
}
