import type { AxiosResponse } from "axios"; import api, { apiGet, apiPatch, apiPost } from "./axios"; import type { UserMeResponse, LoginRequest, DevLoginRequest, LoginResponse, LoginKeyResponse, RegisterRequest, EmailAvailabilityResponse, EmailDomainsResponse, EmailCodeVerifyResponse, PasswordResetCodeVerifyResponse, PasswordResetRequest, PasswordResetTokenRequest, } from "../types/api"; export const login = (payload: LoginRequest): Promise> => apiPost("/api/v1/auth/login", payload); export const devLogin = (payload: DevLoginRequest): Promise> => apiPost("/api/v1/auth/dev-login", payload); export const getLoginKey = (): Promise> => apiGet("/api/v1/auth/login-key"); export const fetchMe = (): Promise> => apiGet("/api/v1/auth/me"); export const fetchEmailDomains = (): Promise> => apiGet("/api/v1/auth/email-domains"); export const register = (payload: RegisterRequest): Promise> => apiPost("/api/v1/auth/register", payload); export const checkEmailAvailability = (email: string): Promise> => apiGet("/api/v1/auth/register/email-availability", { params: { email } }); export const sendRegisterEmailCode = (email: string): Promise> => apiPost("/api/v1/auth/register/email-code/send", { email }); export const verifyRegisterEmailCode = (email: string, code: string): Promise> => apiPost("/api/v1/auth/register/email-code/verify", { email, code }); export const sendPasswordResetEmailCode = (email: string): Promise> => apiPost("/api/v1/auth/password-reset/email-code/send", { email }); export const verifyPasswordResetEmailCode = ( email: string, code: string ): Promise> => apiPost("/api/v1/auth/password-reset/email-code/verify", { email, code }); export const sendPasswordResetLink = (email: string): Promise> => apiPost("/api/v1/auth/password-reset-link/send", { email }); export const resetPassword = (payload: PasswordResetRequest): Promise> => apiPost("/api/v1/auth/password-reset", payload); export const resetPasswordWithToken = ( payload: PasswordResetTokenRequest ): Promise> => apiPost("/api/v1/auth/password-reset-link", payload); export const updateProfile = (payload: { full_name?: string; clinical_department?: string; current_password?: string; password?: string; }) => apiPatch("/api/v1/auth/me", payload); export default api;