using System.Threading; using System.Threading.Tasks; using MarcusLaw.OutlookAddin.Core.Models; namespace MarcusLaw.OutlookAddin.Core.Services { public interface IEspoCrmClient { Task FileMailAsync(FileEmailRequest request, CancellationToken cancellationToken = default); Task GlobalSearchAsync(string query, CancellationToken cancellationToken = default); Task> EmailAddressSearchAsync(string emailAddress, string? entityType = null, CancellationToken cancellationToken = default); Task GetCaseAsync(string id, string? select = null, CancellationToken cancellationToken = default); Task GetAccountAsync(string id, string? select = null, CancellationToken cancellationToken = default); Task GetContactAsync(string id, string? select = null, CancellationToken cancellationToken = default); Task CreateContactAsync(string name, string? emailAddress = null, CancellationToken cancellationToken = default); Task> ListCasesForContactAsync(string contactId, int maxSize = 5, CancellationToken cancellationToken = default); Task TestConnectionAsync(CancellationToken cancellationToken = default); Task UploadAttachmentAsync(string fileName, string contentType, string base64Content, CancellationToken cancellationToken = default); Task CreateDocumentAsync(string name, string attachmentFileId, string? parentType, string? parentId, string? folderId, CancellationToken cancellationToken = default); Task> ListDocumentFoldersAsync(CancellationToken cancellationToken = default); Task> ListFoldersUsedInCaseAsync(string caseId, CancellationToken cancellationToken = default); } }