import * as h from '@api-ts/io-ts-http'; declare type SuccessfulResponses = { [R in keyof Route['response']]: { status: R; error?: undefined; body: h.ResponseTypeForStatus; original: Response; }; }[keyof Route['response']]; export declare type DecodedResponse = SuccessfulResponses | { status: 'decodeError'; error: string; body: unknown; original: Response; }; export declare class DecodeError extends Error { readonly decodedResponse: DecodedResponse; constructor(message: string, decodedResponse: DecodedResponse); } declare type ExpectedDecodedResponse = DecodedResponse & { status: StatusCode; }; declare type PatchedRequest = Req & { decode: () => Promise>; decodeExpecting: (status: StatusCode) => Promise>; }; declare type SuperagentLike = { [K in h.Method]: (url: string) => Req; }; export declare type Response = { body: unknown; text: unknown; status: number; }; export interface SuperagentRequest extends Promise { ok(callback: (response: Res) => boolean): this; query(params: Record): this; set(name: string, value: string): this; send(body: string): this; } export declare const substitutePathParams: (path: string, params: Record) => string; export declare type RequestFactory = (route: Route, params: Record) => Req; export declare const superagentRequestFactory: (superagent: SuperagentLike, base: string) => RequestFactory; export declare const supertestRequestFactory: (supertest: SuperagentLike) => RequestFactory; export declare type BoundRequestFactory, Route extends h.HttpRoute> = (params: h.RequestType) => PatchedRequest; export declare const requestForRoute: , Route extends h.HttpRoute<"get" | "post" | "put" | "delete" | "patch">>(requestFactory: RequestFactory, route: Route) => BoundRequestFactory; export {}; //# sourceMappingURL=request.d.ts.map