import { Request, Response } from "express-serve-static-core";
import { LogLevel } from '../model/log.leval';
import { RequestData } from '../base/reqest.data';
import { WebServer } from '../server/web.server';
import { ICacheAccess } from '../utils/access/cache.access';
import { IOssAccess } from '../utils/access/oss.access';
import { ClassType } from '../base/type';
import { IHttpAccess } from '../utils/access/http.access';
import { IBaseConfig } from '../base/base.config';
import { IRabbitMQAccess, RabbitMQConfig } from '../utils/access/rabbitmq.access';
/** 请求上下文 */
export declare class RequestContext {
    /** 请求ID */
    get reqId(): string | undefined;
    /** 租户ID、客户ID */
    get tid(): string | undefined;
    /** 用户ID */
    get uid(): string | undefined;
    /** 设备ID */
    get esn(): string | undefined;
    /** 用户 token */
    get token(): string | undefined;
    /** API 请求定义数据 */
    route: RequestData;
    /** API 请求 Request */
    req: Request;
    /** API 请求 Response */
    resp: Response;
    query?: any | undefined;
    body?: any | undefined;
    /** key 不区分大小写的 query */
    _query?: any | undefined;
    /** key 不区分大小写的 body */
    _body?: any | undefined;
    /** 上下文自定义配置信息 */
    config?: IBaseConfig;
    /** 数据库配置 key，配置了多数据库连接时有效，用于指定数据库连接配置，未指定时，使用所属对象的配置 */
    dbConfig?: string;
    /** RabbitMQ 配置，如果不指定，会从全局配置中中获取 */
    rabbitMQConfig?: RabbitMQConfig;
    /** 请求结束时触发 */
    release(result?: any | undefined): void;
    /** 写日志 */
    log(level: LogLevel, data?: any | any[]): void;
    logD(data: any | any[] | undefined): void;
    logE(data: any | any[] | undefined): void;
    logI(data: any | any[] | undefined): void;
    logW(data: any | any[] | undefined): void;
    /** 记录SQL执行日志，返回日志索引号 */
    logSQL(sql: string, values?: any[]): number;
    /** 通知SQL执行完成 */
    notifySqlExecuteFinish(index: number, time: number): void;
    /** 通知SQL事务执行完成 */
    notifySqlTransactionFinish(time: number): void;
    /**
     * 当前的 WebServer
     */
    get server(): WebServer | undefined;
    /** HTTP 客户端对象 */
    get http(): IHttpAccess;
    /**
     * Radis 缓存对象
     */
    get cache(): ICacheAccess;
    /** 阿里云 OSS 对象 */
    get oss(): IOssAccess;
    /** RabbitMQ 对象 */
    get rabbitMQ(): IRabbitMQAccess;
    /**
     * 获取对象实例
     * @param identifier 标识符
     * @param args 初始化参数
     * @returns
     */
    resolve<T>(identifier: string | ClassType<T>, ...args: any | undefined): T | undefined;
    /**
     * 动态注入属性
     * @param instance 对象实例
     */
    resolveInject(instance: any, target?: ClassType<any>): void;
}
