import { Request, RequestHandler, Response } from "express";
import winston from "winston";
import { ClientRequest, IncomingMessage, ServerResponse } from "http";
import { C8yAuthOptions } from "../auth";
import { C8yPactHttpController } from "./httpcontroller";
import type { C8yCtrlHeader, C8yPactHttpResponse } from "./httpcontroller-options";
import { C8yBaseUrl } from "../types";
export declare function createMiddleware(c8yctrl: C8yPactHttpController, options?: {
    auth?: C8yAuthOptions;
    baseUrl?: C8yBaseUrl;
    logger?: winston.Logger;
    ignoredPaths?: string[];
    errorHandler?: RequestHandler;
}): RequestHandler;
/**
 * Wraps a RequestHandler to ignore certain paths. For paths matching items in the
 * `ignoredPaths` parameter, the handler will call `next()` immediately and not call
 * the wrapped handler. For matching `startsWith` is used.
 * @param handler The RequestHandler to wrap
 * @param ignoredPaths The paths to ignore using exact match
 * @returns The RequestHandler wrapper
 */
export declare function wrapPathIgnoreHandler(handler: RequestHandler, ignoredPaths: string[]): RequestHandler;
export declare function createResponseInterceptor(c8yctrl: C8yPactHttpController, errorHandler?: RequestHandler): (responseBuffer: Buffer, proxyRes: Request, req: Request, res: Response) => Promise<string | Buffer<ArrayBufferLike>>;
export declare function createRequestHandler(c8yctrl: C8yPactHttpController, auth?: C8yAuthOptions): (proxyReq: ClientRequest, req: Request, res: Response) => void;
export declare function addC8yCtrlHeader(response: C8yPactHttpResponse | Response, ctrlHeader: C8yCtrlHeader, value: string): void;
export declare function toC8yPactResponse(res: Response<any, any>, body: any): C8yPactHttpResponse;
export declare function toCypressResponse(req: IncomingMessage | Request, res: ServerResponse<IncomingMessage> | Response, options?: {
    reqBody?: string;
    resBody?: string;
}): Cypress.Response<any>;
