import { Middleware, Next } from 'koa'; export declare const SymbolGet: unique symbol; export declare const SymbolPost: unique symbol; export declare const SymbolDelete: unique symbol; export declare const SymbolPut: unique symbol; export declare const SymbolParameter: unique symbol; export declare const ALL: unique symbol; export declare const SymbolRouter: unique symbol; export declare const SymbolServiceName: unique symbol; export declare const SymbolControllerName: unique symbol; export declare const SymbolControllerInstance: unique symbol; export declare const SymbolService: unique symbol; export declare const SymbolController: unique symbol; export declare const SymbolApiTags: unique symbol; export declare const SymbolServiceUniqueTag: unique symbol; export declare const SymbolControllerUniqueTag: unique symbol; export type BaseDataType = StringConstructor | NumberConstructor; export interface parameterMap { property: string | symbol; parameterIndex: number; type: 'query' | 'param' | 'body' | 'header' | 'files'; dataType: BaseDataType; } /** * 加载装饰了Service的类 * * 支持链式加载,即service1 加载 service2,service2 里面加载 service3 */ export declare function loadService any>(value: T): InstanceType; /** * 加载装饰了Controller的类 * * 支持链式加载,即Ctr1 加载 Ctr2,Ctr2 里面加载 Ctr3 * */ export declare function loadController any>(value: T): InstanceType; export type SwaggerOptions = Partial<{ swaggerPath: string; title: string; description: string; version: string; tags: { name: string; description: string; }[]; }>; export type RouteOptions = Partial<{ summary: string; middleware: Middleware[]; }>; export interface routeRule { method: string; path: string; parameterMap: parameterMap[]; routeOptions: RouteOptions; tags: string[]; } export type routePath = string | RegExp; export type routeRules = routeRule[]; export type middlewares = ((ctx: T, next: Next) => Promise)[]; export interface ChumiControllerOptions { prefix?: string; data?: Record; /** * 定义在chumi options上的控制器中间件 * * 即通用的控制器中间件 */ controllerMiddlewares?: middlewares; } export type MethodAction = Function & { routeInfo: { routePath: routePath; routeMethod: symbol; routeOptions: RouteOptions; }[]; }; export type Ctr = Object[] | Record; } | Object[]>;