import { LeagueMemberDTO } from '@/lib/types/generated/LeagueMemberDTO'; import type { AllTeamsDto, CreateTeamInputDto, CreateTeamOutputDto, DriverTeamDto, TeamDetailsDto, TeamJoinRequestsDto, TeamMembersDto, UpdateTeamInputDto, UpdateTeamOutputDto, } from '../../dtos'; 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 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}`); } }