/**
* `IOOption` represents a synchronous computation that either yields a value of type `A` or nothing.
*
* If you want to represent a synchronous computation that never fails, please see `IO`.
* If you want to represent a synchronous computation that may fail, please see `IOEither`.
*
* @since 2.12.0
*/
import { Alt1 } from './Alt'
import { Alternative1 } from './Alternative'
import { Applicative1 } from './Applicative'
import { Apply1 } from './Apply'
import { Chain1 } from './Chain'
import { Compactable1 } from './Compactable'
import { Either } from './Either'
import { Filterable1 } from './Filterable'
import { FromEither1 } from './FromEither'
import { FromIO1 } from './FromIO'
import { Lazy } from './function'
import { Functor1 } from './Functor'
import { Monad1 } from './Monad'
import { MonadIO1 } from './MonadIO'
import * as O from './Option'
import { Pointed1 } from './Pointed'
import { Predicate } from './Predicate'
import { ReadonlyNonEmptyArray } from './ReadonlyNonEmptyArray'
import { Refinement } from './Refinement'
import { Separated } from './Separated'
import * as I from './IO'
import { IOEither } from './IOEither'
import { Zero1 } from './Zero'
import IO = I.IO
import Option = O.Option
/**
* @category model
* @since 2.12.0
*/
export interface IOOption extends IO