"use client"
import { useMutation, useQuery } from "@tanstack/react-query"
import {
  fetchTopUpCreditsUsageStats,
  fetchTopupPlans,
  fetchUserTopupCreditsBalance,
  fetchUserTopUpTRansactions,
  getTopUpCreditsUsageStats,
  getTopupPlans,
  getUserTopupCreditsBalance,
  getUserTopUpTransactions,
  purchaseTopup,
  fetchCreditRates,
  getCreditRates
} from "../queries/topups"
import type { PurchaseTopupPayload, TopupCredeitsBalanceResponse, TopupPlan, UserTopupTransactionsResponse, CreditsUsageResponse, CreditRatesResponse } from "@/types/topups"

export function useGetTopupPlans() {
  return useQuery<TopupPlan[]>({
    queryKey: getTopupPlans,
    queryFn: fetchTopupPlans,
    refetchOnWindowFocus: false,
    staleTime: 5 * 60 * 1000 // 5 minutes
  })
}

export function usePurchaseTopup() {
  return useMutation({
    mutationFn: (payload: PurchaseTopupPayload) => purchaseTopup(payload)
  })
}

export function useGetTopUpBalance() {
  return useQuery<TopupCredeitsBalanceResponse>({
    queryKey: getUserTopupCreditsBalance,
    queryFn: fetchUserTopupCreditsBalance
  })
}

export function useGetUserTopUpTransactions() {
  return useQuery<UserTopupTransactionsResponse>({
    queryKey: getUserTopUpTransactions,
    queryFn: fetchUserTopUpTRansactions
  })
}

export function useGetTopUpCreditsUsageStats(params: { salonId: string; page?: number; limit?: number }) {
  return useQuery<CreditsUsageResponse>({
    queryKey: getTopUpCreditsUsageStats(params),
    queryFn: () => fetchTopUpCreditsUsageStats(params),
  })
} 

export function useGetCreditRates() {
  return useQuery<CreditRatesResponse>({
    queryKey: getCreditRates,
    queryFn: fetchCreditRates,
  })
}
