using Bit.Core.Enums; using Bit.Core.Vault.Entities; using Bit.Core.Vault.Models.Data; namespace Bit.Core.Services; public interface IAttachmentStorageService { FileUploadType FileUploadType { get; } Task UploadNewAttachmentAsync(Stream stream, Cipher cipher, CipherAttachment.MetaData attachmentData); Task UploadShareAttachmentAsync(Stream stream, Guid cipherId, Guid organizationId, CipherAttachment.MetaData attachmentData); Task StartShareAttachmentAsync(Guid cipherId, Guid organizationId, CipherAttachment.MetaData attachmentData); Task RollbackShareAttachmentAsync(Guid cipherId, Guid organizationId, CipherAttachment.MetaData attachmentData, string originalContainer); Task CleanupAsync(Guid cipherId); Task DeleteAttachmentAsync(Guid cipherId, CipherAttachment.MetaData attachmentData); Task DeleteAttachmentsForCipherAsync(Guid cipherId); Task DeleteAttachmentsForOrganizationAsync(Guid organizationId); Task DeleteAttachmentsForUserAsync(Guid userId); Task GetAttachmentUploadUrlAsync(Cipher cipher, CipherAttachment.MetaData attachmentData); Task GetAttachmentDownloadUrlAsync(Cipher cipher, CipherAttachment.MetaData attachmentData); Task<(bool, long?)> ValidateFileAsync(Cipher cipher, CipherAttachment.MetaData attachmentData, long leeway); }