/**
 * @module CircuitBreaker
 */
/**
 * @internal
 */
export declare const circuitBreakerLua = "\n-- @template TMetrics\n-- @param circuitBreakerStorage CircuitBreakerStorage<TMetrics>\n-- @param circuitBreakerStateManager CircuitBreakerStateManager<TMetrics>\n-- @return ICircuitBreakerAdapter\nlocal function CircuitBreaker(circuitBreakerStorage, circuitBreakerStateManager)\n    return {\n        -- @param key string\n        -- @return CircuitBreakerStateTransition\n        updateState = function(key)\n            return circuitBreakerStorage.atomicUpdate(key, circuitBreakerStateManager.updateState)\n        end,\n\n        -- @param key string\n        -- @return void\n        trackFailure = function(key)\n            return circuitBreakerStorage.atomicUpdate(key, circuitBreakerStateManager.trackFailure)\n        end,\n\n        -- @param key string\n        -- @return void\n        trackSuccess = function(key)\n            return circuitBreakerStorage.atomicUpdate(key, circuitBreakerStateManager.trackSuccess)\n        end\n    }\nend\n";
