import apiClient, { ApiResponse } from "~/lib/api-client"; import type { ApprovalCheckResponse, AuthTokenData, CompanyProfileRequest, CreatePinRequest, PengelolaOtpRequest, PengelolaOtpVerifyRequest, VerifyPinRequest } from "~/types/auth.types"; class PengelolaAuthService { async requestOtpRegister(data: PengelolaOtpRequest): Promise { const response = await apiClient.post( "/auth/request-otp/register", data ); return response.data; } async requestOtpLogin(data: PengelolaOtpRequest): Promise { const response = await apiClient.post( "/auth/request-otp", data ); return response.data; } async verifyOtpRegister( data: PengelolaOtpVerifyRequest ): Promise> { const response = await apiClient.post>( "/auth/verif-otp/register", data ); return response.data; } async verifyOtpLogin( data: PengelolaOtpVerifyRequest ): Promise> { const response = await apiClient.post>( "/auth/verif-otp", data ); return response.data; } async createCompanyProfile( data: CompanyProfileRequest ): Promise> { const formData = new FormData(); Object.entries(data).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (value instanceof File) { formData.append(key, value); } else { formData.append(key, String(value)); } } }); const response = await apiClient.post>( "/companyprofile/create", formData, { headers: { "Content-Type": "multipart/form-data" } } ); return response.data; } async checkApproval(): Promise> { const response = await apiClient.get>( "/auth/cekapproval" ); return response.data; } async createPin(data: CreatePinRequest): Promise> { const response = await apiClient.post>( "/pin/create", data ); return response.data; } async verifyPin(data: VerifyPinRequest): Promise> { const response = await apiClient.post>( "/pin/verif", data ); return response.data; } } export default new PengelolaAuthService();