import { HttpSendReceive } from "http-send-receive"; import { Promisable } from "type-fest"; import { Parameters } from "./utils/parameters.js"; import { Status } from "./utils/status.js"; import { Verb } from "./utils/verb.js"; export interface ClientOptions { baseUrl: URL; httpSendReceive?: HttpSendReceive; } export interface ClientOutgoingRequest { url: URL; method: Verb; headers: Parameters; stream?(signal?: AbortSignal): AsyncIterable; } export interface ClientIncomingResponse { status: Status; headers: Parameters; stream(signal?: AbortSignal): AsyncIterable; } export interface ClientMiddleware { (this: ClientBase, request: ClientOutgoingRequest, next: (request: ClientOutgoingRequest) => Promisable): Promisable; } export declare abstract class ClientBase { protected baseUrl: URL; private httpSendReceive; constructor(options: ClientOptions); registerMiddleware(middleware: ClientMiddleware): void; protected send(outgoingRequest: ClientOutgoingRequest): Promise; private middleware; }