/**
* @since 2.3.0
*/
import { Applicative2 } from './Applicative.js';
import { Apply2 } from './Apply.js';
import * as chainable from './Chain.js';
import { FromIO2 } from './FromIO.js';
import { FromReader2 } from './FromReader.js';
import { FromTask2 } from './FromTask.js';
import { Functor2 } from './Functor.js';
import { IO } from './IO.js';
import { Monad2 } from './Monad.js';
import { MonadIO2 } from './MonadIO.js';
import { MonadTask2 } from './MonadTask.js';
import { Monoid } from './Monoid.js';
import { Pointed2 } from './Pointed.js';
import * as R from './Reader.js';
import * as RIO from './ReaderIO.js';
import { ReadonlyNonEmptyArray } from './ReadonlyNonEmptyArray.js';
import { Semigroup } from './Semigroup.js';
import * as T from './Task.js';
type Task = T.Task;
type ReaderIO = RIO.ReaderIO;
/**
* @category model
* @since 2.3.0
*/
export interface ReaderTask {
(r: R): Task;
}
/**
* @category conversions
* @since 2.3.0
*/
export declare const fromReader: (fa: R.Reader) => ReaderTask;
/**
* @category conversions
* @since 2.3.0
*/
export declare const fromTask: (fa: Task) => ReaderTask;
/**
* @category conversions
* @since 2.3.0
*/
export declare const fromIO: (fa: IO) => ReaderTask;
/**
* @category conversions
* @since 2.13.0
*/
export declare const fromReaderIO: (fa: ReaderIO) => ReaderTask;
/**
* Changes the value of the local context during the execution of the action `ma` (similar to `Contravariant`'s
* `contramap`).
*
* @since 2.3.0
*/
export declare const local: (f: (r2: R2) => R1) => (ma: ReaderTask) => ReaderTask;
/**
* Less strict version of [`asksReaderTask`](#asksreadertask).
*
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @category constructors
* @since 2.11.0
*/
export declare const asksReaderTaskW: (f: (r1: R1) => ReaderTask) => ReaderTask;
/**
* Effectfully accesses the environment.
*
* @category constructors
* @since 2.11.0
*/
export declare const asksReaderTask: (f: (r: R) => ReaderTask) => ReaderTask;
/**
* `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types
* use the type constructor `F` to represent some computational context.
*
* @category mapping
* @since 2.3.0
*/
export declare const map: (f: (a: A) => B) => (fa: ReaderTask) => ReaderTask;
/**
* @since 2.3.0
*/
export declare const ap: (fa: ReaderTask) => (fab: ReaderTask B>) => ReaderTask;
/**
* Less strict version of [`ap`](#ap).
*
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @since 2.8.0
*/
export declare const apW: (fa: ReaderTask) => (fab: ReaderTask B>) => ReaderTask;
/**
* @category constructors
* @since 2.3.0
*/
export declare const of: (a: A) => ReaderTask;
/**
* @category sequencing
* @since 2.14.0
*/
export declare const flatMap: {
(f: (a: A) => ReaderTask): (ma: ReaderTask) => ReaderTask;
(ma: ReaderTask, f: (a: A) => ReaderTask): ReaderTask;
};
/**
* Less strict version of [`flatten`](#flatten).
*
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @category sequencing
* @since 2.11.0
*/
export declare const flattenW: (mma: ReaderTask>) => ReaderTask;
/**
* @category sequencing
* @since 2.3.0
*/
export declare const flatten: (mma: ReaderTask>) => ReaderTask;
/**
* @category type lambdas
* @since 2.3.0
*/
export declare const URI = "ReaderTask";
/**
* @category type lambdas
* @since 2.3.0
*/
export type URI = typeof URI;
declare module './HKT.js' {
interface URItoKind2 {
readonly [URI]: ReaderTask;
}
}
/**
* @category instances
* @since 2.7.0
*/
export declare const Functor: Functor2;
/**
* Maps the value to the specified constant value.
*
* @category mapping
* @since 2.16.0
*/
export declare const as: {
(a: A): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, a: A): ReaderTask;
};
/**
* Maps the value to the void constant value.
*
* @category mapping
* @since 2.16.0
*/
export declare const asUnit: (self: ReaderTask) => ReaderTask;
/**
* @category mapping
* @since 2.10.0
*/
export declare const flap: (a: A) => (fab: import("./HKT.js").Kind2<"ReaderTask", E, (a: A) => B>) => import("./HKT.js").Kind2<"ReaderTask", E, B>;
/**
* @category instances
* @since 2.10.0
*/
export declare const Pointed: Pointed2;
/**
* Runs computations in parallel.
*
* @category instances
* @since 2.10.0
*/
export declare const ApplyPar: Apply2;
/**
* Combine two effectful actions, keeping only the result of the first.
*
* @since 2.3.0
*/
export declare const apFirst: (second: ReaderTask) => (first: import("./HKT.js").Kind2<"ReaderTask", E, A>) => import("./HKT.js").Kind2<"ReaderTask", E, A>;
/**
* Combine two effectful actions, keeping only the result of the second.
*
* @since 2.3.0
*/
export declare const apSecond: (second: ReaderTask) => (first: import("./HKT.js").Kind2<"ReaderTask", E, A>) => import("./HKT.js").Kind2<"ReaderTask", E, B>;
/**
* Runs computations in parallel.
*
* @category instances
* @since 2.7.0
*/
export declare const ApplicativePar: Applicative2;
/**
* Runs computations sequentially.
*
* @category instances
* @since 2.10.0
*/
export declare const ApplySeq: Apply2;
/**
* Runs computations sequentially.
*
* @category instances
* @since 2.7.0
*/
export declare const ApplicativeSeq: Applicative2;
/**
* @category instances
* @since 2.10.0
*/
export declare const Chain: chainable.Chain2;
/**
* @category instances
* @since 2.10.0
*/
export declare const Monad: Monad2;
/**
* @category instances
* @since 2.10.0
*/
export declare const MonadIO: MonadIO2;
/**
* @category instances
* @since 2.10.0
*/
export declare const MonadTask: MonadTask2;
/**
* @category instances
* @since 2.10.0
*/
export declare const FromIO: FromIO2;
/**
* @category instances
* @since 2.10.0
*/
export declare const FromTask: FromTask2;
/**
* @category instances
* @since 2.11.0
*/
export declare const FromReader: FromReader2;
/**
* @category sequencing
* @since 2.16.0
*/
export declare const flatMapIO: {
(f: (a: A) => IO): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => IO): ReaderTask;
};
/**
* @category sequencing
* @since 2.16.0
*/
export declare const flatMapTask: {
(f: (a: A) => Task): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => Task): ReaderTask;
};
/**
* @category sequencing
* @since 2.16.0
*/
export declare const flatMapReader: {
(f: (a: A) => R.Reader): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => R.Reader): ReaderTask;
};
/**
* @category sequencing
* @since 2.16.0
*/
export declare const flatMapReaderIO: {
(f: (a: A) => ReaderIO): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => ReaderIO): ReaderTask;
};
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation and
* keeping only the result of the first.
*
* @category combinators
* @since 2.15.0
*/
export declare const tap: {
(self: ReaderTask, f: (a: A) => ReaderTask): ReaderTask;
(f: (a: A) => ReaderTask): (self: ReaderTask) => ReaderTask;
};
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation and
* keeping only the result of the first.
*
* @example
* import { pipe } from 'fp-ts/function'
* import * as RT from 'fp-ts/ReaderTask'
* import * as Console from 'fp-ts/Console'
*
* // Will produce `Hello, fp-ts` to the stdout
* const effect = pipe(
* RT.ask(),
* RT.tapIO((value) => Console.log(`Hello, ${value}`)),
* )
*
* async function test() {
* assert.deepStrictEqual(await effect('fp-ts')(), 'fp-ts')
* }
*
* test()
*
* @category combinators
* @since 2.16.0
*/
export declare const tapIO: {
(f: (a: A) => IO<_>): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => IO<_>): ReaderTask;
};
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation and
* keeping only the result of the first.
*
* @category combinators
* @since 2.16.0
*/
export declare const tapReader: {
(f: (a: A) => R.Reader): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => R.Reader): ReaderTask;
};
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation and
* keeping only the result of the first.
*
* @example
* import { pipe } from 'fp-ts/function'
* import * as RT from 'fp-ts/ReaderTask'
* import * as T from 'fp-ts/Task'
*
* const effect = pipe(
* RT.ask(),
* RT.tapTask((value) => T.of(value + 1)),
* )
*
* async function test() {
* assert.deepStrictEqual(await effect(1)(), 1)
* }
*
* test()
*
* @category combinators
* @since 2.16.0
*/
export declare const tapTask: {
(f: (a: A) => Task<_>): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => Task<_>): ReaderTask;
};
/**
* Composes computations in sequence, using the return value of one computation to determine the next computation and
* keeping only the result of the first.
*
* @category combinators
* @since 2.16.0
*/
export declare const tapReaderIO: {
(f: (a: A) => ReaderIO): (self: ReaderTask) => ReaderTask;
(self: ReaderTask, f: (a: A) => ReaderIO): ReaderTask;
};
/**
* @category lifting
* @since 2.4.0
*/
export declare const fromIOK: , B>(f: (...a: A) => IO) => (...a: A) => ReaderTask;
/**
* Alias of `flatMapIO`.
*
* @category legacy
* @since 2.4.0
*/
export declare const chainIOK: (f: (a: A) => IO) => (first: ReaderTask) => ReaderTask;
/**
* Alias of `tapIO`.
*
* @category legacy
* @since 2.10.0
*/
export declare const chainFirstIOK: (f: (a: A) => IO) => (first: ReaderTask) => ReaderTask;
/**
* Reads the current context.
*
* @category constructors
* @since 2.3.0
*/
export declare const ask: () => import("./HKT.js").Kind2<"ReaderTask", R, R>;
/**
* Projects a value from the global context in a `ReaderTask`.
*
* @category constructors
* @since 2.3.0
*/
export declare const asks: (f: (r: R) => A) => import("./HKT.js").Kind2<"ReaderTask", R, A>;
/**
* @category lifting
* @since 2.11.0
*/
export declare const fromReaderK: , R, B>(f: (...a: A) => R.Reader) => (...a: A) => ReaderTask;
/**
* Alias of `flatMapReader`.
*
* @category legacy
* @since 2.11.0
*/
export declare const chainReaderK: (f: (a: A) => R.Reader) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `flatMapReader`.
*
* Less strict version of [`chainReaderK`](#chainreaderk).
*
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @category legacy
* @since 2.11.0
*/
export declare const chainReaderKW: (f: (a: A) => R.Reader) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `tapReader`.
*
* @category legacy
* @since 2.11.0
*/
export declare const chainFirstReaderK: (f: (a: A) => R.Reader) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `tapReader`.
*
* Less strict version of [`chainFirstReaderK`](#chainfirstreaderk).
*
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @category legacy
* @since 2.11.0
*/
export declare const chainFirstReaderKW: (f: (a: A) => R.Reader) => (ma: ReaderTask) => ReaderTask;
/**
* @category lifting
* @since 2.13.0
*/
export declare const fromReaderIOK: , R, B>(f: (...a: A) => ReaderIO) => ((...a: A) => ReaderTask);
/**
* Alias of `flatMapReaderIO`.
*
* Less strict version of [`chainReaderIOK`](#chainreaderiok).
*
* @category legacy
* @since 2.13.0
*/
export declare const chainReaderIOKW: (f: (a: A) => ReaderIO) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `flatMapReaderIO`.
*
* @category legacy
* @since 2.13.0
*/
export declare const chainReaderIOK: (f: (a: A) => ReaderIO) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `tapReaderIO`.
*
* Less strict version of [`chainFirstReaderIOK`](#chainfirstreaderiok).
*
* @category legacy
* @since 2.13.0
*/
export declare const chainFirstReaderIOKW: (f: (a: A) => ReaderIO) => (ma: ReaderTask) => ReaderTask;
/**
* Alias of `tapReaderIO`.
*
* @category legacy
* @since 2.13.0
*/
export declare const chainFirstReaderIOK: (f: (a: A) => ReaderIO) => (ma: ReaderTask) => ReaderTask;
/**
* @category lifting
* @since 2.4.0
*/
export declare const fromTaskK: , B>(f: (...a: A) => T.Task) => (...a: A) => ReaderTask;
/**
* Alias of `flatMapTask`.
*
* @category legacy
* @since 2.4.0
*/
export declare const chainTaskK: (f: (a: A) => T.Task) => (first: ReaderTask) => ReaderTask;
/**
* Alias of `tapTask`.
* @category legacy
* @since 2.10.0
*/
export declare const chainFirstTaskK: (f: (a: A) => T.Task) => (first: ReaderTask) => ReaderTask;
/**
* @category do notation
* @since 2.9.0
*/
export declare const Do: ReaderTask;
/**
* @category do notation
* @since 2.8.0
*/
export declare const bindTo: (name: N) => (fa: import("./HKT.js").Kind2<"ReaderTask", E, A>) => import("./HKT.js").Kind2<"ReaderTask", E, { readonly [K in N]: A; }>;
declare const let_: (name: Exclude, f: (a: A) => B) => (fa: import("./HKT.js").Kind2<"ReaderTask", E, A>) => import("./HKT.js").Kind2<"ReaderTask", E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B; }>;
export {
/**
* @category do notation
* @since 2.13.0
*/
let_ as let };
/**
* @category do notation
* @since 2.8.0
*/
export declare const bind: (name: Exclude, f: (a: A) => import("./HKT.js").Kind2<"ReaderTask", E, B>) => (ma: import("./HKT.js").Kind2<"ReaderTask", E, A>) => import("./HKT.js").Kind2<"ReaderTask", E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B; }>;
/**
* The `W` suffix (short for **W**idening) means that the environment types will be merged.
*
* @category do notation
* @since 2.8.0
*/
export declare const bindW: (name: Exclude, f: (a: A) => ReaderTask) => (fa: ReaderTask