import type { DeleteMediaOutputDTO, GetMediaOutputDTO, RequestAvatarGenerationInputDTO, RequestAvatarGenerationOutputDTO, UpdateAvatarInputDTO, UpdateAvatarOutputDTO, UploadMediaOutputDTO, } from '../generated'; import type { GetAvatarOutputDTO } from '../generated'; import { BaseApiClient } from '../base/BaseApiClient'; /** * Media API Client * * Handles all media-related API operations. */ export class MediaApiClient extends BaseApiClient { /** Upload media file */ uploadMedia(input: { file: File; type: string; category?: string }): Promise { const formData = new FormData(); formData.append('file', input.file); formData.append('type', input.type); if (input.category) { formData.append('category', input.category); } return this.post('/media/upload', formData); } /** Get media by ID */ getMedia(mediaId: string): Promise { return this.get(`/media/${mediaId}`); } /** Delete media by ID */ deleteMedia(mediaId: string): Promise { return this.delete(`/media/${mediaId}`); } /** Request avatar generation */ requestAvatarGeneration(input: RequestAvatarGenerationInputDTO): Promise { return this.post('/media/avatar/generate', input); } /** Get avatar for driver */ getAvatar(driverId: string): Promise { return this.get(`/media/avatar/${driverId}`); } /** Update avatar for driver */ updateAvatar(input: UpdateAvatarInputDTO): Promise { return this.put(`/media/avatar/${input.driverId}`, { avatarUrl: input.avatarUrl }); } }