/**
 * Fetch-based implementation of the Effect HTTP client service.
 *
 * This module provides an `HttpClient` layer that executes requests through a
 * Web Fetch API implementation. It is the transport to use in browsers, edge
 * runtimes, and Node.js environments where `globalThis.fetch` is available, or
 * anywhere a compatible fetch function can be supplied.
 *
 * **Mental model**
 *
 * `layer` installs an `HttpClient` whose runtime boundary is a call to `fetch`.
 * The `Fetch` reference chooses the fetch function and defaults to
 * `globalThis.fetch`. The `RequestInit` service supplies default fetch options
 * such as credentials, redirects, cache behavior, or other platform-specific
 * settings. Request-specific method, headers, body, and abort signal are written
 * by the client for each call.
 *
 * **Common tasks**
 *
 * Provide `layer` when an Effect program should run outbound HTTP through the
 * current platform. Override `Fetch` in tests or custom runtimes to capture
 * requests or route them to a different implementation. Provide `RequestInit`
 * when all requests made by this client should share fetch defaults.
 *
 * **Gotchas**
 *
 * Fetch behavior is platform behavior: CORS, cookies, redirect handling, aborts,
 * and streaming support can differ across runtimes. Stream request bodies are
 * sent as Web streams with `duplex: "half"` for runtimes that require it, and
 * `content-length` is removed so fetch can manage body framing.
 *
 * @since 4.0.0
 */
import * as Context from "../../Context.ts";
import type * as Layer from "../../Layer.ts";
import * as HttpClient from "./HttpClient.ts";
/**
 * Context reference for the `fetch` implementation used by the fetch-based HTTP client.
 *
 * **Details**
 *
 * Defaults to `globalThis.fetch`.
 *
 * @category services
 * @since 4.0.0
 */
export declare const Fetch: Context.Reference<typeof globalThis.fetch>;
declare const RequestInit_base: Context.ServiceClass<RequestInit, "effect/http/FetchHttpClient/RequestInit", globalThis.RequestInit>;
/**
 * Service that contains default fetch options for the fetch-based HTTP client.
 *
 * **When to use**
 *
 * Use to provide default credentials, cache, redirect, integrity, or other
 * fetch options for outgoing HTTP requests.
 *
 * **Details**
 *
 * Request-specific method, headers, body, and abort signal are supplied by the client when a request is executed.
 *
 * @category services
 * @since 4.0.0
 */
export declare class RequestInit extends RequestInit_base {
}
/**
 * Layer that provides an `HttpClient` implementation backed by the configured
 * `Fetch` function.
 *
 * **When to use**
 *
 * Use when an Effect program should execute `HttpClient` requests through the
 * platform `fetch` implementation, especially in browser, edge, or Node.js
 * runtimes with `globalThis.fetch`.
 *
 * **Details**
 *
 * The layer uses the current `Fetch` reference and optional `RequestInit`
 * service for each request. Request-specific method, headers, body, and abort
 * signal are supplied by the client and override matching `RequestInit` fields.
 *
 * **Gotchas**
 *
 * Fetch behavior comes from the runtime's implementation, so CORS, cookies,
 * redirects, abort handling, and streaming support can vary by platform. Stream
 * request bodies are sent as Web streams with `duplex: "half"`, and any
 * `content-length` header is removed before calling `fetch`.
 *
 * @see {@link Fetch} for supplying the fetch implementation used by this layer
 * @see {@link RequestInit} for default `RequestInit` options applied before request-specific fields
 *
 * @category layers
 * @since 4.0.0
 */
export declare const layer: Layer.Layer<HttpClient.HttpClient>;
export {};
//# sourceMappingURL=FetchHttpClient.d.ts.map