/** * @since 1.0.0 */ import type * as Data from "@effect/data/Data"; import type * as Either from "@effect/data/Either"; import type * as Option from "@effect/data/Option"; import type * as Effect from "@effect/io/Effect"; import type * as CompletedRequestMap from "@effect/query/CompletedRequestMap"; /** * @since 1.0.0 * @category symbols */ export declare const RequestTypeId: unique symbol; /** * @since 1.0.0 * @category symbols */ export type RequestTypeId = typeof RequestTypeId; /** * A `Request` is a request from a data source for a value of type `A` * that may fail with an `E`. * * @since 1.0.0 * @category models */ export interface Request extends Request.Variance, Data.Case { } /** * @since 1.0.0 */ export declare namespace Request { /** * @since 1.0.0 * @category models */ interface Variance { readonly [RequestTypeId]: { readonly _E: (_: never) => E; readonly _A: (_: never) => A; }; } /** * @since 1.0.0 * @category models */ interface Constructor, T extends keyof R = never> { (args: Omit, Request.Success>)>): R; } /** * A utility type to extract the error type from a `Request`. * * @since 1.0.0 * @category type-level */ type Error> = [T] extends [Request] ? _E : never; /** * A utility type to extract the value type from a `Request`. * * @since 1.0.0 * @category type-level */ type Success> = [T] extends [Request] ? _A : never; /** * A utility type to extract the result type from a `Request`. * * @since 1.0.0 * @category type-level */ type Result> = T extends Request ? Either.Either : never; /** * A utility type to extract the optional result type from a `Request`. * * @since 1.0.0 * @category type-level */ type OptionalResult> = T extends Request ? Either.Either> : never; } /** * Returns `true` if the specified value is a `Request`, `false` otherwise. * * @since 1.0.0 * @category refinements */ export declare const isRequest: (u: unknown) => u is Request; /** * Constructs a new `Request`. * * @since 1.0.0 * @category constructors */ export declare const of: >() => Request.Constructor; /** * Constructs a new `Request`. * * @since 1.0.0 * @category constructors */ export declare const tagged: & { _tag: string; }>(tag: R["_tag"]) => Request.Constructor; /** * Complete a `Request` with the specified result. * * @since 1.0.0 * @category request completion */ export declare const complete: { >(result: Request.Result): (self: A) => Effect.Effect; >(self: A, result: Request.Result): Effect.Effect; }; /** * Complete a `Request` with the specified effectful computation, failing the * request with the error from the effect workflow if it fails, and completing * the request with the value of the effect workflow if it succeeds. * * @since 1.0.0 * @category request completion */ export declare const completeEffect: { , R>(effect: Effect.Effect, Request.Success>): (self: A) => Effect.Effect; , R>(self: A, effect: Effect.Effect, Request.Success>): Effect.Effect; }; /** * Complete a `Request` with the specified error. * * @since 1.0.0 * @category request completion */ export declare const fail: { >(error: Request.Error): (self: A) => Effect.Effect; >(self: A, error: Request.Error): Effect.Effect; }; /** * Complete a `Request` with the specified value. * * @since 1.0.0 * @category request completion */ export declare const succeed: { >(value: Request.Success): (self: A) => Effect.Effect; >(self: A, value: Request.Success): Effect.Effect; }; //# sourceMappingURL=Request.d.ts.map