import { Request, Response } from "express";
import { MethodType } from "./../core";
declare type ActionMethodHandlerType = (request: Request, response: Response, id?: number | string) => void;
declare type ActionHandlerType = {
    methods: MethodType[];
    description: string;
    method: string;
    detail: boolean;
    handler: ActionMethodHandlerType;
};
declare type ViewSetType = {
    __actions__: Map<string, ActionHandlerType>;
    __paths__: Map<string, string>;
};
declare abstract class ViewSet {
    description(): string;
    /**
     * A alias funtion for the decorator `_action` that converts the ViewSet nethod into a request handler
     * @param detail - Specifics if an id is required or not for the method
     * @methods - The http request methods the Viewset method will handle
     * pathName - The sufix of the request path that the method would handle, id non is peovided then the name of the method is used
     * description - The discription od the Viewset route, (used to generated the api documentation)
     * @returns - The decorator function _action
     */
    static action: typeof _action;
}
/**
 * A decorator function that converts the ViewSet nethod into a request handler
 * @param detail - Specifics if an id is required or not for the method
 * @methods - The http request methods the Viewset method will handle
 * pathName - The sufix of the request path that the method would handle, id non is peovided then the name of the method is used
 * description - The discription od the Viewset route, (used to generated the api documentation)
 * @returns - The decorator function _action
 */
declare function _action(detail?: boolean, methods?: MethodType[], pathName?: string | undefined | null, description?: string): (target: ViewSet, actionKey: string, actionHandler: PropertyDescriptor) => void;
export { ViewSet, ViewSetType, MethodType, ActionMethodHandlerType, ActionHandlerType, };
//# sourceMappingURL=viewset.d.ts.map