import { Key } from 'path-to-regexp'; import { Builder } from './Builder'; import { Method } from '../utils/Method'; import { UsePlugin } from '../utils/usePlugin'; import { WebMiddleware, WebPlugin } from '../plugins/Plugin'; import { QueryValidation } from '../plugins/PluginQuery'; import { BodyValidation } from '../plugins/PluginBody'; import { ParamsValidation } from '../plugins/PluginParam'; import { Validator } from '../validators/Validator'; interface Document { category?: string; title?: string; description?: string; response?: Record | Validator; headers?: Record; } export declare class WebBuilder extends Builder { protected readonly uris: string[]; protected readonly methods: Method[]; protected readonly uriPatterns: [RegExp, Key[]][]; protected readonly document: Document; protected queryData: Record; protected bodyData: Record; protected paramData: Record; constructor(prefix: string, uri: string | string[], methods: Method[]); use(plugin: UsePlugin | WebPlugin): WebBuilder; query(query: T): WebBuilder, State>; body(body: T): WebBuilder, State>; params(params: T): WebBuilder, State>; action

(fn: WebMiddleware): WebBuilder; docs(document: Document): this; protected matchAndGetParams(path: string, method: Method): false | Record; protected decodeURIComponent(text: string): any; protected toJSON(): { category: string; title: string; uris: string[]; methods: Method[]; description: string; queries: { name: string; description: string; defaultValue: any; required: boolean; }[]; bodies: { name: string; description: string; defaultValue: any; required: boolean; }[]; params: { name: string; description: string; defaultValue: any; required: boolean; }[]; response: { name: string; description: string; defaultValue: any; required: boolean; }[]; headers: Record; }; } export {};