package Ġio . def itr ack . apr Ċ Ċ import Ġio . def itr ack . common . utils . BigDecimal Extensions . divide Prec ise ly Ċ import Ġio . def itr ack . common . utils . BigDecimal Extensions . is Zero Ċ import Ġio . github . reactive circ us . cache 4 k . Cache Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . math . BigDecimal Ċ import Ġkotlin . time . Duration . Companion . hours Ċ Ċ abstract Ġclass ĠPool ing Apr Calculator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcache Ġ= ĠCache . Builder (). expire After Write ( 1 0 . hours ). build < String , ĠBigDecimal >() ĊĊĠĠĠ Ġsuspend Ġfun Ġcalculate Apr (): ĠBigDecimal Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġcache . get (" apr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear ly Rewards Ġ= Ġget Year ly Rewards () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt vl Ġ= Ġget T vl () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( year ly Rewards . is Zero () Ġ|| Ġt vl . is Zero ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear ly Rewards . divide Prec ise ly ( tv l ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġget Year ly Rewards (): ĠBigDecimal ĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġget T vl (): ĠBigDecimal Ċ }