using FrameworkDAL.DTO.EIPConversation; using GB5Shared.DTO.Framework.Login; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.EIPConversation.EIPOtp { public interface IEIPOtpDAL { /// Supersedes any existing pending record for this user+capability, then /// inserts a new pending OTP record. Returns the new OTPRECORDID. Task IssueAsync( int tenantId, string userIdentifier, string capabilityCode, string otpHash, System.DateTime expiresOn, LoginDTO loginDTO, CancellationToken ct = default); Task GetPendingAsync( int tenantId, string userIdentifier, string capabilityCode, LoginDTO loginDTO, CancellationToken ct = default); Task MarkVerifiedAsync(int otpRecordId, LoginDTO loginDTO, CancellationToken ct = default); Task IncrementAttemptAsync( int otpRecordId, int maxAttempts, LoginDTO loginDTO, CancellationToken ct = default); } }