import { RequestOf, ResponseOf, XapiAdapterOptions, XapiOperation, XapiRoot } from "@xapi-js/core";
import { NextFunction, Request, Response } from "express";
//#region src/index.d.ts
type XapiExpressHandler = (xapi: XapiRoot) => Promise<XapiRoot>;
type XapiOperationHandler<Operation extends XapiOperation> = (request: RequestOf<Operation>) => ResponseOf<Operation> | Promise<ResponseOf<Operation>>;
type XapiExpressOptions = XapiAdapterOptions;
type XapiExpressMiddleware = (req: Request, res: Response, next: NextFunction) => Promise<unknown>;
declare function xapiExpress(handler: XapiExpressHandler, options?: XapiExpressOptions): XapiExpressMiddleware;
declare function xapiExpress<Operation extends XapiOperation>(operation: Operation, handler: XapiOperationHandler<Operation>, options?: XapiExpressOptions): XapiExpressMiddleware;
//#endregion
export { XapiExpressMiddleware, XapiExpressOptions, xapiExpress };