import axiosInstance from "./api";
import { apiUrl } from "./endpoints";

export interface CreateSubscriptionResponse {
  status: number;
  msg: string;
  data: {
    subscriptionId: string;
    razorpayKeyId: string;
    planName: string;
  };
}

export interface VerifyPaymentPayload {
  razorpay_payment_id: string;
  razorpay_subscription_id: string;
  razorpay_signature: string;
  planId?: string;
}

export interface VerifyPaymentResponse {
  status: number;
  msg: string;
  data?: {
    expiryDate: string | null;
    subscriptionId: string;
  };
}

export const createSubscriptionApi = async (
  planId: string
): Promise<CreateSubscriptionResponse> => {
  const res = await axiosInstance.post(apiUrl.createSubscription, {
    planId,
  });
  return res.data;
};

export const verifyPaymentApi = async (
  payload: VerifyPaymentPayload
): Promise<VerifyPaymentResponse> => {
  const res = await axiosInstance.post(apiUrl.verifyPayment, payload);
  return res.data;
};

export const cancelSubscriptionApi = async (razorpaySubscriptionId: string) => {
  const res = await axiosInstance.post(apiUrl.cancelSubscription, {
    razorpay_subscription_id: razorpaySubscriptionId,
  });
  return res.data;
};