/**
 * Lift a computation from the `Task` monad
 *
 * @since 2.0.0
 */
import { FromTask, FromTask1, FromTask2, FromTask2C, FromTask3, FromTask3C, FromTask4 } from './FromTask'
import { URIS, URIS2, URIS3, URIS4 } from './HKT'
import { MonadIO, MonadIO1, MonadIO2, MonadIO2C, MonadIO3, MonadIO3C, MonadIO4 } from './MonadIO'
/**
 * @category model
 * @since 2.0.0
 */
export interface MonadTask<M> extends MonadIO<M>, FromTask<M> {}
/**
 * @category model
 * @since 2.0.0
 */
export interface MonadTask1<M extends URIS> extends MonadIO1<M>, FromTask1<M> {}
/**
 * @category model
 * @since 2.0.0
 */
export interface MonadTask2<M extends URIS2> extends MonadIO2<M>, FromTask2<M> {}
/**
 * @category model
 * @since 2.0.0
 */
export interface MonadTask2C<M extends URIS2, E> extends MonadIO2C<M, E>, FromTask2C<M, E> {}
/**
 * @category model
 * @since 2.0.0
 */
export interface MonadTask3<M extends URIS3> extends MonadIO3<M>, FromTask3<M> {}
/**
 * @category model
 * @since 2.2.0
 */
export interface MonadTask3C<M extends URIS3, E> extends MonadIO3C<M, E>, FromTask3C<M, E> {}
/**
 * @category model
 * @since 2.4.4
 */
export interface MonadTask4<M extends URIS4> extends MonadIO4<M>, FromTask4<M> {}