import type { AuthSession, ChangePasswordPayload, ChangePasswordResult, PasswordResetConfirmPayload, PasswordResetConfirmResult, PasswordResetRequestPayload, PasswordResetRequestResult, QrLoginCreateResult, QrLoginRequestActionResult, QrLoginRequestDetailResult, SessionBulkActionResult, } from "@/types/api"; import type { RequestFn } from "./utils"; export function createAuthApi(request: RequestFn) { return { getAuthSessions: (): Promise => request("/api/auth/sessions/"), deleteAuthSession: (sessionId: string): Promise => request(`/api/auth/sessions/${sessionId}/`, { method: "DELETE" }), logoutOtherSessions: (): Promise => request("/api/auth/sessions/logout-others/", { method: "POST" }), createQrLogin: (): Promise => request("/api/auth/qr-login/", { method: "POST" }), getQrLoginRequest: ( scanToken: string, ): Promise => request(`/api/auth/qr-login/requests/${encodeURIComponent(scanToken)}/`), approveQrLoginRequest: ( scanToken: string, ): Promise => request(`/api/auth/qr-login/requests/${encodeURIComponent(scanToken)}/approve/`, { method: "POST", }), denyQrLoginRequest: ( scanToken: string, ): Promise => request(`/api/auth/qr-login/requests/${encodeURIComponent(scanToken)}/deny/`, { method: "POST", }), changePassword: ( payload: ChangePasswordPayload, ): Promise => request("/api/auth/change-password/", { method: "POST", body: JSON.stringify(payload), }), requestPasswordReset: ( payload: PasswordResetRequestPayload, ): Promise => request("/api/auth/password-reset/", { method: "POST", body: JSON.stringify(payload), }), confirmPasswordReset: ( payload: PasswordResetConfirmPayload, ): Promise => request("/api/auth/password-reset/confirm/", { method: "POST", body: JSON.stringify(payload), }), }; }