using e_suite.Database.Audit.AuditEngine;

namespace e_suite.Database.Audit;

public interface IDatabaseAudit
{
    Task<int> SaveChangesAsync(AuditUserDetails auditUserDetails);

    Task<int> SaveChangesAsync(AuditUserDetails auditUserDetails, CancellationToken cancellationToken);

    Task<int> NoAuditSaveChangesAsync();

    Task<int> NoAuditSaveChangesAsync(CancellationToken cancellationToken);

    Task<int> AddAdhocAuditEntry(
        AuditUserDetails auditUserDetails,
        AuditType auditType,
        Dictionary<string, Change> fields,
        CancellationToken cancellationToken
    );
}