/* Ċ Ġ* ĠCreated Ġby ĠE du ard ĠZ ay del Ġon Ġ 2 5 / 6 / 2 0 1 9 Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 9 ĠW aves ĠPlatform . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġcom . waves platform . wallet . v 2 . data . manager . gateway . manager Ċ Ċ import Ġcom . waves platform . sdk . W aves Sdk Ċ import Ġcom . waves platform . sdk . model . response . node . transaction . Transfer Transaction Response Ċ import Ġcom . waves platform . sdk . net . Network Exception Ċ import Ġcom . waves platform . sdk . net . OnError Listener Ċ import Ġcom . waves platform . sdk . utils . Money Util . Companion . getS ca led Text Ċ import Ġcom . waves platform . sdk . utils . Sign Util Ċ import Ġcom . waves platform . sdk . utils . clear Balance Ċ import Ġcom . waves platform . sdk . utils . parse Alias Ċ import Ġcom . waves platform . wallet . App Ċ import Ġcom . waves platform . wallet . v 2 . data . Constants Ċ import Ġcom . waves platform . wallet . v 2 . data . manager . base . Base Service Manager Ċ import Ġcom . waves platform . wallet . v 2 . data . model . local . gateway . Gateway Deposit Args Ċ import Ġcom . waves platform . wallet . v 2 . data . model . local . gateway . Gateway Metadata Args Ċ import Ġcom . waves platform . wallet . v 2 . data . model . local . gateway . Gateway Withdraw Args Ċ import Ġcom . waves platform . wallet . v 2 . data . model . remote . request . gateway . Init Gateway Request Ċ import Ġcom . waves platform . wallet . v 2 . data . model . remote . response . gateway . Gateway Deposit Ċ import Ġcom . waves platform . wallet . v 2 . data . model . remote . response . gateway . Gateway Metadata Ċ import Ġcom . waves platform . wallet . v 2 . data . remote . Gateway Service Ċ import Ġcom . waves platform . wallet . v 2 . util . Environment Manager Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠGateway DataManager Ġ@ Inject Ġconstructor () Ġ: ĠBase Service Manager (), ĠBase Gateway Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload Gateway Metadata ( args : ĠGateway Metadata Args ): ĠObservable < Gateway Metadata > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgateway Service . initWith draw ( Init Gateway Request ( args . address , Ġargs . asset ?. asset Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgateway Fee Ġ= Ġget Scaled Text ( response . fee , Ġargs . asset ). clear Balance (). to BigDecimal () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgateway Min Ġ= Ġget Scaled Text ( response . min Amount , Ġargs . asset ). clear Balance (). to BigDecimal () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgateway Max Ġ= Ġget Scaled Text ( response . max Amount , Ġargs . asset ). clear Balance (). to BigDecimal () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map ĠGateway Metadata ( gateway Min , Ġgateway Max , Ġgateway Fee , Ġresponse . process Id , Ġresponse . recipient Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Withdraw ( args : ĠGateway Withdraw Args ): ĠObservable < Transfer Transaction Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġload Gateway Metadata ( Gateway Metadata Args ( args . asset , Ġargs . transaction . recipient )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġmetadata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . attachment Ġ= ĠSign Util . text To Base 5 8 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata . gateway Process Id Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . recipient Ġ= Ġmetadata . gateway Recipient Address Ġ?: Ġargs . transaction . recipient ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . sign ( App . access Manager . get Wallet ()?. seed Str Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgateway Transaction Ġ= ĠGateway Withdraw Args . Transaction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction , ĠApp . access Manager . get Wallet ()?. address Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġgateway Service . send Withdraw Transaction ( gateway Transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Response Ġ= ĠTransfer Transaction Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . asset Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . recipient . parse Alias (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . attachment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction . fee Asset Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Response . timestamp Ġ= Ġargs . transaction . timestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Response . fee Ġ= Ġargs . transaction . fee ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Response . version Ġ= Ġargs . transaction . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Response . pro ofs . addAll ( args . transaction . pro ofs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġtx Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Deposit ( args : ĠGateway Deposit Args ): ĠObservable < Gateway Deposit > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgateway Service . init Deposit ( Init Gateway Request ( getAddress (), Ġargs . asset ?. asset Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency From Ġ= ĠConstants . coin om at Crypto C urrencies ()[ args . asset ?. asset Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġresponse . address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgateway Min Ġ= Ġget Scaled Text ( response . min Amount , Ġargs . asset ). clear Balance (). to BigDecimal () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map ĠGateway Deposit ( gateway Min , Ġaddress , Ġcurrency From ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠonError Listener : ĠOn Error Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( onError Listener : ĠOn Error Listener ? Ġ= Ġnull ): ĠGateway Service Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . onError Listener Ġ= ĠonError Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠW aves Sdk . service (). create Service ( Environment Manager . servers . gateway Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOn Error Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGateway DataManager . onError Listener ?. onError ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( Gateway Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove OnError Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }