package Ġio . pro venance . digital currency . con sort ium . service Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . google . protobuf . GeneratedMessageV 3 Ċ import Ġcos mos . auth z . v 1 beta 1 . Auth z . Grant Ċ import Ġcos mos . auth z . v 1 beta 1 . Tx . Msg Grant Ċ import Ġcos mos . base . v 1 beta 1 . Coin OuterClass . Coin Ċ import Ġcos mos . tx . v 1 beta 1 . Service OuterClass . Broadcast Mode . BRO ADCAST _ MODE _ BLOCK Ċ import Ġcos mos . tx . v 1 beta 1 . Service OuterClass . Get Tx Response Ċ import Ġcos mw asm . wasm . v 1 . Tx Ċ import Ġio . grpc . Status . Code Ċ import Ġio . grpc . Status RuntimeException Ċ import Ġio . pro venance . attribute . v 1 . Attribute Ċ import Ġio . pro venance . digital currency . con sort ium . config . Bank Client Properties Ċ import Ġio . pro venance . digital currency . con sort ium . config . Provenance Properties Ċ import Ġio . pro venance . digital currency . con sort ium . config . Service Properties Ċ import Ġio . pro venance . digital currency . con sort ium . config . logger Ċ import Ġio . pro venance . digital currency . con sort ium . extension . throw If Failed Ċ import Ġio . pro venance . digital currency . con sort ium . extension . to Any Ċ import Ġio . pro venance . digital currency . con sort ium . extension . to ByteString Ċ import Ġio . pro venance . digital currency . con sort ium . extension . to Proto Timestamp Ċ import Ġio . pro venance . digital currency . con sort ium . extension . to Tx Body Ċ import Ġio . pro venance . digital currency . con sort ium . messages . Accept Request Ċ import Ġio . pro venance . digital currency . con sort ium . messages . Execute Request Ċ import Ġio . pro venance . digital currency . con sort ium . messages . Join Request Ċ import Ġio . pro venance . digital currency . con sort ium . pb client . api . grpc . Base Req Signer Ċ import Ġio . pro venance . digital currency . con sort ium . wallet . account . InMemory Key Holder Ċ import Ġio . pro venance . digital currency . con sort ium . wallet . account . Key I Ċ import Ġio . pro venance . digital currency . con sort ium . wallet . account . Key Ring Ċ import Ġio . pro venance . marker . v 1 . Marker Transfer Authorization Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . math . BigInteger Ċ import Ġjava . time . Offset DateTime Ċ Ċ @ Service Ċ class ĠP bc Service ( ĊĠĠĠ Ġprivate Ġval Ġgrpc Client Service : ĠGr pc Client Service , ĊĠĠĠ Ġprivate Ġval Ġpro venance Properties : ĠPro venance Properties , ĊĠĠĠ Ġprivate Ġval Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġbank Client Properties : ĠBank Client Properties , ĊĠĠĠ Ġservice Properties : ĠService Properties , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= Ġlogger () ĊĠĠĠ Ġprivate Ġval Ġkey Ring : ĠKey Ring Ġ= ĊĠĠĠĠĠĠĠ ĠIn Memory Key Holder . from Mnemonic ( service Properties . manager Key , Ġpro venance Properties . main Net ). key Ring ( 0 ) ĊĠĠĠ Ġprivate Ġval Ġmanager Key : ĠKey I Ġ= Ġkey Ring . key ( 0 , Ġservice Properties . manager Key Hard en ) ĊĠĠĠ Ġfinal Ġval Ġmanager Address : ĠString Ġby Ġlazy Ġ{ Ġmanager Key . address () Ġ} ĊĠĠĠ Ġfinal Ġval Ġreserve Denom Ġ= Ġbank Client Properties . denom ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" manager Ġaddress Ġ$ manager Address Ġfor Ġcontract Ġaddress Ġ${ pro venance Properties . contract Address }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Marker Esc row Balance ( esc row Denom : ĠString Ġ= Ġreserve Denom ) Ġ= ĊĠĠĠĠĠĠĠ Ġ// Ġid Ġis Ġmarker Ġdenom , Ġdenom Ġis Ġesc row Ġdenom ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). markers . get Marker Esc row ( reserve Denom , Ġesc row Denom )?. amount Ġ?: Ġ" 0 " ĊĊĠĠĠ Ġfun Ġget Coin Balance ( address : ĠString Ġ= Ġmanager Address , Ġdenom : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). accounts . get Account Coins ( address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . denom Ġ== Ġdenom Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . amount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" 0 " ĊĊĠĠĠ Ġfun Ġget Transaction ( tx Hash : ĠString ): ĠGet Tx Response ? Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). transactions . get Tx ( tx Hash ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( listOf ( Code . UNKNOWN , ĠCode . NOT _ FOUND ). contains ( e . status . code )) Ġnull Ġelse Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Attributes ( address : ĠString ): ĠList < Attribute > Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). attributes . getAll Attributes ( address ) ĊĊĠĠĠ Ġfun Ġget Attribute By TagName ( address : ĠString , Ġtag : ĠString ): ĠAttribute ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Attributes ( address ). find Ġ{ Ġit . name Ġ== Ġtag Ġ} ĊĊĠĠĠ Ġfun Ġbroadcast Batch ( messages : ĠList < GeneratedMessageV 3 >, Ġtimeout Height : ĠLong ) Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). estimate And Broadcast Tx ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign ers Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Req Signer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġmanager Key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Body Ġ= Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Any () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Tx Body ( timeout Height ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgas Adjustment Ġ= Ġ 1 . 3 , ĊĠĠĠĠĠĠĠ Ġ). throw If Failed (" Batch Ġbroadcast Ġfailed ") ĊĊĠĠĠ Ġfun Ġjoin ( name : ĠString , Ġmax Supply : ĠBigInteger ) Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). estimate And Broadcast Tx ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign ers Ġ= ĠlistOf ( Base Req Signer ( manager Key )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Body Ġ= ĠTx . Msg Execute Contract . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sender ( manager Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract ( pro venance Properties . contract Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Msg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExecute Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Ġ= ĠJoin Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdenom Ġ= Ġreserve Denom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Supply Ġ= Ġmax Supply . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to ByteString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Tx Body () ĊĠĠĠĠĠĠĠ Ġ). throw If Failed (" Join Ġfailed ") ĊĊĠĠĠ Ġfun Ġaccept () Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). estimate And Broadcast Tx ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign ers Ġ= ĠlistOf ( Base Req Signer ( manager Key )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Body Ġ= ĠTx . Msg Execute Contract . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sender ( manager Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contract ( pro venance Properties . contract Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Msg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExecute Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Ġ= ĠAccept Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to ByteString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Tx Body () ĊĠĠĠĠĠĠĠ Ġ). throw If Failed (" Accept Ġfailed ") ĊĊĠĠĠ Ġfun Ġgrant Auth z ( coins : ĠList < Coin >, Ġexpiration : ĠOffset DateTime ?) Ġ= ĊĠĠĠĠĠĠĠ Ġgrpc Client Service . new (). estimate And Broadcast Tx ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign ers Ġ= ĠlistOf ( Base Req Signer ( manager Key )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Body Ġ= ĠMsg Grant . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Gran ter ( manager Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Gr ante e ( pro venance Properties . contract Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Grant ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrant . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Expiration (( expiration Ġ?: ĠOffset DateTime . now (). plus Years ( 1 0 )). to Proto Timestamp ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Authorization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Transfer Authorization . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Transfer Limit ( coins ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Tx Body (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠBRO ADCAST _ MODE _ BLOCK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgas Adjustment Ġ= Ġ 1 . 5 ĊĠĠĠĠĠĠĠ Ġ). throw If Failed (" Marker Ġtransfer Ġauthorization Ġgrant Ġauth z Ġfailed ") Ċ } Ċ