package Ġcom . rar ible . protocol . order . api . data Ċ Ċ import Ġcom . rar ible . core . common . now Millis Ċ import Ġcom . rar ible . ethereum . domain . Eth UInt 2 5 6 Ċ import Ġcom . rar ible . ethereum . listener . log . domain . Log Event Ċ import Ġcom . rar ible . ethereum . listener . log . domain . Log Event Status Ċ import Ġcom . rar ible . protocol . order . core . model .* Ċ import Ġio . da onom ic . rpc . domain . Word Ċ import Ġorg . apache . commons . lang 3 . Random Utils Ċ import Ġscale ther . domain . Address Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . Instant Ċ Ċ fun ĠOrder Side Match . with Make Token ( token : ĠAddress ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with Take Token ( token : ĠAddress ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġtake Type Ġ= Ġtake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake . copy ( type Ġ= Ġtake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake . copy ( type Ġ= Ġtake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġtake Ġassert Ġtype Ġ${ take Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Cancel . with Make Token ( token : ĠAddress ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake ?. type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type ?. java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Cancel . with Take Token ( token : ĠAddress ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġtake Type Ġ= Ġtake ?. type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( token Ġ= Ġtoken ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġtake Ġassert Ġtype Ġ${ take Type ?. java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with Maker ( maker : ĠAddress ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( maker Ġ= Ġm aker ) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( maker Ġ= Ġm aker ) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( maker Ġ= Ġm aker ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with T aker ( t aker : ĠAddress ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( t aker Ġ= Ġt aker ) Ċ } Ċ Ċ fun ĠOrder Side Match . with Take Us d ( value : ĠBigDecimal ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( take Us d Ġ= Ġvalue ) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( take Us d Ġ= Ġvalue ) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( take Us d Ġ= Ġvalue ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with Make Token Id ( tokenId : ĠE th UInt 2 5 6 ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake . copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with Take Token Id ( tokenId : ĠE th UInt 2 5 6 ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġtake Type Ġ= Ġtake . type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake . copy ( type Ġ= Ġtake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake . copy ( type Ġ= Ġtake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġtake Ġassert Ġtype Ġ${ take Type . java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Cancel . with Make Token Id ( tokenId : ĠE th UInt 2 5 6 ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġmake Type Ġ= Ġmake ?. type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( make Ġ= Ġmake ?. copy ( type Ġ= Ġmake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ make Type ?. java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Cancel . with Take Token Id ( tokenId : ĠE th UInt 2 5 6 ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġtake Type Ġ= Ġtake ?. type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE rc 7 2 1 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠE rc 1 1 5 5 Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġis ĠCrypto P unk s Asset Type Ġ-> Ġcopy ( take Ġ= Ġtake ?. copy ( type Ġ= Ġtake Type . copy ( tokenId Ġ= Ġtoken Id ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġmake Ġassert Ġtype Ġ${ take ?. java Class }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠOrder Side Match . with Date ( date : ĠInstant ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( date Ġ= Ġdate ) Ċ } Ċ Ċ fun ĠOrder Side Match . with Make N ft ( token : ĠAddress , Ġtoken Id : ĠE th UInt 2 5 6 ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwith Make Token ( token ). with Make Token Id ( tokenId ) Ċ } Ċ Ċ fun ĠOrder Side Match . with Take N ft ( token : ĠAddress , Ġtoken Id : ĠE th UInt 2 5 6 ): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġreturn Ġwith Take Token ( token ). with Take Token Id ( tokenId ) Ċ } Ċ Ċ fun ĠOrder Cancel . with Make N ft ( token : ĠAddress , Ġtoken Id : ĠE th UInt 2 5 6 ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwith Make Token ( token ). with Make Token Id ( tokenId ) Ċ } Ċ Ċ fun ĠOrder Cancel . with Take N ft ( token : ĠAddress , Ġtoken Id : ĠE th UInt 2 5 6 ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġwith Take Token ( token ). with Take Token Id ( tokenId ) Ċ } Ċ Ċ fun ĠOrder Cancel . with Maker ( maker : ĠAddress ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( maker Ġ= Ġm aker ) Ċ } Ċ Ċ fun ĠOrder Cancel . with Date ( date : ĠInstant ): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( date Ġ= Ġdate ) Ċ } Ċ Ċ fun Ġorder E rc 7 2 1 Sell Side Match (): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate E rc 7 2 1 Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġreturn Ġorder Side Match ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 7 2 1 Buy Side Match (): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate E rc 7 2 1 Asset () ĊĠĠĠ Ġreturn Ġorder Side Match ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 1 1 5 5 Sell Side Match (): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate E rc 1 1 5 5 Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġreturn Ġorder Side Match ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 1 1 5 5 Buy Side Match (): ĠOrder Side Match Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate E rc 1 1 5 5 Asset () ĊĠĠĠ Ġreturn Ġorder Side Match ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 1 1 5 5 Sell Cancel (): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate E rc 1 1 5 5 Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġreturn Ġorder Cancel ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 1 1 5 5 Bid Cancel (): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate E rc 1 1 5 5 Asset () ĊĠĠĠ Ġreturn Ġorder Cancel ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 7 2 1 Sell Cancel (): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate E rc 7 2 1 Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġreturn Ġorder Cancel ( make , Ġtake ) Ċ } Ċ Ċ fun Ġorder E rc 7 2 1 Bid Cancel (): ĠOrder Cancel Ġ{ ĊĠĠĠ Ġval Ġmake Ġ= Ġcreate Eth Asset () ĊĠĠĠ Ġval Ġtake Ġ= Ġcreate E rc 7 2 1 Asset () ĊĠĠĠ Ġreturn Ġorder Cancel ( make , Ġtake ) Ċ } Ċ Ċ fun Ġcreate Log Event ( data : ĠOrder Exchange History ) Ġ= ĠLog Event ( ĊĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠ Ġaddress Ġ= Ġcreate Address (), ĊĠĠĠ Ġtopic Ġ= ĠWord . apply ( Random Utils . next Bytes ( 3 2 )), ĊĠĠĠ Ġtransaction Hash Ġ= ĠWord . apply ( Random Utils . next Bytes ( 3 2 )), ĊĠĠĠ Ġindex Ġ= ĠRandom Utils . nextInt (), ĊĠĠĠ Ġminor Log Index Ġ= Ġ 0 , ĊĠĠĠ Ġstatus Ġ= ĠLog Event Status . CON FI R MED Ċ ) Ċ Ċ fun Ġorder Side Match ( make : ĠAsset , Ġtake : ĠAsset ): ĠOrder Side Match Ġ= ĠOrder Side Match ( ĊĠĠĠ Ġhash Ġ= ĠWord . apply ( Random Utils . next Bytes ( 3 2 )), ĊĠĠĠ Ġcounter Hash Ġ= ĠWord . apply ( Random Utils . next Bytes ( 3 2 )), ĊĠĠĠ Ġside Ġ= ĠOrder Side . LEFT , ĊĠĠĠ Ġfill Ġ= ĠE th UInt 2 5 6 . ONE , ĊĠĠĠ Ġmake Ġ= Ġmake , ĊĠĠĠ Ġtake Ġ= Ġtake , ĊĠĠĠ Ġm aker Ġ= Ġcreate Address (), ĊĠĠĠ Ġt aker Ġ= Ġcreate Address (), ĊĠĠĠ Ġmake Us d Ġ= Ġnull , ĊĠĠĠ Ġtake Us d Ġ= Ġnull , ĊĠĠĠ Ġmake Price Us d Ġ= Ġnull , ĊĠĠĠ Ġtake Price Us d Ġ= Ġnull , ĊĠĠĠ Ġmake Value Ġ= Ġnull , ĊĠĠĠ Ġtake Value Ġ= Ġnull , ĊĠĠĠ Ġsource Ġ= ĠHistory Source . R AR IBLE Ċ ) Ċ Ċ fun Ġorder Cancel ( make : ĠAsset , Ġtake : ĠAsset ): ĠOrder Cancel Ġ= ĠOrder Cancel ( ĊĠĠĠ Ġhash Ġ= ĠWord . apply ( Random Utils . next Bytes ( 3 2 )), ĊĠĠĠ Ġm aker Ġ= Ġcreate Address (), ĊĠĠĠ Ġmake Ġ= Ġmake , ĊĠĠĠ Ġtake Ġ= Ġtake , ĊĠĠĠ Ġdate Ġ= Ġnow Millis (), ĊĠĠĠ Ġsource Ġ= ĠHistory Source . R AR IBLE Ċ ) Ċ