package Ġxyz . po kk st . po kk et . cash . inter actors Ċ Ċ import Ġorg . bitcoin j . wallet . Wallet Ċ import Ġorg . web 3 j . protocol . core . Default Block ParameterName Ċ import Ġxyz . po kk st . po kk et . cash . util . Balance Formatter Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ Ċ class ĠBalance Interactor Ġ{ ĊĠĠĠ Ġprivate Ġval Ġwallet Interactor Ġ= ĠWallet Interactor . getInstance () ĊĠĠĠ Ġprivate Ġvar Ġlast UpdateTime Ms : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcached Smart Balance : ĠBigInteger Ġ= ĠBigInteger . ZERO ĊĊĠĠĠ Ġfun Ġget Bitcoin Balance (): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġwallet Interactor . get Bitcoin Wallet ()?. get Balance ( Wallet . Balance Type . EST IM ATED ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( balance Ġ== Ġnull Ġ|| Ġbalance . is Zero ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbalance . to Btc () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Smart Balance Raw (): ĠBigInteger Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ms Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġval Ġupdate Balance Ġ= Ġupdate Smart Balance ( currentTime Ms ) ĊĠĠĠĠĠĠĠ Ġif Ġ( update Balance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( wallet Interactor . get Smart Wallet () Ġ== Ġnull Ġ|| Ġwallet Interactor . get Credentials () Ġ== Ġnull ) Ġreturn ĠBigInteger . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb ch Address Ġ= Ġwallet Interactor . get Smart Address () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb ch Wei Balance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Interactor . get Smart Wallet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . eth Get Balance ( sb ch Address , ĠDefault Block ParameterName . LATE ST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . send ()?. balance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Smart Balance Ġ= Ġsb ch Wei Balance Ġ?: ĠBigInteger . ZERO ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcached Smart Balance ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Smart Balance (): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Balance Ġ= Ġget Smart Balance Raw () ĊĠĠĠĠĠĠĠ Ġval Ġsb ch Balance Ġ= Ġraw Balance . to Long (). let Ġ{ ĠBalance Formatter . to Ether Balance ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb ch Balance Ġ?: ĠBigDecimal . ZERO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Smart Balance ( currentTime Ms : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdifference Ġ= ĠcurrentTime Ms Ġ- Ġlast UpdateTime Ms ĊĠĠĠĠĠĠĠ Ġreturn Ġdifference Ġ>= Ġ 1 0 Ġ* Ġ 1 0 0 0 Ġ// Ġ 1 0 Ġseconds ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠBalance Interactor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠBalance Interactor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠBalance Interactor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Ġas ĠBalance Interactor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }