/** * @module CircuitBreaker */ /** * @internal */ export declare const circuitBreakerStorageLua = "\n-- @template TMetrics\n-- @param circuitBreakerPolicy InternalCircuitBreakerPolicy\n-- @param currentDate number\nlocal function CircuitBreakerStorage(circuitBreakerPolicy, currentDate) \n -- @param key string\n -- @param AllCircuitBreakerState\n local function find(key)\n if redis.call(\"EXISTS\", key) == 1 then\n local value = redis.call(\"GET\", key)\n return cjson.decode(value)\n end\n \n return circuitBreakerPolicy.initialState()\n end\n\n return {\n -- @param key string\n -- @param update DatabaseCircuitBreakerUpdateStateFn\n atomicUpdate = function(key, update)\n local currentState = find(key)\n local newState = update(currentState, currentDate)\n redis.call(\"set\", key, cjson.encode(newState))\n\n return {\n from = currentState.type,\n to = newState.type,\n }\n end\n }\nend\n";