import { APIGatewayEvent } from 'aws-lambda'; import { Request } from './request'; import { Response } from './response'; import { Middleware } from '../middleware/middleware'; /** * The base endpoint class implemented by all endpoints. * * @export * @class Endpoint */ export declare class Endpoint { /** * An array of middleware objects. * * @type {Middleware[]} * @memberof Endpoint */ middleware: Middleware[]; /** * An array of references to processRequest handlers. * * @type {any[]} * @memberof Endpoint */ before: any[]; /** * An array of references to processResponse handlers. * * @type {any[]} * @memberof Endpoint */ after: any[]; /** * The base handler registered with serverless. Returns an async function * that handles standard serverless handler arguments. The returned * function mounts all middleware and a verb-based handler function based * on the request method. Middleware request processors are called first, * then the verb-based handler, then middleware response processors. If an * error is thrown, it is converted to a response object and sent. * * @throws {HTTPError} * @returns async (evt: APIGatewayEvent, ctx: Context) * @memberof Endpoint */ handler(): (evt: APIGatewayEvent, ctx: any) => Promise<{ headers: { [name: string]: string; }; statusCode: number; body: string; }>; /** * Adds a middleware object to the stack. * * @param {Middleware} middleware * @memberof Endpoint */ register(middleware: Middleware): void; /** * Base implementation of GET. * * @param {Request} req * @param {Response} res * @throws {MethodNotAllowed} * @returns {Promise} * @memberof Endpoint */ get(req: Request, res: Response): Promise; /** * Base implementation of PUT. * * @param {Request} req * @param {Response} res * @throws {MethodNotAllowed} * @returns {Promise} * @memberof Endpoint */ put(req: Request, res: Response): Promise; /** * Base implementation of POST. * * @param {Request} req * @param {Response} res * @throws {MethodNotAllowed} * @returns {Promise} * @memberof Endpoint */ post(req: Request, res: Response): Promise; /** * Base implementation of DELETE. * * @param {Request} req * @param {Response} res * @throws {MethodNotAllowed} * @returns {Promise} * @memberof Endpoint */ delete(req: Request, res: Response): Promise; }