/** * @since 2.0.0 */ import type { LazyArg } from "./Function.js"; /** * Describes a strategy for evaluating multiple effects, potentially in * parallel. * * There are 3 possible execution strategies: `Sequential`, `Parallel`, * `ParallelN`. * * @since 2.0.0 * @category models */ export type ExecutionStrategy = Sequential | Parallel | ParallelN; /** * Execute effects sequentially. * * @since 2.0.0 * @category models */ export interface Sequential { readonly _tag: "Sequential"; } /** * Execute effects in parallel. * * @since 2.0.0 * @category models */ export interface Parallel { readonly _tag: "Parallel"; } /** * Execute effects in parallel, up to the specified number of concurrent fibers. * * @since 2.0.0 * @category models */ export interface ParallelN { readonly _tag: "ParallelN"; readonly parallelism: number; } /** * Execute effects sequentially. * * @since 2.0.0 * @category constructors */ export declare const sequential: ExecutionStrategy; /** * Execute effects in parallel. * * @since 2.0.0 * @category constructors */ export declare const parallel: ExecutionStrategy; /** * Execute effects in parallel, up to the specified number of concurrent fibers. * * @since 2.0.0 * @category constructors */ export declare const parallelN: (parallelism: number) => ExecutionStrategy; /** * Returns `true` if the specified `ExecutionStrategy` is an instance of * `Sequential`, `false` otherwise. * * @since 2.0.0 * @category refinements */ export declare const isSequential: (self: ExecutionStrategy) => self is Sequential; /** * Returns `true` if the specified `ExecutionStrategy` is an instance of * `Sequential`, `false` otherwise. * * @since 2.0.0 * @category refinements */ export declare const isParallel: (self: ExecutionStrategy) => self is Parallel; /** * Returns `true` if the specified `ExecutionStrategy` is an instance of * `Sequential`, `false` otherwise. * * @since 2.0.0 * @category refinements */ export declare const isParallelN: (self: ExecutionStrategy) => self is ParallelN; /** * Folds over the specified `ExecutionStrategy` using the provided case * functions. * * @since 2.0.0 * @category folding */ export declare const match: { /** * Folds over the specified `ExecutionStrategy` using the provided case * functions. * * @since 2.0.0 * @category folding */ (options: { readonly onSequential: LazyArg; readonly onParallel: LazyArg; readonly onParallelN: (n: number) => A; }): (self: ExecutionStrategy) => A; /** * Folds over the specified `ExecutionStrategy` using the provided case * functions. * * @since 2.0.0 * @category folding */ (self: ExecutionStrategy, options: { readonly onSequential: LazyArg; readonly onParallel: LazyArg; readonly onParallelN: (n: number) => A; }): A; }; //# sourceMappingURL=ExecutionStrategy.d.ts.map