package Ġio . def itr ack . protocol . poly cat . staking Ċ Ċ import Ġio . def itr ack . apr . Reward Ċ import Ġio . def itr ack . apr . St aked Asset Ċ import Ġio . def itr ack . apr . St aking Apr Calculator Ċ import Ġio . def itr ack . price . Price Resource Ċ import Ġio . def itr ack . protocol . poly cat . contract . Poly cat Master Chef Contract Ċ import Ġio . def itr ack . token . TokenType Ċ import Ġio . def itr ack . token . ERC 2 0 Resource Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . Round ingMode Ċ Ċ class ĠPoly g cat St aking Apr Calculator ( ĊĠĠĠ Ġprivate Ġval Ġer c 2 0 Resource : ĠERC 2 0 Resource , ĊĠĠĠ Ġprice Resource : ĠPrice Resource , ĊĠĠĠ Ġprivate Ġval Ġchef : ĠPoly cat Master Chef Contract , ĊĠĠĠ Ġprivate Ġval Ġpool Id : ĠInt Ċ ) Ġ: ĠSt aking Apr Calculator ( price Resource ) Ġ{ ĊĊĊĠĠĠ Ġfun Ġget Native Reward (): ĠRew ard Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpool Info Ġ= Ġchef . pool Info ( pool Id ) ĊĠĠĠĠĠĠĠ Ġval Ġall S ush i PerSecond Ġ= Ġchef . reward Per Block ĊĠĠĠĠĠĠĠ Ġval Ġpool Block Rewards Ġ= Ġall S ush i PerSecond . times ( pool Info . alloc Point ). divide ( chef . total Alloc Point ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRew ard ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġchef . reward Token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġchef . blockchain Gateway . network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġpool Block Rewards . to BigDecimal (). divide ( BigDecimal . TEN . pow ( 1 8 ), Ġ 1 8 , ĠRound ingMode . HALF _ UP ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Type Ġ= ĠTokenType . SINGLE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Rewards PerSecond (): ĠList < Reward > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Native Reward () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget St aked Tokens (): ĠList < St aked Asset > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlp Address Ġ= Ġchef . pool Info ( pool Id ). lp Token ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġer c 2 0 Resource . getToken Information ( chef . blockchain Gateway . network , Ġlp Address ) ĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġer c 2 0 Resource . get Balance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchef . blockchain Gateway . network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp Address , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchef . address ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSt aked Asset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġlp Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġchef . blockchain Gateway . network , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġbalance . to BigDecimal (). divide ( BigDecimal . TEN . pow ( 1 8 ), Ġ 1 8 , ĠRound ingMode . HALF _ UP ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Type Ġ= Ġtoken . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }