import { BaseApiClient } from '../base/BaseApiClient'; import { AuthSessionDTO } from '../../types/generated/AuthSessionDTO'; import { LoginParamsDTO } from '../../types/generated/LoginParamsDTO'; import { SignupParamsDTO } from '../../types/generated/SignupParamsDTO'; import { ForgotPasswordDTO } from '../../types/generated/ForgotPasswordDTO'; import { ResetPasswordDTO } from '../../types/generated/ResetPasswordDTO'; import { DemoLoginDTO } from '../../types/generated/DemoLoginDTO'; /** * Auth API Client * * Handles all authentication-related API operations. */ export class AuthApiClient extends BaseApiClient { /** Sign up with email */ signup(params: SignupParamsDTO): Promise { return this.post('/auth/signup', params); } /** Login with email */ login(params: LoginParamsDTO): Promise { return this.post('/auth/login', params); } /** Get current session */ getSession(): Promise { return this.request('GET', '/auth/session', undefined, { allowUnauthenticated: true, }); } /** Logout */ logout(): Promise { return this.post('/auth/logout', {}); } /** Forgot password - send reset link */ forgotPassword(params: ForgotPasswordDTO): Promise<{ message: string; magicLink?: string }> { return this.post<{ message: string; magicLink?: string }>('/auth/forgot-password', params); } /** Reset password with token */ resetPassword(params: ResetPasswordDTO): Promise<{ message: string }> { return this.post<{ message: string }>('/auth/reset-password', params); } /** Demo login (development only) */ demoLogin(params: DemoLoginDTO): Promise { return this.post('/auth/demo-login', params); } }