/** * `Ref` is an abstraction for managing data-driven applications using [Env](./Env.ts.md). * @since 0.11.0 */ import * as Ap from 'fp-ts/Apply'; import { Functor3 } from 'fp-ts/Functor'; import { IO } from 'fp-ts/IO'; import { Profunctor3 } from 'fp-ts/Profunctor'; import { Reader } from 'fp-ts/Reader'; import { Semigroupoid3 } from 'fp-ts/Semigroupoid'; import { Task } from 'fp-ts/Task'; import { U } from 'ts-toolbelt'; import * as E from './Env'; import * as FKV from './FromKV'; import { Intersect } from './HKT'; import * as KV from './KV'; import * as O from './Option'; import * as P from './Provide'; import * as RS from './ReaderStream'; import { Resume } from './Resume'; /** * @since 0.11.0 * @category Model */ export interface Ref { readonly get: E.Env; readonly has: E.Env; readonly set: (input: I) => E.Env; readonly update: (f: (value: O) => E.Env) => E.Env; readonly remove: E.Env>; readonly values: RS.ReaderStream>; } /** * @since 0.11.0 * @category Type-level */ export declare type RequirementsOf = [A] extends [Ref] ? R : never; /** * @since 0.11.0 * @category Type-level */ export declare type InputOf = [A] extends [Ref] ? R : never; /** * @since 0.11.0 * @category Type-level */ export declare type OutputOf = [A] extends [Ref] ? R : never; /** * @since 0.11.0 * @category URI */ export declare const URI = "@typed/fp/Ref"; /** * @since 0.11.0 * @category URI */ export declare type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind2 { [URI]: Ref; } interface URItoKind3 { [URI]: Ref; } } declare module './HKT' { interface URItoVariance { [URI]: V; } } /** * @since 0.11.0 * @category Constructor */ export declare const fromKV: (kv: KV.KV) => Ref & KV.KV; /** * @since 0.11.0 * @category Constructor */ export declare const kv: (initial: E.Env, options?: KV.Options | undefined) => Ref & KV.KV; /** * @since 0.12.0 * @category Instance Constructor */ export declare const FromKV: FKV.FromKV2; /** * @since 0.11.0 * @category Combinator */ export declare const map: (f: (value: A) => B) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Instance */ export declare const Functor: Functor3; /** * @since 0.11.0 * @category Combinator */ export declare const local: (f: (value: A) => B) => (ref: Ref) => Ref; /** * @since 0.12.2 * @category Combinator */ export declare const localE: (f: (value: A) => E.Env) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const promap: (f: (value: B) => A, g: (value: C) => D) => (ref: Ref) => Ref; /** * @since 0.12.2 * @category Combinator */ export declare const promapE: (f: (value: B) => E.Env, g: (value: C) => E.Env) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Instance */ export declare const Profunctor: Profunctor3; /** * @since 0.11.0 * @category Combinator */ export declare const ap: (fa: Ref) => (fab: Ref B>) => Ref; /** * @since 0.11.0 * @category Instance */ export declare const Apply: Ap.Apply3; /** * @since 0.11.0 * @category Combinator */ export declare const apFirst: (second: Ref) => (first: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apFirstW: (second: Ref) => (first: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apS: (name: Exclude, fb: Ref) => (fa: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apSW: (name: Exclude, fb: Ref) => (fa: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apSecond: (second: Ref) => (first: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apSecondW: (second: Ref) => (first: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apT: (fb: Ref) => (fas: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const apTW: (fb: Ref) => (fas: Ref) => Ref; /** * @since 0.11.0 * @category Typeclass Constructor */ export declare const getApplySemigroup: (S: import("fp-ts/Semigroup").Semigroup) => import("fp-ts/Semigroup").Semigroup>; /** * @since 0.11.0 * @category Combinator */ export declare const compose: (second: Ref) => (first: Ref) => Ref; /** * @since 0.11.0 * @category Instance */ export declare const Semigroupoid: Semigroupoid3; /** * @since 0.11.0 * @category Combinator */ export declare const provideSome: (provided: E1) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const provideAll: (provided: E) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const useSome: (provided: E1) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare const useAll: (provided: E1) => (ref: Ref) => Ref; /** * @since 0.11.0 * @category Instance */ export declare const UseSome: P.UseSome3; /** * @since 0.11.0 * @category Instance */ export declare const UseAll: P.UseAll3; /** * @since 0.11.0 * @category Instance */ export declare const ProvideSome: P.ProvideSome3; /** * @since 0.11.0 * @category Instance */ export declare const ProvideAll: P.ProvideAll3; /** * @since 0.11.0 * @category Instance */ export declare const Provide: P.Provide3; /** * @since 0.11.0 * @category Combinator */ export declare function chainEnvK(f: (value: A) => E.Env): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainFirstEnvK(f: (value: A) => E.Env): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainIOK(f: (value: A) => IO): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainFirstIOK(f: (value: A) => IO): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainReaderK(f: (value: A) => Reader): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainFirstReaderK(f: (value: A) => Reader): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainResumeK(f: (value: A) => Resume): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainFirstResumeK(f: (value: A) => Resume): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainTaskK(f: (value: A) => Task): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function chainFirstTaskK(f: (value: A) => Task): (ref: Ref) => Ref; /** * @since 0.11.0 * @category Combinator */ export declare function struct(properties: S): Ref, RefStructInput, RefStructOutput>; declare type AnyRefStruct = Readonly>>; declare type RefStructEnv = Intersect>>; declare type RefStructInput = { readonly [K in keyof S]: InputOf; }; declare type RefStructOutput = { readonly [K in keyof S]: OutputOf; }; export {}; //# sourceMappingURL=Ref.d.ts.map