package Ġcom . star base . bank wallet . modules . transactions Ċ Ċ import Ġio . horizontal systems . bank wallet . core . I App Number Formatter Ċ import Ġio . horizontal systems . bank wallet . entities .* Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . Transaction Record Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . bin ance chain . Bin ance Chain Incoming Transaction Record Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . bin ance chain . Bin ance Chain Outgoing Transaction Record Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . bitcoin . Bitcoin Incoming Transaction Record Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . bitcoin . Bitcoin Outgoing Transaction Record Ċ import Ġio . horizontal systems . bank wallet . entities . transaction records . e vm .* Ċ import Ġio . horizontal systems . bank wallet . modules . transaction Info . Transaction Info Address Mapper Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . util .* Ċ Ċ class ĠTransaction View Item Factory ( ĊĠĠĠ Ġprivate Ġval Ġtransaction Info Address Mapper : ĠTransaction Info Address Mapper , ĊĠĠĠ Ġprivate Ġval Ġnumber Formatter : ĠI App Number Formatter Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġitem ( ĊĠĠĠĠĠĠĠ Ġwallet : ĠTransaction Wallet , ĊĠĠĠĠĠĠĠ Ġrecord : ĠTransaction Record , ĊĠĠĠĠĠĠĠ Ġlast Block Info : ĠLast Block Info ?, ĊĠĠĠĠĠĠĠ Ġmain Amount Currency Value : ĠCurrency Value ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠTransaction View Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTransaction View Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwallet , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Transaction Type ( record , Ġlast Block Info , Ġwallet . source ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate ( record . timestamp Ġ* Ġ 1 0 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . status ( last Block Info ?. height ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Amount Currency Value ?. let Ġ{ Ġget Currency String ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Transaction Type ( ĊĠĠĠĠĠĠĠ Ġrecord : ĠTransaction Record , ĊĠĠĠĠĠĠĠ Ġlast Block Info : ĠLast Block Info ?, ĊĠĠĠĠĠĠĠ Ġsource : ĠTransaction Source ĊĠĠĠ Ġ): ĠTransaction Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( record ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE vm Incoming Transaction Record Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Incoming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . from ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE vm Outgoing Transaction Record Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Outgoing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . to ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsent To Self Ġ= Ġrecord . sent To Self ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSwap Transaction Record Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Swap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . exchange Address ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value In ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . value Out ?. let Ġ{ Ġget Coin String ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeign Recipient Ġ= Ġrecord . foreign Recipient ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAppro ve Transaction Record Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Approve ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . sp ender ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . value . coin . code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . value . is MaxValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠContract Call Transaction Record Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Contract Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . blockchain . getTitle (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . contract Address ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠContract Creation Transaction Record Ġ-> ĠTransaction Type . Contract Creation ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBitcoin Incoming Transaction Record Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlock State Ġ= Ġrecord . lock State ( last Block Info ?. timestamp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Incoming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . from ?. let { ĠgetName Or Address ( it )}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . conflict ing Hash ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBitcoin Outgoing Transaction Record Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlock State Ġ= Ġrecord . lock State ( last Block Info ?. timestamp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Outgoing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . to ?. let { ĠgetName Or Address ( it )}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . conflict ing Hash , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . sent To Self ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBin ance Chain Incoming Transaction Record Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Incoming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . from ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBin ance Chain Outgoing Transaction Record Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Type . Outgoing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetName Or Address ( record . to ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Coin String ( record . value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord . sent To Self ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Record Ġmust Ġbe Ġassociated Ġwith ĠTransaction Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Coin String ( coin Value : ĠCoin Value ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsignificant Decimal Ġ= Ġnumber Formatter . get Sign ificant Decimal Coin ( coin Value . value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnumber Formatter . format Coin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Value . value . abs (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Value . coin . code , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignificant Decimal ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Currency String ( currency Value : ĠCurrency Value ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnumber Formatter . format Fi at ( currency Value . value . abs (), Ġcurrency Value . currency . symbol , Ġ 0 , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetName Or Address ( address : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Info Address Mapper . title ( address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"${ address . take ( 5 )} ... ${ address . take Last ( 5 )}" ĊĠĠĠ Ġ} Ċ Ċ } Ċ