import { gql, TypedDocumentNode } from "@apollo/client";
import { UpdateCartItemData } from "@/types/cart/type";

export const UPDATE_CART_ITEM: TypedDocumentNode<UpdateCartItemData> = gql
  `
  mutation UpdateCartItem(
    $cartItemId: Int!
    $quantity: Int!
  ) {
    createUpdateCartItem(
      input: {
        cartItemId: $cartItemId
        quantity: $quantity
      }
    ) {
      updateCartItem {
        id
        appliedTaxes
        itemsQty
        isGuest
        itemsCount
        items {
          edges {
            node {
              id
              cartId
              productId
              name
              price
              baseImage
              sku
              quantity
              type
              productUrlKey
              canChangeQty
            }
          }
        }
        subtotal
        subTotalInclTax
        discountAmount
        taxAmount
        taxTotal
        shippingAmount
        shippingAmountInclTax
        grandTotal
        formattedSubtotal
        formattedSubTotalInclTax
        formattedDiscountAmount
        formattedTaxAmount
        formattedTaxTotal
        formattedShippingAmount
        formattedShippingAmountInclTax
        formattedGrandTotal
        couponCode
        selectedShippingRate
        selectedShippingRateTitle
        paymentMethod
        paymentMethodTitle
        haveStockableItems
        billingAddress
        shippingAddress
      }
    }
  }
`;
