import http = require ( "http" ) ; import url = require ( "url" ) ; export interface IHeaders { [ key ] : any ; } ; export interface IBasicCredentials { username : string ; password : string ; } export interface IHttpClient { options ( requestUrl , additionalHeaders ? ) : Promise < IHttpClientResponse > ; get ( requestUrl , additionalHeaders ? ) : Promise < IHttpClientResponse > ; del ( requestUrl , additionalHeaders ? ) : Promise < IHttpClientResponse > ; post ( requestUrl , data , additionalHeaders ? ) : Promise < IHttpClientResponse > ; patch ( requestUrl , data , additionalHeaders ? ) : Promise < IHttpClientResponse > ; put ( requestUrl , data , additionalHeaders ? ) : Promise < IHttpClientResponse > ; sendStream ( verb , requestUrl , stream , additionalHeaders ? ) : Promise < IHttpClientResponse > ; request ( verb , requestUrl , data , headers ) : Promise < IHttpClientResponse > ; requestRaw ( info , data ) : Promise < IHttpClientResponse > ; requestRawWithCallback ( info , data , onResult ) : void ; } export interface IRequestHandler { prepareRequest ( options ) : void ; canHandleAuthentication ( response ) : boolean ; handleAuthentication ( httpClient , requestInfo , objs ) : Promise < IHttpClientResponse > ; } export interface IHttpClientResponse { message : http . IncomingMessage ; readBody ( ) : Promise < string > ; } export interface IRequestInfo { options : http . RequestOptions ; parsedUrl : url . Url ; httpModule : any ; } export interface IRequestOptions { headers ? : IHeaders ; socketTimeout ? : number ; ignoreSslError ? : boolean ; proxy ? : IProxyConfiguration ; cert ? : ICertConfiguration ; allowRedirects ? : boolean ; allowRedirectDowngrade ? : boolean ; maxRedirects ? : number ; maxSockets ? : number ; keepAlive ? : boolean ; presignedUrlPatterns ? : RegExp [ ] ; allowRetries ? : boolean ; maxRetries ? : number ; } export interface IProxyConfiguration { proxyUrl : string ; proxyUsername ? : string ; proxyPassword ? : string ; proxyBypassHosts ? : string [ ] ; } export interface ICertConfiguration { caFile ? : string ; certFile ? : string ; keyFile ? : string ; passphrase ? : string ; } export interface IRequestQueryParams { options ? : { separator ? : string ; arrayFormat ? : string ; shouldAllowDots ? : boolean ; shouldOnlyEncodeValues ? : boolean ; } ; params : { [ name ] : string | number | ( string | number ) [ ] ; } ; }