import type { FastifyInstance, FastifyRequest, FastifyReply, FastifySchema, RouteOptions, HTTPMethods } from 'fastify';
export type MethodSpecific = {
    [key in Lowercase<HTTPMethods>]?: unknown;
};
declare module 'fastify' {
    interface FastifySchema {
        socket?: {
            in?: {};
            out?: {};
        };
        body?: unknown | MethodSpecific;
        querystring?: unknown | MethodSpecific;
        params?: unknown | MethodSpecific;
        headers?: unknown | MethodSpecific;
        response?: unknown | MethodSpecific;
    }
}
export declare const METHODS: Array<Lowercase<HTTPMethods>>;
export default class FastController implements RouteOptions {
    url: string;
    schema?: FastifySchema;
    websocket: boolean;
    method: Array<Uppercase<HTTPMethods>> | Uppercase<HTTPMethods>;
    handler: (requestOrConn: FastifyRequest, replyOrRequest: FastifyReply | FastifyRequest) => void | Promise<unknown> | string | object;
    static scope: string;
    private _instance;
    params?: {
        [key in Lowercase<HTTPMethods>]?: Array<string> | string;
    } | Array<string> | string;
    constructor(i: FastifyInstance, route: string);
    protected init(): void;
    set instance(i: FastifyInstance);
    get instance(): FastifyInstance;
    get methods(): Array<Uppercase<HTTPMethods>>;
    preValidation: (request: FastifyRequest, reply: FastifyReply, done: (err?: Error) => void) => void | Promise<unknown> | string;
    onPreValidation?(request: FastifyRequest, reply: FastifyReply, done: (err?: Error) => void): void | Promise<unknown> | string;
    delete?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    get?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    head?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    patch?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    post?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    put?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    options?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    search?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    trace?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    propfind?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    proppatch?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    mkcol?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    copy?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    move?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    lock?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    unlock?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
    handle?(request: FastifyRequest, reply: FastifyReply): void | Promise<unknown> | string | object;
}
