namespace CashLineERP.Application.Documents;

public interface IDocumentStorageRepository
{
    IReadOnlyCollection<DocumentAttachmentDetailView> GetDocuments(
        string? moduleCode = null,
        string? entityName = null,
        long? entityId = null,
        string? lifecycleStatusCode = null,
        string? attachmentCategoryCode = null);

    DocumentAttachmentDetailView? GetDocument(long documentLinkId);

    DocumentAttachmentDetailView CreateDocument(long actorUserId, CreateDocumentAttachmentCommand command);

    DocumentAttachmentDetailView ArchiveDocument(long documentLinkId, long actorUserId, string? reasonText);

    DocumentAttachmentDetailView SupersedeDocument(long documentLinkId, long actorUserId, SupersedeDocumentAttachmentCommand command);
}
