import type { MiddlewareConfigType } from './type';
import type { MiddlewareFailureResponder } from '../middleware/MiddlewareFailureResponder';
import type { Middleware } from '../middleware/MiddlewareStack';
type SharedMiddlewares = {
    log: Middleware;
    error: Middleware;
    security: Middleware;
    rateLimit: Middleware;
    sanitizeBody: Middleware;
    fillRateLimit: Middleware;
    authRateLimit: Middleware;
    userMutationRateLimit: Middleware;
    csrf: Middleware;
    auth: Middleware;
    jwt: Middleware;
    bulletproof: Middleware;
    validateLogin: Middleware;
    validateRegister: Middleware;
    validateUserStore: Middleware;
    validateUserUpdate: Middleware;
    validateUserFill: Middleware;
};
type MiddlewareResponderKey = keyof SharedMiddlewares;
type MiddlewareResponderConfig = Partial<Record<MiddlewareResponderKey, MiddlewareFailureResponder>>;
export declare const MiddlewareBody: {
    readonly email: "email";
    readonly password: "password";
    readonly name: "name";
    readonly count: "count";
};
export type MiddlewaresType = {
    skipPaths: ReadonlyArray<string>;
    fillRateLimit: {
        windowMs: number;
        maxRequests: number;
        message: string;
    };
    authRateLimit: {
        windowMs: number;
        maxRequests: number;
        message: string;
    };
    userMutationRateLimit: {
        windowMs: number;
        maxRequests: number;
        message: string;
    };
    responders?: MiddlewareResponderConfig;
    global?: ReadonlyArray<Middleware>;
    route?: Record<string, Middleware>;
};
export declare const MiddlewareKeys: Readonly<{
    log: true;
    error: true;
    security: true;
    rateLimit: true;
    sanitizeBody: true;
    fillRateLimit: true;
    authRateLimit: true;
    userMutationRateLimit: true;
    csrf: true;
    auth: true;
    jwt: true;
    bulletproof: true;
    validateLogin: true;
    validateRegister: true;
    validateUserStore: true;
    validateUserUpdate: true;
    validateUserFill: true;
}>;
export type ParameterizedRateLimitMiddlewareKey = `rateLimit:${number}:${number}`;
type StaticMiddlewareKey = keyof typeof MiddlewareKeys;
export type MiddlewareKey = StaticMiddlewareKey | ParameterizedRateLimitMiddlewareKey;
export declare const isKnownMiddlewareName: (value: string) => value is MiddlewareKey;
export declare function createMiddlewareConfig(): MiddlewareConfigType;
/**
 * Clear the middleware configuration cache
 * This ensures fresh config loading in watch mode
 */
export declare const clearMiddlewareConfigCache: () => void;
export declare const middlewareConfig: MiddlewareConfigType;
export default middlewareConfig;
//# sourceMappingURL=middleware.d.ts.map