The class uses a fast random context. The context is documented to be not thread-safe.

Currently, SendMessages is only called in a single thread, but in the future or in unit tests, this might change.
SHORT_HALFLIFE = 0,
    MED_HALFLIFE = 1,
    LONG_HALFLIFE = 2
};
std::string StringForFeeEstimateHorizon(FeeEstimateHorizon horizon);
enum class FeeReason {
    NONE,
    HALF_ESTIMATE,
    FULL_ESTIMATE,
    DOUBLE_ESTIMATE,
    CONSERVATIVE,
    MEMPOOL_MIN,
    PAYTXFEE,
    FALLBACK,
    REQUIRED,
};
struct EstimatorBucket
{
    double start = -1;
    double end = -1;
    double withinTarget = 0;
    double totalConfirmed = 0;
    double inMempool = 0;
    double leftMempool = 0;
};
struct EstimationResult
{
    EstimatorBucket pass;