using Catalog.Communication.Models; namespace Catalog.Communication.Abstractions; public interface IRaceUploadCommunicationClient { Task LoginAdminAsync(AdminLoginRequest request, CancellationToken cancellationToken = default); Task LogoutAdminAsync(CancellationToken cancellationToken = default); Task UploadRaceImageAsync(RaceImageUploadRequest request, CancellationToken cancellationToken = default); Task RemoveRaceImageAsync(RaceImageRemoveRequest request, CancellationToken cancellationToken = default); Task UploadRaceFileAsync(RaceFileUploadRequest request, CancellationToken cancellationToken = default); Task SaveRaceAsync(RaceSaveRequest request, CancellationToken cancellationToken = default); Task CreateRacePointsAsync(long raceId, CancellationToken cancellationToken = default); Task IndexRacePointAsync(long pointId, CancellationToken cancellationToken = default); Task GetRaceDetailAsync(long raceId, CancellationToken cancellationToken = default); Task UploadFileToReceiverAsync(ReceiveFileUploadRequest request, CancellationToken cancellationToken = default); Task ExecuteGaraCommandAsync(IReadOnlyDictionary formFields, CancellationToken cancellationToken = default); Task ExecuteAdminPhotoCommandAsync(AdminPhotoEndpoint endpoint, IReadOnlyDictionary formFields, CancellationToken cancellationToken = default); Task ExecutePublicLogonAsync(IReadOnlyDictionary formFields, CancellationToken cancellationToken = default); Task ExecuteUsersAsync(HttpMethod method, IReadOnlyDictionary? formFields = null, CancellationToken cancellationToken = default); Task ExecuteFoto2Async(HttpMethod method, IReadOnlyDictionary? formFields = null, CancellationToken cancellationToken = default); Task DownloadThumbnailAsync(string filename, long? idFoto = null, CancellationToken cancellationToken = default); Task DownloadOriginalAsync(string filename, long? idFoto = null, CancellationToken cancellationToken = default); }