package Ġnet . cord a . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġnet . cord a . core . contracts .* Ċ import Ġnet . cord a . core . crypto . Party Ċ import Ġnet . cord a . core . flows . Flow Exception Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . node . Plugin Service Hub Ċ import Ġnet . cord a . core . serialization . C ord a Serializable Ċ import Ġnet . cord a . core . serialization . Opaque Bytes Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ import Ġnet . cord a . core . utilities . unwrap Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ ĠThis Ġflow Ġenables Ġa Ġclient Ġto Ġrequest Ġiss u ance Ġof Ġsome Ġ[ F ung ible Asset ] Ġfrom Ġa Ċ Ġ* Ġ Ġserver Ġact ing Ġas Ġan Ġissuer Ġ( see Ġ[ Iss ued ]) Ġof ĠF ung ible Assets . Ċ Ġ* Ċ Ġ* Ġ ĠIt Ġis Ġnot Ġintended Ġfor Ġproduction Ġusage , Ġbut Ġrather Ġfor Ġexperiment ation Ġand Ġtesting Ġpurposes Ġwhere Ġit Ġmay Ġbe Ċ Ġ* Ġ Ġuseful Ġfor Ġcreation Ġof Ġfake Ġassets . Ċ Ġ*/ Ċ object ĠIss uer Flow Ġ{ ĊĠĠĠ Ġ@ C ord a Serializable ĊĠĠĠ Ġdata Ġclass ĠIss u ance Request State ( val Ġamount : ĠAmount < Currency >, Ġval Ġissue To Party : ĠParty , Ġval Ġissuer Party Ref : ĠO pa que Bytes ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIss u ance Request er Ġshould Ġbe Ġused Ġby Ġa Ġclient Ġto Ġask Ġa Ġremote Ġnode Ġto Ġissue Ġsome Ġ[ F ung ible Asset ] Ġwith Ġthe Ġgiven Ġdetails . ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġtransaction Ġcreated Ġby Ġthe ĠIss uer Ġto Ġmove Ġthe Ġcash Ġto Ġthe ĠRequest er . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠIss u ance Request er ( val Ġamount : ĠAmount < Currency >, Ġval Ġissue To Party : ĠParty , Ġval Ġissue To Party Ref : ĠO pa que Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissuer Bank Party : ĠParty ): ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Cash Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Request Ġ= ĠIss u ance Request State ( amount , Ġissue To Party , Ġissue To Party Ref ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsend And Receive < Signed Transaction >( issuer Bank Party , Ġissue Request ). unwrap Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIss uer Ġrefers Ġto Ġa ĠNode Ġact ing Ġas Ġa ĠBank ĠIss uer Ġof Ġ[ F ung ible Asset ], Ġand Ġprocesses Ġrequests Ġfrom Ġa Ġ[ Iss u ance Request er ] Ġclient . ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġgenerated Ġtransaction Ġrepresenting Ġthe Ġtransfer Ġof Ġthe Ġ[ Iss ued ] Ġ[ F ung ible Asset ] Ġto Ġthe Ġissue Ġrequest er . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠIss uer ( val Ġother Party : ĠParty ): ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠA WAIT ING _ REQUEST Ġ: ĠProgress Tracker . Step (" Await ing Ġiss u ance Ġrequest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠISS U ING Ġ: ĠProgress Tracker . Step (" Self Ġiss uing Ġasset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠTRAN SF ERR ING Ġ: ĠProgress Tracker . Step (" Trans f erring Ġasset Ġto Ġiss u ance Ġrequest er ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠS ENDING _ CONFIRM Ġ: ĠProgress Tracker . Step (" Confirm ing Ġasset Ġiss u ance Ġto Ġrequest er ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġtracker () Ġ= ĠProgress Tracker ( AW A IT ING _ REQUEST , ĠISS U ING , ĠTRAN SF ERR ING , ĠS ENDING _ CONFIRM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠVALID _ CUR REN CI ES Ġ= ĠlistOf ( USD , ĠG BP , ĠEUR , ĠCH F ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprogress Tracker : ĠProgress Tracker Ġ= Ġtracker () ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Cash Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠA WAIT ING _ REQUEST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Request Ġ= Ġreceive < Iss u ance Request State >( other Party ). unwrap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvalidate Ġrequest Ġinputs Ġ( for Ġexample , Ġlets Ġrestrict Ġthe Ġtypes Ġof Ġcurrency Ġthat Ġcan Ġbe Ġissued ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . amount . token Ġ! in ĠVALID _ CUR REN CI ES ) Ġthrow ĠFlow Exception (" Currency Ġmust Ġbe Ġone Ġof Ġ$ VALID _ CUR REN CI ES ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġparse Ġrequest Ġto Ġdetermine ĠAsset Ġto Ġissue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxn Ġ= Ġissue Cash To ( issue Request . amount , Ġissue Request . issue To Party , Ġissue Request . issuer Party Ref ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠS ENDING _ CONFIRM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend ( other Party , Ġtxn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtxn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġissue Cash To ( amount : ĠAmount < Currency >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissue To : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissuer Party Ref : ĠO pa que Bytes ): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpass Ġnot ary Ġin Ġas Ġrequest Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Party Ġ= Ġservice Hub . network Map Cache . not ary Nodes [ 0 ]. not ary Identity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinvoke ĠCash Ġsub flow Ġto Ġissue ĠAsset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠISS U ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbank Of C ord a Party Ġ= Ġservice Hub . my Info . legal Identity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Cash Flow Ġ= ĠCash Issue Flow ( amount , Ġissuer Party Ref , Ġbank Of C ord a Party , Ġnot ary Party ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Tx Ġ= Ġsub Flow ( issue Cash Flow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOTE : Ġissue Cash Flow Ġperforms Ġa ĠBroadcast Ġ( which Ġstores Ġa Ġlocal Ġcopy Ġof Ġthe Ġtxn Ġto Ġthe Ġledger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshort - circuit Ġwhen Ġiss uing Ġto Ġself ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( issue To Ġ== Ġservice Hub . my Info . legal Identity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġissue Tx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġinvoke ĠCash Ġsub flow Ġto ĠMove Ġissued Ġasset Type Ġto Ġissue Ġrequest er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠTRAN SF ERR ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Cash Flow Ġ= ĠCash Payment Flow ( amount , Ġissue To ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Tx Ġ= Ġsub Flow ( move Cash Flow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOTE : ĠCash Flow ĠPay Cash Ġcalls ĠFinal ity Flow Ġwhich Ġperforms Ġa ĠBroadcast Ġ( which Ġstores Ġa Ġlocal Ġcopy Ġof Ġthe Ġtxn Ġto Ġthe Ġledger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmove Tx ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠService ( services : ĠPlugin Service Hub ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservices . register Flow Init iator ( Iss u ance Request er :: class . java , Ġ:: Issuer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }