import { ResponseType as AxiosResponseType } from 'axios';
/**
*
REQUEST 功能型装饰器:放弃加入请求队列。
* @desc REQUEST Functional Decorator: Permit request.
*
* @desc {方法装饰器}
* @desc {Method Decorator}
*
* @effect 受影响参数类型 AxiosRequestConfig
* @effect Affected parameter type: AxiosRequestConfig
*
* @example
* ```typescript
* @RequestMapping("/proxy/user")
* class UserService {
* @RequestQueuePermit
* @GetMapping("/{groupId}/{id}")
* async fetchUser(groupId: number, id: number) {}
* }
* ```
*/
declare function RequestQueuePermit(target: any, propertyKey: string): void;
/**
* REQUEST 功能型装饰器:映射参数别名。
* @desc REQUEST Functional Decorator: Map parameter alias.
*
* @desc {参数装饰器} 用于后端需求参数是前端保留关键字,如 `delete` 等。
* @desc {Parameter Decorator} Used when backend requires parameters that are frontend reserved keywords, such as `delete`.
*
* @param {string} alias 请求参数的别名
* @param {string} alias The name of the request parameter
*
* @example
* ```typescript
* @RequestMapping("/proxy/file")
* class FileService {
* @GetMapping("/download")
* async downloadFile(@RequestParam("delete") isDelete: boolean, filePath: string) {}
* }
* ```
*/
declare function RequestParam(alias: string): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
/**
* REQUEST 功能型装饰器:映射基础路径。
* @desc REQUEST Functional Decorator: Map request base path.
*
* @desc {类装饰器} 用于后端接口的前缀路径,如 `/proxy/api` 。
* @desc {Class Decorator} Used for the prefix path of the backend interface, such as `/proxy/api`.
*
* @param {string} prefix 请求的基础路径
* @param {string} prefix The base path of the request
*
* @example
* ```typescript
* @RequestMapping("/proxy/api")
* class UserService {...}
* ```
*/
declare function RequestMapping(prefix: string): (target: any) => any;
/**
* REQUEST 功能型装饰器:映射请求方法。
* @desc REQUEST Functional Decorator: Map request method.
*
* @desc {方法装饰器} 用于映射请求方法,如 `@GetMapping` 等。
* @desc {Method Decorator} Used to map request method, such as `@GetMapping`.
*
* @param {AxiosResponseType} responseType axios响应类型
* @param {AxiosResponseType} responseType The type of axios response
*
* @example
* ```typescript
* @RequestMapping("/proxy/file")
* class FileService {
* @GetMapping("/download")
* @ResponseType("blob")
* async downloadFile(@RequestParam("delete") isDelete: boolean, filePath: string) {}
* }
* ```
*/
declare function ResponseType(responseType: AxiosResponseType): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
* REQUEST 功能型装饰器:映射请求头。
* @desc REQUEST Functional Decorator: Map request headers.
*
* @desc {方法装饰器} 用于映射请求头,如 `@RequestHeaders` 等。
* @desc {Method Decorator} Used to map request headers, such as `@RequestHeaders`.
*
* @param {{ [key: string]: string }} headers 请求头
* @param {{ [key: string]: string }} headers The request headers
*
* @example
* ```typescript
* @RequestMapping("/proxy/file")
* class FileService {
* @PostMapping("/upload")
* @RequestHeaders({"Content-Type": "multipart/form-data"})
* async downloadFile(file: File) {}
* }
* ```
*/
declare function RequestHeaders(headers: {
[key: string]: string;
}): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
* REQUEST 辅助型装饰器:打印请求日志。
* @desc REQUEST Auxiliary Decorator: Print request log.
*
* @desc {方法装饰器} 用于打印请求日志。控制台输出请求时间、请求方法、请求路径、请求参数、响应数据 等信息。
* @desc {Method Decorator} Used to print request log. Console output request time, request method, request path, request parameters, and response data.
*
* @example
* ```typescript
* @RequestMapping("/proxy/user")
* class UserService {
* @RequestLog
* @GetMapping("/{groupId}/{id}")
* async fetchUser(groupId: number, id: number) {}
* }
* ```
*/
declare function RequestLog(target: any, propertyKey: string, descriptor: PropertyDescriptor): void;
/**
* REQUEST 功能型装饰器:放行请求。
* @desc REQUEST Functional Decorator: Permit request bypassing frontend Security.
*
* @desc {方法装饰器} 用于放行请求绕开前端Security。
* @desc {Method Decorator} Used to bypass frontend Security for requests.
*
* @example
* ```typescript
* @RequestMapping("/proxy/public/user")
* class UserService {
* @RequestSecurityPermit
* @GetMapping("/{id}")
* async getPublicUserInfo(id: number) {}
* }
* ```
*/
declare function RequestSecurityPermit(target: any, propertyKey: string, descriptor: PropertyDescriptor): void;
/**
* REQUEST 功能型装饰器:自定义请求配置。
* @desc REQUEST Functional Decorator: Customize request configuration.
*
* @desc {方法装饰器} 用于自定义请求配置。
* @desc {Method Decorator} Used to customize request configuration.
*
* @todo 参数类型待继承 IAxiosRequestConfig 用户接口
*
* @param {{ [key: string]: any }} config 请求配置
* @param {{ [key: string]: any }} config The request configuration
*
* @example
* ```typescript
* @RequestMapping("/proxy/user")
* class UserService {
* @RequestConfig({timeout: 10000})
* @GetMapping("/{groupId}/{id}")
* async fetchUser(groupId: number, id: number) {}
* }
* ```
*/
declare function RequestConfig(config: {
[key: string]: any;
}): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
export { RequestQueuePermit, RequestParam, RequestMapping, ResponseType, RequestHeaders, RequestLog, RequestSecurityPermit, RequestConfig, };