/** * Mutable references in the `IO` monad * * @since 2.0.0 */ import { IO } from './IO' /** * @example * import { io } from 'fp-ts/IO' * import { newIORef } from 'fp-ts/IORef' * * assert.strictEqual(io.chain(newIORef(1), ref => io.chain(ref.write(2), () => ref.read))(), 2) * * @category model * @since 2.0.0 */ export declare class IORef { private value /** * @since 2.0.0 */ readonly read: IO constructor(value: A) /** * @since 2.0.0 */ write(a: A): IO /** * @since 2.0.0 */ modify(f: (a: A) => A): IO } /** * @category constructors * @since 2.0.0 */ export declare function newIORef(a: A): IO>