/**
 * @module CircuitBreaker
 */
/**
 * @internal
 */
export declare const backoffsLua = "\n-- @param args WithJitterArgs\n-- @return number\nlocal function withJitter(args)\n    if args.jitter ~= nil and args.jitter ~= cjson.null then\n        return (1 - args.jitter * args.mathRandom) * args.value\n    end\n\n    return args.value\nend\n\n-- @param settings Required<SerializedConstantBackoffSettings>\n-- @return BackoffPolicy\nlocal function constantBackoff(settings)\n    -- @param _attempt number\n    -- @return number\n    return function(_attempt)\n        return withJitter({\n            jitter = settings.jitter,\n            value = settings.delay,\n            mathRandom = settings._mathRandom,\n        })\n    end\nend\n\n-- @param settings Required<SerializedExponentialBackoffSettings>\n-- @return BackoffPolicy\nlocal function exponentialBackoff(settings)\n    -- @param attempt number\n    -- @return number\n    return function(attempt)\n        local exponential = math.min(settings.maxDelay, settings.minDelay, math.pow(settings.multiplier, attempt))\n        return withJitter({\n            jitter = settings.jitter,\n            value = exponential,\n            mathRandom = settings._mathRandom,\n        })\n    end\nend\n\n-- @param settings Required<SerializedLinearBackoffSettings>\n-- @return BackoffPolicy\nlocal function linearBackoff(settings)\n    -- @param attempt number\n    -- @return number\n    return function(attempt)\n        local linear = math.min(settings.maxDelay, settings.minDelay * attempt)\n        return withJitter({\n            jitter = settings.jitter,\n            value = linear,\n            mathRandom = settings._mathRandom,\n        })\n    end\nend\n\n\n-- @param settings Required<SerializedPolynomialBackoffSettings>\n-- @return BackoffPolicy\nlocal function polynomialBackoff(settings)\n    -- @param attempt number\n    -- @return number\n    return function(attempt)\n        local polynomial = math.min(settings.maxDelay, settings.minDelay * math.pow(attempt, settings.degree))\n        return withJitter({\n            jitter = settings.jitter,\n            value = polynomial,\n            mathRandom = settings._mathRandom,\n        })\n    end\nend\n";
