/// import { IncomingMessage } from 'http'; import { ParsedUrlQueryInput } from 'querystring'; import { RequestOptions } from 'https'; import * as response from './response-handler'; import * as request from './request-handler'; import * as build from './request-builder'; import * as parse from '../parse'; export { response, request, build, parse }; export declare type ApiResponse = { result: O; response: IncomingMessage; request: RequestOptions; }; export declare type ApiRequest = (options: T) => Promise>; export declare type ApiResponseType = T extends ApiResponse ? U : never; export declare function asApiResponse(request: RequestOptions, response: IncomingMessage, resolve: (result: ApiResponse) => void): (result: T) => void; /** * * Given options T and api response of type O, uses three functions to handle * the pipeline of sending an HTTP Request and receving a HTTP Respose. * * @param buildRequest RequetsBuilder * @param handleRequest RequestHandler * @param handleResponse ResponseHandler * @returns ApiRequest */ export declare function apiRequest(buildRequest: build.RequestBuilder, handleRequest: request.RequestHandler, handleResponse: response.ResponseHandler): ApiRequest; /** * Defines a requestor that sends no body and decodes the response as JSON. * * @param buildRequest RequestBuilder */ export declare function getJson(buildRequest: build.RequestBuilder): ApiRequest; /** * Sends the JSON encoded value returned by encoder with Content-Type: application/json. * * Expects the response body to be JSON encoded string and decodes it. * * @param buildRequest RequestBuilder * @param encoder T => any * @return T => Promise */ export declare function putJson(buildRequest: build.RequestBuilder, encoder: (options: T) => any): (config: T) => Promise>; export declare function sendJson(buildRequest: build.RequestBuilder, encoder: (options: T) => any, responseHandler: response.ResponseHandler): (config: T) => Promise>; export declare function sendURLEncoded(buildRequest: build.RequestBuilder, encoder: (options: T) => ParsedUrlQueryInput, responseHandler: response.ResponseHandler): (config: T) => Promise>; export declare function jsonEncodedRequest(buildRequest: build.RequestBuilder, encoder: (options: T) => any, handleResponse: response.ResponseHandler): (config: T) => Promise>; export declare function urlEncodedRequest(buildRequest: build.RequestBuilder, encoder: (options: T) => ParsedUrlQueryInput, handleResponse: response.ResponseHandler): (config: T) => Promise>; export declare function requestWithBody(buildRequest: build.RequestBuilder, encoder: (options: T) => [Buffer, string], handleResponse: response.ResponseHandler): (config: T) => Promise>; /** * An ApiResponse resolver that expects the status code to be a 2XX response. * * @param response ApiResponse * @return ApiResponse */ export declare function requireSuccess(response: ApiResponse): Promise>; export declare function requireStatusCode(statusCode: number, ...statusCodes: number[]): (response: ApiResponse) => Promise>; /** * Resolver that Logs the response status code. * * @param response ApiResponse * @return ApiResponse */ export declare function logStatus(response: ApiResponse): ApiResponse; export declare function requireValid(result: parse.Result): Promise; export declare function requireValidResponse(response: ApiResponse>): Promise; export declare function mapRequestOptions(mapOptions: (options: T) => A): (api: ApiRequest) => ApiRequest; export declare function logResponse(response: ApiResponse): ApiResponse; //# sourceMappingURL=index.d.ts.map