/**
 * @module RateLimiter
 */
/**
 * @internal
 */
export declare const fixedWindowLimiterLua = "\n-- @param settings Required<SerializedFixedWindowLimiterSettings>\n-- @return IRateLimiterPolicy<FixedWindowLimiterState>\nlocal function FixedWindowLimiter(settings)\n    return {\n        -- @param currentDate number\n        -- @return FixedWindowLimiterState\n        initialMetrics = function(currentDate)\n            return {\n                attempt = 0,\n                lastAttemptAt = currentDate\n            }\n        end,\n\n        -- @param currentMetrics FixedWindowLimiterState\n        -- @param limit number\n        -- @param currentDate number\n        shouldBlock = function(currentMetrics, limit, currentDate)\n            local timeSinceLastAttempt = currentDate - currentMetrics.lastAttemptAt\n            return timeSinceLastAttempt < settings.window and currentMetrics.attempt > limit\n        end,\n\n        -- @param currentMetrics FixedWindowLimiterState\n        -- @param _currentDate number\n        -- @return number\n        getExpiration = function(currentMetrics, _currentDate)\n            return settings.window + currentMetrics.lastAttemptAt\n        end,\n\n        -- @param currentMetrics FixedWindowLimiterState\n        -- @param _currentDate number\n        -- @return number\n        getAttempts = function(currentMetrics, _currentDate)\n            return currentMetrics.attempt\n        end,\n\n        -- @param currentMetrics FixedWindowLimiterState\n        -- @param currentDate number\n        -- @return FixedWindowLimiterState\n        updateMetrics = function(currentMetrics, currentDate)\n            return {\n                attempt = currentMetrics.attempt + 1,\n                lastAttemptAt = currentDate\n            }\n        end\n    }\nend\n";
