/** * 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<A> { private value /** * @since 2.0.0 */ readonly read: IO<A> constructor(value: A) /** * @since 2.0.0 */ write(a: A): IO<void> /** * @since 2.0.0 */ modify(f: (a: A) => A): IO<void> } /** * @category constructors * @since 2.0.0 */ export declare function newIORef<A>(a: A): IO<IORef<A>>