import type { RequestHandler } from 'express';
import type { Logger } from 'pino';
import type { RedisService } from '../../cache/redis.js';
/**
 * Rate-limit middleware для **будущего** Dynamic Client Registration
 * endpoint (`POST /oauth/register`). DCR ещё не реализован в auth-сервисе —
 * этот файл — ready-for-future stub.
 *
 * Алгоритм:
 *   - Redis-based sliding window: один счётчик per IP, ключ `mcp:dcr:rl:{ip}`.
 *   - INCR + EXPIRE (на первый INCR) на window секунд.
 *   - Если current > limit → 429 + `Retry-After`.
 *   - Если Redis недоступен → fail-open (предупреждаем в log).
 *
 * Default лимит: 10 регистраций / час / IP. Можно тюнить через опции.
 *
 * NB: Подключать middleware ТОЛЬКО когда `/oauth/register` появится.
 * Сейчас файл существует, но не используется в `http/app.ts`.
 */
export interface CreateDcrRateLimitOptions {
    redis?: RedisService | null;
    /** Лимит запросов на окно. Default 10. */
    limit?: number;
    /** Длина окна в секундах. Default 3600 (1 час). */
    windowSec?: number;
    log?: Logger;
}
export declare function createDcrRateLimit(opts?: CreateDcrRateLimitOptions): RequestHandler;
//# sourceMappingURL=dcrRateLimit.d.ts.map