import { Context } from 'egg'; import { IPolicy } from 'cockatiel'; import { RequestOptions2 as BaseRequestOptions, HttpClientResponse } from 'urllib'; import { Code } from './types'; export interface RequestOptions extends BaseRequestOptions { ignoreErrorLog?: boolean; logSuccess?: boolean; } export interface Options extends RequestOptions { baseURL?: string; cockatielPolicy?: IPolicy; } export interface GymboData { code: number; data: T; message?: any; } export interface GymboHttpResult extends HttpClientResponse> { } export declare type HttpClient = (url: string, opt?: RequestOptions) => Promise>; export declare class BizError extends Error { code: number; data: any; status?: number; constructor(code: number, data: any, message?: string, status?: number); } export declare class ApiError extends BizError { status: number; constructor(code: number, data: any, message?: string); static of(message: string): ApiError; static fromCode(code: Code): ApiError; } export declare class HttpCallClient { private readonly opts; constructor(opts: Options); call(ctx: any, path: string, opts?: RequestOptions): Promise; requestRaw(c: any, path: string, opts?: RequestOptions): Promise>; request(c: any, path: string, opts?: RequestOptions): Promise; withRespHeader(c: any, path: string, opts?: RequestOptions): Promise>; private getClient; } export declare const extractData: (body: GymboData, ignoreError: boolean, status?: number) => T; export declare const errorHandler: (err: Error, ctx: Context) => void; export declare const redirectRequest: (ctx: Context, httpCallClient: HttpCallClient, path: string, options?: RequestOptions) => Promise;