package Ġcom . v ito val ov . k ino . domain Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . launch Ċ Ċ abstract Ġclass ĠBase UseCase < out ĠType , Ġin ĠParams > Ġwhere ĠType Ġ: ĠAny Ġ{ ĊĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġrun ( params : ĠParams ): ĠResult < Type > ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġscope : ĠCor outine Scope , ĊĠĠĠĠĠĠĠ Ġparams : ĠParams , ĊĠĠĠĠĠĠĠ Ġon Result : Ġ( Result < Type >) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbackground Job Ġ= Ġscope . async ( Dispatch ers . IO ) Ġ{ Ġrun ( params ) Ġ} ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġon Result ( background Job . await ()) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ