/// <reference types="node" />
/**
 * @module @adminjs/fastify
 * @subcategory Plugins
 * @section modules
 *
 * @classdesc
 * Plugin that allows you to add AdminJS to Fastify applications.
 *
 * ## Installation
 *
 * ```sh
 * npm install @adminjs/fastify
 * ```
 *
 * ## Usage
 *
 * ```
 * const AdminJSFastify = require('@adminjs/fastify')
 * ```
 *
 * It exposes 2 methods that create an Express Router, which can be attached
 * to a given url in the API. Each method takes a pre-configured instance of {@link AdminJS}.
 *
 * - {@link module:@adminjs/fastify.buildRouter AdminJSExpress.buildRouter(admin, [predefinedRouter])}
 * - {@link module:@adminjs/fastify.buildAuthenticatedRouter AdminJSExpress.buildAuthenticatedRouter(admin, auth, [predefinedRouter], sessionOptions)}
 *
 * If you want to use a router you have already created - not a problem. Just pass it
 * as a `predefinedRouter` parameter.
 *
 * You may want to use this option when you want to include
 * some custom auth middleware for you AdminJS routes.
 *
 * ## Example without an authentication
 *
 * ```
 * const AdminJS = require('adminjs')
 * const AdminJSFastify = require('@adminjs/fastify')
 *
 * const fastify = require('fastify')()
 *
 * const AdminJS = new AdminJS({
 *   databases: [],
 *   rootPath: '/admin',
 * })
 *
 * AdminJSFastify.buildRouter(AdminJS)
 * app.listen(8080, () => console.log('AdminJS is under localhost:8080/admin'))
 * ```
 *
 * ## Using build in authentication
 *
 * To protect the routes with a session authentication, you can use predefined
 * {@link module:@adminjs/fastify.buildAuthenticatedRouter} method.
 *
 * Note! To use authentication in production environment, there is a need to configure
 * @fastify/session for production build. It can be achieved by passing options to
 * `sessionOptions` parameter.
 *
 * ## Adding custom authentication
 *
 * Where `req.session.admin` is {@link AdminJS#CurrentAdmin},
 * meaning that it should have at least an email property.
 */
/**
 * Plugin name
 * @static
 * @memberof module:@adminjs/fastify
 */
export declare const name = "AdminJSFastify";
declare const _default: {
    name: string;
    buildRouter: (admin: import("adminjs/types/src/adminjs").default, fastifyApp: import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("fastify").FastifyLoggerInstance, import("fastify").FastifyTypeProviderDefault>) => Promise<void>;
    buildAuthenticatedRouter: (admin: import("adminjs/types/src/adminjs").default, auth: import("./types").AuthenticationOptions, fastifyApp: import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("fastify").FastifyLoggerInstance, import("fastify").FastifyTypeProviderDefault>, sessionOptions?: import("@fastify/session").default.Options | undefined) => Promise<void>;
};
export default _default;
export { AuthenticationOptions } from './types';
