/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAl gor and , ĠInc . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense Ċ Ġ*/ Ċ Ċ package Ġcom . al gor and . android . models Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . al gor and . android . utils . format Amount Ċ import Ġcom . al gor and . android . utils . format As Tx String Ċ import Ġcom . al gor and . android . utils . getUser If Saved Loc ally Ċ import Ġcom . al gor and . android . utils . getZ onedDateTime From TimeStamp Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġjava . math . BigInteger Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ @ Parcel ize Ċ data Ġclass ĠTransaction ( ĊĠĠĠ Ġ@ SerializedName (" asset - transfer - transaction ") Ġval Ġasset Transfer : ĠAsset Transfer ?, ĊĠĠĠ Ġ@ SerializedName (" closing - amount ") Ġval Ġclose Amount : ĠBigInteger ?, ĊĠĠĠ Ġ@ SerializedName (" confirmed - round ") Ġval Ġconfirmed Round : ĠLong ?, ĊĠĠĠ Ġ@ SerializedName (" signature ") Ġval Ġsignature : ĠSignature ?, ĊĠĠĠ Ġ@ SerializedName (" fee ") Ġval Ġfee : ĠLong ?, ĊĠĠĠ Ġ@ SerializedName (" id ") Ġval Ġid : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" sender ") Ġval Ġsender Address : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" payment - transaction ") Ġval Ġpayment : ĠPayment ?, ĊĠĠĠ Ġ@ SerializedName (" sender - rewards ") Ġval Ġsender Rewards : ĠLong ?, ĊĠĠĠ Ġ@ SerializedName (" receiver - rewards ") Ġval Ġreceiver Rewards : ĠLong ?, ĊĠĠĠ Ġ@ SerializedName (" note ") Ġval Ġnote In Base 6 4 : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" round - time ") Ġval Ġround Time As Timestamp : ĠLong ? Ċ ) Ġ: ĠParcel able , ĠTransaction Impl Ġ{ ĊĊĠĠĠ Ġprivate Ġfun ĠisIn Pending () Ġ= Ġconfirmed Round Ġ== Ġnull Ġ|| Ġconfirmed Round Ġ== Ġ 0 L ĊĊĠĠĠ Ġfun Ġis Al gor and () Ġ= Ġpayment Ġ!= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġis Asset Creation Transaction (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġasset Transfer Ġ!= Ġnull Ġ&& Ġsender Address Ġ== Ġasset Transfer . receiver Address Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Transfer . amount Ġ== ĠBigInteger . ZERO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinclude In Al gor and History () Ġ= Ġpayment Ġ!= Ġnull Ġ|| Ġis Asset Creation Transaction () ĊĊĠĠĠ Ġfun Ġget Receiver Address (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Al gor and ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayment ?. receiver Address . or Empty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Transfer ?. receiver Address . or Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Amount ( include Close Amount : ĠBoolean ): ĠBigInteger ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpayment ?. amount ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( include Close Amount Ġ&& Ġclose Amount Ġ!= Ġnull Ġ&& Ġclose Amount Ġ!= ĠBigInteger . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . plus ( close Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġasset Transfer ?. amount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Asset Id (): ĠLong ? Ġ= Ġif Ġ( is Al gor and ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠAsset Information . ALG OR AND _ ID ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġasset Transfer ?. asset Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Reward ( user PublicKey : ĠString ?): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user PublicKey Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Address Ġ== Ġuser PublicKey Ġ-> Ġsender Rewards ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayment ?. receiver Address Ġ== Ġuser PublicKey Ġ-> Ġreceiver Rewards ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Date AsString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġround Time As Timestamp ?. getZ onedDateTime From TimeStamp ()?. format As Tx String (). or Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Close To Address (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpayment ?. close To Address ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Transaction Type (): ĠTransaction Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Asset Creation Transaction () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . AS SET _ CRE ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Pending () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . PENDING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . TRANSFER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Transaction ListItem ( ĊĠĠĠĠĠĠĠ Ġasset Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġaccount PublicKey : ĠString , ĊĠĠĠĠĠĠĠ Ġcontact List : ĠList < User >, ĊĠĠĠĠĠĠĠ Ġaccount List : ĠList < Account >, ĊĠĠĠĠĠĠĠ Ġdecimals : ĠInt ĊĠĠĠ Ġ): ĠTransaction ListItem Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Address Ġ= Ġget Receiver Address () ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Symbol Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Address Ġ== Ġaccount PublicKey Ġ&& Ġreceiver Address Ġ== Ġaccount PublicKey Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Address Ġ== Ġaccount PublicKey Ġ|| Ġget Close To Address () Ġ== Ġaccount PublicKey Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Symbol . POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Symbol . NEGATIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġother PublicKey Ġ= Ġif Ġ( receiver Address Ġ== Ġaccount PublicKey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Address . or Empty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Address ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġz onedDateTime Ġ= Ġround Time As Timestamp ?. getZ onedDateTime From TimeStamp () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTransaction ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Id Ġ= Ġasset Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġsignature ?. signature Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount PublicKey Ġ= Ġaccount PublicKey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother PublicKey Ġ= Ġother PublicKey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Symbol Ġ= Ġtransaction Symbol , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Type Ġ= Ġget Transaction Type (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Al gor and Ġ= Ġis Al gor and (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Ġ= ĠgetUser If Saved Loc ally ( contact List , Ġaccount List , Ġother PublicKey ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz onedDateTime Ġ= Ġz onedDateTime , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġz onedDateTime ?. format As Tx String (). or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġget Amount ( include Close Amount Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfee Ġ= Ġfee , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote In B 6 4 Ġ= Ġnote In Base 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġround Ġ= Ġconfirmed Round , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecimals Ġ= Ġdecimals , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Full Amount Ġ= Ġget Amount ( include Close Amount Ġ= Ġtrue ). format Amount ( decimals ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose To Address Ġ= Ġget Close To Address (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose To Amount Ġ= Ġclose Amount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreward Amount Ġ= Ġget Reward ( account PublicKey ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Reward Of Transaction ( account PublicKey : ĠString ): ĠCla imed Reward ListItem ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreward Ġ= Ġget Reward ( account PublicKey ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( reward Ġ!= Ġnull Ġ&& Ġreward Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCla imed Reward ListItem ( reward , Ġid , Ġget Date AsString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinclude In History ( asset Id : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( asset Id Ġ== ĠAsset Information . ALG OR AND _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinclude In Al gor and History () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset Id Of Transaction Ġ= Ġget Asset Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Id Of Transaction Ġ!= Ġnull Ġ&& Ġ! is Asset Creation Transaction () Ġ&& Ġasset Id Of Transaction Ġ== Ġasset Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ