package Ġcom . exact pro . boot camp . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . exact pro . boot camp . contracts . Token Contract Ċ import Ġcom . exact pro . boot camp . states . Token State Ċ import Ġnet . cord a . core . contracts . Command Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . flows .* Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ Ċ // Ġ********* Ċ // Ġ* ĠFlow s Ġ* Ċ // Ġ********* Ċ @ Initi ating Flow Ċ @ Start able By RPC Ċ class ĠToken Issue Flow Init iator ( ĊĠĠĠ Ġprivate Ġval Ġowner : ĠParty , ĊĠĠĠ Ġprivate Ġval Ġamount : ĠInt Ċ ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker () ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInit iator Ġflow Ġlogic Ġgoes Ġhere . ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġchoose Ġour Ġtransaction 's Ġnot ary Ġ( the Ġnot ary Ġprevents Ġdouble - sp ends ). ĊĠĠĠĠĠĠĠ Ġval Ġnot ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities . first () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġget Ġa Ġreference Ġto Ġour Ġown Ġidentity . ĊĠĠĠĠĠĠĠ Ġval Ġissuer Ġ= Ġour Identity ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcreate Ġour Ġnew ĠToken State . ĊĠĠĠĠĠĠĠ Ġval Ġoutput State Ġ= ĠToken State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissuer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcreate ĠIssue Ġcommand . ĊĠĠĠĠĠĠĠ Ġval Ġissue Command Ġ= ĠCommand ( Token Contract . Commands . Issue (), ĠlistOf ( issuer . own ing Key , Ġowner . own ing Key )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġbuild Ġour Ġtransaction . ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Builder Ġ= ĠTransaction Builder ( not ary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Output State ( output State , ĠToken Contract . ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Command ( issue Command ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcheck Ġour Ġtransaction Ġis Ġvalid Ġbased Ġon Ġits Ġcontracts . ĊĠĠĠĠĠĠĠ Ġtransaction Builder . verify ( service Hub ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġsign Ġthe Ġtransaction Ġwith Ġour Ġprivate Ġkey , Ġmaking Ġit Ġimmutable . ĊĠĠĠĠĠĠĠ Ġval Ġsigned Transaction Ġ= Ġservice Hub . sign Initial Transaction ( transaction Builder ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġsession Ġwith Ġthe Ġother Ġparty . ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġinitiate Flow ( owner ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġcounter party Ġsigns Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġval Ġfully Signed Transaction Ġ= Ġsub Flow ( Collect Signatures Flow ( signed Transaction , ĠlistOf ( session ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġget Ġthe Ġtransaction Ġnot ar ised Ġand Ġrecorded Ġautomatically Ġby Ġthe Ġplatform . ĊĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Final ity Flow ( fully Signed Transaction , ĠlistOf ( session ))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ated By ( Token Issue Flow Init iator :: class ) Ċ class ĠToken Issue Flow Responder ( val Ġcounter party Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRes pon der Ġflow Ġlogic Ġgoes Ġhere . ĊĊĠĠĠĠĠĠĠ Ġval Ġsigned Transaction Flow Ġ= Ġobject : ĠSign Transaction Flow ( counter party Session ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Transaction ( st x : ĠSigned Transaction ) Ġ= Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġ============================================================================ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO Ġ 3 Ġ- ĠImplement Ġresponder Ġflow Ġtransaction Ġchecks Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ================================================================= ========== */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġcounter party Ġsigns Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġval Ġexpected Transaction Id Ġ= Ġsub Flow ( signed Transaction Flow ). id ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġcounter party Ġreceives Ġthe Ġtransaction Ġand Ġsaves Ġthe Ġstate ĊĠĠĠĠĠĠĠ Ġsub Flow ( Receive Final ity Flow ( counter party Session , Ġexpected Transaction Id )) ĊĠĠĠ Ġ} Ċ } Ċ