package Ġcom . template . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . google . common . collect . ImmutableList Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . states . Non F ung ible Token Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . types . Iss ued TokenType Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . types . Token Pointer Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . get Attachment Id For Generic Param Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . held By Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . iss ued By Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . of Ċ import Ġcom . r 3 . cord a . lib . tokens . money . Fi at Currency Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . rpc .* Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . types . Party And Token Ċ import Ġcom . template . states . House Ċ import Ġcom . template . states . Real E state E vol vable TokenType Ċ import Ġnet . cord a . core . contracts .* Ċ import Ġnet . cord a . core . flows . Flow Exception Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . flows . Start able By RPC Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . node . services . Vault Ċ import Ġnet . cord a . core . node . services . vault . Query Criteria Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . net . Inet 4 Address Ċ import Ġjava . util .* Ċ Ċ object ĠHouse Non F ung ible Token Flow Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate ĠNon F ung ible ĠToken Ġin Ġledger ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠCreate House Token Flow ( private Ġval Ġaddress : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġval uation : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcurrency : ĠString ) Ġ: ĠY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// grab Ġthe Ġnot ary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Ġtoken Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhouse Token Ġ= ĠHouse ( address , Ġval uation , currency Ġ, listOf ( our Identity ), Ġ 0 , Ġlinear Id Ġ= ĠUnique Identifier ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// warp Ġit Ġwith Ġtransaction Ġstate Ġspecifying Ġthe Ġnot ary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction State Ġ= ĠTransaction State ( house Token , Ġnot ary Ġ= Ġnot ary ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// call Ġbuilt Ġin Ġsub Ġflow ĠCreate E vol vable Tokens . ĠThis Ġcan Ġbe Ġcalled Ġvia Ġrpc Ġor Ġin Ġunit Ġtesting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Create E vol vable Tokens ( transaction State )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIssue ĠNon ĠF ung ible ĠToken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠIssue House Token Flow ( private Ġval Ġtoken Id : ĠString , Ġprivate Ġval Ġholder : ĠString ) Ġ: ĠY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// using Ġid Ġof Ġmy Ġhouse Ġto Ġgrab Ġthe Ġhouse Ġfrom Ġdb . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġyou Ġcan Ġuse Ġany Ġcustom Ġcriteria Ġdepending Ġon Ġyour Ġrequirements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString ( tokenId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// construct Ġthe Ġquery Ġcriteria ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Criteria Ġ= ĠQuery Criteria . Linear State Query Criteria ( null , ĠImmutableList . of ( uuid ), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVault . State Status . UN CON SU MED , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgrab Ġthe Ġhouse Ġoff Ġthe Ġledger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( state ) Ġ= Ġservice Hub . vault Service . query By ( House :: class . java , Ġquery Criteria ). states [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe vol vable TokenType Ġ= Ġstate . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġthe Ġpointer Ġpointer Ġto Ġthe Ġhouse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Pointer Ġ= Ġe vol vable TokenType . to Pointer ( e vol vable TokenType . java Class ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// assign Ġthe Ġissuer Ġto Ġthe Ġhouse Ġtype Ġwho Ġwill Ġbe Ġiss uing Ġthe Ġtokens ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissued TokenType Ġ= ĠIss ued TokenType ( our Identity , Ġtoken Pointer ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// mention Ġthe Ġcurrent Ġholder Ġalso ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnon F ung ible Token Ġ= ĠNon F ung ible Token ( iss ued TokenType , Ġstring To Party ( holder ), ĠUnique Identifier (), Ġtoken Pointer . get Attachment Id For Generic Param ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// call Ġbuilt Ġin Ġflow Ġto Ġissue Ġnon Ġf ung ible Ġtokens ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Issue Tokens ( ImmutableList . of ( non F ung ible Token ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMove Ġcreated Ġnon Ġf ung ible Ġtoken Ġto Ġother Ġparty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠMove House Token Flow ( private Ġval Ġtoken Id : ĠString , Ġprivate Ġval Ġholder : ĠString ) Ġ: ĠY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// using Ġid Ġof Ġmy Ġhouse Ġto Ġgrab Ġthe Ġhouse Ġfrom Ġdb . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// you Ġcan Ġuse Ġany Ġcustom Ġcriteria Ġdepending Ġon Ġyour Ġrequirements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString ( tokenId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// construct Ġthe Ġquery Ġcriteria ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Criteria Ġ= ĠQuery Criteria . Linear State Query Criteria ( null , ĠImmutableList . of ( uuid ), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVault . State Status . UN CON SU MED , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgrab Ġthe Ġhouse Ġoff Ġthe Ġledger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( state ) Ġ= Ġservice Hub . vault Service . query By ( House :: class . java , Ġquery Criteria ). states [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe vol vable TokenType Ġ= Ġstate . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġthe Ġpointer Ġpointer Ġto Ġthe Ġhouse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Pointer Ġ= Ġe vol vable TokenType . to Pointer ( e vol vable TokenType . java Class ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// specify Ġthe Ġparty Ġwho Ġwill Ġbe Ġthe Ġnew Ġowner Ġof Ġthe Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparty And Token Ġ= ĠParty And Token ( string To Party ( holder ), Ġtoken Pointer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow < Any >( Move Non F ung ible Tokens ( party And Token )) Ġas ĠSigned Transaction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH older ĠRe de ems Ġnon Ġf ung ible Ġtoken Ġissued Ġby Ġissuer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠRe deem H ous 3 Token ( private Ġval Ġtoken Id : ĠString , Ġprivate Ġval Ġissuer : ĠString ) Ġ: ĠY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// using Ġid Ġof Ġmy Ġhouse Ġto Ġgrab Ġthe Ġhouse Ġfrom Ġdb . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// you Ġcan Ġuse Ġany Ġcustom Ġcriteria Ġdepending Ġon Ġyour Ġrequirements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString ( tokenId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// construct Ġthe Ġquery Ġcriteria ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Criteria Ġ= ĠQuery Criteria . Linear State Query Criteria ( null , ĠImmutableList . of ( uuid ), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVault . State Status . UN CON SU MED , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgrab Ġthe Ġhouse Ġoff Ġthe Ġledger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( state ) Ġ= Ġservice Hub . vault Service . query By ( House :: class . java , Ġquery Criteria ). states [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe vol vable TokenType Ġ= Ġstate . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġthe Ġpointer Ġpointer Ġto Ġthe Ġhouse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġe vol vable TokenType . to Pointer ( e vol vable TokenType . java Class ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// call Ġbuilt Ġin Ġflow Ġto Ġrede em Ġthe Ġtokens ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Re deem Non F ung ible Tokens ( token , Ġstring To Party ( issuer ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠUpdate House Token Flow ( private Ġval Ġtoken Id : ĠUnique Identifier , Ġprivate Ġval Ġnew _ valu ation : ĠLong ) Ġ: ĠY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// construct Ġthe Ġquery Ġcriteria ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Criteria Ġ= ĠQuery Criteria . Linear State Query Criteria ( linear Id Ġ= ĠlistOf ( tokenId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold House State Ġ= Ġservice Hub . vault Service . query By ( House :: class . java , Ġquery Criteria ). states [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew House State Ġ= Ġold House State . state . data . copy ( valu ation Ġ= Ġnew _ valu ation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Update E vol vable Token ( old State And Ref Ġ= Ġold House State , ĠnewState Ġ= Ġnew House State )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIss uing ĠToken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠIssue Token ( private Ġval Ġamount : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcurrency : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġrecipient : ĠString ): ĠY () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Flow Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠF iat Currency . getInstance ( currency ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Issue Tokens ( listOf ( amount Ġof Ġtoken Ġissued By Ġour Identity Ġheld By Ġstring To Party ( recipient )))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ // Instantiation Ġnot Ġallowed