package Ġcom . rar ible . protocol . order . listener . service . descriptors . exchange . crypto . p unk s Ċ Ċ import Ġcom . rar ible . core . common . now Millis Ċ import Ġcom . rar ible . ethereum . domain . Eth UInt 2 5 6 Ċ import Ġcom . rar ible . protocol . contracts . exchange . crypto . p unk s . P unk Offer ed Event Ċ import Ġcom . rar ible . protocol . order . core . configuration . Order Indexer Properties Ċ import Ġcom . rar ible . protocol . order . core . model .* Ċ import Ġcom . rar ible . protocol . order . core . service . Price Update Service Ċ import Ġcom . rar ible . protocol . order . core . trace . Transaction Trace Provider Ċ import Ġcom . rar ible . protocol . order . listener . service . descriptors . Item Exchange History Log Event Descriptor Ċ import Ġio . da onom ic . rpc . domain . Word Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġreactor . core . publisher . Mono Ċ import Ġscale ther . domain . Address Ċ import Ġscale ther . domain . response . Log Ċ import Ġjava . time . Instant Ċ Ċ @ Service Ċ class ĠCrypto P unk Offer ed Log Descriptor ( ĊĠĠĠ Ġprivate Ġval Ġexchange Contract Addresses : ĠOrder Indexer Properties . Exchange Contract Addresses , ĊĠĠĠ Ġprivate Ġval Ġtransfer Proxy Addresses : ĠOrder Indexer Properties . Transfer Proxy Addresses , ĊĠĠĠ Ġprivate Ġval Ġtrace Provider : ĠTransaction Trace Provider , ĊĠĠĠ Ġprivate Ġval Ġprice Update Service : ĠPrice Update Service Ċ ) Ġ: ĠItem Exchange History Log Event Descriptor < On Chain Order > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Addresses (): ĠMono < Collection < Address >> Ġ= ĠMono . just ( listOf ( exchange Contract Addresses . crypto P unk s )) ĊĊĠĠĠ Ġoverride Ġval Ġtopic : ĠWord Ġ= ĠP unk Offer ed Event . id () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconvert ( log : ĠLog , Ġdate : ĠInstant ): ĠList < On Chain Order > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp unk Offer ed Event Ġ= ĠP unk Offer ed Event . apply ( log ) ĊĠĠĠĠĠĠĠ Ġval Ġgranted Buyer Ġ= Ġp unk Offer ed Event . to Address (). take Unless Ġ{ Ġit Ġ== ĠAddress . ZERO () Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( gr anted Buyer Ġ== Ġtransfer Proxy Addresses . crypto P unk s Transfer Proxy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġignore Ġ" grant Ġbuy Ġfor Ġ 0 ETH " Ġfrom Ġthe Ġowner Ġto Ġthe Ġtransfer Ġproxy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbecause Ġthis Ġis Ġthe ĠExchange Ġcontract 's Ġimplementation Ġdetail . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ċ /* ĊĠĠĠĠĠĠĠ ĠWe Ġdo Ġnot Ġignore ĠS ELL Ġorders Ġspecific Ġto Ġa Ġconcrete Ġbuy er , Ġbecause Ġwe Ġwant Ġto Ġtrack Ġthe Ġwhole ĠCrypto P unk s Ġorder Ġhistory . ĊĊĠĠĠĠĠĠĠ Ġif Ġ( gr anted Buyer Ġ!= ĠAddress . ZERO ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ignore Ġoffering Ġof Ġp unk Ġ# ${ p unk Offer ed Event . p unk Index ()} Ġto Ġa Ġconcrete Ġaddress Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ($ gr anted Buyer ), Ġlisten Ġto Ġonly Ġpublic Ġoffer ings ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ċ */ ĊĠĠĠĠĠĠĠ Ġval Ġmin Price Ġ= Ġp unk Offer ed Event . min Value () ĊĠĠĠĠĠĠĠ Ġval Ġp unk Index Ġ= ĠE th UInt 2 5 6 ( p unk Offer ed Event . p unk Index ()) ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Trace Ġ= Ġtrace Provider . getTransaction Trace ( log . transaction Hash ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( transaction Trace Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Transaction Ġtrace Ġis Ġnot Ġavailable Ġfor Ġ${ log . transaction Hash ()} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" for Ġoffering Ġof Ġp unk Ġ# ${ p unk Offer ed Event . p unk Index () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmarket Address Ġ= Ġlog . address () ĊĠĠĠĠĠĠĠ Ġval Ġsell er Address Ġ= Ġtransaction Trace . from ĊĠĠĠĠĠĠĠ Ġval Ġmake Ġ= ĠAsset ( Crypto P unk s Asset Type ( market Address , ĠE th UInt 2 5 6 ( p unk Index . value )), ĠE th UInt 2 5 6 . ONE ) ĊĠĠĠĠĠĠĠ Ġval Ġtake Ġ= ĠAsset ( Eth Asset Type , ĠE th UInt 2 5 6 ( min Price )) ĊĠĠĠĠĠĠĠ Ġval Ġus d Value Ġ= Ġprice Update Service . get Assets Us d Value ( make , Ġtake , Ġnow Millis ()) ĊĠĠĠĠĠĠĠ Ġval Ġsell Order Hash Ġ= ĠOrder . hash Key ( seller Address , Ġmake . type , Ġtake . type , ĠCR YPTO _ PUN KS _ SAL T . value ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Chain Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġsell Order Hash , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm aker Ġ= Ġsell er Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt aker Ġ= Ġgranted Buyer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Ġ= Ġmake , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Ġ= Ġtake , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Type Ġ= ĠOrder Type . CRYPTO _ PUN KS , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsalt Ġ= ĠCR YPTO _ PUN KS _ SAL T , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠOrder Crypto P unk s Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Ġ= ĠPlatform . CRYPTO _ PUN KS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Us d Ġ= Ġus d Value ?. make Price Us d Ġ?: Ġus d Value ?. take Price Us d ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ