/** * @since 4.0.0 */ import * as Cause from "./Cause.ts"; import type { Effect } from "./Effect.ts"; import * as Exit from "./Exit.ts"; import * as Result from "./Result.ts"; /** * @since 4.0.0 * @category models */ export interface Pull extends Effect, R> { } /** * Extracts the success type from a Pull type. * * @since 4.0.0 * @category type extractors */ export type Success

= P extends Effect ? _A : never; /** * Extracts the error type from a Pull type, excluding Done errors. * * @since 4.0.0 * @category type extractors */ export type Error

= P extends Effect ? _E extends Cause.Done ? never : _E : never; /** * Extracts the leftover type from a Pull type. * * @since 4.0.0 * @category type extractors */ export type Leftover

= P extends Effect ? _E extends Cause.Done ? _L : never : never; /** * Extracts the service requirements (context) type from a Pull type. * * @since 4.0.0 * @category type extractors */ export type Services

= P extends Effect ? _R : never; /** * Excludes done errors from an error type union. * * @since 4.0.0 * @category type extractors */ export type ExcludeDone = Exclude>; /** * @since 4.0.0 * @category Done */ export declare const catchDone: { /** * @since 4.0.0 * @category Done */ (f: (leftover: Cause.Done.Extract) => Effect): (self: Effect) => Effect | E2, R | R2>; /** * @since 4.0.0 * @category Done */ (self: Effect, f: (leftover: Cause.Done.Extract) => Effect): Effect | E2, R | R2>; }; /** * Checks if a Cause contains any done errors. * * @since 4.0.0 * @category Done */ export declare const isDoneCause: (cause: Cause.Cause) => boolean; /** * Checks if a Cause failure is a done error. * * @since 4.0.0 * @category Done */ export declare const isDoneFailure: (failure: Cause.Reason) => failure is Cause.Fail>; /** * Filters a Cause to extract only halt errors. * * @since 4.0.0 * @category Done */ export declare const filterDone: (input: Cause.Cause) => Result.Result, Cause.Cause>>; /** * Filters a Cause to extract only halt errors. * * @since 4.0.0 * @category Done */ export declare const filterDoneVoid: (input: Cause.Cause) => Result.Result>>; /** * @since 4.0.0 * @category Done */ export declare const filterNoDone: (input: Cause.Cause) => Result.Result>, Cause.Cause>; /** * Filters a Cause to extract the leftover value from done errors. * * @since 4.0.0 * @category Done */ export declare const filterDoneLeftover: (cause: Cause.Cause) => Result.Result, Cause.Cause>>; /** * Converts a Cause into an Exit, extracting halt leftovers as success values. * * @since 4.0.0 * @category Done */ export declare const doneExitFromCause: (cause: Cause.Cause) => Exit.Exit, ExcludeDone>; /** * Pattern matches on a Pull, handling success, failure, and done cases. * * @example * ```ts * import { Cause, Effect, Pull } from "effect" * * const pull = Cause.done("stream ended") * * const result = Pull.matchEffect(pull, { * onSuccess: (value) => Effect.succeed(`Got value: ${value}`), * onFailure: (cause) => Effect.succeed(`Got error: ${cause}`), * onDone: (leftover) => Effect.succeed(`Stream halted with: ${leftover}`) * }) * ``` * * @since 4.0.0 * @category pattern matching */ export declare const matchEffect: { /** * Pattern matches on a Pull, handling success, failure, and done cases. * * @example * ```ts * import { Cause, Effect, Pull } from "effect" * * const pull = Cause.done("stream ended") * * const result = Pull.matchEffect(pull, { * onSuccess: (value) => Effect.succeed(`Got value: ${value}`), * onFailure: (cause) => Effect.succeed(`Got error: ${cause}`), * onDone: (leftover) => Effect.succeed(`Stream halted with: ${leftover}`) * }) * ``` * * @since 4.0.0 * @category pattern matching */ (options: { readonly onSuccess: (value: A) => Effect; readonly onFailure: (failure: Cause.Cause) => Effect; readonly onDone: (leftover: L) => Effect; }): (self: Pull) => Effect; /** * Pattern matches on a Pull, handling success, failure, and done cases. * * @example * ```ts * import { Cause, Effect, Pull } from "effect" * * const pull = Cause.done("stream ended") * * const result = Pull.matchEffect(pull, { * onSuccess: (value) => Effect.succeed(`Got value: ${value}`), * onFailure: (cause) => Effect.succeed(`Got error: ${cause}`), * onDone: (leftover) => Effect.succeed(`Stream halted with: ${leftover}`) * }) * ``` * * @since 4.0.0 * @category pattern matching */ (self: Pull, options: { readonly onSuccess: (value: A) => Effect; readonly onFailure: (failure: Cause.Cause) => Effect; readonly onDone: (leftover: L) => Effect; }): Effect; }; //# sourceMappingURL=Pull.d.ts.map