import { IncomingHttpHeaders } from "node:http"; import { URLSearchParams } from "node:url"; import * as undici from "undici"; import { Result } from "@openally/result"; import { ModeOfHttpieResponseHandler } from "./class/undiciResponseHandler"; import { HttpieOnHttpError } from "./class/HttpieOnHttpError"; import { HttpieDecompressionError, HttpieFetchBodyError, HttpieParserError } from "./class/HttpieHandlerError"; export type WebDavMethod = "MKCOL" | "COPY" | "MOVE" | "LOCK" | "UNLOCK" | "PROPFIND" | "PROPPATCH"; export type HttpMethod = "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH"; export type InlineCallbackAction = (fn: () => Promise) => Promise; export type RequestError = HttpieOnHttpError> | HttpieDecompressionError | HttpieFetchBodyError | HttpieParserError; export interface RequestOptions { /** @default 0 */ maxRedirections?: number; /** @default{ "user-agent": "httpie" } */ headers?: IncomingHttpHeaders; querystring?: string | URLSearchParams; body?: any; authorization?: string; agent?: undici.Agent | undici.ProxyAgent | undici.MockAgent; /** @description API limiter from a package like `p-ratelimit`. */ limit?: InlineCallbackAction; /** @default "parse" */ mode?: ModeOfHttpieResponseHandler; /** @default true */ throwOnHttpError?: boolean; } export interface RequestResponse { data: T; headers: IncomingHttpHeaders; statusMessage: string; statusCode: number; } /** * @description httpie "like" request wrapper that use new Node.js http client undici under the hood. * @see https://github.com/nodejs/undici * * @example * const { statusCode, data } = await request("GET", "https://ws-dev.myunisoft.fr/ws_monitoring"); * console.log(statusCode, data); // 200 "true" */ export declare function request(method: HttpMethod | WebDavMethod, uri: string | URL, options?: RequestOptions): Promise>; export declare function safeRequest(method: HttpMethod | WebDavMethod, uri: string | URL, options?: RequestOptions): Promise, RequestError>>; export type RequestCallback = (uri: string | URL, options?: RequestOptions) => Promise>; export type SafeRequestCallback = (uri: string | URL, options?: RequestOptions) => Promise, RequestError>>; export declare const get: RequestCallback; export declare const post: RequestCallback; export declare const put: RequestCallback; export declare const del: RequestCallback; export declare const patch: RequestCallback; export declare const safeGet: SafeRequestCallback; export declare const safePost: SafeRequestCallback; export declare const safePut: SafeRequestCallback; export declare const safeDel: SafeRequestCallback; export declare const safePatch: SafeRequestCallback;