import type { FiberID } from "../Fiber/id.js"; import type { Trace } from "../Fiber/tracing.js"; import * as IO from "../IO/index.js"; import * as St from "../Structural/index.js"; import type { HasUnify } from "../Utils/index.js"; /** * Cause is a Free Semiring structure that allows tracking of multiple error causes. */ export declare type Cause = Empty | Fail | Die | Interrupt | Then | Both | Traced; export declare const CauseSym: unique symbol; export declare function isCause(self: unknown): self is Cause; export interface Empty extends HasUnify { } export declare class Empty implements St.HasEquals, St.HasHash { readonly _tag = "Empty"; readonly [CauseSym]: typeof CauseSym; [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; } export declare const empty: Cause; export interface Fail extends HasUnify { } export declare class Fail implements St.HasEquals, St.HasHash { readonly value: E; readonly _tag = "Fail"; readonly [CauseSym]: typeof CauseSym; constructor(value: E); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; } export interface Die extends HasUnify { } export declare class Die implements St.HasEquals, St.HasHash, HasUnify { readonly value: unknown; readonly _tag = "Die"; readonly [CauseSym]: typeof CauseSym; constructor(value: unknown); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; } export interface Interrupt extends HasUnify { } export declare class Interrupt implements St.HasEquals, St.HasHash, HasUnify { readonly fiberId: FiberID; readonly _tag = "Interrupt"; readonly [CauseSym]: typeof CauseSym; constructor(fiberId: FiberID); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; } export interface Traced extends HasUnify { } export declare class Traced implements St.HasEquals, St.HasHash { readonly cause: Cause; readonly trace: Trace; readonly _tag = "Traced"; readonly [CauseSym]: typeof CauseSym; constructor(cause: Cause, trace: Trace); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; } export interface Then extends HasUnify { } export declare class Then implements St.HasEquals, St.HasHash { readonly left: Cause; readonly right: Cause; readonly _tag = "Then"; readonly [CauseSym]: typeof CauseSym; constructor(left: Cause, right: Cause); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; private eq; } export interface Both extends HasUnify { } export declare class Both implements St.HasEquals, St.HasHash { readonly left: Cause; readonly right: Cause; readonly _tag = "Both"; readonly [CauseSym]: typeof CauseSym; constructor(left: Cause, right: Cause); [St.equalsSym](that: unknown): boolean; get [St.hashSym](): number; equalsSafe(that: Cause): IO.IO; private eq; } export declare function fail(value: E): Cause; export declare function traced(cause: Cause, trace: Trace): Cause; export declare function die(value: unknown): Cause; export declare function interrupt(fiberId: FiberID): Cause; export declare function combineSeq(left: Cause, right: Cause): Cause; export declare function combinePar(left: Cause, right: Cause): Cause; /** * Determines if the `Cause` is empty. */ export declare function isEmpty(cause: Cause): boolean; export declare function equals(self: Cause, that: Cause): boolean; //# sourceMappingURL=cause.d.ts.map