"use client";

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { billingService } from "@/services/billingService";
import { useAuthStore } from "@/store/authStore";

export function useBillingOverview() {
  const token = useAuthStore((s) => s.token);

  return useQuery({
    queryKey: ["billing", "overview"],
    queryFn: () => billingService.overview(token!),
    enabled: Boolean(token),
    staleTime: 30_000,
  });
}

export function useBillingMutations() {
  const token = useAuthStore((s) => s.token);
  const queryClient = useQueryClient();

  const invalidate = () =>
    queryClient.invalidateQueries({ queryKey: ["billing", "overview"] });

  const upgrade = useMutation({
    mutationFn: (payload: { plan_id: number; addon_ids?: number[] }) =>
      billingService.upgrade(token!, payload),
    onSuccess: invalidate,
  });

  const downgrade = useMutation({
    mutationFn: (payload: { plan_id: number }) =>
      billingService.downgrade(token!, payload),
    onSuccess: invalidate,
  });

  const cancelDowngrade = useMutation({
    mutationFn: () => billingService.cancelDowngrade(token!),
    onSuccess: invalidate,
  });

  return { upgrade, downgrade, cancelDowngrade };
}
