///
import { DependencyContainer, Dictionary, LoggerProvider } from '@artisan-framework/core';
import { Options as BodyParserOptions } from 'koa-bodyparser';
import { WebCookies } from './cookies';
import { WebOnErrorOptions } from './error';
import { WebStaticOptions } from './static';
import Koa = require('koa');
import Router = require('@koa/router');
import { WebMultipartOptions, WebMultipart } from './multipart';
import { WebViewOptions } from './view/view-protocol';
export declare const WebProvider: unique symbol;
export declare const WebInitializationProvider: unique symbol;
export declare const WebContext: unique symbol;
export declare const WEB_PROVIDER_CONFIG_KEY = "artisan.web";
export declare const WEB_PROVIDER_INIT_ORDER = 5000;
export interface WebServerOptions {
manual?: boolean;
port?: number;
hostname?: string;
keepAliveTimeout?: number;
proxy?: boolean;
proxyIpHeader?: string;
maxIpsCount?: number;
subdomainOffset?: number;
env?: string;
silent?: boolean;
}
export interface WebProviderConfig {
server?: WebServerOptions;
body?: BodyParserOptions;
multipart?: WebMultipartOptions;
router?: Router.RouterOptions;
static?: WebStaticOptions;
view?: WebViewOptions;
onError?: WebOnErrorOptions;
}
export interface WebRouter extends Router {
namespace(prefix: string, ...middlewares: Router.Middleware[]): Router;
}
declare module 'koa' {
interface Request extends Koa.BaseRequest {
body?: unknown;
rawBody: string;
}
interface Context extends Koa.ParameterizedContext, Router.RouterParamContext {
container: DependencyContainer;
logger: LoggerProvider;
cookies: WebCookies;
performanceStartTime: number;
multipart: (options?: WebMultipartOptions) => Promise;
render: (file: string, data?: Dictionary) => Promise;
}
}
export type WebContext = Koa.Context;
export interface WebProvider {
server: Koa;
router: WebRouter;
}
export interface WebInitializationProvider {
initWebProvider(webProvider: WebProvider): Promise;
}
//# sourceMappingURL=web-protocol.d.ts.map