import type { AdapterRequest, AdapterResponse, Plugin } from "./types"; type ConvertToAdapterRequest = (request: T) => AdapterRequest; type ExtendClientRequest = (clientRequest: T, adapterRequest: AdapterRequest) => T | Promise; type ConvertToAdapterResponse = (response: T) => AdapterResponse; type ExtendClientResponse = (clientResponse: T, adapterResponse: AdapterResponse) => T | Promise; type Retryer = (clientRequest: T) => Promise; export declare function createRequestMiddleware({ plugins, convertToAdapterRequest, extendClientRequest, }: { plugins: Plugin[]; convertToAdapterRequest: ConvertToAdapterRequest; extendClientRequest: ExtendClientRequest; }): (clientRequest: T) => Promise; export declare function createResponseMiddleware({ plugins, convertToAdapterRequest, extendClientRequest, convertToAdapterResponse, extendClientResponse, cloneClientRequest, retry, }: { plugins: Plugin[]; convertToAdapterRequest: ConvertToAdapterRequest; extendClientRequest: ExtendClientRequest; convertToAdapterResponse: ConvertToAdapterResponse; extendClientResponse: ExtendClientResponse; cloneClientRequest?: (req: T) => T; retry: Retryer; }): (clientResponse: U, clientRequest: T) => Promise; export default function createMiddleware({ convertToAdapterRequest, extendClientRequest, convertToAdapterResponse, extendClientResponse, cloneClientRequest, plugins, retry, }: { plugins: Plugin[]; convertToAdapterRequest: ConvertToAdapterRequest; extendClientRequest: ExtendClientRequest; convertToAdapterResponse: ConvertToAdapterResponse; extendClientResponse: ExtendClientResponse; cloneClientRequest?: (req: Req) => Req; retry: Retryer; }): { requestMiddleware: (clientRequest: Req) => Promise; responseMiddleware: (clientResponse: Res, clientRequest: Req) => Promise; }; export {};