package Ġcom . r 3 . cord a . sdk . token . workflow . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . r 3 . cord a . sdk . token . contracts . types . TokenType Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . flows . Flow Session Ċ import Ġnet . cord a . core . flows . Initi ated By Ċ import Ġnet . cord a . core . flows . Initi ating Flow Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ Ċ object ĠConf idential Issue Flow Ġ{ ĊĠĠĠ Ġ@ Initi ating Flow ĊĠĠĠ Ġclass ĠInit iator < T Ġ: ĠTokenType >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount : ĠAmount < T >? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Session Ġ= Ġinitiate Flow ( holder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf idential Holder Ġ= Ġsub Flow ( Request Conf idential Identity . Init iator ( holder Session )). party . anon ym ise () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Issue Token . Init iator ( token , Ġconf idential Holder , Ġnot ary , Ġamount , Ġholder Session )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Initi ated By ( Init iator :: class ) ĊĠĠĠ Ġclass ĠRes pon der ( val Ġother Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Request Conf idential Identity . Responder ( other Session )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Issue Token . Responder ( other Session )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠConf idential Move Flow Ġ{ ĊĠĠĠ Ġ@ Initi ating Flow ĊĠĠĠ Ġclass ĠInit iator < T Ġ: ĠTokenType >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġowned Token : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount : ĠAmount < T >? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Session Ġ= Ġinitiate Flow ( holder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf idential Holder Ġ= Ġsub Flow ( Request Conf idential Identity . Init iator ( holder Session )). party . anon ym ise () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( amount Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Move Token Non F ung ible ( owned Token , Ġholder , Ġholder Session )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Move Token F ung ible ( amount , Ġconf idential Holder , Ġholder Session )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Initi ated By ( Init iator :: class ) ĊĠĠĠ Ġclass ĠRes pon der ( val Ġother Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Request Conf idential Identity . Responder ( other Session )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Move Token . Responder ( other Session )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }