import { apiClient } from "@/lib/api-client";
import {
  LoginRequest,
  LoginResponse,
  Registration,
  RegistrationRequest,
  RegisterResponse,
  PaginatedResponse,
  PaginationParams
} from "@/types/api";

export const authService = {
  async login(credentials: LoginRequest): Promise<LoginResponse> {
    const response = await apiClient<LoginResponse>("/api/auth/login", {
      method: "POST",
      body: JSON.stringify(credentials),
    });

    // Store token on success
    if (typeof window !== "undefined" && response.token) {
      localStorage.setItem("token", response.token);
    }

    return response;
  },

  logout() {
    if (typeof window !== "undefined") {
      localStorage.removeItem("token");
    }
  }
};

export const registrationService = {
  async register(data: RegistrationRequest | FormData): Promise<RegisterResponse> {
    return apiClient<RegisterResponse>("/api/registrations/register", {
      method: "POST",
      body: data instanceof FormData ? data : JSON.stringify(data),
    });
  },

  async fetchRegistrations(params: PaginationParams): Promise<PaginatedResponse<Registration>> {
    return apiClient<PaginatedResponse<Registration>>("/api/registrations", {
      method: "GET",
      params,
    });
  }
};
