/**
* `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.js'
import { Alternative1 } from './Alternative.js'
import { Applicative1 } from './Applicative.js'
import { Apply1 } from './Apply.js'
import * as chainable from './Chain.js'
import { Compactable1 } from './Compactable.js'
import { Either } from './Either.js'
import { Filterable1 } from './Filterable.js'
import { FromEither1 } from './FromEither.js'
import { FromIO1 } from './FromIO.js'
import { LazyArg } from './function.js'
import { Functor1 } from './Functor.js'
import * as I from './IO.js'
import { IOEither } from './IOEither.js'
import { Monad1 } from './Monad.js'
import { MonadIO1 } from './MonadIO.js'
import * as O from './Option.js'
import { Pointed1 } from './Pointed.js'
import { Predicate } from './Predicate.js'
import { ReadonlyNonEmptyArray } from './ReadonlyNonEmptyArray.js'
import { Refinement } from './Refinement.js'
import { Separated } from './Separated.js'
import { Zero1 } from './Zero.js'
import IO = I.IO
import Option = O.Option
/**
* @category model
* @since 2.12.0
*/
export interface IOOption extends IO