declare namespace MagicNode {
  export { Stream } from 'stream';
}

/**
 * 导入模块
 */
declare interface ImportModule {
  /**
   * @param moduleName 模块名称
   */
  (moduleName: 'response'): Promise<{
    /**
     * 返回下载文件
     * ```
     * 返回文本
     * return response.download('中文测试', 'str.txt');
     * ```
     * ```
     * 返回buffer
     * return response.download(Buffer.from('abs'), 'str.txt');
     * ```
     * ```
     * 返回文件
     * return response.download(fs.readFileSync('path'), 'file.txt');
     * ```
     * ```
     * 返回流
     * return response.download(fs.createReadStream('path'), 'file.txt');
     * ```
     * @param value buffer 或 stream 或 any
     * @param fileName
     */
    download(value: Buffer | MagicNode.Stream | string, fileName: string): any;

    /**
     * 自定义json返回，忽略全局格式
     * @param value
     */
    json(value: Record<string, any>): any;

    /**
     * 自定义分页返回
     * @param total 总数
     * @param array 数据
     */
    page(total: number, array: Array<any>): any;

    /**
     * 返回图片
     * @param img 图片数据
     * @param mime 图片类型，如`image/png`、`image/jpeg`、`image/gif`、`image/svg+xml`、`image/bmp`
     */
    image(img: any, mime: string): any;

    /**
     * 返回文本
     * @param text 文本数据
     */
    text(text: string): any;
  }>;
}
