///
import * as fastify from 'fastify';
import { Server, IncomingMessage, ServerResponse } from 'http'
/**
* This function does three things for you:
* 1. Add the `skip-override` hidden property
* 2. Check bare-minimum version of Fastify
* 3. Pass some custom metadata of the plugin to Fastify
* @param fn Fastify plugin function
* @param options Optional plugin options
* @param next The `next` callback is not available when using `async`/`await`. If you do invoke a `next` callback in this situation unexpected behavior may occur.
*/
declare function fastifyPlugin(
fn: fastify.Plugin | { default: fastify.Plugin },
options?: fastifyPlugin.PluginOptions | string,
next?: fastifyPlugin.nextCallback
): fastify.Plugin;
declare namespace fastifyPlugin {
type nextCallback = (err?: Error) => void;
interface PluginOptions {
/** Bare-minimum version of Fastify for your plugin, just add the semver range that you need. */
fastify?: string,
name?: string,
/** Decorator dependencies for this plugin */
decorators?: {
fastify?: string[],
reply?: string[],
request?: string[]
},
/** The plugin dependencies */
dependencies?: string[]
}
}
export = fastifyPlugin;