package Ġio . horizontal systems . bank wallet . modules . enable coins Ċ Ċ import Ġio . horizontal systems . bank wallet . core . IC oin Manager Ċ import Ġio . horizontal systems . bank wallet . entities . Account Type Ċ import Ġio . horizontal systems . bank wallet . entities . Coin Ċ import Ġio . horizontal systems . bank wallet . entities . Coin Type Ċ import Ġio . horizontal systems . core . I Build Config Provider Ċ import Ġio . horizontal systems . ethereum kit . core . E thereum Kit Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ class ĠEnable Coins Service ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapp Config Provider : ĠI Build Config Provider , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġe thereum Provider : ĠEnable Coins E rc 2 0 Provider , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbin ance Provider : ĠEnable Coins B ep 2 Provider , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcoin Manager : ĠI Coin Manager ) Ġ{ ĊĊĠĠĠ Ġval Ġenable Coins Async Ġ= ĠPublish Subject . create < List < Coin >>() ĊĠĠĠ Ġval Ġstate Async Ġ= ĠBehavior Subject . create Default < State >( State . Idle ()) ĊĊĠĠĠ Ġvar Ġstate : ĠState Ġ= ĠState . Idle () ĊĠĠĠĠĠĠĠ Ġprivate Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Async . onNext ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġhandle ( coin Type : ĠCoin Type , Ġaccount Type : ĠAccount Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Type Ġ= Ġresolve TokenType ( coin Type , Ġaccount Type ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Waiting For Approve ( token Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġapprove Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ! is ĠState . Waiting For Approve ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( state . token Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTokenType . E rc 2 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch E rc 2 0 Tokens ( state . token Type . words ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTokenType . B ep 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch B ep 2 Tokens ( state . token Type . words ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve TokenType ( coin Type : ĠCoin Type , Ġaccount Type : ĠAccount Type ): ĠTokenType ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( coin Type Ġis ĠCoin Type . E thereum Ġ&& Ġaccount Type Ġis ĠAccount Type . Mnemonic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account Type . words . size Ġ== Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTokenType . E rc 2 0 ( account Type . words ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( coin Type Ġis ĠCoin Type . Bin ance Ġ&& Ġaccount Type Ġis ĠAccount Type . Mnemonic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Type . symbol Ġ== Ġ" BN B " Ġ&& Ġaccount Type . words . size Ġ== Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTokenType . B ep 2 ( account Type . words ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch E rc 2 0 Tokens ( words : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Type Ġ= Ġif Ġ( app Config Provider . test Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Kit . Network Type . R op sten ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Kit . Network Type . Main Net ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠEthereum Kit . address ( words , Ġnetwork Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( ethereum Provider . contract Addresses Single ( address . hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġaddresses Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Fetch E rc 2 0 ( addresses ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Failure ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( err : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Failure ( err ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch B ep 2 Tokens ( words : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Loading () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( bin ance Provider . getToken Symbols Async ( words ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġsymbols Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Fetch B ep 2 ( symbols ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Failure ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( err : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Failure ( err ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Fetch E rc 2 0 ( addresses : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoins Ġ= Ġaddresses . map NotNull Ġ{ Ġaddress Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Manager . coins . find Ġ{ Ġit . type Ġ== ĠCoin Type . E rc 2 0 ( address ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Success ( coins ) ĊĠĠĠĠĠĠĠ Ġenable Coins Async . onNext ( coins ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Fetch B ep 2 ( symbols : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoins Ġ= Ġsymbols . map NotNull Ġ{ Ġsymbol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( symbol Ġ== Ġ" BN B ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Manager . coins . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ== ĠCoin Type . Bin ance ( symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠState . Success ( coins ) ĊĠĠĠĠĠĠĠ Ġenable Coins Async . onNext ( coins ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠState Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠId le Ġ: ĠState () ĊĠĠĠĠĠĠĠ Ġclass ĠWaiting For Approve ( val Ġtoken Type : ĠTokenType ) Ġ: ĠState () ĊĠĠĠĠĠĠĠ Ġclass ĠLoading Ġ: ĠState () ĊĠĠĠĠĠĠĠ Ġclass ĠSuccess ( val Ġcoins : ĠList < Coin >) Ġ: ĠState () ĊĠĠĠĠĠĠĠ Ġclass ĠFailure ( val Ġerror : ĠThrowable ) Ġ: ĠState () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠTokenType Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠE rc 2 0 ( val Ġwords : ĠList < String >) Ġ: ĠTokenType () ĊĠĠĠĠĠĠĠ Ġclass ĠB ep 2 ( val Ġwords : ĠList < String >) Ġ: ĠTokenType () ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE rc 2 0 Ġ-> Ġ" ERC 2 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠB ep 2 Ġ-> Ġ" BE P 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ