// ĠVer i Block ĠBlock chain ĠProject Ċ // ĠCopyright Ġ 2 0 1 7 - 2 0 1 8 ĠVer i Block , ĠInc Ċ // ĠCopyright Ġ 2 0 1 8 - 2 0 1 9 ĠX en ios ĠSE ZC Ċ // ĠAll Ġrights Ġreserved . Ċ // Ġhttps :// www . ver ib lock . org Ċ // ĠDistributed Ġunder Ġthe ĠMIT Ġsoftware Ġlicense , Ġsee Ġthe Ġaccompanying Ċ // Ġfile ĠLICENSE Ġor Ġhttp :// www . opensource . org / licenses / mit - license . php . Ċ Ċ package Ġorg . ver ib lock . lite . core Ċ Ċ import Ġorg . ver ib lock . sdk . Coin Ċ Ċ class ĠBalance ( ĊĠĠĠĠĠĠĠ Ġvar Ġconfirmed Balance : ĠCoin , ĊĠĠĠĠĠĠĠ Ġpending Balance Changes : ĠCoin Ġ= ĠCoin . ZERO Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġpending Balance Changes : ĠCoin Ġ= Ġpending Balance Changes ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġfun Ġget Pending Balance (): ĠCoin Ġ= ĊĠĠĠĠĠĠĠ Ġconfirmed Balance Ġ+ Ġpending Balance Changes ĊĊĠĠĠ Ġfun Ġadd Pending S pend ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġpending Balance Changes Ġ-= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Pending Receipt ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġpending Balance Changes Ġ+= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfirm Pending S pend ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . pending Balance Changes Ġ+= Ġabs Amount ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ-= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfirm Pending Receipt ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . pending Balance Changes Ġ-= Ġabs Amount ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ+= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Confirmed S pend ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ-= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Confirmed Receipt ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ+= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Confirmed S pend Pending ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . pending Balance Changes Ġ-= Ġabs Amount ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ+= Ġamount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Confirmed Receipt Pending ( amount : ĠCoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabs Amount Ġ= Ġamount . abs () ĊĠĠĠĠĠĠĠ Ġthis . pending Balance Changes Ġ+= Ġabs Amount ĊĠĠĠĠĠĠĠ Ġthis . confirmed Balance Ġ-= Ġabs Amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠBalance ĊĊĠĠĠĠĠĠĠ Ġif Ġ( confirmed Balance Ġ!= Ġother . confirmed Balance ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( pending Balance Changes Ġ!= Ġother . pending Balance Changes ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġconfirmed Balance . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġpending Balance Changes . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Balance ( confirmed Balance =$ confirmed Balance , Ġpending Balance Changes =$ pending Balance Changes )" ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCoin . formatted (): ĠString Ġ= ĠtoString () Ċ Ċ private Ġoperator Ġfun ĠCoin . plus ( other : ĠCoin ): ĠCoin Ġ= Ġadd ( other ) Ċ private Ġoperator Ġfun ĠCoin . minus ( other : ĠCoin ): ĠCoin Ġ= Ġsubtract ( other ) Ċ Ċ private Ġfun ĠCoin . abs (): ĠCoin Ġ= Ġif Ġ( this Ġ> ĠCoin . ZERO ) Ġ{ ĊĠĠĠ Ġthis Ċ } Ġelse Ġ{ ĊĠĠĠ Ġneg ate () Ċ } Ċ