///
import { CronJob } from 'cron';
import Http = require('http');
import Https = require('https');
import Koa = require('koa');
import Daruk from '../core/daruk';
export declare type Server = Http.Server | Https.Server;
export declare type Next = () => Promise;
interface DarukRequest extends Koa.Request {
id: string;
}
export interface DarukContext extends Koa.Context {
[key: string]: any;
request: DarukRequest;
}
export declare type Constructor = new (...args: any[]) => T;
export interface PluginClass {
initPlugin: (daruk: Daruk) => Promise;
}
export interface TimerClass {
cronTime: string;
start?: boolean;
timeZone?: string;
onTick: (cron: CronJob, daruk: Daruk) => void;
onComplete?: (cron: CronJob, daruk: Daruk) => void;
runOnInit?: boolean;
context?: any;
initTimer: (daruk: Daruk) => void;
}
export interface MiddlewareClass {
initMiddleware: (daruk: Daruk) => Koa.Middleware | void | Function;
}
export interface ParseType {
[key: string]: ArrayConstructor | BooleanConstructor | StringConstructor | NumberConstructor | ObjectConstructor;
}
export interface ParsedType {
[key: string]: Array | Boolean | String | Number | Object;
}
export declare type method = 'body' | 'query' | 'params';
export declare type validateFunc = (value: string) => string | undefined;
export interface MiddlewareConfig {
middlewareName: string;
options?: MiddlewareConfigOptions;
}
export interface MiddlewareConfigOptions {
[key: string]: any;
}
export {};