package outwatchapp import colibri.Sink import nova.monadic_sfx.util.reactive.store.MonixProSubject import cats.effect.Sync import colibri.CreateProSubject import colibri.Source import colibri.LiftSink import monix.reactive.Observer import colibri.LiftSource import monix.reactive.Observable import colibri.ext.monix._ import monix.execution.Scheduler import monix.execution.Ack package object implicits { // implicit def sinkForMyMonixProSub[A, M] = // new Sink[MonixProSubject[A, M]] {}\ // implicit val monixCreateProSubject = new CreateProSubject[MonixProSubject] { // @inline def from[SI[_]: Sink, SO[_]: Source, I, O]( // sink: SI[I], // source: SO[O] // ): MonixProSubject[I, O] = MonixProSubject.from( // LiftSink[Observer].lift(sink), // LiftSource[Observable].lift(source) // ) // } implicit class Ops[A](val sink: Observer[A]) { @inline def liftSink[G[_]: LiftSink]: G[A] = LiftSink[G].lift(sink) } implicit class Ops2[A](val source: Observable[A])(implicit s: Scheduler) { @inline def liftSource[G[_]: LiftSource]: G[A] = LiftSource[G].lift(source) } }