package Ġme . he ctor hal p izar . core . ny times . data Ċ Ċ import Ġkotlinx . datetime . Instant Ċ import Ġkotlinx . datetime . LocalDate Ċ import Ġme . he ctor hal p izar . core . ny times . domain . Article Ċ import Ġme . he ctor hal p izar . core . ny times . domain . Section Ċ Ċ interface ĠArticle Repository Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles ĠArticles Ġfrom Ġa ĠREST ĠAPI ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠRemote Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe ĠTop ĠSt ories Ġarticles Ġfrom Ġthe ĠREST ĠAPI ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsection ĠĠ ĠSection Ġof Ġthe Ġtop St ories ĠList ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ List ] Ġof Ġ[ Article ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġget Articles ( section : ĠSection ): ĠList < Article > ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġfavorite Ġarticles Ġrepository ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠLocal Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġa Ġtop Ġstory Ġ[ Article ] Ġto Ġthe Ġdevice Ġlocal Ġstorage ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġarticle ĠTop Ġstory Ġ[ Article ] Ġto Ġadd Ġto Ġthe Ġdevice ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġstore Top Story ( article : ĠArticle ) ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe ĠTop ĠSt ories Ġarticles Ġfrom Ġthe Ġdevice Ġlocal Ġstorage ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsection ĠĠ ĠSection Ġof Ġthe Ġtop St ories ĠList ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ List ] Ġof Ġ[ Article ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġget Articles ( section : ĠSection ): ĠList < Article > ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġa Ġfavorite Ġarticle Ġto Ġthe Ġdevice Ġlocal Ġstorage ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġarticle ĠĠ ĠF avorite Ġ[ Article ] Ġto Ġsave ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġadd Favorite ( article : ĠArticle ) ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRemove Ġfavorite Ġarticle Ġto Ġthe Ġdevice Ġlocal Ġstorage ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġarticle ĠĠ ĠF avorite Ġ[ Article ] Ġto Ġremove ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġremove Favorite ( article : ĠArticle ) ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġfavorite Ġarticles Ġfrom Ġthe Ġdevice Ġlocal Ġstorage ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ List ] Ġof Ġ[ Article ] Ġstored Ġin Ġthe Ġdevice ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġget Favorite () Ġ: ĠList < Article > ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġthe Ġlatest Ġdate Ġwhen Ġthe Ġarticles Ġwere Ġgot Ġrem otely ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsection ĠĠ Ġ[ Section ] Ġto Ġget Ġthe Ġlatest Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ ĠLatest Ġdate Ġwhen Ġthe Ġuser Ġgot Ġa Ġparticular Ġ[ List ] Ġof Ġ[ Article ] Ġ[ Section ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġget Latest Remote Fetch Date ( section : ĠSection ): ĠInstant ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsection ĠĠ Ġ[ Section ] Ġto Ġset Ġthe Ġlatest Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠĠĠĠ ĠA Ġdate Ġto Ġset ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġ[ Remote . get Articles ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġset Latest Remote Fetch Date ( section : ĠSection , Ġdate : ĠLocalDate ) ĊĠĠĠ Ġ} Ċ }