namespace Meezi.API.Security;

public interface IAbuseProtectionService
{
    bool IsCaptchaConfigured { get; }
    string? CaptchaSiteKey { get; }

    Task<(bool Allowed, string? ErrorCode, string? Message)> CheckAuthOtpByIpAsync(
        string clientIp,
        CancellationToken cancellationToken = default);

    Task<(bool Allowed, string? ErrorCode, string? Message)> CheckGuestOrderAsync(
        string cafeId,
        string clientIp,
        CancellationToken cancellationToken = default);

    Task<(bool Allowed, string? ErrorCode, string? Message)> CheckPublicWriteByIpAsync(
        string clientIp,
        CancellationToken cancellationToken = default);

    Task<(bool Ok, string? ErrorCode, string? Message)> VerifyCaptchaAsync(
        string? captchaToken,
        CancellationToken cancellationToken = default);
}
