44package org .lfdecentralizedtrust .splice .validator .automation
55
66import cats .data .OptionT
7+ import com .digitalasset .canton .logging .pretty .{Pretty , PrettyPrinting }
8+ import com .digitalasset .canton .time .Clock
9+ import com .digitalasset .canton .tracing .TraceContext
10+ import io .opentelemetry .api .trace .Tracer
11+ import org .apache .pekko .stream .Materializer
12+ import org .lfdecentralizedtrust .splice .automation .RoundBasedRewardTrigger .RoundBasedTask
713import org .lfdecentralizedtrust .splice .automation .{
8- PollingParallelTaskExecutionTrigger ,
14+ RoundBasedRewardTrigger ,
915 TaskOutcome ,
1016 TaskSuccess ,
1117 TriggerContext ,
@@ -19,15 +25,12 @@ import org.lfdecentralizedtrust.splice.validator.store.ValidatorStore
1925import org .lfdecentralizedtrust .splice .validator .util .ValidatorUtil
2026import org .lfdecentralizedtrust .splice .wallet .UserWalletManager
2127import org .lfdecentralizedtrust .splice .wallet .util .{TopupUtil , ValidatorTopupConfig }
22- import com .digitalasset .canton .logging .pretty .{Pretty , PrettyPrinting }
23- import com .digitalasset .canton .time .Clock
24- import com .digitalasset .canton .tracing .TraceContext
25- import io .opentelemetry .api .trace .Tracer
26- import org .apache .pekko .stream .Materializer
2728
29+ import java .time .temporal .ChronoUnit
30+ import java .time .{Duration , Instant }
2831import scala .concurrent .{ExecutionContext , Future }
2932import scala .jdk .OptionConverters .*
30- import math .Ordering .Implicits .*
33+ import scala . math .Ordering .Implicits .*
3134
3235class ReceiveFaucetCouponTrigger (
3336 override protected val context : TriggerContext ,
@@ -41,17 +44,14 @@ class ReceiveFaucetCouponTrigger(
4144 override val ec : ExecutionContext ,
4245 override val tracer : Tracer ,
4346 materializer : Materializer ,
44- ) extends PollingParallelTaskExecutionTrigger [ReceiveFaucetCouponTrigger .Task ] {
45-
46- override def isRewardOperationTrigger = true
47+ ) extends RoundBasedRewardTrigger [ReceiveFaucetCouponTrigger .Task ] {
4748
4849 private val validatorParty = validatorStore.key.validatorParty
4950
50- override protected def retrieveTasks ()(implicit
51+ override protected def retrieveAvailableTasksForRound ()(implicit
5152 tc : TraceContext
52- ): Future [Seq [ReceiveFaucetCouponTrigger .Task ]] = {
53+ ): Future [Seq [ReceiveFaucetCouponTrigger .Task ]] =
5354 retrieveNextRoundToClaim().value.map(_.toList)
54- }
5555
5656 private def retrieveNextRoundToClaim ()(implicit
5757 tc : TraceContext
@@ -139,13 +139,20 @@ object ReceiveFaucetCouponTrigger {
139139 case class Task (
140140 license : AssignedContract [ValidatorLicense .ContractId , ValidatorLicense ],
141141 round : ContractWithState [OpenMiningRound .ContractId , OpenMiningRound ],
142- ) extends PrettyPrinting {
142+ ) extends PrettyPrinting
143+ with RoundBasedTask {
143144 import org .lfdecentralizedtrust .splice .util .PrettyInstances .*
144145 override def pretty : Pretty [this .type ] =
145146 prettyOfClass(
146147 param(" license" , _.license),
147148 param(" round" , _.round),
148149 )
150+
151+ override def roundDetails : (Long , Instant ) =
152+ Long .unbox(round.payload.round.number) -> round.payload.opensAt
153+
154+ override def tickDuration : Duration =
155+ Duration .of(round.payload.tickDuration.microseconds, ChronoUnit .MICROS )
149156 }
150157
151158}
0 commit comments