/**
 * @module RateLimiter
 */
export declare const rateLimiterLua = "\n-- @template TMetrics\n-- @param rateLimiterStorage RateLimiterStorage<AllRateLimiterState<TMetrics>>\n-- @param rateLimiterStateManager RateLimiterStateManager<TMetrics>\n-- @param currentDate number\n-- @return IRateLimiterAdapter\nlocal function RateLimiter(rateLimiterStorage, rateLimiterStateManager, currentDate)\n    return {\n        -- @param key string\n        -- @param limit number\n        -- @return IRedisJsonRateLimiterState\n        updateState = function(key, limit)\n            return rateLimiterStorage.atomicUpdate({\n                key = key,\n                update = function(state)\n                    return rateLimiterStateManager.updateState(\n                        limit,\n                        currentDate\n                    )(rateLimtierStateManager.track(currentDate)(state))\n                end\n            })\n        end,\n    }\nend\n";
