namespace Svrnty.CQRS.Altcha.Abstractions;
///
/// Server-issued Altcha challenge. Shape matches what the
/// altcha widget v3
/// expects from its challengeurl.
///
public sealed class AltchaChallenge
{
/// Hashing algorithm name (e.g. SHA-256).
public required string Algorithm { get; init; }
/// Hex-encoded hash the client must find a preimage for.
public required string Challenge { get; init; }
/// Hex-encoded salt (embeds an expiry timestamp).
public required string Salt { get; init; }
///
/// HMAC-SHA256 of algorithm|challenge|salt|maxnumber using the
/// server's signing secret. Lets the verify step trust the issued
/// challenge without keeping per-challenge state.
///
public required string Signature { get; init; }
/// Upper bound of the PoW search space (equals the requested complexity).
public required uint MaxNumber { get; init; }
}