/** * @since 4.0.0 */ import * as Cause from "../../Cause.ts"; import * as Exit from "../../Exit.ts"; import type { LazyArg } from "../../Function.ts"; import * as Option from "../../Option.ts"; import { type Pipeable } from "../../Pipeable.ts"; import type { Predicate, Refinement } from "../../Predicate.ts"; import * as Schema_ from "../../Schema.ts"; import type * as Types from "../../Types.ts"; /** * @since 4.0.0 * @category type ids */ export type TypeId = "~effect/reactivity/AsyncResult"; /** * @since 4.0.0 * @category type ids */ export declare const TypeId: TypeId; /** * @since 4.0.0 * @category models */ export type AsyncResult = Initial | Success | Failure; /** * @since 4.0.0 * @category Guards */ export declare const isAsyncResult: (u: unknown) => u is AsyncResult; /** * @since 4.0.0 * @category models */ export declare namespace AsyncResult { /** * @since 4.0.0 * @category models */ interface Proto extends Pipeable { readonly [TypeId]: { readonly E: (_: never) => E; readonly A: (_: never) => A; }; readonly waiting: boolean; } /** * @since 4.0.0 */ type Success = R extends AsyncResult ? A : never; /** * @since 4.0.0 */ type Failure = R extends AsyncResult ? E : never; } /** * @since 4.0.0 */ export type With, A, E> = R extends Initial ? Initial : R extends Success ? Success : R extends Failure ? Failure : never; /** * @since 4.0.0 * @category refinements */ export declare const isWaiting: (result: AsyncResult) => boolean; /** * @since 4.0.0 * @category models */ export interface Initial extends AsyncResult.Proto { readonly _tag: "Initial"; } /** * @since 4.0.0 * @category constructors */ export declare const fromExit: (exit: Exit.Exit) => Success | Failure; /** * @since 4.0.0 * @category constructors */ export declare const fromExitWithPrevious: (exit: Exit.Exit, previous: Option.Option>) => Success | Failure; /** * @since 4.0.0 * @category constructors */ export declare const waitingFrom: (previous: Option.Option>) => AsyncResult; /** * @since 4.0.0 * @category refinements */ export declare const isInitial: (result: AsyncResult) => result is Initial; /** * @since 4.0.0 * @category refinements */ export declare const isNotInitial: (result: AsyncResult) => result is Success | Failure; /** * @since 4.0.0 * @category constructors */ export declare const initial: (waiting?: boolean) => Initial; /** * @since 4.0.0 * @category models */ export interface Success extends AsyncResult.Proto { readonly _tag: "Success"; readonly value: A; readonly timestamp: number; } /** * @since 4.0.0 * @category refinements */ export declare const isSuccess: (result: AsyncResult) => result is Success; /** * @since 4.0.0 * @category constructors */ export declare const success: (value: A, options?: { readonly waiting?: boolean | undefined; readonly timestamp?: number | undefined; }) => Success; /** * @since 4.0.0 * @category models */ export interface Failure extends AsyncResult.Proto { readonly _tag: "Failure"; readonly cause: Cause.Cause; readonly previousSuccess: Option.Option>; } /** * @since 4.0.0 * @category refinements */ export declare const isFailure: (result: AsyncResult) => result is Failure; /** * @since 4.0.0 * @category refinements */ export declare const isInterrupted: (result: AsyncResult) => result is Failure; /** * @since 4.0.0 * @category constructors */ export declare const failure: (cause: Cause.Cause, options?: { readonly previousSuccess?: Option.Option> | undefined; readonly waiting?: boolean | undefined; }) => Failure; /** * @since 4.0.0 * @category constructors */ export declare const failureWithPrevious: (cause: Cause.Cause, options: { readonly previous: Option.Option>; readonly waiting?: boolean | undefined; }) => Failure; /** * @since 4.0.0 * @category constructors */ export declare const fail: (error: E, options?: { readonly previousSuccess?: Option.Option> | undefined; readonly waiting?: boolean | undefined; }) => Failure; /** * @since 4.0.0 * @category constructors */ export declare const failWithPrevious: (error: E, options: { readonly previous: Option.Option>; readonly waiting?: boolean | undefined; }) => Failure; /** * @since 4.0.0 * @category constructors */ export declare const waiting: >(self: R, options?: { readonly touch?: boolean | undefined; }) => R; /** * @since 4.0.0 * @category combinators */ export declare const touch: >(result: A) => A; /** * @since 4.0.0 * @category constructors */ export declare const replacePrevious: , XE, A>(self: R, previous: Option.Option>) => With>; /** * @since 4.0.0 * @category accessors */ export declare const value: (self: AsyncResult) => Option.Option; /** * @since 4.0.0 * @category accessors */ export declare const getOrElse: { /** * @since 4.0.0 * @category accessors */ (orElse: LazyArg): (self: AsyncResult) => A | B; /** * @since 4.0.0 * @category accessors */ (self: AsyncResult, orElse: LazyArg): A | B; }; /** * @since 4.0.0 * @category accessors */ export declare const getOrThrow: (self: AsyncResult) => A; /** * @since 4.0.0 * @category accessors */ export declare const cause: (self: AsyncResult) => Option.Option>; /** * @since 4.0.0 * @category accessors */ export declare const error: (self: AsyncResult) => Option.Option; /** * @since 4.0.0 * @category combinators */ export declare const toExit: (self: AsyncResult) => Exit.Exit; /** * @since 4.0.0 * @category combinators */ export declare const map: { /** * @since 4.0.0 * @category combinators */ (f: (a: A) => B): (self: AsyncResult) => AsyncResult; /** * @since 4.0.0 * @category combinators */ (self: AsyncResult, f: (a: A) => B): AsyncResult; }; /** * @since 4.0.0 * @category combinators */ export declare const flatMap: { /** * @since 4.0.0 * @category combinators */ (f: (a: A, prev: Success) => AsyncResult): (self: AsyncResult) => AsyncResult; /** * @since 4.0.0 * @category combinators */ (self: AsyncResult, f: (a: A, prev: Success) => AsyncResult): AsyncResult; }; /** * @since 4.0.0 * @category combinators */ export declare const match: { /** * @since 4.0.0 * @category combinators */ (options: { readonly onInitial: (_: Initial) => X; readonly onFailure: (_: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): (self: AsyncResult) => X | Y | Z; /** * @since 4.0.0 * @category combinators */ (self: AsyncResult, options: { readonly onInitial: (_: Initial) => X; readonly onFailure: (_: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): X | Y | Z; }; /** * @since 4.0.0 * @category combinators */ export declare const matchWithError: { /** * @since 4.0.0 * @category combinators */ (options: { readonly onInitial: (_: Initial) => W; readonly onError: (error: E, _: Failure) => X; readonly onDefect: (defect: unknown, _: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): (self: AsyncResult) => W | X | Y | Z; /** * @since 4.0.0 * @category combinators */ (self: AsyncResult, options: { readonly onInitial: (_: Initial) => W; readonly onError: (error: E, _: Failure) => X; readonly onDefect: (defect: unknown, _: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): W | X | Y | Z; }; /** * @since 4.0.0 * @category combinators */ export declare const matchWithWaiting: { /** * @since 4.0.0 * @category combinators */ (options: { readonly onWaiting: (_: AsyncResult) => W; readonly onError: (error: E, _: Failure) => X; readonly onDefect: (defect: unknown, _: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): (self: AsyncResult) => W | X | Y | Z; /** * @since 4.0.0 * @category combinators */ (self: AsyncResult, options: { readonly onWaiting: (_: AsyncResult) => W; readonly onError: (error: E, _: Failure) => X; readonly onDefect: (defect: unknown, _: Failure) => Y; readonly onSuccess: (_: Success) => Z; }): W | X | Y | Z; }; /** * Combines multiple results into a single result. Also works with non-result * values. * * @since 4.0.0 * @category combinators */ export declare const all: | Record>(results: Arg) => AsyncResult<[Arg] extends [ReadonlyArray] ? { -readonly [K in keyof Arg]: [Arg[K]] extends [AsyncResult] ? _A : Arg[K]; } : [Arg] extends [Iterable] ? _A extends AsyncResult ? _AA : _A : [Arg] extends [Record] ? { -readonly [K in keyof Arg]: [Arg[K]] extends [AsyncResult] ? _A : Arg[K]; } : never, [Arg] extends [ReadonlyArray] ? AsyncResult.Failure : [Arg] extends [Iterable] ? AsyncResult.Failure<_A> : [Arg] extends [Record] ? AsyncResult.Failure : never>; /** * @since 4.0.0 * @category Builder */ export declare const builder: >(self: A) => Builder ? _A : never, A extends Failure ? _E_1 : never, A extends Initial ? true : never, A extends Failure ? Defect | Interrupt : never>; /** * @since 4.0.0 * @category Builder */ export interface Defect { readonly _: unique symbol; } /** * @since 4.0.0 * @category Builder */ export interface Interrupt { readonly _: unique symbol; } /** * @since 4.0.0 * @category Builder */ export type Builder = Pipeable & { onWaiting(f: (result: AsyncResult) => B): Builder; orElse(orElse: LazyArg): Out | B; orNull(): Out | null; render(): [A | I] extends [never] ? Out : Out | null; } & ([A | E | I | F] extends [never] ? { exhaustive(): Out; } : unknown) & ([I] extends [never] ? unknown : { onInitial(f: (result: Initial) => B): Builder; onInitialOrWaiting(f: (result: AsyncResult) => B): Builder; }) & ([A] extends [never] ? unknown : { onSuccess(f: (value: A, result: Success) => B): Builder; }) & ([E] extends [never] ? unknown : { onError(f: (error: E, result: Failure) => B): Builder; onErrorIf(refinement: Refinement, f: (error: B, result: Failure) => C): Builder>, I, F>; onErrorIf(predicate: Predicate, f: (error: E, result: Failure) => C): Builder; onErrorTag>, B>(tags: Tags, f: (error: Types.ExtractTag, result: Failure) => B): Builder, I, F>; onErrorTag, B>(tag: Tag, f: (error: Types.ExtractTag, result: Failure) => B): Builder, I, F>; }) & ([E | F] extends [never] ? unknown : { onFailure(f: (cause: Cause.Cause, result: Failure) => B): Builder; }) & (Interrupt extends F ? { onInterrupt(f: (interruptors: ReadonlySet, result: Failure) => B): Builder>; } : unknown) & (Defect extends F ? { onDefect(f: (defect: unknown, result: Failure) => B): Builder>; } : unknown); /** * @since 4.0.0 * @category Schemas */ export interface Schema extends Schema_.declareConstructor, AsyncResult, readonly [Success, Schema_.Cause]> { readonly success: Success; readonly error: Error; } /** * @since 4.0.0 * @category Schemas */ export declare const Schema: (options: { readonly success?: A | undefined; readonly error?: E | undefined; }) => Schema; //# sourceMappingURL=AsyncResult.d.ts.map