import type { KemonoConfig } from '../types/config';
import type { Logger } from './logger';
/**
 * Rate limiter interface
 */
export interface RateLimiter {
    checkLimit(): Promise<void>;
    incrementCount(): Promise<void>;
}
/**
 * In-memory rate limiter implementation using sliding window
 */
export declare class MemoryRateLimiter implements RateLimiter {
    private requests;
    private readonly maxRequests;
    private readonly windowMs;
    private readonly logger;
    constructor(config: Required<KemonoConfig>['rateLimit'], logger: Logger);
    private cleanup;
    checkLimit(): Promise<void>;
    incrementCount(): Promise<void>;
}
/**
 * Creates a rate limiter instance based on the configuration
 * @param config Rate limit configuration from KemonoConfig
 * @param logger Logger instance
 * @returns RateLimiter instance
 */
export declare function createRateLimiter(config: KemonoConfig['rateLimit'], logger: Logger): RateLimiter;
