import { TSchema } from "@sinclair/typebox";
import { ParameterDefinition } from "../../parameter";
import { HttpMethod, Route, RouteSimplifiedOptions } from "../../route";
import { RoutingContext } from "../../routing-context";
import { Presenter } from "./presenter";
export type PresenterRouteHandler;
}, U extends {
[P in keyof U]: TSchema;
}> = unknown extends Input ? never : (this: RoutingContext) => Promise;
export declare class PresenterRouteFactory {
static create;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, method: HttpMethod, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static GET;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static POST;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static PUT;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static PATCH;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static DELETE;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static OPTIONS;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
static HEAD;
}, U extends {
[P in keyof U]: TSchema;
}>(path: string, options: RouteSimplifiedOptions, params: T, presenter: Presenter, handler: PresenterRouteHandler): Route;
}