/** * * `Resume` is a possibly synchronous or asynchronous effect type. Conceptually you can think of * `Resume` as a union between the `IO` and `Task` monads w/ cancelation. The `Disposable` interface is * borrowed from `@most/core`'s internal types and makes it easy to interoperate. Using `Disposable` * makes it easy to reuse the `@most/scheduler` package for providing scheduling consistent with any * other most-based workflows you have. * * The beauty of `Resume` is that it can do work as fast as possible without delay. Sync when possible * but async when needed allows you to unify your sync/async workflows using a single monad w/ easy * interop with your existing IO/Task allowing for cancelation when required. * @since 0.9.2 */ import { Disposable } from '@most/types'; import { Alt1 } from 'fp-ts/Alt'; import { Applicative1 } from 'fp-ts/Applicative'; import { Apply1 } from 'fp-ts/Apply'; import * as Ch from 'fp-ts/Chain'; import { ChainRec1 } from 'fp-ts/ChainRec'; import * as E from 'fp-ts/Either'; import { FromIO1 } from 'fp-ts/FromIO'; import { FromTask1 } from 'fp-ts/FromTask'; import { Functor1 } from 'fp-ts/Functor'; import { IO } from 'fp-ts/IO'; import { Monad1 } from 'fp-ts/Monad'; import { Pointed1 } from 'fp-ts/Pointed'; import { Task } from 'fp-ts/Task'; import { Arity1 } from './function'; import { MonadRec1 } from './MonadRec'; /** * @since 0.9.2 * @category Model */ export declare type Resume = Sync | Async; /** * @since 0.9.2 * @category Type-level */ export declare type ValueOf = [A] extends [Resume] ? R : never; /** * @since 0.9.2 * @category Model */ export interface Async { readonly _tag: 'async'; readonly resume: AsyncResume; } /** * @since 0.9.2 * @category Model */ export declare type AsyncResume = (resume: (value: A) => Disposable) => Disposable; /** * @since 0.9.2 * @category Constructor */ export declare const async: (resume: AsyncResume) => Async; /** * @since 0.9.2 * @category Constructor */ export declare const fromTask: (task: Task) => Async; /** * @since 0.9.2 * @category Model */ export interface Sync { readonly _tag: 'sync'; readonly resume: IO; } /** * @since 0.9.2 * @category Constructor */ export declare const sync: (resume: IO) => Sync; /** * @since 0.9.2 * @category Refinement */ export declare const isSync: (resume: Resume) => resume is Sync; /** * @since 0.9.2 * @category Refinement */ export declare const isAsync: (resume: Resume) => resume is Async; /** * @since 0.9.2 * @category Combinator */ export declare const ap: (fa: Resume) => (fab: Resume>) => Resume; /** * @since 0.9.2 * @category Deconstructor */ export declare const run: (f: Arity1) => (resume: Resume) => Disposable; /** * @since 0.9.2 * @category Deconstructor */ export declare const start: (f: Arity1) => (resume: Resume) => Disposable; /** * @since 0.9.2 * @category Deconstructor */ export declare const exec: (resume: Resume) => Disposable; /** * @since 0.9.2 * @category Model */ export declare type DisposableTask = () => DisposablePromise; /** * @since 0.9.2 * @category Model */ export declare type DisposablePromise = Promise & Disposable; /** * @since 0.9.2 * @category Deconstructor */ export declare const toTask: (resume: Resume) => DisposableTask; /** * @since 0.9.2 * @category Combinator */ export declare const chain: (f: Arity1>) => (resume: Resume) => Resume; /** * @since 0.9.2 * @category Constructor */ export declare const of: (a: A) => Sync; /** * @since 0.9.2 * @category Combinator */ export declare const chainRec: (f: Arity1>>) => (value: A) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const race: (ra: Resume) => (rb: Resume) => Resume; /** * @since 0.9.2 * @category URI */ export declare const URI = "@typed/fp/Resume"; /** * @since 0.9.2 * @category URI */ export declare type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind { [URI]: Resume; } } /** * @since 0.9.2 * @category Instance */ export declare const Pointed: Pointed1; /** * @since 0.9.2 * @category Instance */ export declare const Functor: Functor1; /** * @since 0.9.2 * @category Combinator */ export declare const map: (f: (a: A) => B) => (fa: Resume) => Resume; /** * @since 0.9.2 * @category Instance */ export declare const Apply: Apply1; /** * @since 0.9.2 * @category Instance */ export declare const Applicative: Applicative1; /** * @since 0.9.2 * @category Instance */ export declare const Chain: Ch.Chain1; /** * @since 0.9.2 * @category Combinator */ export declare const chainFirst: (f: (a: A) => Resume) => (first: Resume) => Resume; /** * @since 0.9.2 * @category Instance */ export declare const Monad: Monad1; /** * @since 0.9.2 * @category Instance */ export declare const ChainRec: ChainRec1; /** * @since 0.9.2 * @category Instance */ export declare const MonadRec: MonadRec1; /** * @since 0.9.2 * @category Instance */ export declare const Alt: Alt1; /** * @since 0.9.2 * @category Instance */ export declare const FromIO: FromIO1; /** * @since 0.9.2 * @category Constructor */ export declare const fromIO: import("fp-ts/NaturalTransformation").NaturalTransformation11<"IO", "@typed/fp/Resume">; /** * @since 0.9.2 * @category Instance */ export declare const FromTask: FromTask1; /** * @since 0.9.2 * @category Constructor */ export declare const Do: Resume<{}>; /** * @since 0.9.2 * @category Combinator */ export declare const bindTo: (name: N) => (fa: Resume) => Resume<{ [K in N]: A; }>; /** * @since 0.9.2 * @category Combinator */ export declare const bind: (name: Exclude, f: (a: A) => Resume) => (ma: Resume) => Resume<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>; /** * @since 0.9.2 * @category Combinator */ export declare const tupled: (fa: Resume) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const traverseReadonlyArray: (f: (a: A) => Resume) => (ta: readonly A[]) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const traverseReadonlyArrayWithIndex: (f: (i: number, a: A) => Resume) => (ta: readonly A[]) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const zip: (ta: readonly Resume[]) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const chainFirstTaskK: (f: (a: A) => Task) => (first: Resume) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const chainTaskK: (f: (a: A) => Task) => (first: Resume) => Resume; /** * @since 0.9.2 * @category Constructor */ export declare const fromTaskK: (f: (...a: A) => Task) => (...a: A) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const chainFirstIOK: (f: (a: A) => IO) => (first: Resume) => Resume; /** * @since 0.9.2 * @category Combinator */ export declare const chainIOK: (f: (a: A) => IO) => (first: Resume) => Resume; /** * @since 0.9.2 * @category Constructor */ export declare const fromIOK: (f: (...a: A) => IO) => (...a: A) => Resume; /** * @since 0.9.2 * @category Typeclass Constructor */ export declare const getMonoid: (M: import("fp-ts/Monoid").Monoid) => import("fp-ts/Monoid").Monoid>; //# sourceMappingURL=Resume.d.ts.map