package Ġio . horizontal systems . bank wallet . modules . market . search Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġio . horizontal systems . bank wallet . core . App Ċ import Ġio . horizontal systems . market kit . models . Coin Category Ċ import Ġio . horizontal systems . market kit . models . Full Coin Ċ import Ġjava . math . BigDecimal Ċ import Ġjavax . annotation . concurrent . Immutable Ċ Ċ object ĠMarket Search Module Ġ{ ĊĊĠĠĠ Ġclass ĠFactory Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠMarket Search Service ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . market Kit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . market F avorites Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . currency Manager . base Currency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMarket Search ViewModel ( service ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠData Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠDiscovery Items ( val Ġdiscovery Items : ĠList < Discovery Item >) Ġ: ĠData () ĊĠĠĠĠĠĠĠ Ġclass ĠSearch Result ( val Ġcoin Items : ĠList < Coin Item >) Ġ: ĠData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠDiscovery Item Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠTop Coins Ġ: ĠDiscovery Item () ĊĊĠĠĠĠĠĠĠ Ġclass ĠCategory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Category : ĠCoin Category , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Data : ĠCategory Market Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠDiscovery Item () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Immutable ĊĠĠĠ Ġclass ĠCoin Item ( val Ġfull Coin : ĠFull Coin , Ġval Ġfavour ited : ĠBoolean ) ĊĊĠĠĠ Ġdata Ġclass ĠCategory Market Data ( ĊĠĠĠĠĠĠĠ Ġval Ġmarket Cap : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġdiff : ĠBigDecimal ? Ġ= Ġnull ĊĠĠĠ Ġ) Ċ Ċ } Ċ