import type { GetAllTeamsOutputDTO } from '@/lib/types/generated/GetAllTeamsOutputDTO'; import type { GetTeamsLeaderboardOutputDTO } from '@/lib/types/generated/GetTeamsLeaderboardOutputDTO'; import type { GetTeamDetailsOutputDTO } from '@/lib/types/generated/GetTeamDetailsOutputDTO'; import type { GetTeamMembersOutputDTO } from '@/lib/types/generated/GetTeamMembersOutputDTO'; import type { GetTeamJoinRequestsOutputDTO } from '@/lib/types/generated/GetTeamJoinRequestsOutputDTO'; import type { CreateTeamInputDTO } from '@/lib/types/generated/CreateTeamInputDTO'; import type { CreateTeamOutputDTO } from '@/lib/types/generated/CreateTeamOutputDTO'; import type { UpdateTeamInputDTO } from '@/lib/types/generated/UpdateTeamInputDTO'; import type { UpdateTeamOutputDTO } from '@/lib/types/generated/UpdateTeamOutputDTO'; import type { GetDriverTeamOutputDTO } from '@/lib/types/generated/GetDriverTeamOutputDTO'; import type { GetTeamMembershipOutputDTO } from '@/lib/types/generated/GetTeamMembershipOutputDTO'; import { BaseApiClient } from '../base/BaseApiClient'; /** * Teams API Client * * Handles all team-related API operations. */ export class TeamsApiClient extends BaseApiClient { /** Get all teams */ getAll(): Promise { return this.get('/teams/all'); } /** Get teams leaderboard */ getLeaderboard(): Promise { return this.get('/teams/leaderboard'); } /** Get team details */ getDetails(teamId: string): Promise { return this.get(`/teams/${teamId}`); } /** Get team members */ getMembers(teamId: string): Promise { return this.get(`/teams/${teamId}/members`); } /** Get team join requests */ getJoinRequests(teamId: string): Promise { return this.get(`/teams/${teamId}/join-requests`); } /** Create a new team */ create(input: CreateTeamInputDTO): Promise { return this.post('/teams', input); } /** Update team */ update(teamId: string, input: UpdateTeamInputDTO): Promise { return this.patch(`/teams/${teamId}`, input); } /** Get driver's team */ getDriverTeam(driverId: string): Promise { return this.get(`/teams/driver/${driverId}`); } /** Get membership for a driver in a team */ getMembership(teamId: string, driverId: string): Promise { return this.get(`/teams/${teamId}/members/${driverId}`); } }