import { IncomingRequestProcessorResponse } from '../../requests/containers';
import { MiddlewareModificationRequestOptions } from '../../responses/middleware-modification-request';
import { default as SigilResponsesList } from './sigil-responses-list';
import { Internal } from '../../types';
/**
 * Possible return type for middleware callbacks.
 * A middleware may return a handler response, undefined, or void.
 */
export type MiddlewareResponse = Internal.Requests.HandlerResponse | undefined | void;
/**
 * Signature for Sigil middleware functions.
 *
 * @param request processed incoming request object.
 * @param response factory for generating response helpers.
 * @param modification response modification request
 * @returns MiddlewareResponse or a promise resolving to one.
 */
export type SigilMiddlewareCallback = (request: IncomingRequestProcessorResponse, response: SigilResponsesList, modifications: MiddlewareModificationRequestOptions) => MiddlewareResponse | Promise<MiddlewareResponse>;
/**
 * Wrapper class for Sigil middleware, providing lifecycle control.
 */
export declare class SigilMiddleware {
    #private;
    /**
     * Constructs a new SigilMiddleware.
     *
     * @param executor middleware callback to execute on each request.
     * @param onRemove callback to invoke when this middleware is removed.
     * @param id unique ID assigned to this middleware.
     */
    constructor(executor: SigilMiddlewareCallback, onRemove: () => void, id: string);
    /**
     * Returns the string representation of this middleware (its ID).
     *
     * @returns middleware ID.
     */
    toString(): string;
    /**
     * Removes this middleware by invoking its removal callback.
     */
    removeMiddleware(): void;
    /**
     * Retrieves the original middleware callback function.
     *
     * @returns SigilMiddlewareCallback assigned to this instance.
     */
    getMiddlewareCallback(): SigilMiddlewareCallback;
}
