@dhedge/v2-sdk 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"v2-sdk.esm.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/types.ts","../src/config.ts","../src/utils/deadline.ts","../src/services/uniswap/V3Liquidity.ts","../src/services/uniswap/V3Trade.ts","../src/services/toros/pool.ts","../src/services/toros/retry.ts","../src/services/odos/index.ts","../src/services/toros/swapData.ts","../src/services/toros/initWithdrawal.ts","../src/services/toros/easySwapper.ts","../src/services/aave/assets.ts","../src/services/aave/incentives.ts","../src/services/velodrome/liquidity.ts","../src/utils/contract.ts","../src/services/velodrome/staking.ts","../src/services/lyra/markets.ts","../src/services/lyra/tradeOptionType.ts","../src/services/lyra/positions.ts","../src/services/lyra/quote.ts","../src/services/lyra/trade.ts","../src/services/futures/margin.ts","../src/services/futures/constants.ts","../src/services/futures/trade.ts","../src/services/oneInch/index.ts","../src/services/ramses/vesting.ts","../src/services/flatmoney/stableModule.ts","../src/services/flatmoney/keeperFee.ts","../src/services/flatmoney/stableLp.ts","../src/services/compound/lending.ts","../src/services/compound/rewards.ts","../src/services/pancake/staking.ts","../src/services/pendle/index.ts","../src/services/toros/completeWithdrawal.ts","../src/services/kyberSwap/index.ts","../src/entities/pool.ts","../src/entities/utils.ts","../src/entities/dhedge.ts","../src/errors.ts"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { Deployment } from \"@lyrafinance/lyra-js\";\nimport { BigNumber } from \"ethers\";\n\nexport enum Network {\n POLYGON = \"polygon\",\n OPTIMISM = \"optimism\",\n ARBITRUM = \"arbitrum\",\n BASE = \"base\",\n ETHEREUM = \"ethereum\",\n PLASMA = \"plasma\"\n}\n\nexport enum Dapp {\n SUSHISWAP = \"sushiswap\",\n AAVE = \"aave\",\n ONEINCH = \"1inch\",\n QUICKSWAP = \"quickswap\",\n BALANCER = \"balancer\",\n UNISWAPV3 = \"uniswapV3\",\n SYNTHETIX = \"synthetix\",\n AAVEV3 = \"aavev3\",\n ARRAKIS = \"arrakis\",\n TOROS = \"toros\",\n VELODROME = \"velodrome\",\n VELODROMEV2 = \"velodromeV2\",\n VELODROMECL = \"velodromeCL\",\n LYRA = \"lyra\",\n RAMSES = \"ramses\",\n AERODROME = \"aerodrome\",\n AERODROMECL = \"aerodromeCL\",\n RAMSESCL = \"ramsesCL\",\n PANCAKECL = \"pancakeCL\",\n COMPOUNDV3 = \"compoundV3\",\n ODOS = \"odos\",\n PENDLE = \"pendle\",\n KYBERSWAP = \"kyberswap\"\n}\n\nexport enum Transaction {\n SWAP = \"swapExactTokensForTokens\",\n ADD_LIQUIDITY = \"addLiquidity\",\n DEPOSIT = \"deposit\",\n HARVEST = \"harvest\",\n CLAIM_DISTRIBIUTIONS = \"claimDistributions\",\n CLAIM_REWARDS = \"claimRewards\",\n REMOVE_LIQUIDITY = \"removeLiquidity\",\n DECREASE_LIQUIDITY = \"decreaseLiquidity\",\n INCREASE_LIQUIDITY = \"increaseLiquidity\",\n COLLECT = \"collect\",\n MULTI_CALL = \"multicall\",\n BORROW = \"borrow\",\n REPAY = \"repay\",\n WITHDRAW = \"withdraw\",\n MINT = \"mint\",\n BURN = \"burn\",\n SWAP_SYNTHS = \"exchangeWithTracking\",\n ADD_LIQUIDITY_STAKE = \"addLiquidityAndStake\",\n REMOVE_LIQUIDITY_UNSTAKE = \"removeLiquidityAndUnstake\"\n}\n\nexport type AddressNetworkMap = Readonly<Record<Network, string>>;\n\nexport type AddressDappMap = {\n [key in Dapp]?: string;\n};\n\nexport type AddressDappNetworkMap = Readonly<Record<Network, AddressDappMap>>;\n\nexport type SupportedAsset = [string, boolean];\n\nexport type AssetEnabled = {\n asset: string;\n isDeposit: boolean;\n};\n\nexport type FundComposition = {\n asset: string;\n isDeposit: boolean;\n balance: BigNumber;\n rate: BigNumber;\n};\n\nexport type Reserves = {\n assetA: BigNumber;\n assetB: BigNumber;\n};\n\nexport type NetworkChainIdMap = Readonly<Record<Network, number>>;\n\nexport type LyraOptionMarket = \"eth\";\nexport type AddressMarketMap = {\n [key in LyraOptionMarket]: string;\n};\n\nexport type LyraTradeType = \"buy\" | \"sell\";\nexport type LyraOptionType = \"call\" | \"put\";\nexport type LyraNetworkMap = { [key in Network]?: Deployment };\nexport type LyraPosition = {\n positionId: BigNumber;\n strikeId: BigNumber;\n optionType: number;\n amount: BigNumber;\n collateral: BigNumber;\n state: number;\n};\n\nexport type SDKOptions =\n | {\n estimateGas: boolean;\n onlyGetTxData?: boolean;\n useTraderAddressAsFrom?: boolean;\n }\n | boolean; // shorthand for { estimateGas: true/false }; for backward compatibility\n","import {\n Dapp,\n AddressNetworkMap,\n Network,\n AddressDappNetworkMap,\n LyraNetworkMap\n} from \"./types\";\nimport { NetworkChainIdMap } from \".\";\nimport { Deployment } from \"@lyrafinance/lyra-js\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nrequire(\"dotenv\").config();\n\nexport const factoryAddress: AddressNetworkMap = {\n [Network.POLYGON]: process.env.STAGING_CONTRACTS\n ? \"0xDd87eCdB10cFF7004276AAbAbd30e7a08F69bb53\"\n : \"0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0\",\n [Network.OPTIMISM]: \"0x5e61a079A178f0E5784107a4963baAe0c5a680c6\",\n [Network.ARBITRUM]: \"0xfffb5fb14606eb3a548c113026355020ddf27535\",\n [Network.BASE]: \"0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F\",\n [Network.ETHEREUM]: \"0x96D33bCF84DdE326014248E2896F79bbb9c13D6d\",\n [Network.PLASMA]: \"0xAec4975Fc8ad911464D2948D771488b30F6eEE87\"\n};\n\nexport const routerAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506\",\n [Dapp.AAVE]: \"0x8dFf5E27EA6b7AC08EbFdf9eB090F32ee9a30fcf\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.QUICKSWAP]: \"0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff\",\n [Dapp.BALANCER]: \"0xBA12222222228d8Ba445958a75a0704d566BF2C8\",\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.ARRAKIS]: \"0xc73fb100a995b33f9fa181d420f4c8d74506df66\",\n [Dapp.TOROS]: \"0x45b90480D6F643dE2f128db091A357C3c90399f2\",\n [Dapp.ODOS]: \"0x4e3288c9ca110bcc82bf38f09a7b425c095d92bf\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.OPTIMISM]: {\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.SYNTHETIX]: \"0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.TOROS]: \"0x2Ed1bd7f66e47113672f3870308b5E867C5bb743\",\n [Dapp.VELODROME]: \"0x9c12939390052919aF3155f41Bf4160Fd3666A6f\",\n [Dapp.VELODROMEV2]: \"0xa062ae8a9c5e11aaa026fc2670b0d65ccc8b2858\",\n [Dapp.LYRA]: \"0xCCE7819d65f348c64B7Beb205BA367b3fE33763B\",\n [Dapp.ARRAKIS]: \"0x9ce88a56d120300061593eF7AD074A1B710094d5\",\n [Dapp.ODOS]: \"0xca423977156bb05b13a2ba3b76bc5419e2fe9680\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.ARBITRUM]: {\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.BALANCER]: \"0xBA12222222228d8Ba445958a75a0704d566BF2C8\",\n [Dapp.RAMSES]: \"0xaaa87963efeb6f7e0a2711f397663105acb1805e\",\n [Dapp.TOROS]: \"0xA5679C4272A056Bb83f039961fae7D99C48529F5\",\n [Dapp.ODOS]: \"0xa669e7A0d4b3e4Fa48af2dE86BD4CD7126Be4e13\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.BASE]: {\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.AERODROME]: \"0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43\",\n [Dapp.AAVEV3]: \"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\",\n [Dapp.TOROS]: \"0xf067575Eb60c7587C11e867907AA7284833704d1\",\n [Dapp.ODOS]: \"0x19cEeAd7105607Cd444F5ad10dd51356436095a1\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.ETHEREUM]: {\n [Dapp.AAVEV3]: \"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\n [Dapp.ODOS]: \"0xCf5540fFFCdC3d510B18bFcA6d2b9987b0772559\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.PLASMA]: {\n [Dapp.AAVEV3]: \"0x925a2A7214Ed92428B5b1B090F80b25700095e12\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n }\n};\n\nexport const dappFactoryAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0xc35DADB65012eC5796536bD9864eD8773aBc74C4\",\n [Dapp.QUICKSWAP]: \"0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32\"\n },\n [Network.OPTIMISM]: {},\n [Network.ARBITRUM]: {},\n [Network.BASE]: {},\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const stakingAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0x0769fd68dFb93167989C6f7254cd0D766Fb2841F\",\n [Dapp.BALANCER]: \"0x0F3e0c4218b7b0108a3643cFe9D3ec0d4F57c54e\",\n [Dapp.AAVE]: \"0x357D51124f59836DeD84c8a1730D72B749d8BC23\",\n [Dapp.AAVEV3]: \"0x929EC64c34a17401F460460D4B9390518E5B473e\"\n },\n [Network.OPTIMISM]: {\n [Dapp.AAVEV3]: \"0x929EC64c34a17401F460460D4B9390518E5B473e\",\n [Dapp.COMPOUNDV3]: \"0x443ea0340cb75a160f31a440722dec7b5bc3c2e9\"\n },\n [Network.ARBITRUM]: {\n [Dapp.COMPOUNDV3]: \"0x88730d254a2f7e6ac8388c3198afd694ba9f7fae\",\n [Dapp.PANCAKECL]: \"0x5e09ACf80C0296740eC5d6F643005a4ef8DaA694\"\n },\n [Network.BASE]: {\n [Dapp.PANCAKECL]: \"0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3\"\n },\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const aaveAddressProvider: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.AAVE]: \"0xd05e3E715d945B59290df0ae8eF85c1BdB684744\",\n [Dapp.AAVEV3]: \"0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb\"\n },\n [Network.OPTIMISM]: {\n [Dapp.AAVEV3]: \"0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb\"\n },\n [Network.ARBITRUM]: {\n [Dapp.AAVEV3]: \"0xa97684ead0e402dc232d5a977953df7ecbab3cdb\"\n },\n [Network.BASE]: {\n // https://docs.aave.com/developers/deployed-contracts/v3-mainnet/base\n [Dapp.AAVEV3]: \"0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D\"\n },\n [Network.ETHEREUM]: {\n [Dapp.AAVEV3]: \"0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e\"\n },\n [Network.PLASMA]: {\n [Dapp.AAVEV3]: \"0x061D8e131F26512348ee5FA42e2DF1bA9d6505E9\"\n }\n};\nexport const nonfungiblePositionManagerAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\"\n },\n [Network.OPTIMISM]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n [Dapp.VELODROMECL]: \"0x416b433906b1B72FA758e166e239c43d68dC6F29\"\n },\n [Network.ARBITRUM]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n [Dapp.RAMSESCL]: \"0xAA277CB7914b7e5514946Da92cb9De332Ce610EF\",\n [Dapp.PANCAKECL]: \"0x46a15b0b27311cedf172ab29e4f4766fbe7f4364\"\n },\n [Network.BASE]: {\n [Dapp.UNISWAPV3]: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\n [Dapp.AERODROMECL]: \"0x827922686190790b37229fd06084350e74485b72\",\n [Dapp.PANCAKECL]: \"0x46A15B0b27311cedF172AB29E4f4766fbE7F4364\"\n },\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const networkChainIdMap: NetworkChainIdMap = {\n [Network.POLYGON]: 137,\n [Network.OPTIMISM]: 10,\n [Network.ARBITRUM]: 42161,\n [Network.BASE]: 8453,\n [Network.ETHEREUM]: 1,\n [Network.PLASMA]: 9745\n};\n\nexport const balancerSubgraph: AddressNetworkMap = {\n [Network.POLYGON]:\n \"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-v2\",\n [Network.OPTIMISM]: \"\",\n [Network.ARBITRUM]: \"\",\n [Network.BASE]: \"\",\n [Network.ETHEREUM]: \"\",\n [Network.PLASMA]: \"\"\n};\n\nexport const multiCallAddress: AddressNetworkMap = {\n [Network.POLYGON]: \"0x275617327c958bD06b5D6b871E7f491D76113dd8\",\n [Network.OPTIMISM]: \"\",\n [Network.ARBITRUM]: \"\",\n [Network.BASE]: \"\",\n [Network.ETHEREUM]: \"\",\n [Network.PLASMA]: \"\"\n};\n\nexport const lyraNetworkMap: LyraNetworkMap = {\n [Network.OPTIMISM]: Deployment.Mainnet\n};\n\nexport const MaxUint128 = \"0xffffffffffffffffffffffffffffffff\";\nexport const UNISWAPV3_QUOTER_ADDRESS =\n \"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6\";\n\nexport const SYNTHETIX_TRACKING_CODE =\n \"0x4448454447450000000000000000000000000000000000000000000000000000\";\n\nexport const flatMoneyContractAddresses: Readonly<Partial<\n Record<\n Network,\n {\n OrderExecution?: string;\n DelayedOrder: string;\n FlatcoinVault: string;\n StableModule: string;\n COLLATERAL: string;\n }\n >\n>> = {\n [Network.BASE]: {\n DelayedOrder: \"0x6D857e9D24a7566bB72a3FB0847A3E0e4E1c2879\",\n FlatcoinVault: \"0x95Fa1ddc9a78273f795e67AbE8f1Cd2Cd39831fF\",\n StableModule: \"0xb95fB324b8A2fAF8ec4f76e3dF46C718402736e2\",\n COLLATERAL: \"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c\" // RETH\n },\n [Network.OPTIMISM]: {\n OrderExecution: \"0x7805CB7fb2C2e70FDdF92949065D9Ee1Fc2F72a8\",\n DelayedOrder: \"0xd917A0C9B21Bb71DF1209d2c211Ad83004F01554\", // OrderAnnouncementModule\n FlatcoinVault: \"0x86C7b9640302082B0dF78023F930d8612bFcaD3f\",\n COLLATERAL: \"0x68f180fcCe6836688e9084f035309E29Bf0A2095\", // WBTC\n StableModule: \"0x357CB23571EF7a3d6189b7FAcFC361eA71f7CAB5\"\n },\n [Network.ARBITRUM]: {\n OrderExecution: \"0x7e50AD6E467D9FAFC3B4BFd003247cEaA2F17e5b\",\n DelayedOrder: \"0x2326BB21B769D81E134C9b305ca156f989249fE7\", // OrderAnnouncementModule\n FlatcoinVault: \"0x29fAD9d44C550e5D8081AB35763797B39d75b858\",\n COLLATERAL: \"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f\", // WBTC\n StableModule: \"0xcD3657cB0E851b6a734c4D1e7FC2640Bcd9f6B2d\"\n }\n};\n","import { Pool } from \"../entities\";\n\nexport const getDeadline = async (pool: Pool): Promise<number> => {\n const timestamp = (await pool.signer.provider.getBlock(\"latest\")).timestamp;\n return timestamp + 60 * 20; //add 20 min\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Token, Price } from \"@uniswap/sdk-core\";\nimport {\n encodeSqrtRatioX96,\n FeeAmount,\n nearestUsableTick,\n priceToClosestTick,\n TICK_SPACINGS,\n TickMath\n} from \"@uniswap/v3-sdk\";\nimport { ethers } from \"ethers\";\nimport JSBI from \"jsbi\";\nimport { Dapp, Pool, Transaction } from \"../..\";\nimport {\n MaxUint128,\n networkChainIdMap,\n nonfungiblePositionManagerAddress\n} from \"../../config\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\nimport IVeldodromePositionManager from \"../../abi/IVelodromeNonfungiblePositionManager.json\";\nimport IRamsesPositionManager from \"../../abi/IRamsesNonfungiblePositionManager.json\";\nimport IArrakisV1RouterStaking from \"../../abi/IArrakisV1RouterStaking.json\";\nimport IPancakeMasterChef from \"../../abi/IPancakeMasterChefV3.json\";\nimport { getDeadline } from \"../../utils/deadline\";\nimport BigNumber from \"bignumber.js\";\n\nexport function tryParsePrice(\n baseToken: Token,\n quoteToken: Token,\n value: string\n): Price<Token, Token> {\n const [whole, fraction] = value.split(\".\");\n\n const decimals = fraction?.length ?? 0;\n const withoutDecimals = JSBI.BigInt((whole ?? \"\") + (fraction ?? \"\"));\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(\n JSBI.BigInt(10 ** decimals),\n JSBI.BigInt(10 ** baseToken.decimals)\n ),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals))\n );\n}\n\nexport function tryParseTick(\n baseToken: Token,\n quoteToken: Token,\n feeAmount: number,\n value: string\n): number {\n const price = tryParsePrice(baseToken, quoteToken, value);\n\n let tick: number;\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK;\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK;\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price);\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount as FeeAmount]);\n}\n\nexport async function getUniswapV3MintTxData(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp.PANCAKECL,\n\n pool: Pool,\n assetA: string,\n assetB: string,\n amountA: string | ethers.BigNumber,\n amountB: string | ethers.BigNumber,\n minPrice: number | null,\n maxPrice: number | null,\n minTick: number | null,\n maxTick: number | null,\n feeAmountOrTickSpacing: number\n): Promise<any> {\n let tickLower = 0;\n let tickUpper = 0;\n const chainId = networkChainIdMap[pool.network];\n const decimals = await Promise.all(\n [assetA, assetB].map(asset => pool.utils.getDecimals(asset))\n );\n const tokenA = new Token(chainId, assetA, decimals[0]);\n const tokenB = new Token(chainId, assetB, decimals[1]);\n const [token0, token1] = tokenA.sortsBefore(tokenB)\n ? [tokenA, tokenB]\n : [tokenB, tokenA];\n const invertPrice = !tokenA.equals(token0);\n if (minPrice && maxPrice) {\n tickLower = invertPrice\n ? tryParseTick(\n token1,\n token0,\n feeAmountOrTickSpacing,\n maxPrice.toString()\n )\n : tryParseTick(\n token0,\n token1,\n feeAmountOrTickSpacing,\n minPrice.toString()\n );\n tickUpper = invertPrice\n ? tryParseTick(\n token1,\n token0,\n feeAmountOrTickSpacing,\n minPrice.toString()\n )\n : tryParseTick(\n token0,\n token1,\n feeAmountOrTickSpacing,\n maxPrice.toString()\n );\n } else if (minTick && maxTick) {\n tickLower = minTick;\n tickUpper = maxTick;\n }\n const [amount0, amount1] = invertPrice\n ? [amountB, amountA]\n : [amountA, amountB];\n\n const mintParams = [\n token0.address,\n token1.address,\n feeAmountOrTickSpacing,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ];\n\n let iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n );\n\n if (dapp === Dapp.VELODROMECL || dapp === Dapp.AERODROMECL) {\n iNonfungiblePositionManager = new ethers.utils.Interface(\n IVeldodromePositionManager.abi\n );\n mintParams.push(0);\n }\n\n if (dapp === Dapp.RAMSESCL) {\n iNonfungiblePositionManager = new ethers.utils.Interface(\n IRamsesPositionManager\n );\n mintParams.push(0);\n }\n\n return iNonfungiblePositionManager.encodeFunctionData(Transaction.MINT, [\n mintParams\n ]);\n\n return;\n}\n\nexport async function getUniswapV3Liquidity(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp,\n tokenId: string,\n pool: Pool\n): Promise<BigNumber> {\n const iNonfungiblePositionManager = new ethers.Contract(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n nonfungiblePositionManagerAddress[pool.network][dapp]!,\n INonfungiblePositionManager.abi,\n pool.signer\n );\n const result = await iNonfungiblePositionManager.positions(tokenId);\n return new BigNumber(result.liquidity.toString());\n}\n\nexport async function getIncreaseLiquidityTxData(\n pool: Pool,\n dapp: Dapp,\n tokenId: string,\n amountA: ethers.BigNumber | string,\n amountB: ethers.BigNumber | string\n): Promise<any> {\n let txData;\n if (\n dapp === Dapp.UNISWAPV3 ||\n dapp === Dapp.VELODROMECL ||\n dapp === Dapp.AERODROMECL ||\n dapp === Dapp.RAMSESCL ||\n dapp === Dapp.PANCAKECL\n ) {\n const abi = new ethers.utils.Interface(INonfungiblePositionManager.abi);\n txData = abi.encodeFunctionData(Transaction.INCREASE_LIQUIDITY, [\n [tokenId, amountA, amountB, 0, 0, await getDeadline(pool)]\n ]);\n } else if (dapp === Dapp.ARRAKIS) {\n const abi = new ethers.utils.Interface(IArrakisV1RouterStaking.abi);\n txData = abi.encodeFunctionData(Transaction.ADD_LIQUIDITY_STAKE, [\n tokenId,\n amountA,\n amountB,\n 0,\n 0,\n 0,\n pool.address\n ]);\n } else {\n throw new Error(\"dapp not supported\");\n }\n\n return txData;\n}\n\nexport async function getDecreaseLiquidityTxData(\n pool: Pool,\n dapp: Dapp,\n tokenId: string,\n amount = 100,\n isStaked: boolean\n): Promise<any> {\n let txData;\n if (\n dapp === Dapp.UNISWAPV3 ||\n dapp === Dapp.VELODROMECL ||\n dapp === Dapp.AERODROMECL ||\n dapp === Dapp.RAMSESCL ||\n dapp === Dapp.PANCAKECL\n ) {\n const abi = new ethers.utils.Interface(INonfungiblePositionManager.abi);\n const liquidity = (await getUniswapV3Liquidity(dapp, tokenId, pool))\n .times(amount)\n .div(100);\n\n const decreaseLiquidityTxData = abi.encodeFunctionData(\n Transaction.DECREASE_LIQUIDITY,\n [[tokenId, liquidity.toFixed(0), 0, 0, await getDeadline(pool)]]\n );\n const collectTxData = abi.encodeFunctionData(Transaction.COLLECT, [\n [tokenId, pool.address, MaxUint128, MaxUint128]\n ]);\n\n const multicallParams = [decreaseLiquidityTxData, collectTxData];\n\n if (isStaked && dapp === Dapp.PANCAKECL) {\n const abi = new ethers.utils.Interface(IPancakeMasterChef);\n const harvestTxData = abi.encodeFunctionData(Transaction.HARVEST, [\n tokenId,\n pool.address\n ]);\n multicallParams.unshift(harvestTxData);\n }\n\n if (amount === 100) {\n const burnTxData = abi.encodeFunctionData(Transaction.BURN, [tokenId]);\n multicallParams.push(burnTxData);\n }\n txData = abi.encodeFunctionData(Transaction.MULTI_CALL, [multicallParams]);\n } else if (dapp === Dapp.ARRAKIS) {\n const abi = new ethers.utils.Interface(IArrakisV1RouterStaking.abi);\n const liquidity = new BigNumber(\n (await pool.utils.getBalance(tokenId, pool.address)).toString()\n )\n .times(amount)\n .div(100);\n txData = abi.encodeFunctionData(Transaction.REMOVE_LIQUIDITY_UNSTAKE, [\n tokenId,\n liquidity,\n 0,\n 0,\n pool.address\n ]);\n } else {\n throw new Error(\"dapp not supported\");\n }\n return txData;\n}\n","import { ethers } from \"ethers\";\nimport { Pool } from \"../..\";\n\nimport IUniswapV3Router from \"../../abi/IUniswapV3Router.json\";\nimport IUniswapV3Quoter from \"../../abi/IUniswapV3Quoter.json\";\nimport { UNISWAPV3_QUOTER_ADDRESS } from \"../../config\";\n\nexport async function getUniswapV3SwapTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amountIn: string | ethers.BigNumber,\n slippage: number,\n feeAmount: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const quoterContract = new ethers.Contract(\n UNISWAPV3_QUOTER_ADDRESS,\n IUniswapV3Quoter.abi,\n pool.signer\n );\n\n const quotedAmountOut: ethers.BigNumber = await quoterContract.callStatic.quoteExactInputSingle(\n assetA,\n assetB,\n feeAmount,\n amountIn.toString(),\n 0\n );\n\n const minAmountOut = quotedAmountOut.mul((100 - slippage) * 100).div(10000);\n\n const iUniswapV3Router = new ethers.utils.Interface(IUniswapV3Router.abi);\n const swapTx = iUniswapV3Router.encodeFunctionData(\"exactInputSingle\", [\n [\n assetA,\n assetB,\n feeAmount,\n pool.address,\n amountIn.toString(),\n minAmountOut.toString(),\n 0\n ]\n ]);\n return swapTx;\n}\n","import { Dhedge, Pool } from \"../..\";\n\nexport async function loadPool(pool: Pool, poolAddress: string): Promise<Pool> {\n const dhedge = new Dhedge(pool.signer, pool.network);\n return await dhedge.loadPool(poolAddress);\n}\n\nexport async function isPool(\n pool: Pool,\n poolAddress: string\n): Promise<boolean> {\n const dhedge = new Dhedge(pool.signer, pool.network);\n return await dhedge.validatePool(poolAddress);\n}\n","export async function retry<T>({\n fn,\n maxRetries = 3,\n delayMs = 1000\n}: {\n fn: () => Promise<T>;\n maxRetries?: number;\n delayMs?: number;\n}): Promise<T> {\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n if (attempt === maxRetries) {\n throw new Error(`Retry failed after ${maxRetries} attempts: ${err}`);\n }\n\n console.warn(\n `Retry ${attempt}/${maxRetries} failed, retrying in ${delayMs}ms`,\n err\n );\n await new Promise(res => setTimeout(res, delayMs));\n }\n }\n\n // Should never reach here\n throw new Error(\"Unexpected retry failure\");\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap } from \"../../config\";\nimport { Pool } from \"../../entities\";\n\nexport const odosBaseUrl = \"https://api.odos.xyz/sor\";\n\nexport async function getOdosSwapTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string }> {\n let referralCode = 0; // Defaults to 0 for unregistered activity.\n if (\n process.env.ODOS_REFERAL_CODE &&\n Number(process.env.ODOS_REFERAL_CODE) > 0\n ) {\n referralCode = Number(process.env.ODOS_REFERAL_CODE);\n }\n const quoteParams = {\n chainId: networkChainIdMap[pool.network],\n inputTokens: [\n {\n tokenAddress: assetFrom,\n amount: amountIn.toString()\n }\n ],\n outputTokens: [\n {\n tokenAddress: assetTo,\n proportion: 1\n }\n ],\n slippageLimitPercent: slippage,\n userAddr: pool.address,\n referralCode\n };\n try {\n const quoteResult = await axios.post(\n `${odosBaseUrl}/quote/v2`,\n quoteParams\n );\n\n const assembleParams = {\n pathId: quoteResult.data.pathId,\n userAddr: pool.address\n };\n\n const assembleResult = await axios.post(\n `${odosBaseUrl}/assemble`,\n assembleParams\n );\n return {\n swapTxData: assembleResult.data.transaction.data,\n minAmountOut: assembleResult.data.outputTokens[0].amount\n };\n } catch (e) {\n console.error(\"Error in Odos API request:\", e);\n throw new ApiError(\"Swap api request of Odos failed\");\n }\n}\n","import axios from \"axios\";\nimport BigNumber from \"bignumber.js\";\nimport { odosBaseUrl } from \"../odos\";\n\nexport const SWAPPER_ADDERSS = \"0x4F754e0F0924afD74980886b0B479Fa1D7C58D0D\";\n\nexport interface SwapParams {\n srcAsset: string; // Source asset address\n srcAmount: string; // Amount to swap (use string for big numbers)\n dstAsset: string; // Destination asset address\n chainId: number; // Chain ID\n from: string; // Sender address\n receiver: string; // Receiver address\n slippage: number; // Slippage tolerance in basis points (100 = 1%)\n}\n\nexport const getSwapDataViaOdos = async ({\n srcAsset,\n srcAmount,\n dstAsset,\n chainId,\n from,\n slippage\n}: SwapParams): Promise<string> => {\n let referralCode = 0; // Defaults to 0 for unregistered activity.\n if (\n process.env.ODOS_REFERAL_CODE &&\n Number(process.env.ODOS_REFERAL_CODE) > 0\n ) {\n referralCode = Number(process.env.ODOS_REFERAL_CODE);\n }\n const quoteParams = {\n chainId: chainId,\n inputTokens: [\n {\n tokenAddress: srcAsset,\n amount: srcAmount\n }\n ],\n outputTokens: [\n {\n tokenAddress: dstAsset,\n proportion: 1\n }\n ],\n slippageLimitPercent: new BigNumber(slippage).div(100).toString(), // Convert basis points to percentage\n userAddr: from,\n referralCode\n };\n try {\n const quoteResult = await axios.post(\n `${odosBaseUrl}/quote/v2`,\n quoteParams\n );\n\n const assembleParams = {\n pathId: quoteResult.data.pathId,\n userAddr: from\n };\n\n const assembleResult = await axios.post(\n `${odosBaseUrl}/assemble`,\n assembleParams\n );\n return assembleResult.data.transaction.data;\n } catch (e) {\n console.error(\"Error in Odos API request:\", e);\n throw new Error(\"Swap api request of Odos failed\");\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Dapp, ethers, Pool } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport { retry } from \"./retry\";\nimport AaveLendingPoolAssetGuardAbi from \"../../abi/IAaveLendingPoolAssetGuard.json\";\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport { loadPool } from \"./pool\";\nimport { getSwapDataViaOdos, SWAPPER_ADDERSS } from \"./swapData\";\nconst AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE = 150; // 1.5% slippage for onchain swap in Aave withdrawal\n\nconst getCalculateSwapDataParams = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number\n): Promise<{\n offchainSwapNeeded: boolean;\n swapDataParams: any;\n}> => {\n const aaveAssetGuardAddress = await pool.factory.getAssetGuard(\n routerAddress[pool.network][Dapp.AAVEV3] as string\n );\n\n const aaveAssetGuard = new ethers.Contract(\n aaveAssetGuardAddress,\n AaveLendingPoolAssetGuardAbi,\n pool.signer\n );\n const swapDataParams = await aaveAssetGuard.callStatic.calculateSwapDataParams(\n torosAsset,\n amountIn,\n slippage\n );\n\n return {\n offchainSwapNeeded: swapDataParams.srcData.length !== 0,\n swapDataParams\n };\n};\n\nconst getAaveAssetWithdrawData = async (\n pool: Pool,\n swapDataParams: any,\n slippage: number\n) => {\n const { srcData, dstData } = swapDataParams;\n\n const srcDataToEncode: unknown[] = [];\n const routerKey = ethers.utils.formatBytes32String(\"ODOS_V2\");\n for (const { asset, amount } of srcData) {\n const swapData = await retry({\n fn: () => {\n return getSwapDataViaOdos({\n srcAsset: asset,\n srcAmount: amount.toString(),\n dstAsset: dstData.asset,\n chainId: networkChainIdMap[pool.network],\n from: SWAPPER_ADDERSS,\n receiver: SWAPPER_ADDERSS,\n slippage\n });\n },\n delayMs: 1500,\n maxRetries: 7\n });\n srcDataToEncode.push([asset, amount, [routerKey, swapData]]);\n }\n const coder = ethers.utils.defaultAbiCoder;\n\n const encodedSrcData = coder.encode(\n [\"tuple(address, uint256, tuple(bytes32, bytes))[]\"],\n [srcDataToEncode]\n );\n const withdrawData = coder.encode(\n [\"tuple(bytes, tuple(address, uint256), uint256)\"],\n [[encodedSrcData, [dstData.asset, dstData.amount], slippage]]\n );\n\n return withdrawData;\n};\n\nexport const createWithdrawTxArguments = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<any> => {\n const torosPool = await loadPool(pool, torosAsset);\n const supportedAssets: {\n asset: string;\n }[] = await torosPool.managerLogic.getSupportedAssets();\n\n if (useOnChainSwap) {\n return supportedAssets.map(assetObj => {\n return {\n supportedAsset: assetObj.asset,\n withdrawData: \"0x\",\n slippageTolerance: AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE\n };\n });\n }\n\n // for off-chain swap\n const aaveLendingPoolAddress = routerAddress[pool.network][\n Dapp.AAVEV3\n ] as string;\n return Promise.all(\n supportedAssets.map(async assetObj => {\n if (\n assetObj.asset.toLowerCase() === aaveLendingPoolAddress.toLowerCase()\n ) {\n const {\n offchainSwapNeeded,\n swapDataParams\n } = await getCalculateSwapDataParams(\n pool,\n torosAsset,\n amountIn,\n slippage\n );\n if (offchainSwapNeeded) {\n const withdrawData = await getAaveAssetWithdrawData(\n pool,\n swapDataParams,\n slippage\n );\n\n return {\n supportedAsset: assetObj.asset,\n withdrawData,\n slippageTolerance: slippage\n };\n }\n }\n\n return {\n supportedAsset: assetObj.asset,\n withdrawData: \"0x\",\n slippageTolerance: slippage\n };\n })\n );\n};\n\nexport const getInitWithdrawalTxData = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<string> => {\n const complexAssetsData = await createWithdrawTxArguments(\n pool,\n torosAsset,\n amountIn,\n slippage,\n useOnChainSwap\n );\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n return iEasySwapperV2.encodeFunctionData(\"initWithdrawal\", [\n torosAsset,\n amountIn,\n complexAssetsData\n ]);\n};\n","import { ethers } from \"ethers\";\nimport { Dapp, Pool } from \"../..\";\n\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport { routerAddress } from \"../../config\";\n\nimport { isPool, loadPool } from \"./pool\";\n\nimport { getInitWithdrawalTxData } from \"./initWithdrawal\";\n\nexport const LOW_USD_VALUE_FOR_WITHDRAWAL = 1; // 1 USD minimum value for withdrawal\nexport const SLIPPAGE_FOR_LOW_VALUE_SWAP = 500;\n\nexport async function getPoolDepositAsset(\n pool: Pool,\n poolAddress: string,\n investAsset: string\n): Promise<string | undefined> {\n const torosPool = await loadPool(pool, poolAddress);\n const composition = await torosPool.getComposition();\n if (\n composition.find(e => e.asset.toLowerCase() === investAsset.toLowerCase())\n ?.isDeposit\n )\n return investAsset;\n return composition.find(e => e.isDeposit)?.asset;\n}\n\nexport async function getTorosPoolTokenPrice(\n pool: Pool,\n poolAddress: string\n): Promise<ethers.BigNumber> {\n const torosPool = await loadPool(pool, poolAddress);\n return await torosPool.poolLogic.tokenPrice();\n}\n\nexport async function getEasySwapperDepositQuote(\n pool: Pool,\n torosAsset: string,\n investAsset: string,\n amountIn: ethers.BigNumber\n): Promise<ethers.BigNumber> {\n const easySwapper = new ethers.Contract(\n routerAddress[pool.network][Dapp.TOROS] as string,\n IEasySwapperV2,\n pool.signer\n );\n\n return await easySwapper.depositQuote(torosAsset, investAsset, amountIn);\n}\n\nexport async function getEasySwapperTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber,\n slippage: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const isWithdrawal = await isPool(pool, assetFrom);\n const [torosAsset, investAsset] = isWithdrawal\n ? [assetFrom, assetTo]\n : [assetTo, assetFrom];\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n if (isWithdrawal) {\n return getInitWithdrawalTxData(\n pool,\n torosAsset,\n amountIn.toString(),\n slippage * 100,\n false\n );\n } else {\n const depositAsset = await getPoolDepositAsset(\n pool,\n torosAsset,\n investAsset\n );\n if (!depositAsset) throw new Error(\"no deposit assets\");\n if (depositAsset.toLowerCase() !== investAsset.toLowerCase())\n throw new Error(\"can only trade deposit asset\");\n const minAmountOut = await getEasySwapperDepositQuote(\n pool,\n torosAsset,\n investAsset,\n amountIn\n );\n return iEasySwapperV2.encodeFunctionData(\"depositWithCustomCooldown\", [\n torosAsset,\n depositAsset,\n amountIn,\n minAmountOut.mul(10000 - slippage * 100).div(10000)\n ]);\n }\n}\n","import { Dapp, ethers, Pool } from \"../..\";\n\nimport ILendingPool from \"../../abi/ILendingPool.json\";\nimport ILendingPoolV3 from \"../../abi/IAaveV3LendingPool.json\";\nimport { routerAddress } from \"../../config\";\n\nexport async function getAaveAssetsForUnderlying(\n pool: Pool,\n dapp: Dapp,\n assets: string[]\n): Promise<string[]> {\n const iLendingPool = dapp === Dapp.AAVEV3 ? ILendingPoolV3 : ILendingPool;\n const lendingPool = new ethers.Contract(\n routerAddress[pool.network][dapp] as string,\n iLendingPool.abi,\n pool.signer\n );\n\n const reserveData = await Promise.all(\n assets.map(e => lendingPool.getReserveData(e))\n );\n\n const aTokens = reserveData.map(e => e.aTokenAddress);\n const debtTokens = reserveData.map(e => e.variableDebtTokenAddress);\n return aTokens.concat(debtTokens);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport { Dapp } from \"../../types\";\nimport IAaveV3Incentives from \"../../abi/IAaveV3Incentives.json\";\nimport { Pool } from \"../..\";\nimport { getAaveAssetsForUnderlying } from \"./assets\";\n\nexport async function getAaveV3ClaimTxData(\n pool: Pool,\n assets: string[],\n rewardAsset: string\n): Promise<any> {\n const iAaveIncentives = new ethers.utils.Interface(IAaveV3Incentives.abi);\n const aaveAsset = await getAaveAssetsForUnderlying(pool, Dapp.AAVEV3, assets);\n\n const claimTxData = iAaveIncentives.encodeFunctionData(\"claimRewards\", [\n aaveAsset,\n ethers.constants.MaxUint256,\n pool.address,\n rewardAsset\n ]);\n return claimTxData;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport IVelodromeRouter from \"../../abi/IVeldodromeRouter.json\";\nimport { Pool } from \"../../entities\";\nimport { Dapp, Transaction } from \"../../types\";\nimport { getDeadline } from \"../../utils/deadline\";\nimport { nonfungiblePositionManagerAddress } from \"../../config\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\n\nexport async function getVelodromeAddLiquidityTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amountA: ethers.BigNumber | string,\n amountB: ethers.BigNumber | string,\n isStable: boolean\n): Promise<any> {\n const iVelodromeRouter = new ethers.utils.Interface(IVelodromeRouter.abi);\n return iVelodromeRouter.encodeFunctionData(Transaction.ADD_LIQUIDITY, [\n assetA,\n assetB,\n isStable,\n amountA,\n amountB,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ]);\n}\n\nexport async function getVelodromeRemoveLiquidityTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amount: ethers.BigNumber | string,\n isStable: boolean\n): Promise<any> {\n const iVelodromeRouter = new ethers.utils.Interface(IVelodromeRouter.abi);\n return iVelodromeRouter.encodeFunctionData(Transaction.REMOVE_LIQUIDITY, [\n assetA,\n assetB,\n isStable,\n amount,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ]);\n}\n\nexport async function getClOwner(\n pool: Pool,\n dapp: Dapp.VELODROMECL | Dapp.AERODROMECL | Dapp.PANCAKECL,\n tokenId: string\n): Promise<string> {\n const iNonfungiblePositionManager = new ethers.Contract(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n nonfungiblePositionManagerAddress[pool.network][dapp]!,\n INonfungiblePositionManager.abi,\n pool.signer\n );\n return await iNonfungiblePositionManager.ownerOf(tokenId);\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport set from \"lodash/set\";\nimport { Interface } from \"@ethersproject/abi\";\nimport { multiCallAddress } from \"../config\";\nimport { ethers, Network, Pool, SDKOptions } from \"..\";\nimport { Signer } from \"ethers\";\n\nexport async function call(\n provider: ethers.Signer,\n abi: any[],\n call: any[],\n options?: any\n) {\n const contract = new ethers.Contract(call[0], abi, provider);\n try {\n const params = call[2] || [];\n return await contract[call[1]](...params, options || {});\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport async function multicall<T>(\n network: Network,\n provider: ethers.Signer,\n abi: any[],\n calls: any[],\n options: any = {},\n requireSuccess = false\n): Promise<(T | null)[]> {\n const multi = new ethers.Contract(\n multiCallAddress[network],\n [\n \"function tryAggregate(bool requireSuccess, tuple(address, bytes)[] memory calls) public view returns (tuple(bool, bytes)[] memory returnData)\"\n ],\n provider\n );\n const itf = new Interface(abi);\n try {\n const res: [boolean, string][] = await multi.tryAggregate(\n // if false, allows individual calls to fail without causing entire multicall to fail\n requireSuccess,\n calls.map(call => [\n call[0].toLowerCase(),\n itf.encodeFunctionData(call[1], call[2])\n ]),\n options\n );\n\n return res.map(([success, returnData], i) => {\n if (!success) return null;\n const decodedResult = itf.decodeFunctionResult(calls[i][1], returnData);\n // Automatically unwrap any simple return values\n return decodedResult.length > 1 ? decodedResult : decodedResult[0];\n });\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport class Multicaller {\n public network: Network;\n public provider: ethers.Signer;\n public abi: any[];\n public options: any = {};\n public calls: any[] = [];\n public paths: any[] = [];\n\n constructor(network: Network, provider: ethers.Signer, abi: any[]) {\n this.network = network;\n this.provider = provider;\n this.abi = abi;\n }\n\n call(path: any, address: any, fn: any, params?: any): Multicaller {\n this.calls.push([address, fn, params]);\n this.paths.push(path);\n return this;\n }\n\n async execute(from?: any): Promise<any> {\n const obj = from || {};\n const result = await multicall(\n this.network,\n this.provider,\n this.abi,\n this.calls,\n this.options\n );\n result.forEach((r, i) => set(obj, this.paths[i], r));\n this.calls = [];\n this.paths = [];\n return obj;\n }\n}\n\nconst getGasEstimateData = async (\n pool: Pool,\n estimateFunc: ethers.ContractFunction<ethers.BigNumber>,\n txInfoData: { to: string; txData: string; minAmountOut: any },\n txOptions: any = {},\n sdkOptions: SDKOptions\n) => {\n let gas = null;\n let gasEstimationError = null;\n try {\n if (\n !pool.isDhedge ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.useTraderAddressAsFrom)\n ) {\n // for pool.signer.estimateGas\n gas = await (estimateFunc as Signer[\"estimateGas\"])({\n to: txInfoData.to,\n data: txInfoData.txData,\n ...txOptions\n });\n } else {\n // for pool.poolLogic.estimateGas.execTransaction\n gas = await estimateFunc(txInfoData.to, txInfoData.txData, txOptions);\n }\n } catch (e) {\n gasEstimationError = e;\n }\n return {\n gas,\n gasEstimationError,\n ...txInfoData\n };\n};\n\nexport const isSdkOptionsBoolean = (\n sdkOptions: SDKOptions\n): sdkOptions is boolean => {\n return typeof sdkOptions === \"boolean\";\n};\n\nexport const getPoolTxOrGasEstimate = async (\n pool: Pool,\n args: any[],\n sdkOptions: SDKOptions\n): Promise<any> => {\n const txInfoData = {\n txData: args[1],\n to: args[0],\n minAmountOut: args[3] || null\n };\n\n if (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.onlyGetTxData) {\n return txInfoData;\n }\n\n const txOptions = args[2];\n\n if (\n !pool.isDhedge ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.useTraderAddressAsFrom)\n ) {\n if (\n sdkOptions === true ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.estimateGas)\n ) {\n return await getGasEstimateData(\n pool,\n pool.signer.estimateGas.bind(pool.signer),\n txInfoData,\n txOptions,\n sdkOptions\n );\n } else {\n return await pool.signer.sendTransaction({\n to: txInfoData.to,\n data: txInfoData.txData,\n ...txOptions\n });\n }\n } else {\n if (\n sdkOptions === true ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.estimateGas)\n ) {\n return await getGasEstimateData(\n pool,\n pool.poolLogic.estimateGas.execTransaction,\n txInfoData,\n txOptions,\n sdkOptions\n );\n } else {\n return await pool.poolLogic.execTransaction(\n txInfoData.to,\n txInfoData.txData,\n txOptions\n );\n }\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport IVelodromeGaugeV1 from \"../../abi/IVelodromeGauge.json\";\nimport IVelodromeGaugeV2 from \"../../abi/IVelodromeGaugeV2.json\";\nimport IVelodromeCLGauge from \"../../abi/IVelodromeCLGauge.json\";\nimport { Pool } from \"../../entities\";\nimport { call } from \"../../utils/contract\";\nconst iVelodromeGaugeV1 = new ethers.utils.Interface(IVelodromeGaugeV1.abi);\nconst iVelodromeGaugeV2 = new ethers.utils.Interface(IVelodromeGaugeV2.abi);\n\nexport function getVelodromeStakeTxData(\n amount: BigNumber | string,\n v2: boolean\n): any {\n const depositParams: [string, unknown[]] = v2\n ? [\"deposit(uint256)\", [amount]]\n : [\"deposit\", [amount, 0]];\n const iVelodromeGauge = v2 ? iVelodromeGaugeV2 : iVelodromeGaugeV1;\n return iVelodromeGauge.encodeFunctionData(...depositParams);\n}\n\nexport async function getVelodromeClaimTxData(\n pool: Pool,\n gauge: string,\n v2: boolean\n): Promise<any> {\n if (v2) {\n return iVelodromeGaugeV2.encodeFunctionData(\"getReward\", [pool.address]);\n } else {\n const rewardAssetCount = await call(pool.signer, IVelodromeGaugeV1.abi, [\n gauge,\n \"rewardsListLength\",\n []\n ]);\n const rewardAssets = await Promise.all(\n Array.from(Array(rewardAssetCount.toNumber()).keys()).map(e =>\n call(pool.signer, IVelodromeGaugeV1.abi, [gauge, \"rewards\", [e]])\n )\n );\n return iVelodromeGaugeV1.encodeFunctionData(\"getReward\", [\n pool.address,\n rewardAssets\n ]);\n }\n}\n\nexport async function getVelodromeCLClaimTxData(tokenId: string): Promise<any> {\n const iVelodromeCLGauge = new ethers.utils.Interface(IVelodromeCLGauge.abi);\n return iVelodromeCLGauge.encodeFunctionData(\"getReward(uint256)\", [tokenId]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers, LyraOptionMarket, Network } from \"../..\";\nimport { lyraNetworkMap } from \"../../config\";\nimport Lyra, { Board, Strike } from \"@lyrafinance/lyra-js\";\n\nexport async function getBoard(\n network: Network,\n market: LyraOptionMarket,\n expiry: number\n): Promise<Board> {\n const lyra = new Lyra(lyraNetworkMap[network]);\n const optionMarket = await lyra.market(market);\n const filteredBoards = optionMarket\n .liveBoards()\n .filter(e => e.expiryTimestamp === expiry);\n if (filteredBoards.length === 0) throw new Error(\"no lyra board for expiry\");\n return filteredBoards[0];\n}\n\nexport async function getExpiries(\n network: Network,\n market: LyraOptionMarket\n): Promise<number[]> {\n const lyra = new Lyra(lyraNetworkMap[network]);\n const optionMarket = await lyra.market(market);\n return optionMarket.liveBoards().map(e => e.expiryTimestamp);\n}\n\nexport async function getStrikes(\n network: Network,\n market: LyraOptionMarket,\n expiry: number\n): Promise<Strike[]> {\n return (await getBoard(network, market, expiry)).strikes();\n}\n\nexport async function getStrike(\n network: Network,\n market: LyraOptionMarket,\n expiry: number,\n strike: number\n): Promise<Strike> {\n const strikes = await getStrikes(network, market, expiry);\n const filteredStrike = strikes.filter(\n (e: Strike) =>\n parseFloat(ethers.utils.formatEther(e.strikePrice)) === strike\n );\n if (filteredStrike.length === 0)\n throw new Error(\"no option found for strike price\");\n\n return filteredStrike[0];\n}\n","export function getLyraTradeOptionType(\n isCall: boolean,\n isLong: boolean,\n isCoveredCall: boolean\n): number {\n if (isCall) {\n return isLong ? 0 : isCoveredCall ? 2 : 3;\n } else {\n return isLong ? 1 : 4;\n }\n}\n\nexport function isCall(optionType: number): boolean {\n return [0, 2, 3].includes(optionType);\n}\n\nexport function isLong(optionType: number): boolean {\n return optionType === 0 || optionType === 1;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers, LyraOptionMarket, LyraPosition, Pool } from \"../..\";\nimport Lyra from \"@lyrafinance/lyra-js\";\nimport IOptionToken from \"../../abi/IOptionToken.json\";\n\nexport async function getOptionPositions(\n pool: Pool,\n market: LyraOptionMarket\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<LyraPosition[]> {\n const lyra = new Lyra();\n const optionMarket = await lyra.market(market);\n const iOptionToken = new ethers.Contract(\n optionMarket.__marketData.marketAddresses.optionToken,\n IOptionToken.abi,\n pool.signer\n );\n return await iOptionToken.getOwnerPositions(pool.address);\n}\n","import { Quote, Strike } from \"@lyrafinance/lyra-js\";\nimport { ethers } from \"ethers\";\nimport { LyraOptionType, LyraTradeType } from \"../../types\";\n\nexport async function getQuote(\n strike: Strike,\n type: LyraOptionType,\n tradeType: LyraTradeType,\n amount: ethers.BigNumber\n): Promise<Quote> {\n return await strike.quote(type === \"call\", tradeType === \"buy\", amount);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport { Pool } from \"../..\";\nimport { LyraOptionMarket, LyraOptionType, LyraTradeType } from \"../../types\";\nimport { getStrike } from \"./markets\";\nimport IOptionMarketWrapper from \"../../abi/IOptionMarketWrapper.json\";\nimport { getLyraTradeOptionType, isCall, isLong } from \"./tradeOptionType\";\nimport { getOptionPositions } from \"./positions\";\nimport { getQuote } from \"./quote\";\n\nexport async function getLyraOptionTxData(\n pool: Pool,\n market: LyraOptionMarket,\n optionType: LyraOptionType,\n expiry: number,\n strikePrice: number,\n tradeType: LyraTradeType,\n optionAmount: BigNumber | string,\n assetIn: string,\n collateralAmount: BigNumber,\n isCoveredCall: boolean\n): Promise<string> {\n const strike = await getStrike(pool.network, market, expiry, strikePrice);\n const strikeId = strike.id;\n\n const positions = await getOptionPositions(pool, market);\n const filteredPosition = positions.filter(\n e =>\n e.strikeId.toNumber() === strikeId &&\n isCall(e.optionType) === (optionType === \"call\") &&\n e.state === 1\n );\n const positionId =\n filteredPosition.length > 0 ? filteredPosition[0].positionId : 0;\n\n let lyraOptionType = getLyraTradeOptionType(\n optionType === \"call\",\n tradeType === \"buy\",\n isCoveredCall\n );\n\n const amountIn = BigNumber.from(optionAmount);\n const quote = await getQuote(strike, optionType, tradeType, amountIn);\n const netPremiun =\n tradeType === \"buy\"\n ? quote.premium.add(quote.fee)\n : quote.premium.sub(quote.fee);\n\n let txFunction = \"openPosition\";\n let inputAmount = tradeType === \"buy\" ? netPremiun : collateralAmount;\n let currentCollateral = BigNumber.from(0);\n let setCollateral = collateralAmount;\n if (filteredPosition.length > 0) {\n currentCollateral = filteredPosition[0].collateral ?? BigNumber.from(0);\n setCollateral = currentCollateral.add(collateralAmount);\n if (\n //sell long positions\n (tradeType === \"sell\" && isLong(filteredPosition[0].optionType)) ||\n //cover short positions\n (tradeType === \"buy\" && !isLong(filteredPosition[0].optionType))\n ) {\n lyraOptionType = filteredPosition[0].optionType;\n txFunction = \"closePosition\";\n setCollateral = currentCollateral.sub(collateralAmount);\n //cover short\n if (!isLong(filteredPosition[0].optionType) && isCoveredCall) {\n inputAmount = netPremiun;\n } else {\n inputAmount = BigNumber.from(0);\n }\n }\n }\n\n const iOptionMarketWrapper = new ethers.utils.Interface(\n IOptionMarketWrapper.abi\n );\n\n const tradeTx = iOptionMarketWrapper.encodeFunctionData(txFunction, [\n [\n strike.market().contractAddresses.optionMarket,\n strikeId, // strike Id\n positionId, // position Id\n 1, // iteration\n setCollateral, // set collateral to\n currentCollateral, // current collateral\n lyraOptionType, // optionType\n amountIn, // amount\n tradeType === \"sell\" ? netPremiun : 0, // min cost\n tradeType === \"buy\" ? netPremiun : ethers.constants.MaxUint256, // max cost\n inputAmount,\n assetIn // input asset\n ]\n ]);\n return tradeTx;\n}\n","import { ethers } from \"../..\";\nimport ISynthetixFuturesMarketV2 from \"../../abi/ISynthetixFuturesMarketV2.json\";\n\nexport function getFuturesChangeMarginTxData(\n amount: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"transferMargin\", [amount]);\n}\n","export const FUTURES_TRACKING = \"DHEDGE\";\n","import { Pool, ethers } from \"../..\";\nimport { FUTURES_TRACKING } from \"./constants\";\nimport ISynthetixFuturesMarketV2 from \"../../abi/ISynthetixFuturesMarketV2.json\";\n\nexport async function getFuturesChangePositionTxData(\n amount: ethers.BigNumber | string,\n market: string,\n pool: Pool\n): Promise<string> {\n const futuresMarket = new ethers.Contract(\n market,\n ISynthetixFuturesMarketV2.abi,\n pool.signer\n );\n const fillPrice = await futuresMarket.fillPrice(amount);\n //Allows for +-0.5% price movements on the desired fill price\n const adjustmentFactor = ethers.BigNumber.from(amount).lt(0) ? 995 : 1005;\n const desiredFillPrice = fillPrice.price.mul(adjustmentFactor).div(1000);\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"submitOffchainDelayedOrderWithTracking\", [\n amount,\n desiredFillPrice,\n ethers.utils.formatBytes32String(FUTURES_TRACKING)\n ]);\n}\n\nexport async function getFuturesCancelOrderTxData(pool: Pool): Promise<string> {\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"cancelOffchainDelayedOrder\", [pool.address]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport { Pool } from \"../../entities\";\n\nconst oneInchBaseUrl = \"https://api.1inch.dev/swap/v6.0/\";\n\nexport async function getOneInchSwapTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number,\n forEasySwapper = false\n): Promise<{ swapTxData: string; dstAmount: string }> {\n if (!process.env.ONEINCH_API_KEY)\n throw new Error(\"ONEINCH_API_KEY not configured in .env file\");\n\n const chainId = networkChainIdMap[pool.network];\n const apiUrl = `${oneInchBaseUrl}${chainId}/swap`;\n const params = {\n src: assetFrom,\n dst: assetTo,\n amount: amountIn.toString(),\n from: forEasySwapper ? routerAddress[pool.network].toros : pool.address,\n receiver: forEasySwapper ? routerAddress[pool.network].toros : pool.address,\n slippage: slippage,\n disableEstimate: true,\n usePermit2: false\n };\n try {\n const response = await axios.get(apiUrl, {\n headers: {\n Authorization: `Bearer ${process.env.ONEINCH_API_KEY}`\n },\n params\n });\n const swapTxData = response.data.tx.data;\n const dstAmount = response.data.dstAmount;\n return { swapTxData, dstAmount };\n } catch (e) {\n throw new ApiError(\"Swap api request of 1inch failed\");\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport IXRam from \"../../abi/IXRam.json\";\nimport IRamsesNonfungiblePositionManager from \"../../abi/IRamsesNonfungiblePositionManager.json\";\n\nconst iXRam = new ethers.utils.Interface(IXRam.abi);\nconst iRamsesNonfungiblePositionManager = new ethers.utils.Interface(\n IRamsesNonfungiblePositionManager\n);\n\nexport function getCreateVestTxData(amount: BigNumber | string): string {\n return iXRam.encodeFunctionData(\"createVest\", [amount]);\n}\n\nexport function getExitVestTxData(vestId: number): string {\n return iXRam.encodeFunctionData(\"exitVest\", [vestId, false]);\n}\n\nexport function getRewardsTxDta(tokenId: string, rewards: string[]): string {\n return iRamsesNonfungiblePositionManager.encodeFunctionData(\"getReward\", [\n tokenId,\n rewards\n ]);\n}\n","import { BigNumber, Contract } from \"ethers\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport { Pool } from \"../../entities\";\nimport StableModuleAbi from \"../../abi/flatmoney/StableModule.json\";\n\nconst getStableModuleContract = (pool: Pool): Contract => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getStableModuleContract: network of ${pool.network} not supported`\n );\n }\n const stableModuleContract = new Contract(\n flatMoneyContracts.StableModule,\n StableModuleAbi,\n pool.signer\n );\n return stableModuleContract;\n};\n\n/// @notice Quoter function for getting the stable deposit amount out.\nexport const getStableDepositQuote = async (\n pool: Pool,\n depositAmount: string | BigNumber\n): Promise<BigNumber> => {\n const stableModuleContract = getStableModuleContract(pool);\n const amountOut: BigNumber = await stableModuleContract.stableDepositQuote(\n depositAmount.toString()\n );\n return amountOut;\n};\n\n/// @notice Quoter function for getting the stable withdraw amount out.\nexport const getStableWithdrawQuote = async (\n pool: Pool,\n withdrawAmount: string | BigNumber\n): Promise<BigNumber> => {\n const stableModuleContract = getStableModuleContract(pool);\n const amountOut: BigNumber = await stableModuleContract.stableWithdrawQuote(\n withdrawAmount.toString()\n );\n return amountOut;\n};\n","import { Contract, ethers } from \"ethers\";\nimport { Pool } from \"../../entities\";\nimport IFlatcoinVaultAbi from \"../../abi/flatmoney/IFlatcoinVault.json\";\nimport KeeperFeeAbi from \"../../abi/flatmoney/KeeperFee.json\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport BigNumber from \"bignumber.js\";\nimport { JsonRpcProvider } from \"@ethersproject/providers\";\n\nexport const getKeeperFeeContract = async (pool: Pool): Promise<Contract> => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getStableModuleContract: network of ${pool.network} not supported`\n );\n }\n const flatcoinVaultContract = new Contract(\n flatMoneyContracts.FlatcoinVault,\n IFlatcoinVaultAbi,\n pool.signer\n );\n const key = ethers.utils.formatBytes32String(\"keeperFee\");\n const keeperFeeContractAddress: string = await flatcoinVaultContract.callStatic.moduleAddress(\n key\n );\n\n const keeperFeeContract = new ethers.Contract(\n keeperFeeContractAddress,\n KeeperFeeAbi,\n pool.signer\n );\n return keeperFeeContract;\n};\n\nexport const getKeeperFee = async (\n pool: Pool,\n maxKeeperFeeInUsd: number | null\n): Promise<ethers.BigNumber> => {\n const keeperFeeContract = await getKeeperFeeContract(pool);\n\n const feeHistory = await (pool.signer\n .provider as JsonRpcProvider).send(\"eth_feeHistory\", [1, \"latest\", []]);\n\n const gasPrice = Number(feeHistory.baseFeePerGas[0]);\n\n let keeperfee: ethers.BigNumber;\n if (gasPrice) {\n keeperfee = await keeperFeeContract[\"getKeeperFee(uint256)\"](\n new BigNumber(gasPrice.toString()).times(1.5).toFixed(0)\n );\n } else {\n keeperfee = await keeperFeeContract[\"getKeeperFee()\"]();\n }\n\n const keeperFeeInUsd = await getKeeperFeeInUsd(pool, keeperfee);\n\n if (\n Number.isFinite(maxKeeperFeeInUsd) &&\n keeperFeeInUsd.gt(ethers.BigNumber.from(maxKeeperFeeInUsd).toString())\n ) {\n throw new Error(\"mintUnitViaFlatMoney: keeperFee too large\");\n }\n\n return keeperfee;\n};\n\nexport const getKeeperFeeInUsd = async (\n pool: Pool,\n keeperFee: ethers.BigNumber\n): Promise<BigNumber> => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getKeeperFeeInUsd: network of ${pool.network} not supported`\n );\n }\n const fundComposition = await pool.getComposition();\n const filteredFc = fundComposition.filter(\n fc =>\n fc.asset.toLocaleLowerCase() ===\n flatMoneyContracts.COLLATERAL.toLocaleLowerCase()\n );\n\n if (!filteredFc[0])\n throw new Error(`getKeeperFeeInUsd: required asset not enabled yet`);\n\n const rateD1 = new BigNumber(filteredFc[0].rate.toString()).div(1e18);\n\n const assetDecimal = await pool.utils.getDecimals(\n flatMoneyContracts.COLLATERAL\n );\n return rateD1.times(keeperFee.toString()).div(10 ** assetDecimal);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport BigNumber from \"bignumber.js\";\nimport { Pool, SDKOptions, ethers } from \"../..\";\nimport DelayedOrderAbi from \"../../abi/flatmoney/DelayedOrder.json\";\nimport IOrderExecutionModuleAbi from \"../../abi/flatmoney/v2/IOrderExecutionModule.json\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport {\n getPoolTxOrGasEstimate,\n isSdkOptionsBoolean\n} from \"../../utils/contract\";\nimport { getStableDepositQuote, getStableWithdrawQuote } from \"./stableModule\";\nimport { getKeeperFee } from \"./keeperFee\";\n\nexport function getAnnounceStableDepositTxData(\n depositAmount: ethers.BigNumber | string,\n minAmountOut: ethers.BigNumber | string,\n keeperFee: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"announceStableDeposit\", [\n depositAmount,\n minAmountOut,\n keeperFee\n ]);\n}\n\nexport function getAnnounceStableWithdrawTxData(\n withdrawAmount: ethers.BigNumber | string,\n minAmountOut: ethers.BigNumber | string,\n keeperFee: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"announceStableWithdraw\", [\n withdrawAmount,\n minAmountOut,\n keeperFee\n ]);\n}\n\nexport function getCancelExistingOrderTxData(account: string): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"cancelExistingOrder\", [account]);\n}\n\nexport function getCancelExistingOrderTxDataForV2(account: string): string {\n return new ethers.utils.Interface(\n IOrderExecutionModuleAbi\n ).encodeFunctionData(\"cancelExistingOrder\", [account]);\n}\n\nexport async function mintUnitViaFlatMoney(\n pool: Pool,\n depositAmount: ethers.BigNumber | string,\n slippage: number, // 0.5 means 0.5%\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"mintUnitViaFlatMoney: network not supported\");\n }\n\n const keeperfee = await getKeeperFee(pool, maxKeeperFeeInUsd); // in COLLATERAL\n\n const adjustedDepositAmount = new BigNumber(depositAmount.toString()).minus(\n keeperfee.toString() // keeper fee deducted from amountIn\n );\n\n const amountOut = await getStableDepositQuote(\n pool,\n adjustedDepositAmount.toFixed(0)\n );\n const minAmountOut = new BigNumber(amountOut.toString())\n .times(1 - slippage / 100)\n .toFixed(0);\n\n const mintUnitTxData = await getAnnounceStableDepositTxData(\n adjustedDepositAmount.toFixed(0),\n minAmountOut,\n keeperfee\n );\n\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [flatMoneyContracts.DelayedOrder, mintUnitTxData, options],\n sdkOptions\n );\n return tx;\n}\n\nexport async function redeemUnitViaFlatMoney(\n pool: Pool,\n withdrawAmount: ethers.BigNumber | string,\n slippage: number, // 0.5 means 0.5%\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"redeemUnitViaFlatMoney: network not supported\");\n }\n const keeperfee = await getKeeperFee(pool, maxKeeperFeeInUsd); // in RETH\n\n const amountOut = await getStableWithdrawQuote(pool, withdrawAmount);\n const minAmountOut = new BigNumber(amountOut.toString())\n .times(1 - slippage / 100)\n .minus(keeperfee.toString()) // keeper fee deducted from amountOut\n .toFixed(0);\n\n const redeemUnitTxData = await getAnnounceStableWithdrawTxData(\n withdrawAmount,\n minAmountOut,\n keeperfee\n );\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [flatMoneyContracts.DelayedOrder, redeemUnitTxData, options],\n sdkOptions\n );\n return tx;\n}\n\nexport async function cancelOrderViaFlatMoney(\n pool: Pool,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"cancelOrderViaFlatMoney: network not supported\");\n }\n // flat money v2\n // use OrderExecution module to cancel order\n let toAddress = flatMoneyContracts.DelayedOrder;\n let cancelOrderTxData = getCancelExistingOrderTxData(pool.address);\n if (flatMoneyContracts.OrderExecution) {\n toAddress = flatMoneyContracts.OrderExecution;\n cancelOrderTxData = await getCancelExistingOrderTxDataForV2(pool.address);\n }\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [toAddress, cancelOrderTxData, options],\n {\n ...(isSdkOptionsBoolean(sdkOptions)\n ? { estimateGas: sdkOptions }\n : sdkOptions),\n useTraderAddressAsFrom: true\n }\n );\n return tx;\n}\n","import { ethers, Pool } from \"../..\";\nimport ICompoundV3Comet from \"../../abi/compound/ICompoundV3Comet.json\";\nimport IFToken from \"../../abi/fluid/IFToken.json\";\n\nexport async function getCompoundV3LendTxData(\n pool: Pool,\n market: string,\n asset: string,\n amount: ethers.BigNumber | string\n): Promise<string> {\n if (await isCompoundV3Market(pool, market)) {\n return new ethers.utils.Interface(\n ICompoundV3Comet\n ).encodeFunctionData(\"supply\", [asset, amount]);\n } else {\n //Fluid lending\n return new ethers.utils.Interface(IFToken).encodeFunctionData(\"deposit\", [\n amount,\n pool.address\n ]);\n }\n}\n\nexport async function getCompoundV3WithdrawTxData(\n pool: Pool,\n market: string,\n asset: string,\n amount: ethers.BigNumber | string\n): Promise<string> {\n if (await isCompoundV3Market(pool, market)) {\n return new ethers.utils.Interface(\n ICompoundV3Comet\n ).encodeFunctionData(\"withdraw\", [asset, amount]);\n } else {\n //Fluid withdrawal\n return new ethers.utils.Interface(IFToken).encodeFunctionData(\"redeem\", [\n amount,\n pool.address,\n pool.address\n ]);\n }\n}\n\nexport async function isCompoundV3Market(\n pool: Pool,\n market: string\n): Promise<boolean> {\n const marketContract = new ethers.Contract(\n market,\n ICompoundV3Comet,\n pool.signer\n );\n try {\n await marketContract.baseToken();\n return true;\n } catch (error) {\n return false;\n }\n}\n","import { ethers } from \"ethers\";\nimport ICometRewards from \"../../abi/compound/ICometRewards.json\";\nimport { Pool } from \"../..\";\n\nexport function getCompoundV3ClaimTxData(pool: Pool, asset: string): string {\n const iCometRewards = new ethers.utils.Interface(ICometRewards);\n\n return iCometRewards.encodeFunctionData(\"claim\", [asset, pool.address, true]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\nimport IPanncakeMasterChef from \"../../abi/IPancakeMasterChefV3.json\";\nimport { Pool } from \"../../entities\";\nimport { Transaction } from \"../../types\";\nimport { MaxUint128 } from \"../../config\";\nconst iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n);\nconst iMasterChef = new ethers.utils.Interface(IPanncakeMasterChef);\n\nexport function getPancakeStakeTxData(\n pool: Pool,\n tokenId: string,\n stakingAddress: string\n): string {\n return iNonfungiblePositionManager.encodeFunctionData(\"safeTransferFrom\", [\n pool.address,\n stakingAddress,\n tokenId\n ]);\n}\n\nexport function getPancakeUnStakeTxData(pool: Pool, tokenId: string): string {\n return iMasterChef.encodeFunctionData(\"withdraw\", [tokenId, pool.address]);\n}\n\nexport function getPancakeHarvestClaimTxData(\n pool: Pool,\n tokenId: string\n): string {\n const harvestTxData = iMasterChef.encodeFunctionData(Transaction.HARVEST, [\n tokenId,\n pool.address\n ]);\n const collectTxData = iMasterChef.encodeFunctionData(Transaction.COLLECT, [\n [tokenId, pool.address, MaxUint128, MaxUint128]\n ]);\n\n const multicallParams = [harvestTxData, collectTxData];\n\n return iMasterChef.encodeFunctionData(Transaction.MULTI_CALL, [\n multicallParams\n ]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap } from \"../../config\";\nimport { Pool } from \"../../entities\";\nimport ActionMiscV3Abi from \"../../abi/pendle/ActionMiscV3.json\";\nimport PTAbi from \"../../abi/pendle/PT.json\";\nimport SYAbi from \"../../abi/pendle/SY.json\";\nimport BigNumber from \"bignumber.js\";\n\nconst pendleBaseUrl = \"https://api-v2.pendle.finance/core\";\n\nexport async function getPendleSwapTxData(\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string | null }> {\n const expiredMarket = await checkExitPostExpPT(pool, tokenIn, tokenOut);\n if (expiredMarket) {\n const result = await getExitExpPTTxData(\n pool,\n tokenIn,\n tokenOut,\n amountIn,\n expiredMarket\n );\n return {\n swapTxData: result.txData,\n minAmountOut: result.minAmountOut\n };\n }\n const params = {\n receiver: pool.address,\n tokenIn,\n tokenOut,\n amountIn: amountIn.toString(),\n slippage: slippage / 100\n };\n const market = await getMarket(pool, tokenIn, tokenOut);\n try {\n const swapResult = await axios.get(\n `${pendleBaseUrl}/v2/sdk/${\n networkChainIdMap[pool.network]\n }/markets/${market}/swap`,\n { params }\n );\n return {\n swapTxData: swapResult.data.tx.data,\n minAmountOut: swapResult.data.data.amountOut\n };\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n}\n\nconst checkUnderlying = (market: any, token: string, networkId: number) => {\n if (market.underlyingAsset !== `${networkId}-${token.toLocaleLowerCase()}`) {\n throw new Error(\"Can only trade in or out of the underlying asset\");\n }\n};\n\nexport async function getMarket(\n pool: Pool,\n tokenIn: string,\n tokenOut: string\n): Promise<string> {\n const networkId = networkChainIdMap[pool.network];\n let marketResult;\n try {\n const params = { isActive: true, chainId: networkId };\n marketResult = await axios.get(`${pendleBaseUrl}/v1/markets/all`, {\n params\n });\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n\n const allMarkets = marketResult.data.markets;\n const markets = [tokenIn, tokenOut].map(token =>\n allMarkets.find(\n (market: any) => market.pt === `${networkId}-${token.toLocaleLowerCase()}`\n )\n );\n if (markets[0]) {\n checkUnderlying(markets[0], tokenOut, networkId);\n return markets[0].address;\n } else if (markets[1]) {\n checkUnderlying(markets[1], tokenIn, networkId);\n return markets[1].address;\n } else {\n throw new Error(\"Can only trade PT assets\");\n }\n}\n\nconst checkExitPostExpPT = async (\n pool: Pool,\n tokenIn: string,\n tokenOut: string\n): Promise<string | null> => {\n const networkId = networkChainIdMap[pool.network];\n let inactiveMarketResult;\n try {\n const params = { isActive: false, chainId: networkId };\n inactiveMarketResult = await axios.get(`${pendleBaseUrl}/v1/markets/all`, {\n params\n });\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n const allInactiveMarkets = inactiveMarketResult.data.markets;\n const markets = [tokenIn, tokenOut].map(token =>\n allInactiveMarkets.find(\n (market: any) => market.pt === `${networkId}-${token.toLocaleLowerCase()}`\n )\n );\n if (markets[0]) {\n checkUnderlying(markets[0], tokenOut, networkId);\n return markets[0].address;\n } else if (markets[1]) {\n throw new Error(\"Can not trade to expired PT asset\");\n } else {\n return null;\n }\n};\n\nconst getExitExpPTTxData = async (\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n market: string\n): Promise<{ txData: string; minAmountOut: string | null }> => {\n const actionMiscV3 = new ethers.utils.Interface(ActionMiscV3Abi);\n const txData = actionMiscV3.encodeFunctionData(\"exitPostExpToToken\", [\n pool.address, // receiver\n market, // market\n amountIn.toString(), // netPtIn\n 0, // netLpIn\n [\n tokenOut,\n 0, // minTokenOut\n tokenOut, // tokenRedeemSy,\n ethers.constants.AddressZero, //pendleSwap;\n // swapData\n [\n 0, // swapType\n ethers.constants.AddressZero, // extRouter\n ethers.constants.HashZero, // extCalldata\n false // needScale\n ]\n ]\n ]);\n\n // Get the PT contract instance\n const PTcontract = new ethers.Contract(tokenIn, PTAbi, pool.signer);\n // Get the SY contract instance\n const SYcontract = new ethers.Contract(\n await PTcontract.SY(),\n SYAbi,\n pool.signer\n );\n\n const exchangeRate = await SYcontract.exchangeRate();\n const minAmountOut = new BigNumber(amountIn.toString())\n .times(1e18)\n .div(exchangeRate.toString())\n .decimalPlaces(0, BigNumber.ROUND_DOWN)\n .toFixed(0);\n return {\n txData,\n minAmountOut\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Dapp, ethers, Pool } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport BigNumber from \"bignumber.js\";\nimport AssetHandlerAbi from \"../../abi/AssetHandler.json\";\nimport IERC20Abi from \"../../abi/IERC20.json\";\nimport {\n LOW_USD_VALUE_FOR_WITHDRAWAL,\n SLIPPAGE_FOR_LOW_VALUE_SWAP\n} from \"./easySwapper\";\nimport { retry } from \"./retry\";\nimport { getSwapDataViaOdos, SWAPPER_ADDERSS } from \"./swapData\";\n\nexport interface TrackedAsset {\n token: string;\n balance: ethers.BigNumber;\n}\n\nconst getSwapWithdrawData = async (\n pool: Pool,\n trackedAssets: TrackedAsset[],\n receiveToken: string,\n slippage: number,\n swapDestMinDestAmount: BigNumber\n) => {\n const srcData = [];\n const routerKey = ethers.utils.formatBytes32String(\"ODOS_V2\");\n // const destData\n for (const { token, balance } of trackedAssets) {\n if (token.toLowerCase() === receiveToken.toLowerCase()) {\n continue;\n }\n const swapData = await retry({\n fn: () => {\n return getSwapDataViaOdos({\n srcAsset: token,\n srcAmount: balance.toString(),\n dstAsset: receiveToken,\n chainId: networkChainIdMap[pool.network],\n from: SWAPPER_ADDERSS,\n receiver: SWAPPER_ADDERSS,\n slippage\n });\n },\n delayMs: 1500,\n maxRetries: 7\n });\n srcData.push({\n token,\n amount: balance,\n aggregatorData: { routerKey, swapData }\n });\n }\n return {\n srcData,\n destData: {\n destToken: receiveToken,\n minDestAmount: swapDestMinDestAmount.toString()\n }\n };\n};\nexport const createCompleteWithdrawalTxArguments = async (\n pool: Pool,\n receiveToken: string,\n slippage: number\n): Promise<any> => {\n const easySwapper = new ethers.Contract(\n routerAddress[pool.network][Dapp.TOROS] as string,\n IEasySwapperV2,\n pool.signer\n );\n const trackedAssets: TrackedAsset[] = await easySwapper.getTrackedAssets(\n pool.address\n );\n\n if (\n trackedAssets.length === 0 ||\n trackedAssets.every(\n ({ token }) => token.toLowerCase() === receiveToken.toLowerCase()\n )\n ) {\n // just do simple complete withdraw\n return {\n isSwapNeeded: false,\n swapData: null,\n estimatedMinReceiveAmount: null\n };\n }\n\n const swapTrackedAssets = trackedAssets.filter(\n ({ token }) => token.toLowerCase() !== receiveToken.toLowerCase()\n );\n\n const assetHandlerAddress = await pool.factory.callStatic.getAssetHandler();\n const assetHandler = new ethers.Contract(\n assetHandlerAddress,\n AssetHandlerAbi.abi,\n pool.signer\n );\n const receiveTokenPriceD18 = new BigNumber(\n (await assetHandler.getUSDPrice(receiveToken)).toString()\n );\n const receiveTokenErc20 = await new ethers.Contract(\n receiveToken,\n IERC20Abi.abi,\n pool.signer\n );\n const receiveTokenDecimals = await receiveTokenErc20.decimals();\n // swap dest minDestAmount\n const tAssetInfos = await Promise.all(\n swapTrackedAssets.map(async swapTAsset => {\n const swapTAssetPriceD18 = new BigNumber(\n (await assetHandler.getUSDPrice(swapTAsset.token)).toString()\n );\n const swapTAssetTokenErc20 = await new ethers.Contract(\n swapTAsset.token,\n IERC20Abi.abi,\n pool.signer\n );\n const swapTAssetDecimals = await swapTAssetTokenErc20.decimals();\n const tokenBalanceBN = new BigNumber(swapTAsset.balance.toString());\n const estimatedValueToSwapD0 = tokenBalanceBN\n .times(swapTAssetPriceD18)\n .div(10 ** 18)\n .div(10 ** Number(swapTAssetDecimals.toString()));\n\n // --- caution: if the estimated value to swap is less than the low USD value for withdrawal, use a higher slippage\n const adjustedSlippage = estimatedValueToSwapD0.lte(\n LOW_USD_VALUE_FOR_WITHDRAWAL\n )\n ? SLIPPAGE_FOR_LOW_VALUE_SWAP\n : slippage;\n // -----\n\n const estimatedMinReceiveAmount = tokenBalanceBN\n .times(swapTAssetPriceD18)\n .div(receiveTokenPriceD18)\n .div(10 ** Number(swapTAssetDecimals.toString()))\n .times(10 ** Number(receiveTokenDecimals.toString()))\n .times(1 - adjustedSlippage / 10000) // slippage is in basis points, so divide by 10000\n .decimalPlaces(0, BigNumber.ROUND_DOWN);\n\n return {\n token: swapTAsset.token,\n balance: swapTAsset.balance,\n estimatedMinReceiveAmount\n };\n })\n );\n const swapDestMinDestAmount = tAssetInfos.reduce(\n (acc, { estimatedMinReceiveAmount }) => acc.plus(estimatedMinReceiveAmount),\n new BigNumber(0)\n );\n\n const withdrawalVaultAddress = await easySwapper.withdrawalContracts(\n pool.address\n );\n const balanceOfReceiveToken = await receiveTokenErc20.balanceOf(\n withdrawalVaultAddress\n );\n\n // complete withdraw _expectedDestTokenAmount\n const estimatedMinReceiveAmount = swapDestMinDestAmount.plus(\n balanceOfReceiveToken.toString()\n );\n\n const swapData = await getSwapWithdrawData(\n pool,\n swapTrackedAssets,\n receiveToken,\n slippage,\n estimatedMinReceiveAmount\n );\n\n return {\n isSwapNeeded: true,\n swapData,\n estimatedMinReceiveAmount: estimatedMinReceiveAmount.toFixed(0)\n };\n};\n\nexport const getCompleteWithdrawalTxData = async (\n pool: Pool,\n receiveToken: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<string> => {\n const completeWithdrawTxArguments = await createCompleteWithdrawalTxArguments(\n pool,\n receiveToken,\n slippage\n );\n\n const isSwapNeeded = completeWithdrawTxArguments.isSwapNeeded;\n const isOffchainSwap = !useOnChainSwap && isSwapNeeded;\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n if (isOffchainSwap) {\n return iEasySwapperV2.encodeFunctionData(\n \"completeWithdrawal(((address,uint256,(bytes32,bytes))[],(address,uint256)),uint256)\",\n [\n completeWithdrawTxArguments.swapData,\n completeWithdrawTxArguments.estimatedMinReceiveAmount\n ]\n );\n } else {\n return iEasySwapperV2.encodeFunctionData(\"completeWithdrawal()\");\n }\n};\n","import axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { Pool } from \"../../entities\";\n\nexport const kyberBaseUrl = \"https://aggregator-api.kyberswap.com\";\n\nexport async function getKyberSwapTxData(\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string }> {\n const params = {\n tokenIn,\n tokenOut,\n amountIn: amountIn.toString()\n };\n try {\n const quoteResult = await axios.get(\n `${kyberBaseUrl}/${pool.network}/api/v1/routes`,\n {\n params,\n headers: {\n \"x-client-id\": \"dHEDGE\"\n }\n }\n );\n\n const buildParams = {\n routeSummary: quoteResult.data.data.routeSummary,\n sender: pool.address,\n recipient: pool.address,\n slippageTolerance: slippage * 100 // in basis points\n };\n\n const buildResult = await axios.post(\n `${kyberBaseUrl}/${pool.network}/api/v1/route/build`,\n buildParams,\n {\n headers: {\n \"x-client-id\": \"dHEDGE\"\n }\n }\n );\n\n return {\n swapTxData: buildResult.data.data.data,\n minAmountOut: buildResult.data.data.amountOut\n };\n } catch (e) {\n console.error(\"Error in KyberSwap API request:\", e);\n throw new ApiError(\"Swap api request of KyberSwap failed\");\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Contract, ethers, Wallet, BigNumber } from \"ethers\";\n\nimport IERC20 from \"../abi/IERC20.json\";\n\nimport IERC721 from \"../abi/IERC721.json\";\nimport IMiniChefV2 from \"../abi/IMiniChefV2.json\";\nimport ILendingPool from \"../abi/ILendingPool.json\";\nimport ISynthetix from \"../abi/ISynthetix.json\";\nimport IUniswapV2Router from \"../abi/IUniswapV2Router.json\";\nimport INonfungiblePositionManager from \"../abi/INonfungiblePositionManager.json\";\nimport IAaveIncentivesController from \"../abi/IAaveIncentivesController.json\";\nimport ILiquidityGaugeV4 from \"../abi/ILiquidityGaugeV4.json\";\nimport IBalancerRewardsGauge from \"../abi/IBalancerRewardsGauge.json\";\n\nimport {\n MaxUint128,\n nonfungiblePositionManagerAddress,\n routerAddress,\n stakingAddress,\n SYNTHETIX_TRACKING_CODE\n} from \"../config\";\nimport {\n Dapp,\n Transaction,\n FundComposition,\n AssetEnabled,\n Network,\n LyraOptionMarket,\n LyraOptionType,\n LyraTradeType,\n LyraPosition,\n SDKOptions\n} from \"../types\";\n\nimport { Utils } from \"./utils\";\nimport {\n getDecreaseLiquidityTxData,\n getIncreaseLiquidityTxData,\n getUniswapV3MintTxData\n} from \"../services/uniswap/V3Liquidity\";\nimport { getUniswapV3SwapTxData } from \"../services/uniswap/V3Trade\";\nimport { getEasySwapperTxData } from \"../services/toros/easySwapper\";\nimport { getAaveV3ClaimTxData } from \"../services/aave/incentives\";\nimport {\n getClOwner,\n getVelodromeAddLiquidityTxData,\n getVelodromeRemoveLiquidityTxData\n} from \"../services/velodrome/liquidity\";\nimport {\n getVelodromeClaimTxData,\n getVelodromeCLClaimTxData,\n getVelodromeStakeTxData\n} from \"../services/velodrome/staking\";\nimport { getLyraOptionTxData } from \"../services/lyra/trade\";\nimport { getOptionPositions } from \"../services/lyra/positions\";\nimport { getDeadline } from \"../utils/deadline\";\nimport {\n getFuturesChangePositionTxData,\n getFuturesChangeMarginTxData\n} from \"../services/futures\";\nimport { getFuturesCancelOrderTxData } from \"../services/futures/trade\";\nimport { getOneInchSwapTxData } from \"../services/oneInch\";\nimport {\n getCreateVestTxData,\n getExitVestTxData,\n getRewardsTxDta\n} from \"../services/ramses/vesting\";\nimport { getPoolTxOrGasEstimate } from \"../utils/contract\";\nimport {\n cancelOrderViaFlatMoney,\n mintUnitViaFlatMoney,\n redeemUnitViaFlatMoney\n} from \"../services/flatmoney/stableLp\";\nimport {\n getCompoundV3LendTxData,\n getCompoundV3WithdrawTxData\n} from \"../services/compound/lending\";\nimport { getCompoundV3ClaimTxData } from \"../services/compound/rewards\";\nimport {\n getPancakeHarvestClaimTxData,\n getPancakeStakeTxData,\n getPancakeUnStakeTxData\n} from \"../services/pancake/staking\";\nimport { getOdosSwapTxData } from \"../services/odos\";\nimport { getPendleSwapTxData } from \"../services/pendle\";\nimport { getCompleteWithdrawalTxData } from \"../services/toros/completeWithdrawal\";\nimport { getKyberSwapTxData } from \"../services/kyberSwap\";\n\nexport class Pool {\n public readonly poolLogic: Contract;\n public readonly managerLogic: Contract;\n public readonly factory: Contract;\n public readonly signer: Wallet;\n public readonly address: string;\n public readonly utils: Utils;\n public readonly network: Network;\n public readonly isDhedge: boolean;\n\n public constructor(\n network: Network,\n signer: Wallet,\n poolLogic: Contract,\n mangerLogic: Contract,\n utils: Utils,\n factory: Contract,\n isDhedge = true\n ) {\n this.network = network;\n this.poolLogic = poolLogic;\n this.address = poolLogic.address;\n this.managerLogic = mangerLogic;\n this.signer = signer;\n this.utils = utils;\n this.factory = factory;\n this.isDhedge = isDhedge;\n }\n\n /**\n * Return the assets with balances and deposit info of a pool\n * @returns {Promise<FundComposition[]>} Composition of assets with balance, deposit info\n */\n async getComposition(): Promise<FundComposition[]> {\n const result = await this.managerLogic.getFundComposition();\n\n const fundComposition: FundComposition[] = result[0].map(\n (item: AssetEnabled, index: string | number) => {\n const { asset, isDeposit } = item;\n return {\n asset: asset,\n isDeposit: isDeposit,\n balance: result[1][index],\n rate: result[2][index]\n };\n }\n );\n return fundComposition;\n }\n\n //Invest functions\n\n /**\n * Approve the asset that can be deposited into a pool\n * @param {string} nasset Address of deposit asset\n * @param {BigNumber | string} amount Amount to be approved\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async approveDeposit(\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n if (estimateGas) {\n return await iERC20.estimateGas.approve(this.address, amount, options);\n }\n const tx = await iERC20.approve(this.address, amount, options);\n return tx;\n }\n\n /**\n * Deposit asset into a pool\n * @param {string} asset Address of asset\n * @param {BigNumber | string} amount Amount to be deposited\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async deposit(\n asset: string,\n amount: string | BigNumber,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.deposit(asset, amount, options);\n }\n const tx = await this.poolLogic.deposit(asset, amount, options);\n return tx;\n }\n\n /**\n * Withdraw assets from a pool\n * @param fundTokenAmount Amount of pool tokens to be withdrawn\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async withdraw(\n fundTokenAmount: string | BigNumber,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.withdraw(\n fundTokenAmount,\n options\n );\n }\n const tx = await this.poolLogic.withdraw(fundTokenAmount, options);\n return tx;\n }\n\n //Manager functions\n\n /**\n * Approve the asset for trading and providing liquidity\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of asset\n * @param {BigNumber | string} Amount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approve(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n routerAddress[this.network][dapp],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the liquidity pool token for staking\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of liquidity pool token\n * @param {BigNumber | string} amount Aamount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveStaking(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n stakingAddress[this.network][dapp],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the liquidity pool token for staking\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of liquidity pool token\n * @param {BigNumber | string} amount Aamount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveUniswapV3Liquidity(\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n nonfungiblePositionManagerAddress[this.network][Dapp.UNISWAPV3],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the asset for provided spender address\n * @param {string} spender Spender address\n * @param {string} asset Address of asset\n * @param {BigNumber | string} amount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveSpender(\n spender: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n spender,\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve NFT for provided spender address\n * @param {string} spender Spender address\n * @param {string} asset Address of asset\n * @param {string} tokenId NFT id\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveSpenderNFT(\n spender: string,\n asset: string,\n tokenId: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC721 = new ethers.utils.Interface(IERC721.abi);\n const approveTxData = iERC721.encodeFunctionData(\"approve\", [\n spender,\n tokenId\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade an asset into another asset\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {BigNumber | string} amountIn Amount\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async trade(\n dapp: Dapp,\n assetFrom: string,\n assetTo: string,\n amountIn: BigNumber | string,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let swapTxData: string;\n let minAmountOut: string | null = null;\n switch (dapp) {\n case Dapp.ONEINCH:\n ({ swapTxData, dstAmount: minAmountOut } = await getOneInchSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.BALANCER:\n swapTxData = await this.utils.getBalancerSwapTx(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n );\n break;\n case Dapp.SYNTHETIX:\n const iSynthetix = new ethers.utils.Interface(ISynthetix.abi);\n const assets = [assetFrom, assetTo].map(asset =>\n ethers.utils.formatBytes32String(asset)\n );\n const daoAddress = await this.factory.owner();\n swapTxData = iSynthetix.encodeFunctionData(Transaction.SWAP_SYNTHS, [\n assets[0],\n amountIn,\n assets[1],\n daoAddress,\n SYNTHETIX_TRACKING_CODE\n ]);\n break;\n case Dapp.TOROS:\n swapTxData = await getEasySwapperTxData(\n this,\n assetFrom,\n assetTo,\n ethers.BigNumber.from(amountIn),\n slippage\n );\n break;\n case Dapp.ODOS:\n ({ swapTxData, minAmountOut } = await getOdosSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.PENDLE:\n ({ swapTxData, minAmountOut } = await getPendleSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.KYBERSWAP:\n ({ swapTxData, minAmountOut } = await getKyberSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n default:\n const iUniswapV2Router = new ethers.utils.Interface(\n IUniswapV2Router.abi\n );\n const calculatedMinAmountOut = await this.utils.getMinAmountOut(\n dapp,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n );\n swapTxData = iUniswapV2Router.encodeFunctionData(Transaction.SWAP, [\n amountIn,\n calculatedMinAmountOut,\n [assetFrom, assetTo],\n this.address,\n await getDeadline(this)\n ]);\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], swapTxData, options, minAmountOut],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to a liquidity pool\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidity(\n dapp: Dapp,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iUniswapV2Router = new ethers.utils.Interface(IUniswapV2Router.abi);\n const addLiquidityTxData = iUniswapV2Router.encodeFunctionData(\n Transaction.ADD_LIQUIDITY,\n [\n assetA,\n assetB,\n amountA,\n amountB,\n 0,\n 0,\n this.address,\n await getDeadline(this)\n ]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], addLiquidityTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from a liquidity pool\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidity(\n dapp: Dapp,\n assetA: string,\n assetB: string,\n amount: string | BigNumber,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iUniswapV2Router = new ethers.utils.Interface(IUniswapV2Router.abi);\n const removeLiquidityTxData = iUniswapV2Router.encodeFunctionData(\n Transaction.REMOVE_LIQUIDITY,\n [assetA, assetB, amount, 0, 0, this.address, await getDeadline(this)]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], removeLiquidityTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Stake liquidity pool tokens in a yield farm\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async stake(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const stakeTxData = iMiniChefV2.encodeFunctionData(Transaction.DEPOSIT, [\n poolId,\n amount,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], stakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Stake liquidity pool tokens in gauge contract\n * @param {Dapp} dapp Platform like Balancer or Velodrome\n * @param {string} gauge Gauge contract address\n * @param {BigNumber | string} amount Amount of liquidity pool tokens or token ID for Velodrome CL\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async stakeInGauge(\n dapp: Dapp,\n gauge: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let stakeTxData;\n switch (dapp) {\n case Dapp.BALANCER:\n const rewardsGauge = new ethers.utils.Interface(\n IBalancerRewardsGauge.abi\n );\n stakeTxData = rewardsGauge.encodeFunctionData(\"deposit(uint256)\", [\n amount\n ]);\n break;\n case Dapp.VELODROME:\n case Dapp.RAMSES:\n stakeTxData = getVelodromeStakeTxData(amount, false);\n break;\n case Dapp.VELODROMEV2:\n case Dapp.AERODROME:\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n stakeTxData = getVelodromeStakeTxData(amount, true);\n break;\n case Dapp.PANCAKECL:\n stakeTxData = getPancakeStakeTxData(this, amount.toString(), gauge);\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n const txTo =\n dapp !== Dapp.PANCAKECL\n ? gauge\n : nonfungiblePositionManagerAddress[this.network][dapp];\n const tx = await getPoolTxOrGasEstimate(\n this,\n [txTo, stakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Unstake liquidity pool tokens from a yield farm\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async unStake(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const unStakeTxData = iMiniChefV2.encodeFunctionData(Transaction.WITHDRAW, [\n poolId,\n amount,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], unStakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Unstake liquidity pool tokens from Velodrome or Balancer gauge\n * @param {string} gauge Gauge contract address\n * @param {BigNumber | string} amount Amount of liquidity pool tokens or CL token ID\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async unstakeFromGauge(\n gauge: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let unstakeTxData;\n const rewardsGauge = new ethers.utils.Interface(IBalancerRewardsGauge.abi);\n if (\n gauge.toLowerCase() ===\n stakingAddress[this.network][Dapp.PANCAKECL]?.toLowerCase()\n ) {\n unstakeTxData = getPancakeUnStakeTxData(this, amount.toString());\n } else {\n unstakeTxData = rewardsGauge.encodeFunctionData(\"withdraw(uint256)\", [\n amount\n ]);\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [gauge, unstakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Lend asset to a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {number} referralCode Code from Aave referral program\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async lend(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n referralCode = 0,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const depositTxData = iLendingPool.encodeFunctionData(Transaction.DEPOSIT, [\n asset,\n amount,\n this.address,\n referralCode\n ]);\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], depositTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Lend asset to a Compound V3 or Fluid lending pool\n * @param {string} market Address of cToken or fToken\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async lendCompoundV3(\n market: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const supplyTxData = await getCompoundV3LendTxData(\n this,\n market,\n asset,\n amount\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, supplyTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Witdraw asset from a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async withdrawDeposit(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const withdrawTxData = iLendingPool.encodeFunctionData(\n Transaction.WITHDRAW,\n [asset, amount, this.address]\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], withdrawTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Witdraw asset from a Compound V3 or Fluid lending pool\n * @param {string} market Address of cToken or fToken\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to withdraw\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async withdrawCompoundV3(\n market: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const withdrawTxData = await getCompoundV3WithdrawTxData(\n this,\n market,\n asset,\n amount\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, withdrawTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Borrow asset from a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {number} referralCode Code from Aave referral program\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async borrow(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n referralCode = 0,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const borrowTxData = iLendingPool.encodeFunctionData(Transaction.BORROW, [\n asset,\n amount,\n 2,\n referralCode,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], borrowTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Repays borrowed asset to a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async repay(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const repayTxData = iLendingPool.encodeFunctionData(Transaction.REPAY, [\n asset,\n amount,\n 2,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], repayTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards of staked liquidity pool tokens\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestRewards(\n dapp: Dapp,\n asset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const harvestTxData = iMiniChefV2.encodeFunctionData(Transaction.HARVEST, [\n poolId,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], harvestTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Change enabled pool assets\n * @param {AssetEnabled[]} assets New pool assets\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n public async changeAssets(\n assets: AssetEnabled[],\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const currentAssetsEnabled = await this.getComposition();\n const currentAssets = currentAssetsEnabled.map(e =>\n e.asset.toLocaleLowerCase()\n );\n const newAssets = assets.map(e => e.asset.toLocaleLowerCase());\n const removedAssets = currentAssets.filter(e => !newAssets.includes(e));\n const changedAssets = assets.map(e => [e.asset, e.isDeposit]);\n\n if (estimateGas) {\n return await this.managerLogic.estimateGas.changeAssets(\n changedAssets,\n removedAssets,\n options\n );\n }\n const tx = await this.managerLogic.changeAssets(\n changedAssets,\n removedAssets,\n options\n );\n return tx;\n }\n\n /**\n * Set a new trader with trading permissions\n * @param {string} trader Address trader account\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async setTrader(\n trader: string,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.managerLogic.estimateGas.setTrader(trader, options);\n }\n const tx = await this.managerLogic.setTrader(trader, options);\n return tx;\n }\n\n /**\n * Sets a pool private or public\n * @param {boolean} _private True for private, false for public\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async setPrivate(\n _private: boolean,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.managerLogic.estimateGas.setPoolPrivate(\n _private,\n options\n );\n }\n const tx = await this.managerLogic.setPoolPrivate(_private, options);\n return tx;\n }\n\n /**\n * Invest into a Balancer pool\n * @param {string} poolId Balancer pool id\n * @param {string[] | } assetsIn Array of balancer pool assets\n * @param {BigNumber[] | string[]} amountsIn Array of maximum amounts to provide to pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async joinBalancerPool(\n poolId: string,\n assets: string[],\n amountsIn: string[] | BigNumber[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const joinPoolTxData = this.utils.getBalancerJoinPoolTx(\n this,\n poolId,\n assets,\n amountsIn\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.BALANCER], joinPoolTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Invest into a Balancer pool\n * @param {string} poolId Balancer pool id\n * @param {string[] | } assets Array of balancer pool assets\n * @param {BigNumber | string } amount Amount of pool tokens to withdraw\n * @param { null | number } singleExitAssetIndex Index of asset to withdraw to\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async exitBalancerPool(\n poolId: string,\n assets: string[],\n amount: string | BigNumber,\n singleExitAssetIndex: number | null = null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const exitPoolTxData = this.utils.getBalancerExitPoolTx(\n this,\n poolId,\n assets,\n singleExitAssetIndex,\n amount\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.BALANCER], exitPoolTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from Aave platform\n * @param {string[]} assets Aave tokens (deposit/debt) hold by pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestAaveRewards(\n assets: string[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const aaveIncentivesAddress = stakingAddress[this.network][\n Dapp.AAVE\n ] as string;\n const iAaveIncentivesController = new ethers.utils.Interface(\n IAaveIncentivesController.abi\n );\n const aaveIncentivesController = new ethers.Contract(\n aaveIncentivesAddress,\n iAaveIncentivesController,\n this.signer\n );\n const amount = await aaveIncentivesController.getUserUnclaimedRewards(\n this.address\n );\n const claimTxData = iAaveIncentivesController.encodeFunctionData(\n Transaction.CLAIM_REWARDS,\n [assets, amount, this.address]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [aaveIncentivesAddress, claimTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from Aave platform\n * @param {string[]} assets Assets invested in Aave\n * @param {string} rewardAssets Reward token address\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestAaveV3Rewards(\n assets: string[],\n rewardAsset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const claimTxData = await getAaveV3ClaimTxData(this, assets, rewardAsset);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n stakingAddress[this.network][Dapp.AAVEV3] as string,\n claimTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from CompoundV3\n * @param {string} asset Compound lending asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestCompoundV3Rewards(\n asset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const claimTxData = await getCompoundV3ClaimTxData(this, asset);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n stakingAddress[this.network][Dapp.COMPOUNDV3] as string,\n claimTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Create UniswapV3 liquidity pool\n * @param {dapp} Platform UniswapV3, VelodromeCL, AerodromeCL or RamesesCL\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { number } minPrice Lower price range (assetB per assetA)\n * @param { number } maxPrice Upper price range (assetB per assetA)\n * @param { number } minTick Lower tick range\n * @param { number } maxTick Upper tick range\n * @param { number } feeAmountOrTickSpacing Fee tier UniswapV3 or tick spacing VelodromeCL\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityUniswapV3(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp.PANCAKECL,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n minPrice: number | null,\n maxPrice: number | null,\n minTick: number | null,\n maxTick: number | null,\n feeAmountOrTickSpacing: number,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n if (\n (minPrice === null || maxPrice === null) &&\n (minTick === null || maxTick === null)\n )\n throw new Error(\"Need to provide price or tick range\");\n if ((minPrice || maxPrice) && dapp !== Dapp.UNISWAPV3)\n throw new Error(\"no price conversion for Aerodrome/Velodrome CL\");\n\n const mintTxData = await getUniswapV3MintTxData(\n dapp,\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n minPrice,\n maxPrice,\n minTick,\n maxTick,\n feeAmountOrTickSpacing\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n nonfungiblePositionManagerAddress[this.network][dapp],\n mintTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from an UniswapV3 or Arrakis liquidity pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 position\n * @param {number} amount Amount in percent of assets to be removed\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async decreaseLiquidity(\n dapp: Dapp,\n tokenId: string,\n amount = 100,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let dappAddress;\n let isStaked = false;\n let txData;\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n } else {\n //staked in gauge\n dappAddress = tokenIdOwner;\n isStaked = true;\n }\n break;\n case Dapp.ARRAKIS:\n dappAddress = routerAddress[this.network][dapp];\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n if (!isStaked || dapp === Dapp.PANCAKECL) {\n txData = await getDecreaseLiquidityTxData(\n this,\n dapp,\n tokenId,\n amount,\n isStaked\n );\n } else {\n throw new Error(\n \"unsupported decreaseStakedLiquidity: unstake first to decrease lp\"\n );\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [dappAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Increase liquidity of an UniswapV, VelodromeCL or Arrakis liquidity pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 position\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async increaseLiquidity(\n dapp: Dapp,\n tokenId: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let dappAddress;\n let isStaked = false;\n let txData;\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n } else {\n //staked in gauge\n dappAddress = tokenIdOwner;\n isStaked = true;\n }\n break;\n case Dapp.ARRAKIS:\n dappAddress = routerAddress[this.network][dapp];\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n //PancakeCL supports increase liquidity to staked position\n if (!isStaked || dapp === Dapp.PANCAKECL) {\n txData = await getIncreaseLiquidityTxData(\n this,\n dapp,\n tokenId,\n amountA,\n amountB\n );\n } else {\n throw new Error(\n \"unsupported increaseStakedLiquidity: unstake first to increase lp\"\n );\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [dappAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim fees of an UniswapV3 liquidity or Arrakis pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 or Gauge address\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async claimFees(\n dapp: Dapp,\n tokenId: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let txData;\n let contractAddress;\n const iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n );\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n contractAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n txData = iNonfungiblePositionManager.encodeFunctionData(\n Transaction.COLLECT,\n [[tokenId, this.address, MaxUint128, MaxUint128]]\n );\n break;\n case Dapp.ARRAKIS:\n case Dapp.BALANCER:\n contractAddress = tokenId;\n const abi = new ethers.utils.Interface(ILiquidityGaugeV4.abi);\n txData = abi.encodeFunctionData(\"claim_rewards()\", []);\n break;\n case Dapp.VELODROME:\n case Dapp.RAMSES:\n contractAddress = tokenId;\n txData = getVelodromeClaimTxData(this, tokenId, false);\n break;\n case Dapp.VELODROMEV2:\n case Dapp.AERODROME:\n contractAddress = tokenId;\n txData = getVelodromeClaimTxData(this, tokenId, true);\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n contractAddress =\n nonfungiblePositionManagerAddress[this.network][dapp];\n txData = iNonfungiblePositionManager.encodeFunctionData(\n Transaction.COLLECT,\n [[tokenId, this.address, MaxUint128, MaxUint128]]\n );\n } else {\n //staked in gauge or pancake masterchef\n contractAddress = tokenIdOwner;\n if (dapp === Dapp.PANCAKECL) {\n txData = getPancakeHarvestClaimTxData(this, tokenId);\n } else {\n txData = getVelodromeCLClaimTxData(tokenId);\n }\n }\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [contractAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Get rewards of an NFT position\n * @param {Dapp} dapp Platform e.g. Ramses CL\n * @param {string} tokenId Token Id\n * @param {string[]} rewards Reward tokens\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async getRewards(\n dapp: Dapp,\n tokenId: string,\n rewards: string[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n nonfungiblePositionManagerAddress[this.network][dapp],\n getRewardsTxDta(tokenId, rewards),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade an asset into another asset\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {BigNumber | string} amountIn Amount\n * @param { FeeAmount } feeAmount Fee tier (Low 0.05%, Medium 0.3%, High 1%)\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async tradeUniswapV3(\n assetFrom: string,\n assetTo: string,\n amountIn: BigNumber | string,\n feeAmount: number,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const swapxData = await getUniswapV3SwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage,\n feeAmount\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.UNISWAPV3], swapxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityVelodrome(\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROME],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityVelodrome(\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROME],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome V2 pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityVelodromeV2(\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROMEV2],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome V2 pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityVelodromeV2(\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROMEV2],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome V2 or Ramses pool\n * @param {Dapp} dapp VelodromeV2, Ramses or Aerodrome\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityV2(\n dapp: Dapp.VELODROMEV2 | Dapp.RAMSES | Dapp.AERODROME,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][dapp],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome V2 or Ramses pool\n * @param {Dapp} dapp VelodromeV2, Ramses or Aerodrome\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityV2(\n dapp: Dapp.VELODROMEV2 | Dapp.RAMSES | Dapp.AERODROME,\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][dapp],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade options on lyra\n * @param {LyraOptionMarket} market Underlying market e.g. eth\n * @param {number} expiry Expiry timestamp\n * @param { number} strike Strike price\n * @param {LyraOptionType} optionType Call or put\n * @param { LyraTradeType} tradeType By or sell\n * @param {BigNumber | string } optionAmount Option amount\n * @param {string } assetIn Asset to invest\n * @param {BigNumber | string } collateralChangeAmount Collateral amount to add when shorting options and to remove when covering shorts\n * @param {boolean} isCoveredCall Selling covered call options\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async tradeLyraOption(\n market: LyraOptionMarket,\n expiry: number,\n strike: number,\n optionType: LyraOptionType,\n tradeType: LyraTradeType,\n optionAmount: BigNumber | string,\n assetIn: string,\n collateralChangeAmount: BigNumber | string = \"0\",\n isCoveredCall = false,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const swapxData = await getLyraOptionTxData(\n this,\n market,\n optionType,\n expiry,\n strike,\n tradeType,\n optionAmount,\n assetIn,\n BigNumber.from(collateralChangeAmount),\n isCoveredCall\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.LYRA], swapxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Gets Lyra option positions\n * @returns {Promise<Position>} Transaction\n */\n async getLyraPositions(market: LyraOptionMarket): Promise<LyraPosition[]> {\n return await getOptionPositions(this, market);\n }\n\n /** Deposit or withdraws (negative amount) asset for Synthetix future margin trading\n *\n * @param {string} market Address of futures market\n * @param {BigNumber | string } changeAmount Amount to increase/decrease margin\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async changeFuturesMargin(\n market: string,\n changeAmount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, getFuturesChangeMarginTxData(changeAmount), options],\n sdkOptions\n );\n return tx;\n }\n\n /** Change position in Synthetix futures market (long/short)\n *\n * @param {string} market Address of futures market\n * @param {BigNumber | string } changeAmount Negative for short, positive for long\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async changeFuturesPosition(\n market: string,\n changeAmount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getFuturesChangePositionTxData(\n changeAmount,\n market,\n this\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** Cancels an open oder on Synthetix futures market\n *\n * @param {string} market Address of futures market\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async cancelFuturesOrder(\n market: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getFuturesCancelOrderTxData(this);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * mintManagerFee\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async mintManagerFee(options: any = null, estimateGas = false): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.mintManagerFee(options);\n }\n const tx = await this.poolLogic.mintManagerFee(options);\n return tx;\n }\n\n /**\n * getAvailableManagerFee\n * @returns {Promise<BigNumber>} fee\n */\n async getAvailableManagerFee(): Promise<BigNumber> {\n const fee = await this.poolLogic.availableManagerFee();\n return BigNumber.from(fee);\n }\n\n /** Vest tokens (e.g. Ramses xoRAM)\n *\n * @param {string} tokenAddress Address of the token to vest\n * @param {BigNumber | string } changeAmount Negative for short, positive for long\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async vestTokens(\n tokenAddress: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getCreateVestTxData(amount);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [tokenAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** Exit position of vested tokens (e.g. Ramses xoRAM)\n *\n * @param {string} tokenAddress Address of the token to vest\n * @param {number } id position Id of the vested tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async exitVestedToken(\n tokenAddress: string,\n id: number,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getExitVestTxData(id);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [tokenAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** deposit rETH to mint UNIT via the Flat Money protocol\n *\n * @param { BigNumber | string } depositAmount Amount of rETH to deposit\n * @param { number } slippage slippage, 0.5 represents 0.5%\n * @param { number | null } maxKeeperFeeInUsd 5 represents $5; null will skip the maxKeeperFee check\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async mintUnitViaFlatMoney(\n depositAmount: ethers.BigNumber | string,\n slippage = 0.5,\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await mintUnitViaFlatMoney(\n this,\n depositAmount,\n slippage,\n maxKeeperFeeInUsd,\n options,\n sdkOptions\n );\n return tx;\n }\n\n /** redeem UNIT via the Flat Money protocol\n *\n * @param { BigNumber | string } depositAmount Amount of UNIT to withdraw\n * @param { number } slippage slippage, 0.5 represents 0.5%\n * @param { number | null } maxKeeperFeeInUsd 5 represents $5; null will skip the maxKeeperFee check\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async redeemUnitViaFlatMoney(\n withdrawAmount: ethers.BigNumber | string,\n slippage = 0.5,\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await redeemUnitViaFlatMoney(\n this,\n withdrawAmount,\n slippage,\n maxKeeperFeeInUsd,\n options,\n sdkOptions\n );\n return tx;\n }\n\n async cancelOrderViaFlatMoney(\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const tx = await cancelOrderViaFlatMoney(this, options, estimateGas);\n return tx;\n }\n\n /**\n * Complete a Toros withdrawal to a single asset\n * @param {string} destinationToken Address of destination asset\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async completeTorosWithdrawal(\n destinationToken: string,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getCompleteWithdrawalTxData(\n this,\n destinationToken,\n slippage * 100,\n false\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network].toros, txData, options],\n sdkOptions\n );\n return tx;\n }\n}\n","import { BigNumber, Contract, ethers, Wallet } from \"ethers\";\nimport {\n Token,\n TokenAmount,\n Pair,\n TradeType,\n Route,\n Trade,\n Percent\n} from \"@sushiswap/sdk\";\nimport { SOR, SwapTypes } from \"@balancer-labs/sor\";\nimport { BaseProvider } from \"@ethersproject/providers\";\n\nimport IERC20 from \"../abi/IERC20.json\";\nimport IMiniChefV2 from \"../abi/IMiniChefV2.json\";\nimport UniswapV2Factory from \"../abi/IUniswapV2Factory.json\";\nimport UniswapV2Pair from \"../abi/IUniswapV2Pair.json\";\nimport IBalancerV2Vault from \"../abi/IBalancertV2Vault.json\";\nimport {\n balancerSubgraph,\n dappFactoryAddress,\n networkChainIdMap,\n stakingAddress\n} from \"../config\";\nimport {\n Dapp,\n LyraOptionMarket,\n LyraOptionType,\n LyraTradeType,\n Network,\n Reserves\n} from \"../types\";\nimport { Pool } from \".\";\nimport { getExpiries, getStrike, getStrikes } from \"../services/lyra/markets\";\nimport { Quote, Strike } from \"@lyrafinance/lyra-js\";\nimport { getQuote } from \"../services/lyra/quote\";\n\nexport class Utils {\n network: Network;\n signer: Wallet;\n\n public constructor(network: Network, signer: Wallet) {\n this.network = network;\n this.signer = signer;\n }\n\n /**\n * Return the reserves of the two assets of a liquidity pool\n * This is the price of one token in the other\n * @param {Dapp} dApp DApp like Uniswap or Sushiswap\n * @param {string} tokenA First token of the pool pair\n * @param {string} tokenB Second token of the pool pair\n * @returns {Promise<Reserves>} Reserves of the assets in BigNumber\n * @throws If the dapp is not supported on the network\n */\n async getLpReserves(\n dapp: Dapp,\n assetA: string,\n assetB: string\n ): Promise<Reserves> {\n if (dappFactoryAddress[this.network][dapp]) {\n const uniswapV2Factory = new Contract(\n dappFactoryAddress[this.network][dapp] as string,\n UniswapV2Factory.abi,\n this.signer\n );\n\n const uniswapV2PairAddress = await uniswapV2Factory.getPair(\n assetA,\n assetB\n );\n\n const uniswapV2Pair = new Contract(\n uniswapV2PairAddress,\n UniswapV2Pair.abi,\n this.signer\n );\n\n const result = await uniswapV2Pair.getReserves();\n const [reserve0, reserve1] = result;\n return assetA.toLowerCase() < assetB.toLowerCase()\n ? { assetA: reserve0, assetB: reserve1 }\n : { assetA: reserve1, assetB: reserve0 };\n } else {\n throw new Error(\"Dapp not supported on this network\");\n }\n }\n\n /**\n * Returns the pool id of a liquidity pool\n * @param {Dapp} dApp DApp like uniswap or sushiswap\n * @param {string} lpPoolAddress token address of the pool pair\n * @returns {number} Pool Id\n * @throws if the dapp is not supported on the network\n */\n\n async getLpPoolId(dapp: Dapp, poolAsset: string): Promise<number> {\n if (stakingAddress[this.network][dapp]) {\n const masterChefV2 = new Contract(\n stakingAddress[this.network][dapp] as string,\n IMiniChefV2.abi,\n this.signer\n );\n\n const poolLength = await masterChefV2.poolLength();\n const idArray = Array.from(\n { length: poolLength.toNumber() },\n (_, v) => v\n );\n const lpPoolAddresses = await Promise.all(\n idArray.map(e => masterChefV2.lpToken(e))\n );\n const poolId = lpPoolAddresses\n .map(e => e.toLowerCase())\n .indexOf(poolAsset.toLocaleLowerCase());\n if (poolId === -1) {\n throw new Error(\"Staking not supported for asset\");\n }\n return poolId;\n } else {\n throw new Error(\"Dapp not supported on this network\");\n }\n }\n\n /**\n * Returns the balance of an asset (ERC20) token\n * @param {string} asset string token address\n * @param {string} owner address of the owner\n * @returns { BigNumber } Balance of asset\n */\n\n async getBalance(asset: string, owner: string): Promise<ethers.BigNumber> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n const balance = await iERC20.balanceOf(owner);\n return balance;\n }\n\n /**\n * Returns the decimals of an asset (ERC20) token\n * @param {string} asset string token address\n * @returns { number } Balance of asset\n */\n\n async getDecimals(asset: string): Promise<number> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n const decimals = await iERC20.decimals();\n return decimals;\n }\n\n /**\n * Return the minimum amount out for a trade between two assets\n * given the trade amount and slippage\n * @param {Dapp} dApp DApp like Uniswap or Sushiswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {string | ethers.BigNumber} amountIn Trade amount\n * @param { number} slippage Maximum slippage allowed\n * @returns {Promise<ethers.BigNumber>} Reserves of the assets in BigNumber\n */\n async getMinAmountOut(\n dapp: Dapp,\n assetFrom: string,\n assetTo: string,\n amountIn: string | ethers.BigNumber,\n slippage: number\n ): Promise<ethers.BigNumber> {\n const assetFromChecked = ethers.utils.getAddress(assetFrom);\n const assetToChecked = ethers.utils.getAddress(assetTo);\n const reserves = await this.getLpReserves(\n dapp,\n assetFromChecked,\n assetToChecked\n );\n const tokenA = new Token(\n networkChainIdMap[this.network],\n assetFromChecked,\n 18\n );\n const tokenB = new Token(\n networkChainIdMap[this.network],\n assetToChecked,\n 18\n );\n const pair = new Pair(\n new TokenAmount(tokenA, reserves.assetA.toString()),\n new TokenAmount(tokenB, reserves.assetB.toString())\n );\n const route = new Route([pair], tokenA, tokenB);\n\n const trade = new Trade(\n route,\n new TokenAmount(tokenA, amountIn.toString()),\n TradeType.EXACT_INPUT\n );\n return ethers.BigNumber.from(\n trade\n .minimumAmountOut(new Percent((slippage * 100).toFixed(), \"10000\"))\n .raw.toString()\n );\n }\n\n async getBalancerSwapTx(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const sor = new SOR(\n this.signer.provider as BaseProvider,\n networkChainIdMap[this.network],\n balancerSubgraph[this.network]\n );\n // isFetched will be true on success\n const isFetched = await sor.fetchPools();\n\n if (!isFetched) throw new Error(\"Error fetching balancer pools\");\n\n const swapType = SwapTypes.SwapExactIn;\n const { swaps, tokenAddresses, returnAmount } = await sor.getSwaps(\n assetFrom,\n assetTo,\n swapType,\n ethers.BigNumber.from(amountIn)\n );\n\n const minimumAmountOut = returnAmount\n .mul(10000 - slippage * 100)\n .div(10000);\n\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n\n if (swaps.length === 1) {\n const swap = swaps[0];\n //do single swap\n const swapTx = iBalancerV2Vault.encodeFunctionData(\"swap\", [\n [\n swap.poolId,\n SwapTypes.SwapExactIn,\n tokenAddresses[swap.assetInIndex],\n tokenAddresses[swap.assetOutIndex],\n swap.amount,\n swap.userData\n ],\n [pool.address, false, pool.address, false],\n minimumAmountOut,\n Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix time\n ]);\n return swapTx;\n } else {\n // Limits:\n // +ve means max to send\n // -ve mean min to receive\n // For a multihop the intermediate tokens should be 0\n const limits: string[] = [];\n tokenAddresses.forEach((token, i) => {\n if (token.toLowerCase() === assetFrom.toLowerCase()) {\n limits[i] = amountIn.toString();\n } else if (token.toLowerCase() === assetTo.toLowerCase()) {\n limits[i] = minimumAmountOut.mul(-1).toString();\n } else {\n limits[i] = \"0\";\n }\n });\n const swapTx = iBalancerV2Vault.encodeFunctionData(\"batchSwap\", [\n SwapTypes.SwapExactIn,\n swaps,\n tokenAddresses,\n [pool.address, false, pool.address, false],\n limits,\n Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix time\n ]);\n return swapTx;\n }\n }\n\n async getBalancerJoinPoolTx(\n pool: Pool,\n balancerPoolId: string,\n assets: string[],\n amountsIn: string[] | ethers.BigNumber[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n const bptAddress = ethers.utils.getAddress(balancerPoolId.slice(0, 42));\n const bptIndex = assets.findIndex(\n e => e.toLowerCase() === bptAddress.toLocaleLowerCase()\n );\n const poolAssetsAmounts = amountsIn.slice();\n if (bptIndex >= 0) poolAssetsAmounts.splice(bptIndex, 1);\n const txData = [\n balancerPoolId,\n pool.address,\n pool.address,\n [\n assets,\n amountsIn,\n ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256[]\", \"uint256\"],\n [1, poolAssetsAmounts, 0]\n ),\n false\n ]\n ];\n const joinPoolTx = iBalancerV2Vault.encodeFunctionData(\"joinPool\", txData);\n return joinPoolTx;\n }\n\n async getBalancerExitPoolTx(\n pool: Pool,\n balancerPoolId: string,\n assets: string[],\n singleExitAssetIndex: null | number,\n amount: string | ethers.BigNumber\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const minimumAmountOut = new Array(assets.length).fill(0);\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n const userTxData =\n singleExitAssetIndex === null\n ? ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256\"],\n [1, amount]\n )\n : ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256\", \"uint256\"],\n [0, amount, singleExitAssetIndex]\n );\n\n const txData = [\n balancerPoolId,\n pool.address,\n pool.address,\n [assets, minimumAmountOut, userTxData, false]\n ];\n const exitPoolTx = iBalancerV2Vault.encodeFunctionData(\"exitPool\", txData);\n return exitPoolTx;\n }\n\n async getLyraOptionExpiries(market: LyraOptionMarket): Promise<number[]> {\n return await getExpiries(this.network, market);\n }\n\n async getLyraOptionStrikes(\n market: LyraOptionMarket,\n expiry: number\n ): Promise<Strike[]> {\n return await getStrikes(this.network, market, expiry);\n }\n\n async getLyraOptionStrike(\n market: LyraOptionMarket,\n expiry: number,\n strike: number\n ): Promise<Strike> {\n return await getStrike(this.network, market, expiry, strike);\n }\n\n async getLyraOptionQuote(\n strike: Strike,\n type: LyraOptionType,\n tradeType: LyraTradeType,\n amount: BigNumber | string\n ): Promise<Quote> {\n return await getQuote(\n strike,\n type,\n tradeType,\n ethers.BigNumber.from(amount)\n );\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Contract, Wallet } from \"ethers\";\n\nimport PoolFactory from \"../abi/PoolFactory.json\";\nimport PoolLogic from \"../abi/PoolLogic.json\";\nimport ManagerLogic from \"../abi/PoolManagerLogic.json\";\nimport { factoryAddress } from \"../config\";\nimport { Network, SupportedAsset } from \"../types\";\n\nimport { Pool } from \"./pool\";\nimport { Utils } from \"./utils\";\n\nexport class Dhedge {\n public network: Network;\n public signer: Wallet;\n public factory: Contract;\n public utils: Utils;\n public constructor(wallet: Wallet, network: Network) {\n this.network = network;\n this.signer = wallet;\n this.factory = new Contract(\n factoryAddress[network],\n PoolFactory.abi,\n this.signer\n );\n this.utils = new Utils(this.network, this.signer);\n }\n\n /**\n * Create a new pool.\n *\n * @param {string} managerName Name of manager\n * @param {string} poolName Pool name\n * @param {string} symbol Token symbol\n * @param {tuple[]} supportedAssets Enabled assets to trade\n * @param {number|BigNumber} performanceFeeNumerator Performance fee in percent\n * @param {number|BigNumber} managerFeeNumerator Manager fee in percent\n * @param {number|BigNumber} entryFeeNumerator Entry fee in percent\n * @param {number|BigNumber} exitFeeNumerator Exit fee in percent\n * @param {any} options Transaction options\n * @returns {Pool} Created Pool\n */\n public async createPool(\n managerName: string,\n poolName: string,\n symbol: string,\n supportedAssets: SupportedAsset[],\n performanceFeeNumerator = 0,\n managerFeeNumerator = 0,\n entryFeeNumerator = 0,\n exitFeeNumerator = 0,\n options: any = null\n ): Promise<Pool> {\n const pool = await this.factory.createFund(\n false,\n this.signer.getAddress(),\n managerName,\n poolName,\n symbol,\n performanceFeeNumerator * 100,\n managerFeeNumerator * 100,\n entryFeeNumerator * 100,\n exitFeeNumerator * 100,\n supportedAssets,\n options\n );\n const receipt = await pool.wait(1);\n\n const creationEvent = receipt.events.find(\n (item: { event: string }) => item.event === \"FundCreated\"\n );\n if (!creationEvent) throw new Error(\"Fund not created\");\n\n const poolAddress = creationEvent.args.fundAddress;\n const poolLogic = new Contract(poolAddress, PoolLogic.abi, this.signer);\n const managerLogicAddress = await poolLogic.poolManagerLogic();\n const managerLogic = new Contract(\n managerLogicAddress,\n ManagerLogic.abi,\n this.signer\n );\n\n return new Pool(\n this.network,\n this.signer,\n poolLogic,\n managerLogic,\n this.utils,\n this.factory\n );\n }\n\n /**\n * Load a pool based on the provided address\n * @param {string} address Pool address\n * @returns {Pool} Loaded Pool\n */\n public async loadPool(address: string, isDhedge = true): Promise<Pool> {\n const poolLogic = new Contract(address, PoolLogic.abi, this.signer);\n let managerLogicAddress = address;\n if (isDhedge) managerLogicAddress = await poolLogic.poolManagerLogic();\n const managerLogic = new Contract(\n managerLogicAddress,\n ManagerLogic.abi,\n this.signer\n );\n\n return new Pool(\n this.network,\n this.signer,\n poolLogic,\n managerLogic,\n this.utils,\n this.factory,\n isDhedge\n );\n }\n\n /**\n * Check if pool address is valid\n * @param {string} address Pool address\n * @returns {boolean} Is valid pool address\n */\n validatePool(address: string): Promise<boolean> {\n return this.factory.isPool(address);\n }\n}\n","// see https://stackoverflow.com/a/41102306\nconst CAN_SET_PROTOTYPE = \"setPrototypeOf\" in Object;\n\nexport class ApiError extends Error {\n public constructor(message?: string) {\n super(message ?? \"Api request failed\");\n this.name = this.constructor.name;\n if (CAN_SET_PROTOTYPE) Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n"],"names":["undefined","Network","Dapp","Transaction","require","config","factoryAddress","POLYGON","process","env","STAGING_CONTRACTS","OPTIMISM","ARBITRUM","BASE","ETHEREUM","PLASMA","routerAddress","SUSHISWAP","AAVE","AAVEV3","ONEINCH","QUICKSWAP","BALANCER","UNISWAPV3","ARRAKIS","TOROS","ODOS","KYBERSWAP","SYNTHETIX","VELODROME","VELODROMEV2","LYRA","PENDLE","RAMSES","AERODROME","dappFactoryAddress","stakingAddress","COMPOUNDV3","PANCAKECL","aaveAddressProvider","nonfungiblePositionManagerAddress","VELODROMECL","RAMSESCL","AERODROMECL","networkChainIdMap","balancerSubgraph","multiCallAddress","lyraNetworkMap","Deployment","Mainnet","MaxUint128","UNISWAPV3_QUOTER_ADDRESS","SYNTHETIX_TRACKING_CODE","flatMoneyContractAddresses","DelayedOrder","FlatcoinVault","StableModule","COLLATERAL","OrderExecution","getDeadline","pool","signer","provider","getBlock","timestamp","tryParsePrice","baseToken","quoteToken","value","split","whole","fraction","decimals","length","withoutDecimals","JSBI","BigInt","Price","multiply","tryParseTick","feeAmount","price","tick","sqrtRatioX96","encodeSqrtRatioX96","numerator","denominator","greaterThanOrEqual","TickMath","MAX_SQRT_RATIO","MAX_TICK","lessThanOrEqual","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","getUniswapV3MintTxData","dapp","assetA","assetB","amountA","amountB","minPrice","maxPrice","minTick","maxTick","feeAmountOrTickSpacing","tickLower","tickUpper","chainId","network","Promise","all","map","asset","utils","getDecimals","tokenA","Token","tokenB","sortsBefore","token0","token1","invertPrice","equals","toString","amount0","amount1","address","mintParams","iNonfungiblePositionManager","ethers","Interface","INonfungiblePositionManager","abi","IVeldodromePositionManager","push","IRamsesPositionManager","encodeFunctionData","MINT","getUniswapV3Liquidity","tokenId","Contract","positions","result","BigNumber","liquidity","getIncreaseLiquidityTxData","INCREASE_LIQUIDITY","txData","IArrakisV1RouterStaking","ADD_LIQUIDITY_STAKE","Error","getDecreaseLiquidityTxData","amount","isStaked","times","div","DECREASE_LIQUIDITY","toFixed","decreaseLiquidityTxData","collectTxData","COLLECT","multicallParams","IPancakeMasterChef","harvestTxData","HARVEST","unshift","burnTxData","BURN","MULTI_CALL","getBalance","REMOVE_LIQUIDITY_UNSTAKE","getUniswapV3SwapTxData","amountIn","slippage","quoterContract","IUniswapV3Quoter","callStatic","quoteExactInputSingle","quotedAmountOut","minAmountOut","mul","iUniswapV3Router","IUniswapV3Router","swapTx","loadPool","poolAddress","dhedge","Dhedge","isPool","validatePool","retry","fn","maxRetries","delayMs","attempt","console","warn","res","setTimeout","odosBaseUrl","getOdosSwapTxData","assetFrom","assetTo","referralCode","ODOS_REFERAL_CODE","Number","quoteParams","inputTokens","tokenAddress","outputTokens","proportion","slippageLimitPercent","userAddr","axios","post","quoteResult","assembleParams","pathId","data","assembleResult","swapTxData","transaction","error","ApiError","SWAPPER_ADDERSS","getSwapDataViaOdos","srcAsset","srcAmount","dstAsset","from","AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE","getCalculateSwapDataParams","torosAsset","factory","getAssetGuard","aaveAssetGuardAddress","aaveAssetGuard","AaveLendingPoolAssetGuardAbi","calculateSwapDataParams","swapDataParams","offchainSwapNeeded","srcData","getAaveAssetWithdrawData","dstData","srcDataToEncode","routerKey","formatBytes32String","receiver","swapData","coder","defaultAbiCoder","encodedSrcData","encode","withdrawData","createWithdrawTxArguments","useOnChainSwap","torosPool","managerLogic","getSupportedAssets","supportedAssets","assetObj","supportedAsset","slippageTolerance","aaveLendingPoolAddress","toLowerCase","getInitWithdrawalTxData","complexAssetsData","iEasySwapperV2","IEasySwapperV2","LOW_USD_VALUE_FOR_WITHDRAWAL","SLIPPAGE_FOR_LOW_VALUE_SWAP","getPoolDepositAsset","investAsset","getComposition","composition","find","e","isDeposit","getEasySwapperDepositQuote","easySwapper","depositQuote","getEasySwapperTxData","isWithdrawal","depositAsset","getAaveAssetsForUnderlying","assets","iLendingPool","ILendingPoolV3","ILendingPool","lendingPool","getReserveData","reserveData","aTokens","aTokenAddress","debtTokens","variableDebtTokenAddress","concat","getAaveV3ClaimTxData","rewardAsset","iAaveIncentives","IAaveV3Incentives","aaveAsset","claimTxData","constants","MaxUint256","getVelodromeAddLiquidityTxData","isStable","iVelodromeRouter","IVelodromeRouter","ADD_LIQUIDITY","getVelodromeRemoveLiquidityTxData","REMOVE_LIQUIDITY","getClOwner","ownerOf","call","options","contract","params","reject","getGasEstimateData","estimateFunc","txInfoData","txOptions","sdkOptions","gas","gasEstimationError","isDhedge","isSdkOptionsBoolean","useTraderAddressAsFrom","to","getPoolTxOrGasEstimate","args","onlyGetTxData","estimateGas","bind","sendTransaction","poolLogic","execTransaction","iVelodromeGaugeV1","IVelodromeGaugeV1","iVelodromeGaugeV2","IVelodromeGaugeV2","getVelodromeStakeTxData","v2","depositParams","iVelodromeGauge","getVelodromeClaimTxData","gauge","rewardAssetCount","Array","toNumber","keys","rewardAssets","getVelodromeCLClaimTxData","iVelodromeCLGauge","IVelodromeCLGauge","getBoard","market","expiry","lyra","Lyra","optionMarket","filteredBoards","liveBoards","filter","expiryTimestamp","getExpiries","getStrikes","strikes","getStrike","strike","filteredStrike","parseFloat","formatEther","strikePrice","getLyraTradeOptionType","isCall","isLong","isCoveredCall","optionType","includes","getOptionPositions","iOptionToken","__marketData","marketAddresses","optionToken","IOptionToken","getOwnerPositions","getQuote","type","tradeType","quote","getLyraOptionTxData","optionAmount","assetIn","collateralAmount","strikeId","id","filteredPosition","state","positionId","lyraOptionType","netPremiun","premium","add","fee","sub","txFunction","inputAmount","currentCollateral","setCollateral","collateral","iOptionMarketWrapper","IOptionMarketWrapper","tradeTx","contractAddresses","getFuturesChangeMarginTxData","ISynthetixFuturesMarketV2","FUTURES_TRACKING","getFuturesChangePositionTxData","futuresMarket","fillPrice","adjustmentFactor","lt","desiredFillPrice","getFuturesCancelOrderTxData","oneInchBaseUrl","getOneInchSwapTxData","forEasySwapper","ONEINCH_API_KEY","apiUrl","src","dst","toros","disableEstimate","usePermit2","get","headers","Authorization","response","tx","dstAmount","iXRam","IXRam","iRamsesNonfungiblePositionManager","IRamsesNonfungiblePositionManager","getCreateVestTxData","getExitVestTxData","vestId","getRewardsTxDta","rewards","getStableModuleContract","flatMoneyContracts","stableModuleContract","StableModuleAbi","getStableDepositQuote","depositAmount","stableDepositQuote","amountOut","getStableWithdrawQuote","withdrawAmount","stableWithdrawQuote","getKeeperFeeContract","flatcoinVaultContract","IFlatcoinVaultAbi","key","moduleAddress","keeperFeeContractAddress","keeperFeeContract","KeeperFeeAbi","getKeeperFee","maxKeeperFeeInUsd","send","feeHistory","gasPrice","baseFeePerGas","keeperfee","getKeeperFeeInUsd","keeperFeeInUsd","isFinite","gt","keeperFee","fundComposition","filteredFc","fc","toLocaleLowerCase","rateD1","rate","assetDecimal","getAnnounceStableDepositTxData","DelayedOrderAbi","getAnnounceStableWithdrawTxData","getCancelExistingOrderTxData","account","getCancelExistingOrderTxDataForV2","IOrderExecutionModuleAbi","mintUnitViaFlatMoney","adjustedDepositAmount","minus","mintUnitTxData","redeemUnitViaFlatMoney","redeemUnitTxData","cancelOrderViaFlatMoney","toAddress","cancelOrderTxData","getCompoundV3LendTxData","isCompoundV3Market","ICompoundV3Comet","IFToken","getCompoundV3WithdrawTxData","marketContract","getCompoundV3ClaimTxData","iCometRewards","ICometRewards","iMasterChef","IPanncakeMasterChef","getPancakeStakeTxData","getPancakeUnStakeTxData","getPancakeHarvestClaimTxData","pendleBaseUrl","getPendleSwapTxData","tokenIn","tokenOut","checkExitPostExpPT","expiredMarket","getExitExpPTTxData","getMarket","swapResult","checkUnderlying","token","networkId","underlyingAsset","isActive","marketResult","allMarkets","markets","pt","inactiveMarketResult","allInactiveMarkets","actionMiscV3","ActionMiscV3Abi","AddressZero","HashZero","PTcontract","PTAbi","SY","SYAbi","SYcontract","exchangeRate","decimalPlaces","ROUND_DOWN","getSwapWithdrawData","trackedAssets","receiveToken","swapDestMinDestAmount","balance","aggregatorData","destData","destToken","minDestAmount","createCompleteWithdrawalTxArguments","getTrackedAssets","every","isSwapNeeded","estimatedMinReceiveAmount","swapTrackedAssets","getAssetHandler","assetHandlerAddress","assetHandler","AssetHandlerAbi","getUSDPrice","receiveTokenPriceD18","IERC20Abi","receiveTokenErc20","receiveTokenDecimals","swapTAsset","swapTAssetPriceD18","swapTAssetTokenErc20","swapTAssetDecimals","tokenBalanceBN","estimatedValueToSwapD0","adjustedSlippage","lte","tAssetInfos","reduce","acc","plus","withdrawalContracts","withdrawalVaultAddress","balanceOf","balanceOfReceiveToken","getCompleteWithdrawalTxData","completeWithdrawTxArguments","isOffchainSwap","kyberBaseUrl","getKyberSwapTxData","buildParams","routeSummary","sender","recipient","buildResult","Pool","mangerLogic","getFundComposition","item","index","approveDeposit","iERC20","IERC20","approve","deposit","withdraw","fundTokenAmount","approveTxData","approveStaking","approveUniswapV3Liquidity","approveSpender","spender","approveSpenderNFT","iERC721","IERC721","trade","getBalancerSwapTx","iSynthetix","ISynthetix","owner","daoAddress","SWAP_SYNTHS","iUniswapV2Router","IUniswapV2Router","getMinAmountOut","calculatedMinAmountOut","SWAP","addLiquidity","addLiquidityTxData","removeLiquidity","removeLiquidityTxData","stake","iMiniChefV2","IMiniChefV2","getLpPoolId","poolId","stakeTxData","DEPOSIT","stakeInGauge","rewardsGauge","IBalancerRewardsGauge","txTo","unStake","unStakeTxData","WITHDRAW","unstakeFromGauge","unstakeTxData","lend","depositTxData","lendCompoundV3","supplyTxData","withdrawDeposit","withdrawTxData","withdrawCompoundV3","borrow","borrowTxData","BORROW","repay","repayTxData","REPAY","harvestRewards","changeAssets","currentAssetsEnabled","currentAssets","newAssets","removedAssets","changedAssets","setTrader","trader","setPrivate","_private","setPoolPrivate","joinBalancerPool","amountsIn","joinPoolTxData","getBalancerJoinPoolTx","exitBalancerPool","singleExitAssetIndex","exitPoolTxData","getBalancerExitPoolTx","harvestAaveRewards","aaveIncentivesAddress","iAaveIncentivesController","IAaveIncentivesController","aaveIncentivesController","getUserUnclaimedRewards","CLAIM_REWARDS","harvestAaveV3Rewards","harvestCompoundV3Rewards","addLiquidityUniswapV3","mintTxData","decreaseLiquidity","dappAddress","tokenIdOwner","increaseLiquidity","claimFees","contractAddress","ILiquidityGaugeV4","getRewards","tradeUniswapV3","swapxData","addLiquidityVelodrome","removeLiquidityVelodrome","addLiquidityVelodromeV2","removeLiquidityVelodromeV2","addLiquidityV2","removeLiquidityV2","tradeLyraOption","collateralChangeAmount","getLyraPositions","changeFuturesMargin","changeAmount","changeFuturesPosition","cancelFuturesOrder","mintManagerFee","getAvailableManagerFee","availableManagerFee","vestTokens","exitVestedToken","completeTorosWithdrawal","destinationToken","Utils","getLpReserves","uniswapV2Factory","UniswapV2Factory","getPair","uniswapV2PairAddress","uniswapV2Pair","UniswapV2Pair","getReserves","reserve0","reserve1","poolAsset","masterChefV2","poolLength","idArray","_","v","lpToken","lpPoolAddresses","indexOf","assetFromChecked","getAddress","assetToChecked","reserves","pair","Pair","TokenAmount","route","Route","Trade","TradeType","EXACT_INPUT","minimumAmountOut","Percent","raw","sor","SOR","fetchPools","isFetched","swapType","SwapTypes","SwapExactIn","getSwaps","swaps","tokenAddresses","returnAmount","iBalancerV2Vault","IBalancerV2Vault","swap","assetInIndex","assetOutIndex","userData","Math","floor","Date","now","limits","forEach","i","balancerPoolId","bptAddress","slice","bptIndex","findIndex","poolAssetsAmounts","splice","joinPoolTx","fill","userTxData","exitPoolTx","getLyraOptionExpiries","getLyraOptionStrikes","getLyraOptionStrike","getLyraOptionQuote","wallet","PoolFactory","createPool","managerName","poolName","symbol","performanceFeeNumerator","managerFeeNumerator","entryFeeNumerator","exitFeeNumerator","createFund","wait","receipt","creationEvent","events","event","fundAddress","PoolLogic","poolManagerLogic","managerLogicAddress","ManagerLogic","CAN_SET_PROTOTYPE","Object","message","name","constructor","setPrototypeOf","prototype"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"v2-sdk.esm.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/types.ts","../src/config.ts","../src/utils/deadline.ts","../src/services/uniswap/V3Liquidity.ts","../src/services/uniswap/V3Trade.ts","../src/services/toros/pool.ts","../src/services/toros/retry.ts","../src/services/odos/index.ts","../src/services/toros/swapData.ts","../src/services/toros/initWithdrawal.ts","../src/services/toros/easySwapper.ts","../src/services/aave/assets.ts","../src/services/aave/incentives.ts","../src/services/velodrome/liquidity.ts","../src/utils/contract.ts","../src/services/velodrome/staking.ts","../src/services/lyra/markets.ts","../src/services/lyra/tradeOptionType.ts","../src/services/lyra/positions.ts","../src/services/lyra/quote.ts","../src/services/lyra/trade.ts","../src/services/futures/margin.ts","../src/services/futures/constants.ts","../src/services/futures/trade.ts","../src/services/oneInch/index.ts","../src/services/ramses/vesting.ts","../src/services/flatmoney/stableModule.ts","../src/services/flatmoney/keeperFee.ts","../src/services/flatmoney/stableLp.ts","../src/services/compound/lending.ts","../src/services/compound/rewards.ts","../src/services/pancake/staking.ts","../src/services/pendle/index.ts","../src/services/toros/completeWithdrawal.ts","../src/services/kyberSwap/index.ts","../src/entities/pool.ts","../src/entities/utils.ts","../src/entities/dhedge.ts","../src/errors.ts"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { Deployment } from \"@lyrafinance/lyra-js\";\nimport { BigNumber } from \"ethers\";\n\nexport enum Network {\n POLYGON = \"polygon\",\n OPTIMISM = \"optimism\",\n ARBITRUM = \"arbitrum\",\n BASE = \"base\",\n ETHEREUM = \"ethereum\",\n PLASMA = \"plasma\"\n}\n\nexport enum Dapp {\n SUSHISWAP = \"sushiswap\",\n AAVE = \"aave\",\n ONEINCH = \"1inch\",\n QUICKSWAP = \"quickswap\",\n BALANCER = \"balancer\",\n UNISWAPV3 = \"uniswapV3\",\n SYNTHETIX = \"synthetix\",\n AAVEV3 = \"aavev3\",\n ARRAKIS = \"arrakis\",\n TOROS = \"toros\",\n VELODROME = \"velodrome\",\n VELODROMEV2 = \"velodromeV2\",\n VELODROMECL = \"velodromeCL\",\n LYRA = \"lyra\",\n RAMSES = \"ramses\",\n AERODROME = \"aerodrome\",\n AERODROMECL = \"aerodromeCL\",\n RAMSESCL = \"ramsesCL\",\n PANCAKECL = \"pancakeCL\",\n COMPOUNDV3 = \"compoundV3\",\n ODOS = \"odos\",\n PENDLE = \"pendle\",\n KYBERSWAP = \"kyberswap\"\n}\n\nexport enum Transaction {\n SWAP = \"swapExactTokensForTokens\",\n ADD_LIQUIDITY = \"addLiquidity\",\n DEPOSIT = \"deposit\",\n HARVEST = \"harvest\",\n CLAIM_DISTRIBIUTIONS = \"claimDistributions\",\n CLAIM_REWARDS = \"claimRewards\",\n REMOVE_LIQUIDITY = \"removeLiquidity\",\n DECREASE_LIQUIDITY = \"decreaseLiquidity\",\n INCREASE_LIQUIDITY = \"increaseLiquidity\",\n COLLECT = \"collect\",\n MULTI_CALL = \"multicall\",\n BORROW = \"borrow\",\n REPAY = \"repay\",\n WITHDRAW = \"withdraw\",\n MINT = \"mint\",\n BURN = \"burn\",\n SWAP_SYNTHS = \"exchangeWithTracking\",\n ADD_LIQUIDITY_STAKE = \"addLiquidityAndStake\",\n REMOVE_LIQUIDITY_UNSTAKE = \"removeLiquidityAndUnstake\"\n}\n\nexport type AddressNetworkMap = Readonly<Record<Network, string>>;\n\nexport type AddressDappMap = {\n [key in Dapp]?: string;\n};\n\nexport type AddressDappNetworkMap = Readonly<Record<Network, AddressDappMap>>;\n\nexport type SupportedAsset = [string, boolean];\n\nexport type AssetEnabled = {\n asset: string;\n isDeposit: boolean;\n};\n\nexport type FundComposition = {\n asset: string;\n isDeposit: boolean;\n balance: BigNumber;\n rate: BigNumber;\n};\n\nexport type Reserves = {\n assetA: BigNumber;\n assetB: BigNumber;\n};\n\nexport type NetworkChainIdMap = Readonly<Record<Network, number>>;\n\nexport type LyraOptionMarket = \"eth\";\nexport type AddressMarketMap = {\n [key in LyraOptionMarket]: string;\n};\n\nexport type LyraTradeType = \"buy\" | \"sell\";\nexport type LyraOptionType = \"call\" | \"put\";\nexport type LyraNetworkMap = { [key in Network]?: Deployment };\nexport type LyraPosition = {\n positionId: BigNumber;\n strikeId: BigNumber;\n optionType: number;\n amount: BigNumber;\n collateral: BigNumber;\n state: number;\n};\n\nexport type SDKOptions =\n | {\n estimateGas: boolean;\n onlyGetTxData?: boolean;\n useTraderAddressAsFrom?: boolean;\n }\n | boolean; // shorthand for { estimateGas: true/false }; for backward compatibility\n","import {\n Dapp,\n AddressNetworkMap,\n Network,\n AddressDappNetworkMap,\n LyraNetworkMap\n} from \"./types\";\nimport { NetworkChainIdMap } from \".\";\nimport { Deployment } from \"@lyrafinance/lyra-js\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nrequire(\"dotenv\").config();\n\nexport const factoryAddress: AddressNetworkMap = {\n [Network.POLYGON]: process.env.STAGING_CONTRACTS\n ? \"0xDd87eCdB10cFF7004276AAbAbd30e7a08F69bb53\"\n : \"0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0\",\n [Network.OPTIMISM]: \"0x5e61a079A178f0E5784107a4963baAe0c5a680c6\",\n [Network.ARBITRUM]: \"0xfffb5fb14606eb3a548c113026355020ddf27535\",\n [Network.BASE]: \"0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F\",\n [Network.ETHEREUM]: \"0x96D33bCF84DdE326014248E2896F79bbb9c13D6d\",\n [Network.PLASMA]: \"0xAec4975Fc8ad911464D2948D771488b30F6eEE87\"\n};\n\nexport const routerAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506\",\n [Dapp.AAVE]: \"0x8dFf5E27EA6b7AC08EbFdf9eB090F32ee9a30fcf\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.QUICKSWAP]: \"0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff\",\n [Dapp.BALANCER]: \"0xBA12222222228d8Ba445958a75a0704d566BF2C8\",\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.ARRAKIS]: \"0xc73fb100a995b33f9fa181d420f4c8d74506df66\",\n [Dapp.TOROS]: \"0x45b90480D6F643dE2f128db091A357C3c90399f2\",\n [Dapp.ODOS]: \"0x4e3288c9ca110bcc82bf38f09a7b425c095d92bf\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.OPTIMISM]: {\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.SYNTHETIX]: \"0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.TOROS]: \"0x2Ed1bd7f66e47113672f3870308b5E867C5bb743\",\n [Dapp.VELODROME]: \"0x9c12939390052919aF3155f41Bf4160Fd3666A6f\",\n [Dapp.VELODROMEV2]: \"0xa062ae8a9c5e11aaa026fc2670b0d65ccc8b2858\",\n [Dapp.LYRA]: \"0xCCE7819d65f348c64B7Beb205BA367b3fE33763B\",\n [Dapp.ARRAKIS]: \"0x9ce88a56d120300061593eF7AD074A1B710094d5\",\n [Dapp.ODOS]: \"0xca423977156bb05b13a2ba3b76bc5419e2fe9680\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.ARBITRUM]: {\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.UNISWAPV3]: \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n [Dapp.AAVEV3]: \"0x794a61358D6845594F94dc1DB02A252b5b4814aD\",\n [Dapp.BALANCER]: \"0xBA12222222228d8Ba445958a75a0704d566BF2C8\",\n [Dapp.RAMSES]: \"0xaaa87963efeb6f7e0a2711f397663105acb1805e\",\n [Dapp.TOROS]: \"0xA5679C4272A056Bb83f039961fae7D99C48529F5\",\n [Dapp.ODOS]: \"0xa669e7A0d4b3e4Fa48af2dE86BD4CD7126Be4e13\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.BASE]: {\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.AERODROME]: \"0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43\",\n [Dapp.AAVEV3]: \"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\",\n [Dapp.TOROS]: \"0xf067575Eb60c7587C11e867907AA7284833704d1\",\n [Dapp.ODOS]: \"0x19cEeAd7105607Cd444F5ad10dd51356436095a1\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.ETHEREUM]: {\n [Dapp.AAVEV3]: \"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\n [Dapp.ODOS]: \"0xCf5540fFFCdC3d510B18bFcA6d2b9987b0772559\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.ONEINCH]: \"0x111111125421ca6dc452d289314280a0f8842a65\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n },\n [Network.PLASMA]: {\n [Dapp.AAVEV3]: \"0x925a2A7214Ed92428B5b1B090F80b25700095e12\",\n [Dapp.PENDLE]: \"0x888888888889758F76e7103c6CbF23ABbF58F946\",\n [Dapp.KYBERSWAP]: \"0x6131B5fae19EA4f9D964eAc0408E4408b66337b5\"\n }\n};\n\nexport const dappFactoryAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0xc35DADB65012eC5796536bD9864eD8773aBc74C4\",\n [Dapp.QUICKSWAP]: \"0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32\"\n },\n [Network.OPTIMISM]: {},\n [Network.ARBITRUM]: {},\n [Network.BASE]: {},\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const stakingAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.SUSHISWAP]: \"0x0769fd68dFb93167989C6f7254cd0D766Fb2841F\",\n [Dapp.BALANCER]: \"0x0F3e0c4218b7b0108a3643cFe9D3ec0d4F57c54e\",\n [Dapp.AAVE]: \"0x357D51124f59836DeD84c8a1730D72B749d8BC23\",\n [Dapp.AAVEV3]: \"0x929EC64c34a17401F460460D4B9390518E5B473e\"\n },\n [Network.OPTIMISM]: {\n [Dapp.AAVEV3]: \"0x929EC64c34a17401F460460D4B9390518E5B473e\",\n [Dapp.COMPOUNDV3]: \"0x443ea0340cb75a160f31a440722dec7b5bc3c2e9\"\n },\n [Network.ARBITRUM]: {\n [Dapp.COMPOUNDV3]: \"0x88730d254a2f7e6ac8388c3198afd694ba9f7fae\",\n [Dapp.PANCAKECL]: \"0x5e09ACf80C0296740eC5d6F643005a4ef8DaA694\"\n },\n [Network.BASE]: {\n [Dapp.PANCAKECL]: \"0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3\"\n },\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const aaveAddressProvider: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.AAVE]: \"0xd05e3E715d945B59290df0ae8eF85c1BdB684744\",\n [Dapp.AAVEV3]: \"0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb\"\n },\n [Network.OPTIMISM]: {\n [Dapp.AAVEV3]: \"0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb\"\n },\n [Network.ARBITRUM]: {\n [Dapp.AAVEV3]: \"0xa97684ead0e402dc232d5a977953df7ecbab3cdb\"\n },\n [Network.BASE]: {\n // https://docs.aave.com/developers/deployed-contracts/v3-mainnet/base\n [Dapp.AAVEV3]: \"0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D\"\n },\n [Network.ETHEREUM]: {\n [Dapp.AAVEV3]: \"0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e\"\n },\n [Network.PLASMA]: {\n [Dapp.AAVEV3]: \"0x061D8e131F26512348ee5FA42e2DF1bA9d6505E9\"\n }\n};\nexport const nonfungiblePositionManagerAddress: AddressDappNetworkMap = {\n [Network.POLYGON]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\"\n },\n [Network.OPTIMISM]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n [Dapp.VELODROMECL]: \"0x416b433906b1B72FA758e166e239c43d68dC6F29\"\n },\n [Network.ARBITRUM]: {\n [Dapp.UNISWAPV3]: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n [Dapp.RAMSESCL]: \"0xAA277CB7914b7e5514946Da92cb9De332Ce610EF\",\n [Dapp.PANCAKECL]: \"0x46a15b0b27311cedf172ab29e4f4766fbe7f4364\"\n },\n [Network.BASE]: {\n [Dapp.UNISWAPV3]: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\n [Dapp.AERODROMECL]: \"0x827922686190790b37229fd06084350e74485b72\",\n [Dapp.PANCAKECL]: \"0x46A15B0b27311cedF172AB29E4f4766fbE7F4364\"\n },\n [Network.ETHEREUM]: {},\n [Network.PLASMA]: {}\n};\n\nexport const networkChainIdMap: NetworkChainIdMap = {\n [Network.POLYGON]: 137,\n [Network.OPTIMISM]: 10,\n [Network.ARBITRUM]: 42161,\n [Network.BASE]: 8453,\n [Network.ETHEREUM]: 1,\n [Network.PLASMA]: 9745\n};\n\nexport const balancerSubgraph: AddressNetworkMap = {\n [Network.POLYGON]:\n \"https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-v2\",\n [Network.OPTIMISM]: \"\",\n [Network.ARBITRUM]: \"\",\n [Network.BASE]: \"\",\n [Network.ETHEREUM]: \"\",\n [Network.PLASMA]: \"\"\n};\n\nexport const multiCallAddress: AddressNetworkMap = {\n [Network.POLYGON]: \"0x275617327c958bD06b5D6b871E7f491D76113dd8\",\n [Network.OPTIMISM]: \"\",\n [Network.ARBITRUM]: \"\",\n [Network.BASE]: \"\",\n [Network.ETHEREUM]: \"\",\n [Network.PLASMA]: \"\"\n};\n\nexport const lyraNetworkMap: LyraNetworkMap = {\n [Network.OPTIMISM]: Deployment.Mainnet\n};\n\nexport const MaxUint128 = \"0xffffffffffffffffffffffffffffffff\";\nexport const UNISWAPV3_QUOTER_ADDRESS =\n \"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6\";\n\nexport const SYNTHETIX_TRACKING_CODE =\n \"0x4448454447450000000000000000000000000000000000000000000000000000\";\n\nexport const flatMoneyContractAddresses: Readonly<Partial<\n Record<\n Network,\n {\n OrderExecution?: string;\n DelayedOrder: string;\n FlatcoinVault: string;\n StableModule: string;\n COLLATERAL: string;\n }\n >\n>> = {\n [Network.BASE]: {\n DelayedOrder: \"0x6D857e9D24a7566bB72a3FB0847A3E0e4E1c2879\",\n FlatcoinVault: \"0x95Fa1ddc9a78273f795e67AbE8f1Cd2Cd39831fF\",\n StableModule: \"0xb95fB324b8A2fAF8ec4f76e3dF46C718402736e2\",\n COLLATERAL: \"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c\" // RETH\n },\n [Network.OPTIMISM]: {\n OrderExecution: \"0x7805CB7fb2C2e70FDdF92949065D9Ee1Fc2F72a8\",\n DelayedOrder: \"0xd917A0C9B21Bb71DF1209d2c211Ad83004F01554\", // OrderAnnouncementModule\n FlatcoinVault: \"0x86C7b9640302082B0dF78023F930d8612bFcaD3f\",\n COLLATERAL: \"0x68f180fcCe6836688e9084f035309E29Bf0A2095\", // WBTC\n StableModule: \"0x357CB23571EF7a3d6189b7FAcFC361eA71f7CAB5\"\n },\n [Network.ARBITRUM]: {\n OrderExecution: \"0x7e50AD6E467D9FAFC3B4BFd003247cEaA2F17e5b\",\n DelayedOrder: \"0x2326BB21B769D81E134C9b305ca156f989249fE7\", // OrderAnnouncementModule\n FlatcoinVault: \"0x29fAD9d44C550e5D8081AB35763797B39d75b858\",\n COLLATERAL: \"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f\", // WBTC\n StableModule: \"0xcD3657cB0E851b6a734c4D1e7FC2640Bcd9f6B2d\"\n }\n};\n","import { Pool } from \"../entities\";\n\nexport const getDeadline = async (pool: Pool): Promise<number> => {\n const timestamp = (await pool.signer.provider.getBlock(\"latest\")).timestamp;\n return timestamp + 60 * 20; //add 20 min\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Token, Price } from \"@uniswap/sdk-core\";\nimport {\n encodeSqrtRatioX96,\n FeeAmount,\n nearestUsableTick,\n priceToClosestTick,\n TICK_SPACINGS,\n TickMath\n} from \"@uniswap/v3-sdk\";\nimport { ethers } from \"ethers\";\nimport JSBI from \"jsbi\";\nimport { Dapp, Pool, Transaction } from \"../..\";\nimport {\n MaxUint128,\n networkChainIdMap,\n nonfungiblePositionManagerAddress\n} from \"../../config\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\nimport IVeldodromePositionManager from \"../../abi/IVelodromeNonfungiblePositionManager.json\";\nimport IRamsesPositionManager from \"../../abi/IRamsesNonfungiblePositionManager.json\";\nimport IArrakisV1RouterStaking from \"../../abi/IArrakisV1RouterStaking.json\";\nimport IPancakeMasterChef from \"../../abi/IPancakeMasterChefV3.json\";\nimport { getDeadline } from \"../../utils/deadline\";\nimport BigNumber from \"bignumber.js\";\n\nexport function tryParsePrice(\n baseToken: Token,\n quoteToken: Token,\n value: string\n): Price<Token, Token> {\n const [whole, fraction] = value.split(\".\");\n\n const decimals = fraction?.length ?? 0;\n const withoutDecimals = JSBI.BigInt((whole ?? \"\") + (fraction ?? \"\"));\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(\n JSBI.BigInt(10 ** decimals),\n JSBI.BigInt(10 ** baseToken.decimals)\n ),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals))\n );\n}\n\nexport function tryParseTick(\n baseToken: Token,\n quoteToken: Token,\n feeAmount: number,\n value: string\n): number {\n const price = tryParsePrice(baseToken, quoteToken, value);\n\n let tick: number;\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK;\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK;\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price);\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount as FeeAmount]);\n}\n\nexport async function getUniswapV3MintTxData(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp.PANCAKECL,\n\n pool: Pool,\n assetA: string,\n assetB: string,\n amountA: string | ethers.BigNumber,\n amountB: string | ethers.BigNumber,\n minPrice: number | null,\n maxPrice: number | null,\n minTick: number | null,\n maxTick: number | null,\n feeAmountOrTickSpacing: number\n): Promise<any> {\n let tickLower = 0;\n let tickUpper = 0;\n const chainId = networkChainIdMap[pool.network];\n const decimals = await Promise.all(\n [assetA, assetB].map(asset => pool.utils.getDecimals(asset))\n );\n const tokenA = new Token(chainId, assetA, decimals[0]);\n const tokenB = new Token(chainId, assetB, decimals[1]);\n const [token0, token1] = tokenA.sortsBefore(tokenB)\n ? [tokenA, tokenB]\n : [tokenB, tokenA];\n const invertPrice = !tokenA.equals(token0);\n if (minPrice && maxPrice) {\n tickLower = invertPrice\n ? tryParseTick(\n token1,\n token0,\n feeAmountOrTickSpacing,\n maxPrice.toString()\n )\n : tryParseTick(\n token0,\n token1,\n feeAmountOrTickSpacing,\n minPrice.toString()\n );\n tickUpper = invertPrice\n ? tryParseTick(\n token1,\n token0,\n feeAmountOrTickSpacing,\n minPrice.toString()\n )\n : tryParseTick(\n token0,\n token1,\n feeAmountOrTickSpacing,\n maxPrice.toString()\n );\n } else if (minTick && maxTick) {\n tickLower = minTick;\n tickUpper = maxTick;\n }\n const [amount0, amount1] = invertPrice\n ? [amountB, amountA]\n : [amountA, amountB];\n\n const mintParams = [\n token0.address,\n token1.address,\n feeAmountOrTickSpacing,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ];\n\n let iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n );\n\n if (dapp === Dapp.VELODROMECL || dapp === Dapp.AERODROMECL) {\n iNonfungiblePositionManager = new ethers.utils.Interface(\n IVeldodromePositionManager.abi\n );\n mintParams.push(0);\n }\n\n if (dapp === Dapp.RAMSESCL) {\n iNonfungiblePositionManager = new ethers.utils.Interface(\n IRamsesPositionManager\n );\n mintParams.push(0);\n }\n\n return iNonfungiblePositionManager.encodeFunctionData(Transaction.MINT, [\n mintParams\n ]);\n\n return;\n}\n\nexport async function getUniswapV3Liquidity(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp,\n tokenId: string,\n pool: Pool\n): Promise<BigNumber> {\n const iNonfungiblePositionManager = new ethers.Contract(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n nonfungiblePositionManagerAddress[pool.network][dapp]!,\n INonfungiblePositionManager.abi,\n pool.signer\n );\n const result = await iNonfungiblePositionManager.positions(tokenId);\n return new BigNumber(result.liquidity.toString());\n}\n\nexport async function getIncreaseLiquidityTxData(\n pool: Pool,\n dapp: Dapp,\n tokenId: string,\n amountA: ethers.BigNumber | string,\n amountB: ethers.BigNumber | string\n): Promise<any> {\n let txData;\n if (\n dapp === Dapp.UNISWAPV3 ||\n dapp === Dapp.VELODROMECL ||\n dapp === Dapp.AERODROMECL ||\n dapp === Dapp.RAMSESCL ||\n dapp === Dapp.PANCAKECL\n ) {\n const abi = new ethers.utils.Interface(INonfungiblePositionManager.abi);\n txData = abi.encodeFunctionData(Transaction.INCREASE_LIQUIDITY, [\n [tokenId, amountA, amountB, 0, 0, await getDeadline(pool)]\n ]);\n } else if (dapp === Dapp.ARRAKIS) {\n const abi = new ethers.utils.Interface(IArrakisV1RouterStaking.abi);\n txData = abi.encodeFunctionData(Transaction.ADD_LIQUIDITY_STAKE, [\n tokenId,\n amountA,\n amountB,\n 0,\n 0,\n 0,\n pool.address\n ]);\n } else {\n throw new Error(\"dapp not supported\");\n }\n\n return txData;\n}\n\nexport async function getDecreaseLiquidityTxData(\n pool: Pool,\n dapp: Dapp,\n tokenId: string,\n amount = 100,\n isStaked: boolean\n): Promise<any> {\n let txData;\n if (\n dapp === Dapp.UNISWAPV3 ||\n dapp === Dapp.VELODROMECL ||\n dapp === Dapp.AERODROMECL ||\n dapp === Dapp.RAMSESCL ||\n dapp === Dapp.PANCAKECL\n ) {\n const abi = new ethers.utils.Interface(INonfungiblePositionManager.abi);\n const liquidity = (await getUniswapV3Liquidity(dapp, tokenId, pool))\n .times(amount)\n .div(100);\n\n const decreaseLiquidityTxData = abi.encodeFunctionData(\n Transaction.DECREASE_LIQUIDITY,\n [[tokenId, liquidity.toFixed(0), 0, 0, await getDeadline(pool)]]\n );\n const collectTxData = abi.encodeFunctionData(Transaction.COLLECT, [\n [tokenId, pool.address, MaxUint128, MaxUint128]\n ]);\n\n const multicallParams = [decreaseLiquidityTxData, collectTxData];\n\n if (isStaked && dapp === Dapp.PANCAKECL) {\n const abi = new ethers.utils.Interface(IPancakeMasterChef);\n const harvestTxData = abi.encodeFunctionData(Transaction.HARVEST, [\n tokenId,\n pool.address\n ]);\n multicallParams.unshift(harvestTxData);\n }\n\n if (amount === 100) {\n const burnTxData = abi.encodeFunctionData(Transaction.BURN, [tokenId]);\n multicallParams.push(burnTxData);\n }\n txData = abi.encodeFunctionData(Transaction.MULTI_CALL, [multicallParams]);\n } else if (dapp === Dapp.ARRAKIS) {\n const abi = new ethers.utils.Interface(IArrakisV1RouterStaking.abi);\n const liquidity = new BigNumber(\n (await pool.utils.getBalance(tokenId, pool.address)).toString()\n )\n .times(amount)\n .div(100);\n txData = abi.encodeFunctionData(Transaction.REMOVE_LIQUIDITY_UNSTAKE, [\n tokenId,\n liquidity,\n 0,\n 0,\n pool.address\n ]);\n } else {\n throw new Error(\"dapp not supported\");\n }\n return txData;\n}\n","import { ethers } from \"ethers\";\nimport { Pool } from \"../..\";\n\nimport IUniswapV3Router from \"../../abi/IUniswapV3Router.json\";\nimport IUniswapV3Quoter from \"../../abi/IUniswapV3Quoter.json\";\nimport { UNISWAPV3_QUOTER_ADDRESS } from \"../../config\";\n\nexport async function getUniswapV3SwapTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amountIn: string | ethers.BigNumber,\n slippage: number,\n feeAmount: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const quoterContract = new ethers.Contract(\n UNISWAPV3_QUOTER_ADDRESS,\n IUniswapV3Quoter.abi,\n pool.signer\n );\n\n const quotedAmountOut: ethers.BigNumber = await quoterContract.callStatic.quoteExactInputSingle(\n assetA,\n assetB,\n feeAmount,\n amountIn.toString(),\n 0\n );\n\n const minAmountOut = quotedAmountOut.mul((100 - slippage) * 100).div(10000);\n\n const iUniswapV3Router = new ethers.utils.Interface(IUniswapV3Router.abi);\n const swapTx = iUniswapV3Router.encodeFunctionData(\"exactInputSingle\", [\n [\n assetA,\n assetB,\n feeAmount,\n pool.address,\n amountIn.toString(),\n minAmountOut.toString(),\n 0\n ]\n ]);\n return swapTx;\n}\n","import { Dhedge, Pool } from \"../..\";\n\nexport async function loadPool(pool: Pool, poolAddress: string): Promise<Pool> {\n const dhedge = new Dhedge(pool.signer, pool.network);\n return await dhedge.loadPool(poolAddress);\n}\n\nexport async function isPool(\n pool: Pool,\n poolAddress: string\n): Promise<boolean> {\n const dhedge = new Dhedge(pool.signer, pool.network);\n return await dhedge.validatePool(poolAddress);\n}\n","export async function retry<T>({\n fn,\n maxRetries = 3,\n delayMs = 1000\n}: {\n fn: () => Promise<T>;\n maxRetries?: number;\n delayMs?: number;\n}): Promise<T> {\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n if (attempt === maxRetries) {\n throw new Error(`Retry failed after ${maxRetries} attempts: ${err}`);\n }\n\n console.warn(\n `Retry ${attempt}/${maxRetries} failed, retrying in ${delayMs}ms`,\n err\n );\n await new Promise(res => setTimeout(res, delayMs));\n }\n }\n\n // Should never reach here\n throw new Error(\"Unexpected retry failure\");\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap } from \"../../config\";\nimport { Pool } from \"../../entities\";\n\nexport const odosBaseUrl = \"https://api.odos.xyz/sor\";\n\nexport async function getOdosSwapTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string }> {\n let referralCode = 0; // Defaults to 0 for unregistered activity.\n if (\n process.env.ODOS_REFERAL_CODE &&\n Number(process.env.ODOS_REFERAL_CODE) > 0\n ) {\n referralCode = Number(process.env.ODOS_REFERAL_CODE);\n }\n const quoteParams = {\n chainId: networkChainIdMap[pool.network],\n inputTokens: [\n {\n tokenAddress: assetFrom,\n amount: amountIn.toString()\n }\n ],\n outputTokens: [\n {\n tokenAddress: assetTo,\n proportion: 1\n }\n ],\n slippageLimitPercent: slippage,\n userAddr: pool.address,\n referralCode\n };\n try {\n const quoteResult = await axios.post(\n `${odosBaseUrl}/quote/v2`,\n quoteParams\n );\n\n const assembleParams = {\n pathId: quoteResult.data.pathId,\n userAddr: pool.address\n };\n\n const assembleResult = await axios.post(\n `${odosBaseUrl}/assemble`,\n assembleParams\n );\n return {\n swapTxData: assembleResult.data.transaction.data,\n minAmountOut: assembleResult.data.outputTokens[0].amount\n };\n } catch (e) {\n console.error(\"Error in Odos API request:\", e);\n throw new ApiError(\"Swap api request of Odos failed\");\n }\n}\n","import axios from \"axios\";\nimport BigNumber from \"bignumber.js\";\nimport { odosBaseUrl } from \"../odos\";\n\nexport const SWAPPER_ADDERSS = \"0x4F754e0F0924afD74980886b0B479Fa1D7C58D0D\";\n\nexport interface SwapParams {\n srcAsset: string; // Source asset address\n srcAmount: string; // Amount to swap (use string for big numbers)\n dstAsset: string; // Destination asset address\n chainId: number; // Chain ID\n from: string; // Sender address\n receiver: string; // Receiver address\n slippage: number; // Slippage tolerance in basis points (100 = 1%)\n}\n\nexport const getSwapDataViaOdos = async ({\n srcAsset,\n srcAmount,\n dstAsset,\n chainId,\n from,\n slippage\n}: SwapParams): Promise<string> => {\n let referralCode = 0; // Defaults to 0 for unregistered activity.\n if (\n process.env.ODOS_REFERAL_CODE &&\n Number(process.env.ODOS_REFERAL_CODE) > 0\n ) {\n referralCode = Number(process.env.ODOS_REFERAL_CODE);\n }\n const quoteParams = {\n chainId: chainId,\n inputTokens: [\n {\n tokenAddress: srcAsset,\n amount: srcAmount\n }\n ],\n outputTokens: [\n {\n tokenAddress: dstAsset,\n proportion: 1\n }\n ],\n slippageLimitPercent: new BigNumber(slippage).div(100).toString(), // Convert basis points to percentage\n userAddr: from,\n referralCode\n };\n try {\n const quoteResult = await axios.post(\n `${odosBaseUrl}/quote/v2`,\n quoteParams\n );\n\n const assembleParams = {\n pathId: quoteResult.data.pathId,\n userAddr: from\n };\n\n const assembleResult = await axios.post(\n `${odosBaseUrl}/assemble`,\n assembleParams\n );\n return assembleResult.data.transaction.data;\n } catch (e) {\n console.error(\"Error in Odos API request:\", e);\n throw new Error(\"Swap api request of Odos failed\");\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Dapp, ethers, Pool } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport { retry } from \"./retry\";\nimport AaveLendingPoolAssetGuardAbi from \"../../abi/IAaveLendingPoolAssetGuard.json\";\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport { loadPool } from \"./pool\";\nimport { getSwapDataViaOdos, SWAPPER_ADDERSS } from \"./swapData\";\nconst AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE = 150; // 1.5% slippage for onchain swap in Aave withdrawal\n\nconst getCalculateSwapDataParams = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number\n): Promise<{\n offchainSwapNeeded: boolean;\n swapDataParams: any;\n}> => {\n const aaveAssetGuardAddress = await pool.factory.getAssetGuard(\n routerAddress[pool.network][Dapp.AAVEV3] as string\n );\n\n const aaveAssetGuard = new ethers.Contract(\n aaveAssetGuardAddress,\n AaveLendingPoolAssetGuardAbi,\n pool.signer\n );\n const swapDataParams = await aaveAssetGuard.callStatic.calculateSwapDataParams(\n torosAsset,\n amountIn,\n slippage\n );\n\n return {\n offchainSwapNeeded: swapDataParams.srcData.length !== 0,\n swapDataParams\n };\n};\n\nconst getAaveAssetWithdrawData = async (\n pool: Pool,\n swapDataParams: any,\n slippage: number\n) => {\n const { srcData, dstData } = swapDataParams;\n\n const srcDataToEncode: unknown[] = [];\n const routerKey = ethers.utils.formatBytes32String(\"ODOS_V2\");\n for (const { asset, amount } of srcData) {\n const swapData = await retry({\n fn: () => {\n return getSwapDataViaOdos({\n srcAsset: asset,\n srcAmount: amount.toString(),\n dstAsset: dstData.asset,\n chainId: networkChainIdMap[pool.network],\n from: SWAPPER_ADDERSS,\n receiver: SWAPPER_ADDERSS,\n slippage\n });\n },\n delayMs: 1500,\n maxRetries: 7\n });\n srcDataToEncode.push([asset, amount, [routerKey, swapData]]);\n }\n const coder = ethers.utils.defaultAbiCoder;\n\n const encodedSrcData = coder.encode(\n [\"tuple(address, uint256, tuple(bytes32, bytes))[]\"],\n [srcDataToEncode]\n );\n const withdrawData = coder.encode(\n [\"tuple(bytes, tuple(address, uint256), uint256)\"],\n [[encodedSrcData, [dstData.asset, dstData.amount], slippage]]\n );\n\n return withdrawData;\n};\n\nexport const createWithdrawTxArguments = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<any> => {\n const torosPool = await loadPool(pool, torosAsset);\n const supportedAssets: {\n asset: string;\n }[] = await torosPool.managerLogic.getSupportedAssets();\n\n if (useOnChainSwap) {\n return supportedAssets.map(assetObj => {\n return {\n supportedAsset: assetObj.asset,\n withdrawData: \"0x\",\n slippageTolerance: AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE\n };\n });\n }\n\n // for off-chain swap\n const aaveLendingPoolAddress = routerAddress[pool.network][\n Dapp.AAVEV3\n ] as string;\n return Promise.all(\n supportedAssets.map(async assetObj => {\n if (\n assetObj.asset.toLowerCase() === aaveLendingPoolAddress.toLowerCase()\n ) {\n const {\n offchainSwapNeeded,\n swapDataParams\n } = await getCalculateSwapDataParams(\n pool,\n torosAsset,\n amountIn,\n slippage\n );\n if (offchainSwapNeeded) {\n const withdrawData = await getAaveAssetWithdrawData(\n pool,\n swapDataParams,\n slippage\n );\n\n return {\n supportedAsset: assetObj.asset,\n withdrawData,\n slippageTolerance: slippage\n };\n }\n }\n\n return {\n supportedAsset: assetObj.asset,\n withdrawData: \"0x\",\n slippageTolerance: slippage\n };\n })\n );\n};\n\nexport const getInitWithdrawalTxData = async (\n pool: Pool,\n torosAsset: string,\n amountIn: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<string> => {\n const complexAssetsData = await createWithdrawTxArguments(\n pool,\n torosAsset,\n amountIn,\n slippage,\n useOnChainSwap\n );\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n return iEasySwapperV2.encodeFunctionData(\"initWithdrawal\", [\n torosAsset,\n amountIn,\n complexAssetsData\n ]);\n};\n","import { ethers } from \"ethers\";\nimport { Dapp, Pool } from \"../..\";\n\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport { routerAddress } from \"../../config\";\n\nimport { isPool, loadPool } from \"./pool\";\n\nimport { getInitWithdrawalTxData } from \"./initWithdrawal\";\n\nexport const LOW_USD_VALUE_FOR_WITHDRAWAL = 1; // 1 USD minimum value for withdrawal\nexport const SLIPPAGE_FOR_LOW_VALUE_SWAP = 500;\n\nexport async function getPoolDepositAsset(\n pool: Pool,\n poolAddress: string,\n investAsset: string\n): Promise<string | undefined> {\n const torosPool = await loadPool(pool, poolAddress);\n const composition = await torosPool.getComposition();\n if (\n composition.find(e => e.asset.toLowerCase() === investAsset.toLowerCase())\n ?.isDeposit\n )\n return investAsset;\n return composition.find(e => e.isDeposit)?.asset;\n}\n\nexport async function getTorosPoolTokenPrice(\n pool: Pool,\n poolAddress: string\n): Promise<ethers.BigNumber> {\n const torosPool = await loadPool(pool, poolAddress);\n return await torosPool.poolLogic.tokenPrice();\n}\n\nexport async function getEasySwapperDepositQuote(\n pool: Pool,\n torosAsset: string,\n investAsset: string,\n amountIn: ethers.BigNumber\n): Promise<ethers.BigNumber> {\n const easySwapper = new ethers.Contract(\n routerAddress[pool.network][Dapp.TOROS] as string,\n IEasySwapperV2,\n pool.signer\n );\n\n return await easySwapper.depositQuote(torosAsset, investAsset, amountIn);\n}\n\nexport async function getEasySwapperTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber,\n slippage: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const isWithdrawal = await isPool(pool, assetFrom);\n const [torosAsset, investAsset] = isWithdrawal\n ? [assetFrom, assetTo]\n : [assetTo, assetFrom];\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n if (isWithdrawal) {\n return getInitWithdrawalTxData(\n pool,\n torosAsset,\n amountIn.toString(),\n slippage * 100,\n false\n );\n } else {\n const depositAsset = await getPoolDepositAsset(\n pool,\n torosAsset,\n investAsset\n );\n if (!depositAsset) throw new Error(\"no deposit assets\");\n if (depositAsset.toLowerCase() !== investAsset.toLowerCase())\n throw new Error(\"can only trade deposit asset\");\n const minAmountOut = await getEasySwapperDepositQuote(\n pool,\n torosAsset,\n investAsset,\n amountIn\n );\n return iEasySwapperV2.encodeFunctionData(\"depositWithCustomCooldown\", [\n torosAsset,\n depositAsset,\n amountIn,\n minAmountOut.mul(10000 - slippage * 100).div(10000)\n ]);\n }\n}\n","import { Dapp, ethers, Pool } from \"../..\";\n\nimport ILendingPool from \"../../abi/ILendingPool.json\";\nimport ILendingPoolV3 from \"../../abi/IAaveV3LendingPool.json\";\nimport { routerAddress } from \"../../config\";\n\nexport async function getAaveAssetsForUnderlying(\n pool: Pool,\n dapp: Dapp,\n assets: string[]\n): Promise<string[]> {\n const iLendingPool = dapp === Dapp.AAVEV3 ? ILendingPoolV3 : ILendingPool;\n const lendingPool = new ethers.Contract(\n routerAddress[pool.network][dapp] as string,\n iLendingPool.abi,\n pool.signer\n );\n\n const reserveData = await Promise.all(\n assets.map(e => lendingPool.getReserveData(e))\n );\n\n const aTokens = reserveData.map(e => e.aTokenAddress);\n const debtTokens = reserveData.map(e => e.variableDebtTokenAddress);\n return aTokens.concat(debtTokens);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport { Dapp } from \"../../types\";\nimport IAaveV3Incentives from \"../../abi/IAaveV3Incentives.json\";\nimport { Pool } from \"../..\";\nimport { getAaveAssetsForUnderlying } from \"./assets\";\n\nexport async function getAaveV3ClaimTxData(\n pool: Pool,\n assets: string[],\n rewardAsset: string\n): Promise<any> {\n const iAaveIncentives = new ethers.utils.Interface(IAaveV3Incentives.abi);\n const aaveAsset = await getAaveAssetsForUnderlying(pool, Dapp.AAVEV3, assets);\n\n const claimTxData = iAaveIncentives.encodeFunctionData(\"claimRewards\", [\n aaveAsset,\n ethers.constants.MaxUint256,\n pool.address,\n rewardAsset\n ]);\n return claimTxData;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport IVelodromeRouter from \"../../abi/IVeldodromeRouter.json\";\nimport { Pool } from \"../../entities\";\nimport { Dapp, Transaction } from \"../../types\";\nimport { getDeadline } from \"../../utils/deadline\";\nimport { nonfungiblePositionManagerAddress } from \"../../config\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\n\nexport async function getVelodromeAddLiquidityTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amountA: ethers.BigNumber | string,\n amountB: ethers.BigNumber | string,\n isStable: boolean\n): Promise<any> {\n const iVelodromeRouter = new ethers.utils.Interface(IVelodromeRouter.abi);\n return iVelodromeRouter.encodeFunctionData(Transaction.ADD_LIQUIDITY, [\n assetA,\n assetB,\n isStable,\n amountA,\n amountB,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ]);\n}\n\nexport async function getVelodromeRemoveLiquidityTxData(\n pool: Pool,\n assetA: string,\n assetB: string,\n amount: ethers.BigNumber | string,\n isStable: boolean\n): Promise<any> {\n const iVelodromeRouter = new ethers.utils.Interface(IVelodromeRouter.abi);\n return iVelodromeRouter.encodeFunctionData(Transaction.REMOVE_LIQUIDITY, [\n assetA,\n assetB,\n isStable,\n amount,\n \"0\",\n \"0\",\n pool.address,\n await getDeadline(pool)\n ]);\n}\n\nexport async function getClOwner(\n pool: Pool,\n dapp: Dapp.VELODROMECL | Dapp.AERODROMECL | Dapp.PANCAKECL,\n tokenId: string\n): Promise<string> {\n const iNonfungiblePositionManager = new ethers.Contract(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n nonfungiblePositionManagerAddress[pool.network][dapp]!,\n INonfungiblePositionManager.abi,\n pool.signer\n );\n return await iNonfungiblePositionManager.ownerOf(tokenId);\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport set from \"lodash/set\";\nimport { Interface } from \"@ethersproject/abi\";\nimport { multiCallAddress } from \"../config\";\nimport { ethers, Network, Pool, SDKOptions } from \"..\";\nimport { Signer } from \"ethers\";\n\nexport async function call(\n provider: ethers.Signer,\n abi: any[],\n call: any[],\n options?: any\n) {\n const contract = new ethers.Contract(call[0], abi, provider);\n try {\n const params = call[2] || [];\n return await contract[call[1]](...params, options || {});\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport async function multicall<T>(\n network: Network,\n provider: ethers.Signer,\n abi: any[],\n calls: any[],\n options: any = {},\n requireSuccess = false\n): Promise<(T | null)[]> {\n const multi = new ethers.Contract(\n multiCallAddress[network],\n [\n \"function tryAggregate(bool requireSuccess, tuple(address, bytes)[] memory calls) public view returns (tuple(bool, bytes)[] memory returnData)\"\n ],\n provider\n );\n const itf = new Interface(abi);\n try {\n const res: [boolean, string][] = await multi.tryAggregate(\n // if false, allows individual calls to fail without causing entire multicall to fail\n requireSuccess,\n calls.map(call => [\n call[0].toLowerCase(),\n itf.encodeFunctionData(call[1], call[2])\n ]),\n options\n );\n\n return res.map(([success, returnData], i) => {\n if (!success) return null;\n const decodedResult = itf.decodeFunctionResult(calls[i][1], returnData);\n // Automatically unwrap any simple return values\n return decodedResult.length > 1 ? decodedResult : decodedResult[0];\n });\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport class Multicaller {\n public network: Network;\n public provider: ethers.Signer;\n public abi: any[];\n public options: any = {};\n public calls: any[] = [];\n public paths: any[] = [];\n\n constructor(network: Network, provider: ethers.Signer, abi: any[]) {\n this.network = network;\n this.provider = provider;\n this.abi = abi;\n }\n\n call(path: any, address: any, fn: any, params?: any): Multicaller {\n this.calls.push([address, fn, params]);\n this.paths.push(path);\n return this;\n }\n\n async execute(from?: any): Promise<any> {\n const obj = from || {};\n const result = await multicall(\n this.network,\n this.provider,\n this.abi,\n this.calls,\n this.options\n );\n result.forEach((r, i) => set(obj, this.paths[i], r));\n this.calls = [];\n this.paths = [];\n return obj;\n }\n}\n\nconst getGasEstimateData = async (\n pool: Pool,\n estimateFunc: ethers.ContractFunction<ethers.BigNumber>,\n txInfoData: { to: string; txData: string; minAmountOut: any },\n txOptions: any = {},\n sdkOptions: SDKOptions\n) => {\n let gas = null;\n let gasEstimationError = null;\n try {\n if (\n !pool.isDhedge ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.useTraderAddressAsFrom)\n ) {\n // for pool.signer.estimateGas\n gas = await (estimateFunc as Signer[\"estimateGas\"])({\n to: txInfoData.to,\n data: txInfoData.txData,\n ...txOptions\n });\n } else {\n // for pool.poolLogic.estimateGas.execTransaction\n gas = await estimateFunc(txInfoData.to, txInfoData.txData, txOptions);\n }\n } catch (e) {\n gasEstimationError = e;\n }\n return {\n gas,\n gasEstimationError,\n ...txInfoData\n };\n};\n\nexport const isSdkOptionsBoolean = (\n sdkOptions: SDKOptions\n): sdkOptions is boolean => {\n return typeof sdkOptions === \"boolean\";\n};\n\nexport const getPoolTxOrGasEstimate = async (\n pool: Pool,\n args: any[],\n sdkOptions: SDKOptions\n): Promise<any> => {\n const txInfoData = {\n txData: args[1],\n to: args[0],\n minAmountOut: args[3] || null\n };\n\n if (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.onlyGetTxData) {\n return txInfoData;\n }\n\n const txOptions = args[2];\n\n if (\n !pool.isDhedge ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.useTraderAddressAsFrom)\n ) {\n if (\n sdkOptions === true ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.estimateGas)\n ) {\n return await getGasEstimateData(\n pool,\n pool.signer.estimateGas.bind(pool.signer),\n txInfoData,\n txOptions,\n sdkOptions\n );\n } else {\n return await pool.signer.sendTransaction({\n to: txInfoData.to,\n data: txInfoData.txData,\n ...txOptions\n });\n }\n } else {\n if (\n sdkOptions === true ||\n (!isSdkOptionsBoolean(sdkOptions) && sdkOptions.estimateGas)\n ) {\n return await getGasEstimateData(\n pool,\n pool.poolLogic.estimateGas.execTransaction,\n txInfoData,\n txOptions,\n sdkOptions\n );\n } else {\n return await pool.poolLogic.execTransaction(\n txInfoData.to,\n txInfoData.txData,\n txOptions\n );\n }\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport IVelodromeGaugeV1 from \"../../abi/IVelodromeGauge.json\";\nimport IVelodromeGaugeV2 from \"../../abi/IVelodromeGaugeV2.json\";\nimport IVelodromeCLGauge from \"../../abi/IVelodromeCLGauge.json\";\nimport { Pool } from \"../../entities\";\nimport { call } from \"../../utils/contract\";\nconst iVelodromeGaugeV1 = new ethers.utils.Interface(IVelodromeGaugeV1.abi);\nconst iVelodromeGaugeV2 = new ethers.utils.Interface(IVelodromeGaugeV2.abi);\n\nexport function getVelodromeStakeTxData(\n amount: BigNumber | string,\n v2: boolean\n): any {\n const depositParams: [string, unknown[]] = v2\n ? [\"deposit(uint256)\", [amount]]\n : [\"deposit\", [amount, 0]];\n const iVelodromeGauge = v2 ? iVelodromeGaugeV2 : iVelodromeGaugeV1;\n return iVelodromeGauge.encodeFunctionData(...depositParams);\n}\n\nexport async function getVelodromeClaimTxData(\n pool: Pool,\n gauge: string,\n v2: boolean\n): Promise<any> {\n if (v2) {\n return iVelodromeGaugeV2.encodeFunctionData(\"getReward\", [pool.address]);\n } else {\n const rewardAssetCount = await call(pool.signer, IVelodromeGaugeV1.abi, [\n gauge,\n \"rewardsListLength\",\n []\n ]);\n const rewardAssets = await Promise.all(\n Array.from(Array(rewardAssetCount.toNumber()).keys()).map(e =>\n call(pool.signer, IVelodromeGaugeV1.abi, [gauge, \"rewards\", [e]])\n )\n );\n return iVelodromeGaugeV1.encodeFunctionData(\"getReward\", [\n pool.address,\n rewardAssets\n ]);\n }\n}\n\nexport async function getVelodromeCLClaimTxData(tokenId: string): Promise<any> {\n const iVelodromeCLGauge = new ethers.utils.Interface(IVelodromeCLGauge.abi);\n return iVelodromeCLGauge.encodeFunctionData(\"getReward(uint256)\", [tokenId]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers, LyraOptionMarket, Network } from \"../..\";\nimport { lyraNetworkMap } from \"../../config\";\nimport Lyra, { Board, Strike } from \"@lyrafinance/lyra-js\";\n\nexport async function getBoard(\n network: Network,\n market: LyraOptionMarket,\n expiry: number\n): Promise<Board> {\n const lyra = new Lyra(lyraNetworkMap[network]);\n const optionMarket = await lyra.market(market);\n const filteredBoards = optionMarket\n .liveBoards()\n .filter(e => e.expiryTimestamp === expiry);\n if (filteredBoards.length === 0) throw new Error(\"no lyra board for expiry\");\n return filteredBoards[0];\n}\n\nexport async function getExpiries(\n network: Network,\n market: LyraOptionMarket\n): Promise<number[]> {\n const lyra = new Lyra(lyraNetworkMap[network]);\n const optionMarket = await lyra.market(market);\n return optionMarket.liveBoards().map(e => e.expiryTimestamp);\n}\n\nexport async function getStrikes(\n network: Network,\n market: LyraOptionMarket,\n expiry: number\n): Promise<Strike[]> {\n return (await getBoard(network, market, expiry)).strikes();\n}\n\nexport async function getStrike(\n network: Network,\n market: LyraOptionMarket,\n expiry: number,\n strike: number\n): Promise<Strike> {\n const strikes = await getStrikes(network, market, expiry);\n const filteredStrike = strikes.filter(\n (e: Strike) =>\n parseFloat(ethers.utils.formatEther(e.strikePrice)) === strike\n );\n if (filteredStrike.length === 0)\n throw new Error(\"no option found for strike price\");\n\n return filteredStrike[0];\n}\n","export function getLyraTradeOptionType(\n isCall: boolean,\n isLong: boolean,\n isCoveredCall: boolean\n): number {\n if (isCall) {\n return isLong ? 0 : isCoveredCall ? 2 : 3;\n } else {\n return isLong ? 1 : 4;\n }\n}\n\nexport function isCall(optionType: number): boolean {\n return [0, 2, 3].includes(optionType);\n}\n\nexport function isLong(optionType: number): boolean {\n return optionType === 0 || optionType === 1;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers, LyraOptionMarket, LyraPosition, Pool } from \"../..\";\nimport Lyra from \"@lyrafinance/lyra-js\";\nimport IOptionToken from \"../../abi/IOptionToken.json\";\n\nexport async function getOptionPositions(\n pool: Pool,\n market: LyraOptionMarket\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<LyraPosition[]> {\n const lyra = new Lyra();\n const optionMarket = await lyra.market(market);\n const iOptionToken = new ethers.Contract(\n optionMarket.__marketData.marketAddresses.optionToken,\n IOptionToken.abi,\n pool.signer\n );\n return await iOptionToken.getOwnerPositions(pool.address);\n}\n","import { Quote, Strike } from \"@lyrafinance/lyra-js\";\nimport { ethers } from \"ethers\";\nimport { LyraOptionType, LyraTradeType } from \"../../types\";\n\nexport async function getQuote(\n strike: Strike,\n type: LyraOptionType,\n tradeType: LyraTradeType,\n amount: ethers.BigNumber\n): Promise<Quote> {\n return await strike.quote(type === \"call\", tradeType === \"buy\", amount);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport { Pool } from \"../..\";\nimport { LyraOptionMarket, LyraOptionType, LyraTradeType } from \"../../types\";\nimport { getStrike } from \"./markets\";\nimport IOptionMarketWrapper from \"../../abi/IOptionMarketWrapper.json\";\nimport { getLyraTradeOptionType, isCall, isLong } from \"./tradeOptionType\";\nimport { getOptionPositions } from \"./positions\";\nimport { getQuote } from \"./quote\";\n\nexport async function getLyraOptionTxData(\n pool: Pool,\n market: LyraOptionMarket,\n optionType: LyraOptionType,\n expiry: number,\n strikePrice: number,\n tradeType: LyraTradeType,\n optionAmount: BigNumber | string,\n assetIn: string,\n collateralAmount: BigNumber,\n isCoveredCall: boolean\n): Promise<string> {\n const strike = await getStrike(pool.network, market, expiry, strikePrice);\n const strikeId = strike.id;\n\n const positions = await getOptionPositions(pool, market);\n const filteredPosition = positions.filter(\n e =>\n e.strikeId.toNumber() === strikeId &&\n isCall(e.optionType) === (optionType === \"call\") &&\n e.state === 1\n );\n const positionId =\n filteredPosition.length > 0 ? filteredPosition[0].positionId : 0;\n\n let lyraOptionType = getLyraTradeOptionType(\n optionType === \"call\",\n tradeType === \"buy\",\n isCoveredCall\n );\n\n const amountIn = BigNumber.from(optionAmount);\n const quote = await getQuote(strike, optionType, tradeType, amountIn);\n const netPremiun =\n tradeType === \"buy\"\n ? quote.premium.add(quote.fee)\n : quote.premium.sub(quote.fee);\n\n let txFunction = \"openPosition\";\n let inputAmount = tradeType === \"buy\" ? netPremiun : collateralAmount;\n let currentCollateral = BigNumber.from(0);\n let setCollateral = collateralAmount;\n if (filteredPosition.length > 0) {\n currentCollateral = filteredPosition[0].collateral ?? BigNumber.from(0);\n setCollateral = currentCollateral.add(collateralAmount);\n if (\n //sell long positions\n (tradeType === \"sell\" && isLong(filteredPosition[0].optionType)) ||\n //cover short positions\n (tradeType === \"buy\" && !isLong(filteredPosition[0].optionType))\n ) {\n lyraOptionType = filteredPosition[0].optionType;\n txFunction = \"closePosition\";\n setCollateral = currentCollateral.sub(collateralAmount);\n //cover short\n if (!isLong(filteredPosition[0].optionType) && isCoveredCall) {\n inputAmount = netPremiun;\n } else {\n inputAmount = BigNumber.from(0);\n }\n }\n }\n\n const iOptionMarketWrapper = new ethers.utils.Interface(\n IOptionMarketWrapper.abi\n );\n\n const tradeTx = iOptionMarketWrapper.encodeFunctionData(txFunction, [\n [\n strike.market().contractAddresses.optionMarket,\n strikeId, // strike Id\n positionId, // position Id\n 1, // iteration\n setCollateral, // set collateral to\n currentCollateral, // current collateral\n lyraOptionType, // optionType\n amountIn, // amount\n tradeType === \"sell\" ? netPremiun : 0, // min cost\n tradeType === \"buy\" ? netPremiun : ethers.constants.MaxUint256, // max cost\n inputAmount,\n assetIn // input asset\n ]\n ]);\n return tradeTx;\n}\n","import { ethers } from \"../..\";\nimport ISynthetixFuturesMarketV2 from \"../../abi/ISynthetixFuturesMarketV2.json\";\n\nexport function getFuturesChangeMarginTxData(\n amount: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"transferMargin\", [amount]);\n}\n","export const FUTURES_TRACKING = \"DHEDGE\";\n","import { Pool, ethers } from \"../..\";\nimport { FUTURES_TRACKING } from \"./constants\";\nimport ISynthetixFuturesMarketV2 from \"../../abi/ISynthetixFuturesMarketV2.json\";\n\nexport async function getFuturesChangePositionTxData(\n amount: ethers.BigNumber | string,\n market: string,\n pool: Pool\n): Promise<string> {\n const futuresMarket = new ethers.Contract(\n market,\n ISynthetixFuturesMarketV2.abi,\n pool.signer\n );\n const fillPrice = await futuresMarket.fillPrice(amount);\n //Allows for +-0.5% price movements on the desired fill price\n const adjustmentFactor = ethers.BigNumber.from(amount).lt(0) ? 995 : 1005;\n const desiredFillPrice = fillPrice.price.mul(adjustmentFactor).div(1000);\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"submitOffchainDelayedOrderWithTracking\", [\n amount,\n desiredFillPrice,\n ethers.utils.formatBytes32String(FUTURES_TRACKING)\n ]);\n}\n\nexport async function getFuturesCancelOrderTxData(pool: Pool): Promise<string> {\n return new ethers.utils.Interface(\n ISynthetixFuturesMarketV2.abi\n ).encodeFunctionData(\"cancelOffchainDelayedOrder\", [pool.address]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport { Pool } from \"../../entities\";\n\nconst oneInchBaseUrl = \"https://api.1inch.dev/swap/v6.0/\";\n\nexport async function getOneInchSwapTxData(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number,\n forEasySwapper = false\n): Promise<{ swapTxData: string; dstAmount: string }> {\n if (!process.env.ONEINCH_API_KEY)\n throw new Error(\"ONEINCH_API_KEY not configured in .env file\");\n\n const chainId = networkChainIdMap[pool.network];\n const apiUrl = `${oneInchBaseUrl}${chainId}/swap`;\n const params = {\n src: assetFrom,\n dst: assetTo,\n amount: amountIn.toString(),\n from: forEasySwapper ? routerAddress[pool.network].toros : pool.address,\n receiver: forEasySwapper ? routerAddress[pool.network].toros : pool.address,\n slippage: slippage,\n disableEstimate: true,\n usePermit2: false\n };\n try {\n const response = await axios.get(apiUrl, {\n headers: {\n Authorization: `Bearer ${process.env.ONEINCH_API_KEY}`\n },\n params\n });\n const swapTxData = response.data.tx.data;\n const dstAmount = response.data.dstAmount;\n return { swapTxData, dstAmount };\n } catch (e) {\n throw new ApiError(\"Swap api request of 1inch failed\");\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BigNumber, ethers } from \"ethers\";\nimport IXRam from \"../../abi/IXRam.json\";\nimport IRamsesNonfungiblePositionManager from \"../../abi/IRamsesNonfungiblePositionManager.json\";\n\nconst iXRam = new ethers.utils.Interface(IXRam.abi);\nconst iRamsesNonfungiblePositionManager = new ethers.utils.Interface(\n IRamsesNonfungiblePositionManager\n);\n\nexport function getCreateVestTxData(amount: BigNumber | string): string {\n return iXRam.encodeFunctionData(\"createVest\", [amount]);\n}\n\nexport function getExitVestTxData(vestId: number): string {\n return iXRam.encodeFunctionData(\"exitVest\", [vestId, false]);\n}\n\nexport function getRewardsTxDta(tokenId: string, rewards: string[]): string {\n return iRamsesNonfungiblePositionManager.encodeFunctionData(\"getReward\", [\n tokenId,\n rewards\n ]);\n}\n","import { BigNumber, Contract } from \"ethers\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport { Pool } from \"../../entities\";\nimport StableModuleAbi from \"../../abi/flatmoney/StableModule.json\";\n\nconst getStableModuleContract = (pool: Pool): Contract => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getStableModuleContract: network of ${pool.network} not supported`\n );\n }\n const stableModuleContract = new Contract(\n flatMoneyContracts.StableModule,\n StableModuleAbi,\n pool.signer\n );\n return stableModuleContract;\n};\n\n/// @notice Quoter function for getting the stable deposit amount out.\nexport const getStableDepositQuote = async (\n pool: Pool,\n depositAmount: string | BigNumber\n): Promise<BigNumber> => {\n const stableModuleContract = getStableModuleContract(pool);\n const amountOut: BigNumber = await stableModuleContract.stableDepositQuote(\n depositAmount.toString()\n );\n return amountOut;\n};\n\n/// @notice Quoter function for getting the stable withdraw amount out.\nexport const getStableWithdrawQuote = async (\n pool: Pool,\n withdrawAmount: string | BigNumber\n): Promise<BigNumber> => {\n const stableModuleContract = getStableModuleContract(pool);\n const amountOut: BigNumber = await stableModuleContract.stableWithdrawQuote(\n withdrawAmount.toString()\n );\n return amountOut;\n};\n","import { Contract, ethers } from \"ethers\";\nimport { Pool } from \"../../entities\";\nimport IFlatcoinVaultAbi from \"../../abi/flatmoney/IFlatcoinVault.json\";\nimport KeeperFeeAbi from \"../../abi/flatmoney/KeeperFee.json\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport BigNumber from \"bignumber.js\";\nimport { JsonRpcProvider } from \"@ethersproject/providers\";\n\nexport const getKeeperFeeContract = async (pool: Pool): Promise<Contract> => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getStableModuleContract: network of ${pool.network} not supported`\n );\n }\n const flatcoinVaultContract = new Contract(\n flatMoneyContracts.FlatcoinVault,\n IFlatcoinVaultAbi,\n pool.signer\n );\n const key = ethers.utils.formatBytes32String(\"keeperFee\");\n const keeperFeeContractAddress: string = await flatcoinVaultContract.callStatic.moduleAddress(\n key\n );\n\n const keeperFeeContract = new ethers.Contract(\n keeperFeeContractAddress,\n KeeperFeeAbi,\n pool.signer\n );\n return keeperFeeContract;\n};\n\nexport const getKeeperFee = async (\n pool: Pool,\n maxKeeperFeeInUsd: number | null\n): Promise<ethers.BigNumber> => {\n const keeperFeeContract = await getKeeperFeeContract(pool);\n\n const feeHistory = await (pool.signer\n .provider as JsonRpcProvider).send(\"eth_feeHistory\", [1, \"latest\", []]);\n\n const gasPrice = Number(feeHistory.baseFeePerGas[0]);\n\n let keeperfee: ethers.BigNumber;\n if (gasPrice) {\n keeperfee = await keeperFeeContract[\"getKeeperFee(uint256)\"](\n new BigNumber(gasPrice.toString()).times(1.5).toFixed(0)\n );\n } else {\n keeperfee = await keeperFeeContract[\"getKeeperFee()\"]();\n }\n\n const keeperFeeInUsd = await getKeeperFeeInUsd(pool, keeperfee);\n\n if (\n Number.isFinite(maxKeeperFeeInUsd) &&\n keeperFeeInUsd.gt(ethers.BigNumber.from(maxKeeperFeeInUsd).toString())\n ) {\n throw new Error(\"mintUnitViaFlatMoney: keeperFee too large\");\n }\n\n return keeperfee;\n};\n\nexport const getKeeperFeeInUsd = async (\n pool: Pool,\n keeperFee: ethers.BigNumber\n): Promise<BigNumber> => {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\n `getKeeperFeeInUsd: network of ${pool.network} not supported`\n );\n }\n const fundComposition = await pool.getComposition();\n const filteredFc = fundComposition.filter(\n fc =>\n fc.asset.toLocaleLowerCase() ===\n flatMoneyContracts.COLLATERAL.toLocaleLowerCase()\n );\n\n if (!filteredFc[0])\n throw new Error(`getKeeperFeeInUsd: required asset not enabled yet`);\n\n const rateD1 = new BigNumber(filteredFc[0].rate.toString()).div(1e18);\n\n const assetDecimal = await pool.utils.getDecimals(\n flatMoneyContracts.COLLATERAL\n );\n return rateD1.times(keeperFee.toString()).div(10 ** assetDecimal);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport BigNumber from \"bignumber.js\";\nimport { Pool, SDKOptions, ethers } from \"../..\";\nimport DelayedOrderAbi from \"../../abi/flatmoney/DelayedOrder.json\";\nimport IOrderExecutionModuleAbi from \"../../abi/flatmoney/v2/IOrderExecutionModule.json\";\nimport { flatMoneyContractAddresses } from \"../../config\";\nimport {\n getPoolTxOrGasEstimate,\n isSdkOptionsBoolean\n} from \"../../utils/contract\";\nimport { getStableDepositQuote, getStableWithdrawQuote } from \"./stableModule\";\nimport { getKeeperFee } from \"./keeperFee\";\n\nexport function getAnnounceStableDepositTxData(\n depositAmount: ethers.BigNumber | string,\n minAmountOut: ethers.BigNumber | string,\n keeperFee: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"announceStableDeposit\", [\n depositAmount,\n minAmountOut,\n keeperFee\n ]);\n}\n\nexport function getAnnounceStableWithdrawTxData(\n withdrawAmount: ethers.BigNumber | string,\n minAmountOut: ethers.BigNumber | string,\n keeperFee: ethers.BigNumber | string\n): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"announceStableWithdraw\", [\n withdrawAmount,\n minAmountOut,\n keeperFee\n ]);\n}\n\nexport function getCancelExistingOrderTxData(account: string): string {\n return new ethers.utils.Interface(\n DelayedOrderAbi\n ).encodeFunctionData(\"cancelExistingOrder\", [account]);\n}\n\nexport function getCancelExistingOrderTxDataForV2(account: string): string {\n return new ethers.utils.Interface(\n IOrderExecutionModuleAbi\n ).encodeFunctionData(\"cancelExistingOrder\", [account]);\n}\n\nexport async function mintUnitViaFlatMoney(\n pool: Pool,\n depositAmount: ethers.BigNumber | string,\n slippage: number, // 0.5 means 0.5%\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"mintUnitViaFlatMoney: network not supported\");\n }\n\n const keeperfee = await getKeeperFee(pool, maxKeeperFeeInUsd); // in COLLATERAL\n\n const adjustedDepositAmount = new BigNumber(depositAmount.toString()).minus(\n keeperfee.toString() // keeper fee deducted from amountIn\n );\n\n const amountOut = await getStableDepositQuote(\n pool,\n adjustedDepositAmount.toFixed(0)\n );\n const minAmountOut = new BigNumber(amountOut.toString())\n .times(1 - slippage / 100)\n .toFixed(0);\n\n const mintUnitTxData = await getAnnounceStableDepositTxData(\n adjustedDepositAmount.toFixed(0),\n minAmountOut,\n keeperfee\n );\n\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [flatMoneyContracts.DelayedOrder, mintUnitTxData, options],\n sdkOptions\n );\n return tx;\n}\n\nexport async function redeemUnitViaFlatMoney(\n pool: Pool,\n withdrawAmount: ethers.BigNumber | string,\n slippage: number, // 0.5 means 0.5%\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"redeemUnitViaFlatMoney: network not supported\");\n }\n const keeperfee = await getKeeperFee(pool, maxKeeperFeeInUsd); // in RETH\n\n const amountOut = await getStableWithdrawQuote(pool, withdrawAmount);\n const minAmountOut = new BigNumber(amountOut.toString())\n .times(1 - slippage / 100)\n .minus(keeperfee.toString()) // keeper fee deducted from amountOut\n .toFixed(0);\n\n const redeemUnitTxData = await getAnnounceStableWithdrawTxData(\n withdrawAmount,\n minAmountOut,\n keeperfee\n );\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [flatMoneyContracts.DelayedOrder, redeemUnitTxData, options],\n sdkOptions\n );\n return tx;\n}\n\nexport async function cancelOrderViaFlatMoney(\n pool: Pool,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n): Promise<any> {\n const flatMoneyContracts = flatMoneyContractAddresses[pool.network];\n if (!flatMoneyContracts) {\n throw new Error(\"cancelOrderViaFlatMoney: network not supported\");\n }\n // flat money v2\n // use OrderExecution module to cancel order\n let toAddress = flatMoneyContracts.DelayedOrder;\n let cancelOrderTxData = getCancelExistingOrderTxData(pool.address);\n if (flatMoneyContracts.OrderExecution) {\n toAddress = flatMoneyContracts.OrderExecution;\n cancelOrderTxData = await getCancelExistingOrderTxDataForV2(pool.address);\n }\n const tx = await getPoolTxOrGasEstimate(\n pool,\n [toAddress, cancelOrderTxData, options],\n {\n ...(isSdkOptionsBoolean(sdkOptions)\n ? { estimateGas: sdkOptions }\n : sdkOptions),\n useTraderAddressAsFrom: true\n }\n );\n return tx;\n}\n","import { ethers, Pool } from \"../..\";\nimport ICompoundV3Comet from \"../../abi/compound/ICompoundV3Comet.json\";\nimport IFToken from \"../../abi/fluid/IFToken.json\";\n\nexport async function getCompoundV3LendTxData(\n pool: Pool,\n market: string,\n asset: string,\n amount: ethers.BigNumber | string\n): Promise<string> {\n if (await isCompoundV3Market(pool, market)) {\n return new ethers.utils.Interface(\n ICompoundV3Comet\n ).encodeFunctionData(\"supply\", [asset, amount]);\n } else {\n //Fluid lending\n return new ethers.utils.Interface(IFToken).encodeFunctionData(\"deposit\", [\n amount,\n pool.address\n ]);\n }\n}\n\nexport async function getCompoundV3WithdrawTxData(\n pool: Pool,\n market: string,\n asset: string,\n amount: ethers.BigNumber | string\n): Promise<string> {\n if (await isCompoundV3Market(pool, market)) {\n return new ethers.utils.Interface(\n ICompoundV3Comet\n ).encodeFunctionData(\"withdraw\", [asset, amount]);\n } else {\n //Fluid withdrawal\n return new ethers.utils.Interface(IFToken).encodeFunctionData(\"redeem\", [\n amount,\n pool.address,\n pool.address\n ]);\n }\n}\n\nexport async function isCompoundV3Market(\n pool: Pool,\n market: string\n): Promise<boolean> {\n const marketContract = new ethers.Contract(\n market,\n ICompoundV3Comet,\n pool.signer\n );\n try {\n await marketContract.baseToken();\n return true;\n } catch (error) {\n return false;\n }\n}\n","import { ethers } from \"ethers\";\nimport ICometRewards from \"../../abi/compound/ICometRewards.json\";\nimport { Pool } from \"../..\";\n\nexport function getCompoundV3ClaimTxData(pool: Pool, asset: string): string {\n const iCometRewards = new ethers.utils.Interface(ICometRewards);\n\n return iCometRewards.encodeFunctionData(\"claim\", [asset, pool.address, true]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ethers } from \"ethers\";\nimport INonfungiblePositionManager from \"../../abi/INonfungiblePositionManager.json\";\nimport IPanncakeMasterChef from \"../../abi/IPancakeMasterChefV3.json\";\nimport { Pool } from \"../../entities\";\nimport { Transaction } from \"../../types\";\nimport { MaxUint128 } from \"../../config\";\nconst iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n);\nconst iMasterChef = new ethers.utils.Interface(IPanncakeMasterChef);\n\nexport function getPancakeStakeTxData(\n pool: Pool,\n tokenId: string,\n stakingAddress: string\n): string {\n return iNonfungiblePositionManager.encodeFunctionData(\"safeTransferFrom\", [\n pool.address,\n stakingAddress,\n tokenId\n ]);\n}\n\nexport function getPancakeUnStakeTxData(pool: Pool, tokenId: string): string {\n return iMasterChef.encodeFunctionData(\"withdraw\", [tokenId, pool.address]);\n}\n\nexport function getPancakeHarvestClaimTxData(\n pool: Pool,\n tokenId: string\n): string {\n const harvestTxData = iMasterChef.encodeFunctionData(Transaction.HARVEST, [\n tokenId,\n pool.address\n ]);\n const collectTxData = iMasterChef.encodeFunctionData(Transaction.COLLECT, [\n [tokenId, pool.address, MaxUint128, MaxUint128]\n ]);\n\n const multicallParams = [harvestTxData, collectTxData];\n\n return iMasterChef.encodeFunctionData(Transaction.MULTI_CALL, [\n multicallParams\n ]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { networkChainIdMap } from \"../../config\";\nimport { Pool } from \"../../entities\";\nimport ActionMiscV3Abi from \"../../abi/pendle/ActionMiscV3.json\";\nimport PTAbi from \"../../abi/pendle/PT.json\";\nimport SYAbi from \"../../abi/pendle/SY.json\";\nimport BigNumber from \"bignumber.js\";\n\nconst pendleBaseUrl = \"https://api-v2.pendle.finance/core\";\n\nexport async function getPendleSwapTxData(\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string | null }> {\n const expiredMarket = await checkExitPostExpPT(pool, tokenIn, tokenOut);\n if (expiredMarket) {\n const result = await getExitExpPTTxData(\n pool,\n tokenIn,\n tokenOut,\n amountIn,\n expiredMarket\n );\n return {\n swapTxData: result.txData,\n minAmountOut: result.minAmountOut\n };\n }\n const params = {\n receiver: pool.address,\n tokenIn,\n tokenOut,\n amountIn: amountIn.toString(),\n slippage: slippage / 100\n };\n const market = await getMarket(pool, tokenIn, tokenOut);\n try {\n const swapResult = await axios.get(\n `${pendleBaseUrl}/v2/sdk/${\n networkChainIdMap[pool.network]\n }/markets/${market}/swap`,\n { params }\n );\n return {\n swapTxData: swapResult.data.tx.data,\n minAmountOut: swapResult.data.data.amountOut\n };\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n}\n\nconst checkUnderlying = (market: any, token: string, networkId: number) => {\n if (market.underlyingAsset !== `${networkId}-${token.toLocaleLowerCase()}`) {\n throw new Error(\"Can only trade in or out of the underlying asset\");\n }\n};\n\nexport async function getMarket(\n pool: Pool,\n tokenIn: string,\n tokenOut: string\n): Promise<string> {\n const networkId = networkChainIdMap[pool.network];\n let marketResult;\n try {\n const params = { isActive: true, chainId: networkId };\n marketResult = await axios.get(`${pendleBaseUrl}/v1/markets/all`, {\n params\n });\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n\n const allMarkets = marketResult.data.markets;\n const markets = [tokenIn, tokenOut].map(token =>\n allMarkets.find(\n (market: any) => market.pt === `${networkId}-${token.toLocaleLowerCase()}`\n )\n );\n if (markets[0]) {\n checkUnderlying(markets[0], tokenOut, networkId);\n return markets[0].address;\n } else if (markets[1]) {\n checkUnderlying(markets[1], tokenIn, networkId);\n return markets[1].address;\n } else {\n throw new Error(\"Can only trade PT assets\");\n }\n}\n\nconst checkExitPostExpPT = async (\n pool: Pool,\n tokenIn: string,\n tokenOut: string\n): Promise<string | null> => {\n const networkId = networkChainIdMap[pool.network];\n let inactiveMarketResult;\n try {\n const params = { isActive: false, chainId: networkId };\n inactiveMarketResult = await axios.get(`${pendleBaseUrl}/v1/markets/all`, {\n params\n });\n } catch (e) {\n console.error(\"Error in Pendle API request:\", e);\n throw new ApiError(\"Pendle api request failed\");\n }\n const allInactiveMarkets = inactiveMarketResult.data.markets;\n const markets = [tokenIn, tokenOut].map(token =>\n allInactiveMarkets.find(\n (market: any) => market.pt === `${networkId}-${token.toLocaleLowerCase()}`\n )\n );\n if (markets[0]) {\n checkUnderlying(markets[0], tokenOut, networkId);\n return markets[0].address;\n } else if (markets[1]) {\n throw new Error(\"Can not trade to expired PT asset\");\n } else {\n return null;\n }\n};\n\nconst getExitExpPTTxData = async (\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n market: string\n): Promise<{ txData: string; minAmountOut: string | null }> => {\n const actionMiscV3 = new ethers.utils.Interface(ActionMiscV3Abi);\n const txData = actionMiscV3.encodeFunctionData(\"exitPostExpToToken\", [\n pool.address, // receiver\n market, // market\n amountIn.toString(), // netPtIn\n 0, // netLpIn\n [\n tokenOut,\n 0, // minTokenOut\n tokenOut, // tokenRedeemSy,\n ethers.constants.AddressZero, //pendleSwap;\n // swapData\n [\n 0, // swapType\n ethers.constants.AddressZero, // extRouter\n ethers.constants.HashZero, // extCalldata\n false // needScale\n ]\n ]\n ]);\n\n // Get the PT contract instance\n const PTcontract = new ethers.Contract(tokenIn, PTAbi, pool.signer);\n // Get the SY contract instance\n const SYcontract = new ethers.Contract(\n await PTcontract.SY(),\n SYAbi,\n pool.signer\n );\n\n const exchangeRate = await SYcontract.exchangeRate();\n const minAmountOut = new BigNumber(amountIn.toString())\n .times(1e18)\n .div(exchangeRate.toString())\n .decimalPlaces(0, BigNumber.ROUND_DOWN)\n .toFixed(0);\n return {\n txData,\n minAmountOut\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Dapp, ethers, Pool } from \"../..\";\nimport { networkChainIdMap, routerAddress } from \"../../config\";\nimport IEasySwapperV2 from \"../../abi/IEasySwapperV2.json\";\nimport BigNumber from \"bignumber.js\";\nimport AssetHandlerAbi from \"../../abi/AssetHandler.json\";\nimport IERC20Abi from \"../../abi/IERC20.json\";\nimport {\n LOW_USD_VALUE_FOR_WITHDRAWAL,\n SLIPPAGE_FOR_LOW_VALUE_SWAP\n} from \"./easySwapper\";\nimport { retry } from \"./retry\";\nimport { getSwapDataViaOdos, SWAPPER_ADDERSS } from \"./swapData\";\n\nexport interface TrackedAsset {\n token: string;\n balance: ethers.BigNumber;\n}\n\nconst getSwapWithdrawData = async (\n pool: Pool,\n trackedAssets: TrackedAsset[],\n receiveToken: string,\n slippage: number,\n swapDestMinDestAmount: BigNumber\n) => {\n const srcData = [];\n const routerKey = ethers.utils.formatBytes32String(\"ODOS_V2\");\n // const destData\n for (const { token, balance } of trackedAssets) {\n if (token.toLowerCase() === receiveToken.toLowerCase()) {\n continue;\n }\n const swapData = await retry({\n fn: () => {\n return getSwapDataViaOdos({\n srcAsset: token,\n srcAmount: balance.toString(),\n dstAsset: receiveToken,\n chainId: networkChainIdMap[pool.network],\n from: SWAPPER_ADDERSS,\n receiver: SWAPPER_ADDERSS,\n slippage\n });\n },\n delayMs: 1500,\n maxRetries: 7\n });\n srcData.push({\n token,\n amount: balance,\n aggregatorData: { routerKey, swapData }\n });\n }\n return {\n srcData,\n destData: {\n destToken: receiveToken,\n minDestAmount: swapDestMinDestAmount.toString()\n }\n };\n};\nexport const createCompleteWithdrawalTxArguments = async (\n pool: Pool,\n receiveToken: string,\n slippage: number\n): Promise<any> => {\n const easySwapper = new ethers.Contract(\n routerAddress[pool.network][Dapp.TOROS] as string,\n IEasySwapperV2,\n pool.signer\n );\n const trackedAssets: TrackedAsset[] = await easySwapper.getTrackedAssets(\n pool.address\n );\n\n if (\n trackedAssets.length === 0 ||\n trackedAssets.every(\n ({ token }) => token.toLowerCase() === receiveToken.toLowerCase()\n )\n ) {\n // just do simple complete withdraw\n return {\n isSwapNeeded: false,\n swapData: null,\n estimatedMinReceiveAmount: null\n };\n }\n\n const swapTrackedAssets = trackedAssets.filter(\n ({ token }) => token.toLowerCase() !== receiveToken.toLowerCase()\n );\n\n const assetHandlerAddress = await pool.factory.callStatic.getAssetHandler();\n const assetHandler = new ethers.Contract(\n assetHandlerAddress,\n AssetHandlerAbi.abi,\n pool.signer\n );\n const receiveTokenPriceD18 = new BigNumber(\n (await assetHandler.getUSDPrice(receiveToken)).toString()\n );\n const receiveTokenErc20 = await new ethers.Contract(\n receiveToken,\n IERC20Abi.abi,\n pool.signer\n );\n const receiveTokenDecimals = await receiveTokenErc20.decimals();\n // swap dest minDestAmount\n const tAssetInfos = await Promise.all(\n swapTrackedAssets.map(async swapTAsset => {\n const swapTAssetPriceD18 = new BigNumber(\n (await assetHandler.getUSDPrice(swapTAsset.token)).toString()\n );\n const swapTAssetTokenErc20 = await new ethers.Contract(\n swapTAsset.token,\n IERC20Abi.abi,\n pool.signer\n );\n const swapTAssetDecimals = await swapTAssetTokenErc20.decimals();\n const tokenBalanceBN = new BigNumber(swapTAsset.balance.toString());\n const estimatedValueToSwapD0 = tokenBalanceBN\n .times(swapTAssetPriceD18)\n .div(10 ** 18)\n .div(10 ** Number(swapTAssetDecimals.toString()));\n\n // --- caution: if the estimated value to swap is less than the low USD value for withdrawal, use a higher slippage\n const adjustedSlippage = estimatedValueToSwapD0.lte(\n LOW_USD_VALUE_FOR_WITHDRAWAL\n )\n ? SLIPPAGE_FOR_LOW_VALUE_SWAP\n : slippage;\n // -----\n\n const estimatedMinReceiveAmount = tokenBalanceBN\n .times(swapTAssetPriceD18)\n .div(receiveTokenPriceD18)\n .div(10 ** Number(swapTAssetDecimals.toString()))\n .times(10 ** Number(receiveTokenDecimals.toString()))\n .times(1 - adjustedSlippage / 10000) // slippage is in basis points, so divide by 10000\n .decimalPlaces(0, BigNumber.ROUND_DOWN);\n\n return {\n token: swapTAsset.token,\n balance: swapTAsset.balance,\n estimatedMinReceiveAmount\n };\n })\n );\n const swapDestMinDestAmount = tAssetInfos.reduce(\n (acc, { estimatedMinReceiveAmount }) => acc.plus(estimatedMinReceiveAmount),\n new BigNumber(0)\n );\n\n const withdrawalVaultAddress = await easySwapper.withdrawalContracts(\n pool.address\n );\n const balanceOfReceiveToken = await receiveTokenErc20.balanceOf(\n withdrawalVaultAddress\n );\n\n // complete withdraw _expectedDestTokenAmount\n const estimatedMinReceiveAmount = swapDestMinDestAmount.plus(\n balanceOfReceiveToken.toString()\n );\n\n const swapData = await getSwapWithdrawData(\n pool,\n swapTrackedAssets,\n receiveToken,\n slippage,\n estimatedMinReceiveAmount\n );\n\n return {\n isSwapNeeded: true,\n swapData,\n estimatedMinReceiveAmount: estimatedMinReceiveAmount.toFixed(0)\n };\n};\n\nexport const getCompleteWithdrawalTxData = async (\n pool: Pool,\n receiveToken: string,\n slippage: number,\n useOnChainSwap: boolean\n): Promise<string> => {\n const completeWithdrawTxArguments = await createCompleteWithdrawalTxArguments(\n pool,\n receiveToken,\n slippage\n );\n\n const isSwapNeeded = completeWithdrawTxArguments.isSwapNeeded;\n const isOffchainSwap = !useOnChainSwap && isSwapNeeded;\n const iEasySwapperV2 = new ethers.utils.Interface(IEasySwapperV2);\n if (isOffchainSwap) {\n return iEasySwapperV2.encodeFunctionData(\n \"completeWithdrawal(((address,uint256,(bytes32,bytes))[],(address,uint256)),uint256)\",\n [\n completeWithdrawTxArguments.swapData,\n completeWithdrawTxArguments.estimatedMinReceiveAmount\n ]\n );\n } else {\n return iEasySwapperV2.encodeFunctionData(\"completeWithdrawal()\");\n }\n};\n","import axios from \"axios\";\nimport { ApiError, ethers } from \"../..\";\nimport { Pool } from \"../../entities\";\n\nexport const kyberBaseUrl = \"https://aggregator-api.kyberswap.com\";\n\nexport async function getKyberSwapTxData(\n pool: Pool,\n tokenIn: string,\n tokenOut: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n): Promise<{ swapTxData: string; minAmountOut: string }> {\n const params = {\n tokenIn,\n tokenOut,\n amountIn: amountIn.toString()\n };\n try {\n const quoteResult = await axios.get(\n `${kyberBaseUrl}/${pool.network}/api/v1/routes`,\n {\n params,\n headers: {\n \"x-client-id\": \"dHEDGE\"\n }\n }\n );\n\n const buildParams = {\n routeSummary: quoteResult.data.data.routeSummary,\n sender: pool.address,\n recipient: pool.address,\n slippageTolerance: slippage * 100 // in basis points\n };\n\n const buildResult = await axios.post(\n `${kyberBaseUrl}/${pool.network}/api/v1/route/build`,\n buildParams,\n {\n headers: {\n \"x-client-id\": \"dHEDGE\"\n }\n }\n );\n\n return {\n swapTxData: buildResult.data.data.data,\n minAmountOut: buildResult.data.data.amountOut\n };\n } catch (e) {\n console.error(\"Error in KyberSwap API request:\", e);\n throw new ApiError(\"Swap api request of KyberSwap failed\");\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Contract, ethers, Wallet, BigNumber, BigNumberish } from \"ethers\";\n\nimport IERC20 from \"../abi/IERC20.json\";\n\nimport IERC721 from \"../abi/IERC721.json\";\nimport IMiniChefV2 from \"../abi/IMiniChefV2.json\";\nimport ILendingPool from \"../abi/ILendingPool.json\";\nimport ISynthetix from \"../abi/ISynthetix.json\";\nimport IUniswapV2Router from \"../abi/IUniswapV2Router.json\";\nimport INonfungiblePositionManager from \"../abi/INonfungiblePositionManager.json\";\nimport IAaveIncentivesController from \"../abi/IAaveIncentivesController.json\";\nimport ILiquidityGaugeV4 from \"../abi/ILiquidityGaugeV4.json\";\nimport IBalancerRewardsGauge from \"../abi/IBalancerRewardsGauge.json\";\n\nimport {\n MaxUint128,\n nonfungiblePositionManagerAddress,\n routerAddress,\n stakingAddress,\n SYNTHETIX_TRACKING_CODE\n} from \"../config\";\nimport {\n Dapp,\n Transaction,\n FundComposition,\n AssetEnabled,\n Network,\n LyraOptionMarket,\n LyraOptionType,\n LyraTradeType,\n LyraPosition,\n SDKOptions\n} from \"../types\";\n\nimport { Utils } from \"./utils\";\nimport {\n getDecreaseLiquidityTxData,\n getIncreaseLiquidityTxData,\n getUniswapV3MintTxData\n} from \"../services/uniswap/V3Liquidity\";\nimport { getUniswapV3SwapTxData } from \"../services/uniswap/V3Trade\";\nimport { getEasySwapperTxData } from \"../services/toros/easySwapper\";\nimport { getAaveV3ClaimTxData } from \"../services/aave/incentives\";\nimport {\n getClOwner,\n getVelodromeAddLiquidityTxData,\n getVelodromeRemoveLiquidityTxData\n} from \"../services/velodrome/liquidity\";\nimport {\n getVelodromeClaimTxData,\n getVelodromeCLClaimTxData,\n getVelodromeStakeTxData\n} from \"../services/velodrome/staking\";\nimport { getLyraOptionTxData } from \"../services/lyra/trade\";\nimport { getOptionPositions } from \"../services/lyra/positions\";\nimport { getDeadline } from \"../utils/deadline\";\nimport {\n getFuturesChangePositionTxData,\n getFuturesChangeMarginTxData\n} from \"../services/futures\";\nimport { getFuturesCancelOrderTxData } from \"../services/futures/trade\";\nimport { getOneInchSwapTxData } from \"../services/oneInch\";\nimport {\n getCreateVestTxData,\n getExitVestTxData,\n getRewardsTxDta\n} from \"../services/ramses/vesting\";\nimport { getPoolTxOrGasEstimate } from \"../utils/contract\";\nimport {\n cancelOrderViaFlatMoney,\n mintUnitViaFlatMoney,\n redeemUnitViaFlatMoney\n} from \"../services/flatmoney/stableLp\";\nimport {\n getCompoundV3LendTxData,\n getCompoundV3WithdrawTxData\n} from \"../services/compound/lending\";\nimport { getCompoundV3ClaimTxData } from \"../services/compound/rewards\";\nimport {\n getPancakeHarvestClaimTxData,\n getPancakeStakeTxData,\n getPancakeUnStakeTxData\n} from \"../services/pancake/staking\";\nimport { getOdosSwapTxData } from \"../services/odos\";\nimport { getPendleSwapTxData } from \"../services/pendle\";\nimport { getCompleteWithdrawalTxData } from \"../services/toros/completeWithdrawal\";\nimport { getKyberSwapTxData } from \"../services/kyberSwap\";\n\nexport class Pool {\n public readonly poolLogic: Contract;\n public readonly managerLogic: Contract;\n public readonly factory: Contract;\n public readonly signer: Wallet;\n public readonly address: string;\n public readonly utils: Utils;\n public readonly network: Network;\n public readonly isDhedge: boolean;\n\n public constructor(\n network: Network,\n signer: Wallet,\n poolLogic: Contract,\n mangerLogic: Contract,\n utils: Utils,\n factory: Contract,\n isDhedge = true\n ) {\n this.network = network;\n this.poolLogic = poolLogic;\n this.address = poolLogic.address;\n this.managerLogic = mangerLogic;\n this.signer = signer;\n this.utils = utils;\n this.factory = factory;\n this.isDhedge = isDhedge;\n }\n\n /**\n * Return the assets with balances and deposit info of a pool\n * @returns {Promise<FundComposition[]>} Composition of assets with balance, deposit info\n */\n async getComposition(): Promise<FundComposition[]> {\n const result = await this.managerLogic.getFundComposition();\n\n const fundComposition: FundComposition[] = result[0].map(\n (item: AssetEnabled, index: string | number) => {\n const { asset, isDeposit } = item;\n return {\n asset: asset,\n isDeposit: isDeposit,\n balance: result[1][index],\n rate: result[2][index]\n };\n }\n );\n return fundComposition;\n }\n\n //Invest functions\n\n /**\n * Approve the asset that can be deposited into a pool\n * @param {string} nasset Address of deposit asset\n * @param {BigNumber | string} amount Amount to be approved\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async approveDeposit(\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n if (estimateGas) {\n return await iERC20.estimateGas.approve(this.address, amount, options);\n }\n const tx = await iERC20.approve(this.address, amount, options);\n return tx;\n }\n\n /**\n * Deposit asset into a pool\n * @param {string} asset Address of asset\n * @param {BigNumber | string} amount Amount to be deposited\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async deposit(\n asset: string,\n amount: string | BigNumber,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.deposit(asset, amount, options);\n }\n const tx = await this.poolLogic.deposit(asset, amount, options);\n return tx;\n }\n\n /**\n * Withdraw assets from a pool\n * @param fundTokenAmount Amount of pool tokens to be withdrawn\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async withdraw(\n fundTokenAmount: string | BigNumber,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.withdraw(\n fundTokenAmount,\n options\n );\n }\n const tx = await this.poolLogic.withdraw(fundTokenAmount, options);\n return tx;\n }\n\n //Manager functions\n\n /**\n * Approve the asset for trading and providing liquidity\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of asset\n * @param {BigNumber | string} Amount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approve(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n routerAddress[this.network][dapp],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the liquidity pool token for staking\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of liquidity pool token\n * @param {BigNumber | string} amount Aamount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveStaking(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n stakingAddress[this.network][dapp],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the liquidity pool token for staking\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Address of liquidity pool token\n * @param {BigNumber | string} amount Aamount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveUniswapV3Liquidity(\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n nonfungiblePositionManagerAddress[this.network][Dapp.UNISWAPV3],\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve the asset for provided spender address\n * @param {string} spender Spender address\n * @param {string} asset Address of asset\n * @param {BigNumber | string} amount to be approved\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveSpender(\n spender: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC20 = new ethers.utils.Interface(IERC20.abi);\n const approveTxData = iERC20.encodeFunctionData(\"approve\", [\n spender,\n amount\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Approve NFT for provided spender address\n * @param {string} spender Spender address\n * @param {string} asset Address of asset\n * @param {string} tokenId NFT id\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async approveSpenderNFT(\n spender: string,\n asset: string,\n tokenId: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iERC721 = new ethers.utils.Interface(IERC721.abi);\n const approveTxData = iERC721.encodeFunctionData(\"approve\", [\n spender,\n tokenId\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [asset, approveTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade an asset into another asset\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {BigNumber | string} amountIn Amount\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async trade(\n dapp: Dapp,\n assetFrom: string,\n assetTo: string,\n amountIn: BigNumber | string,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let swapTxData: string;\n let minAmountOut: string | null = null;\n switch (dapp) {\n case Dapp.ONEINCH:\n ({ swapTxData, dstAmount: minAmountOut } = await getOneInchSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.BALANCER:\n swapTxData = await this.utils.getBalancerSwapTx(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n );\n break;\n case Dapp.SYNTHETIX:\n const iSynthetix = new ethers.utils.Interface(ISynthetix.abi);\n const assets = [assetFrom, assetTo].map(asset =>\n ethers.utils.formatBytes32String(asset)\n );\n const daoAddress = await this.factory.owner();\n swapTxData = iSynthetix.encodeFunctionData(Transaction.SWAP_SYNTHS, [\n assets[0],\n amountIn,\n assets[1],\n daoAddress,\n SYNTHETIX_TRACKING_CODE\n ]);\n break;\n case Dapp.TOROS:\n swapTxData = await getEasySwapperTxData(\n this,\n assetFrom,\n assetTo,\n ethers.BigNumber.from(amountIn),\n slippage\n );\n break;\n case Dapp.ODOS:\n ({ swapTxData, minAmountOut } = await getOdosSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.PENDLE:\n ({ swapTxData, minAmountOut } = await getPendleSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n case Dapp.KYBERSWAP:\n ({ swapTxData, minAmountOut } = await getKyberSwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n ));\n break;\n default:\n const iUniswapV2Router = new ethers.utils.Interface(\n IUniswapV2Router.abi\n );\n const calculatedMinAmountOut = await this.utils.getMinAmountOut(\n dapp,\n assetFrom,\n assetTo,\n amountIn,\n slippage\n );\n swapTxData = iUniswapV2Router.encodeFunctionData(Transaction.SWAP, [\n amountIn,\n calculatedMinAmountOut,\n [assetFrom, assetTo],\n this.address,\n await getDeadline(this)\n ]);\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], swapTxData, options, minAmountOut],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to a liquidity pool\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidity(\n dapp: Dapp,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iUniswapV2Router = new ethers.utils.Interface(IUniswapV2Router.abi);\n const addLiquidityTxData = iUniswapV2Router.encodeFunctionData(\n Transaction.ADD_LIQUIDITY,\n [\n assetA,\n assetB,\n amountA,\n amountB,\n 0,\n 0,\n this.address,\n await getDeadline(this)\n ]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], addLiquidityTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from a liquidity pool\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidity(\n dapp: Dapp,\n assetA: string,\n assetB: string,\n amount: string | BigNumber,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iUniswapV2Router = new ethers.utils.Interface(IUniswapV2Router.abi);\n const removeLiquidityTxData = iUniswapV2Router.encodeFunctionData(\n Transaction.REMOVE_LIQUIDITY,\n [assetA, assetB, amount, 0, 0, this.address, await getDeadline(this)]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], removeLiquidityTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Stake liquidity pool tokens in a yield farm\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async stake(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const stakeTxData = iMiniChefV2.encodeFunctionData(Transaction.DEPOSIT, [\n poolId,\n amount,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], stakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Stake liquidity pool tokens in gauge contract\n * @param {Dapp} dapp Platform like Balancer or Velodrome\n * @param {string} gauge Gauge contract address\n * @param {BigNumber | string} amount Amount of liquidity pool tokens or token ID for Velodrome CL\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async stakeInGauge(\n dapp: Dapp,\n gauge: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let stakeTxData;\n switch (dapp) {\n case Dapp.BALANCER:\n const rewardsGauge = new ethers.utils.Interface(\n IBalancerRewardsGauge.abi\n );\n stakeTxData = rewardsGauge.encodeFunctionData(\"deposit(uint256)\", [\n amount\n ]);\n break;\n case Dapp.VELODROME:\n case Dapp.RAMSES:\n stakeTxData = getVelodromeStakeTxData(amount, false);\n break;\n case Dapp.VELODROMEV2:\n case Dapp.AERODROME:\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n stakeTxData = getVelodromeStakeTxData(amount, true);\n break;\n case Dapp.PANCAKECL:\n stakeTxData = getPancakeStakeTxData(this, amount.toString(), gauge);\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n const txTo =\n dapp !== Dapp.PANCAKECL\n ? gauge\n : nonfungiblePositionManagerAddress[this.network][dapp];\n const tx = await getPoolTxOrGasEstimate(\n this,\n [txTo, stakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Unstake liquidity pool tokens from a yield farm\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {BigNumber | string} amount Amount of liquidity pool tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async unStake(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const unStakeTxData = iMiniChefV2.encodeFunctionData(Transaction.WITHDRAW, [\n poolId,\n amount,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], unStakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Unstake liquidity pool tokens from Velodrome or Balancer gauge\n * @param {string} gauge Gauge contract address\n * @param {BigNumber | string} amount Amount of liquidity pool tokens or CL token ID\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async unstakeFromGauge(\n gauge: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let unstakeTxData;\n const rewardsGauge = new ethers.utils.Interface(IBalancerRewardsGauge.abi);\n if (\n gauge.toLowerCase() ===\n stakingAddress[this.network][Dapp.PANCAKECL]?.toLowerCase()\n ) {\n unstakeTxData = getPancakeUnStakeTxData(this, amount.toString());\n } else {\n unstakeTxData = rewardsGauge.encodeFunctionData(\"withdraw(uint256)\", [\n amount\n ]);\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [gauge, unstakeTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Lend asset to a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {number} referralCode Code from Aave referral program\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async lend(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n referralCode = 0,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const depositTxData = iLendingPool.encodeFunctionData(Transaction.DEPOSIT, [\n asset,\n amount,\n this.address,\n referralCode\n ]);\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], depositTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Lend asset to a Compound V3 or Fluid lending pool\n * @param {string} market Address of cToken or fToken\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async lendCompoundV3(\n market: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const supplyTxData = await getCompoundV3LendTxData(\n this,\n market,\n asset,\n amount\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, supplyTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Witdraw asset from a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async withdrawDeposit(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const withdrawTxData = iLendingPool.encodeFunctionData(\n Transaction.WITHDRAW,\n [asset, amount, this.address]\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], withdrawTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Witdraw asset from a Compound V3 or Fluid lending pool\n * @param {string} market Address of cToken or fToken\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to withdraw\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async withdrawCompoundV3(\n market: string,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const withdrawTxData = await getCompoundV3WithdrawTxData(\n this,\n market,\n asset,\n amount\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, withdrawTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Borrow asset from a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {number} referralCode Code from Aave referral program\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async borrow(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n referralCode = 0,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const borrowTxData = iLendingPool.encodeFunctionData(Transaction.BORROW, [\n asset,\n amount,\n 2,\n referralCode,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], borrowTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Repays borrowed asset to a lending pool\n * @param {Dapp} dapp Platform like Aave\n * @param {string} asset Asset\n * @param {BigNumber | string} amount Amount of asset to lend\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async repay(\n dapp: Dapp,\n asset: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iLendingPool = new ethers.utils.Interface(ILendingPool.abi);\n const repayTxData = iLendingPool.encodeFunctionData(Transaction.REPAY, [\n asset,\n amount,\n 2,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][dapp], repayTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards of staked liquidity pool tokens\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} asset Liquidity pool token\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestRewards(\n dapp: Dapp,\n asset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const iMiniChefV2 = new ethers.utils.Interface(IMiniChefV2.abi);\n const poolId = await this.utils.getLpPoolId(dapp, asset);\n const harvestTxData = iMiniChefV2.encodeFunctionData(Transaction.HARVEST, [\n poolId,\n this.address\n ]);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [stakingAddress[this.network][dapp], harvestTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Change enabled pool assets\n * @param {AssetEnabled[]} assets New pool assets\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n public async changeAssets(\n assets: AssetEnabled[],\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const currentAssetsEnabled = await this.getComposition();\n const currentAssets = currentAssetsEnabled.map(e =>\n e.asset.toLocaleLowerCase()\n );\n const newAssets = assets.map(e => e.asset.toLocaleLowerCase());\n const removedAssets = currentAssets.filter(e => !newAssets.includes(e));\n const changedAssets = assets.map(e => [e.asset, e.isDeposit]);\n\n if (estimateGas) {\n return await this.managerLogic.estimateGas.changeAssets(\n changedAssets,\n removedAssets,\n options\n );\n }\n const tx = await this.managerLogic.changeAssets(\n changedAssets,\n removedAssets,\n options\n );\n return tx;\n }\n\n /**\n * Set a new trader with trading permissions\n * @param {string} trader Address trader account\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async setTrader(\n trader: string,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.managerLogic.estimateGas.setTrader(trader, options);\n }\n const tx = await this.managerLogic.setTrader(trader, options);\n return tx;\n }\n\n /**\n * Sets a pool private or public\n * @param {boolean} _private True for private, false for public\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async setPrivate(\n _private: boolean,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.managerLogic.estimateGas.setPoolPrivate(\n _private,\n options\n );\n }\n const tx = await this.managerLogic.setPoolPrivate(_private, options);\n return tx;\n }\n\n /**\n * Sets max supply cap for a pool\n * @param {BigNumberish} _maxSupplyCapD18 Max supply cap with 18 decimals\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async setMaxCap(\n _maxSupplyCapD18: BigNumberish,\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n if (estimateGas) {\n return await this.managerLogic.estimateGas.setMaxSupplyCap(\n _maxSupplyCapD18,\n options\n );\n }\n const tx = await this.managerLogic.setMaxSupplyCap(\n _maxSupplyCapD18,\n options\n );\n return tx;\n }\n\n /**\n * Invest into a Balancer pool\n * @param {string} poolId Balancer pool id\n * @param {string[] | } assetsIn Array of balancer pool assets\n * @param {BigNumber[] | string[]} amountsIn Array of maximum amounts to provide to pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async joinBalancerPool(\n poolId: string,\n assets: string[],\n amountsIn: string[] | BigNumber[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const joinPoolTxData = this.utils.getBalancerJoinPoolTx(\n this,\n poolId,\n assets,\n amountsIn\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.BALANCER], joinPoolTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Invest into a Balancer pool\n * @param {string} poolId Balancer pool id\n * @param {string[] | } assets Array of balancer pool assets\n * @param {BigNumber | string } amount Amount of pool tokens to withdraw\n * @param { null | number } singleExitAssetIndex Index of asset to withdraw to\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async exitBalancerPool(\n poolId: string,\n assets: string[],\n amount: string | BigNumber,\n singleExitAssetIndex: number | null = null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const exitPoolTxData = this.utils.getBalancerExitPoolTx(\n this,\n poolId,\n assets,\n singleExitAssetIndex,\n amount\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.BALANCER], exitPoolTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from Aave platform\n * @param {string[]} assets Aave tokens (deposit/debt) hold by pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestAaveRewards(\n assets: string[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const aaveIncentivesAddress = stakingAddress[this.network][\n Dapp.AAVE\n ] as string;\n const iAaveIncentivesController = new ethers.utils.Interface(\n IAaveIncentivesController.abi\n );\n const aaveIncentivesController = new ethers.Contract(\n aaveIncentivesAddress,\n iAaveIncentivesController,\n this.signer\n );\n const amount = await aaveIncentivesController.getUserUnclaimedRewards(\n this.address\n );\n const claimTxData = iAaveIncentivesController.encodeFunctionData(\n Transaction.CLAIM_REWARDS,\n [assets, amount, this.address]\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [aaveIncentivesAddress, claimTxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from Aave platform\n * @param {string[]} assets Assets invested in Aave\n * @param {string} rewardAssets Reward token address\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestAaveV3Rewards(\n assets: string[],\n rewardAsset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const claimTxData = await getAaveV3ClaimTxData(this, assets, rewardAsset);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n stakingAddress[this.network][Dapp.AAVEV3] as string,\n claimTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim rewards from CompoundV3\n * @param {string} asset Compound lending asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async harvestCompoundV3Rewards(\n asset: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const claimTxData = await getCompoundV3ClaimTxData(this, asset);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n stakingAddress[this.network][Dapp.COMPOUNDV3] as string,\n claimTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Create UniswapV3 liquidity pool\n * @param {dapp} Platform UniswapV3, VelodromeCL, AerodromeCL or RamesesCL\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { number } minPrice Lower price range (assetB per assetA)\n * @param { number } maxPrice Upper price range (assetB per assetA)\n * @param { number } minTick Lower tick range\n * @param { number } maxTick Upper tick range\n * @param { number } feeAmountOrTickSpacing Fee tier UniswapV3 or tick spacing VelodromeCL\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityUniswapV3(\n dapp:\n | Dapp.UNISWAPV3\n | Dapp.VELODROMECL\n | Dapp.AERODROMECL\n | Dapp.RAMSESCL\n | Dapp.PANCAKECL,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n minPrice: number | null,\n maxPrice: number | null,\n minTick: number | null,\n maxTick: number | null,\n feeAmountOrTickSpacing: number,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n if (\n (minPrice === null || maxPrice === null) &&\n (minTick === null || maxTick === null)\n )\n throw new Error(\"Need to provide price or tick range\");\n if ((minPrice || maxPrice) && dapp !== Dapp.UNISWAPV3)\n throw new Error(\"no price conversion for Aerodrome/Velodrome CL\");\n\n const mintTxData = await getUniswapV3MintTxData(\n dapp,\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n minPrice,\n maxPrice,\n minTick,\n maxTick,\n feeAmountOrTickSpacing\n );\n\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n nonfungiblePositionManagerAddress[this.network][dapp],\n mintTxData,\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from an UniswapV3 or Arrakis liquidity pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 position\n * @param {number} amount Amount in percent of assets to be removed\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async decreaseLiquidity(\n dapp: Dapp,\n tokenId: string,\n amount = 100,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let dappAddress;\n let isStaked = false;\n let txData;\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n } else {\n //staked in gauge\n dappAddress = tokenIdOwner;\n isStaked = true;\n }\n break;\n case Dapp.ARRAKIS:\n dappAddress = routerAddress[this.network][dapp];\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n if (!isStaked || dapp === Dapp.PANCAKECL) {\n txData = await getDecreaseLiquidityTxData(\n this,\n dapp,\n tokenId,\n amount,\n isStaked\n );\n } else {\n throw new Error(\n \"unsupported decreaseStakedLiquidity: unstake first to decrease lp\"\n );\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [dappAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Increase liquidity of an UniswapV, VelodromeCL or Arrakis liquidity pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 position\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async increaseLiquidity(\n dapp: Dapp,\n tokenId: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let dappAddress;\n let isStaked = false;\n let txData;\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n dappAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n } else {\n //staked in gauge\n dappAddress = tokenIdOwner;\n isStaked = true;\n }\n break;\n case Dapp.ARRAKIS:\n dappAddress = routerAddress[this.network][dapp];\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n //PancakeCL supports increase liquidity to staked position\n if (!isStaked || dapp === Dapp.PANCAKECL) {\n txData = await getIncreaseLiquidityTxData(\n this,\n dapp,\n tokenId,\n amountA,\n amountB\n );\n } else {\n throw new Error(\n \"unsupported increaseStakedLiquidity: unstake first to increase lp\"\n );\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [dappAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Claim fees of an UniswapV3 liquidity or Arrakis pool\n * @param {Dapp} dapp Platform either UniswapV3 or Arrakis\n * @param {string} tokenId Token Id of UniswapV3 or Gauge address\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async claimFees(\n dapp: Dapp,\n tokenId: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n let txData;\n let contractAddress;\n const iNonfungiblePositionManager = new ethers.utils.Interface(\n INonfungiblePositionManager.abi\n );\n switch (dapp) {\n case Dapp.UNISWAPV3:\n case Dapp.RAMSESCL:\n contractAddress = nonfungiblePositionManagerAddress[this.network][dapp];\n txData = iNonfungiblePositionManager.encodeFunctionData(\n Transaction.COLLECT,\n [[tokenId, this.address, MaxUint128, MaxUint128]]\n );\n break;\n case Dapp.ARRAKIS:\n case Dapp.BALANCER:\n contractAddress = tokenId;\n const abi = new ethers.utils.Interface(ILiquidityGaugeV4.abi);\n txData = abi.encodeFunctionData(\"claim_rewards()\", []);\n break;\n case Dapp.VELODROME:\n case Dapp.RAMSES:\n contractAddress = tokenId;\n txData = getVelodromeClaimTxData(this, tokenId, false);\n break;\n case Dapp.VELODROMEV2:\n case Dapp.AERODROME:\n contractAddress = tokenId;\n txData = getVelodromeClaimTxData(this, tokenId, true);\n break;\n case Dapp.VELODROMECL:\n case Dapp.AERODROMECL:\n case Dapp.PANCAKECL:\n const tokenIdOwner = await getClOwner(this, dapp, tokenId);\n if (tokenIdOwner.toLowerCase() === this.address.toLowerCase()) {\n contractAddress =\n nonfungiblePositionManagerAddress[this.network][dapp];\n txData = iNonfungiblePositionManager.encodeFunctionData(\n Transaction.COLLECT,\n [[tokenId, this.address, MaxUint128, MaxUint128]]\n );\n } else {\n //staked in gauge or pancake masterchef\n contractAddress = tokenIdOwner;\n if (dapp === Dapp.PANCAKECL) {\n txData = getPancakeHarvestClaimTxData(this, tokenId);\n } else {\n txData = getVelodromeCLClaimTxData(tokenId);\n }\n }\n break;\n default:\n throw new Error(\"dapp not supported\");\n }\n const tx = await getPoolTxOrGasEstimate(\n this,\n [contractAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Get rewards of an NFT position\n * @param {Dapp} dapp Platform e.g. Ramses CL\n * @param {string} tokenId Token Id\n * @param {string[]} rewards Reward tokens\n * @param {any} options Transaction option\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async getRewards(\n dapp: Dapp,\n tokenId: string,\n rewards: string[],\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n nonfungiblePositionManagerAddress[this.network][dapp],\n getRewardsTxDta(tokenId, rewards),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade an asset into another asset\n * @param {Dapp} dapp Platform like Sushiswap or Uniswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {BigNumber | string} amountIn Amount\n * @param { FeeAmount } feeAmount Fee tier (Low 0.05%, Medium 0.3%, High 1%)\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async tradeUniswapV3(\n assetFrom: string,\n assetTo: string,\n amountIn: BigNumber | string,\n feeAmount: number,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const swapxData = await getUniswapV3SwapTxData(\n this,\n assetFrom,\n assetTo,\n amountIn,\n slippage,\n feeAmount\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.UNISWAPV3], swapxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityVelodrome(\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROME],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityVelodrome(\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROME],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome V2 pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityVelodromeV2(\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROMEV2],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome V2 pool\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityVelodromeV2(\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][Dapp.VELODROMEV2],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Add liquidity to Velodrome V2 or Ramses pool\n * @param {Dapp} dapp VelodromeV2, Ramses or Aerodrome\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amountA Amount first asset\n * @param {BigNumber | string} amountB Amount second asset\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async addLiquidityV2(\n dapp: Dapp.VELODROMEV2 | Dapp.RAMSES | Dapp.AERODROME,\n assetA: string,\n assetB: string,\n amountA: BigNumber | string,\n amountB: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][dapp],\n await getVelodromeAddLiquidityTxData(\n this,\n assetA,\n assetB,\n amountA,\n amountB,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Remove liquidity from Velodrome V2 or Ramses pool\n * @param {Dapp} dapp VelodromeV2, Ramses or Aerodrome\n * @param {string} assetA First asset\n * @param {string} assetB Second asset\n * @param {BigNumber | string} amount Amount of LP tokens\n * @param { boolean } isStable Is stable pool\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async removeLiquidityV2(\n dapp: Dapp.VELODROMEV2 | Dapp.RAMSES | Dapp.AERODROME,\n assetA: string,\n assetB: string,\n amount: BigNumber | string,\n isStable: boolean,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [\n routerAddress[this.network][dapp],\n await getVelodromeRemoveLiquidityTxData(\n this,\n assetA,\n assetB,\n amount,\n isStable\n ),\n options\n ],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Trade options on lyra\n * @param {LyraOptionMarket} market Underlying market e.g. eth\n * @param {number} expiry Expiry timestamp\n * @param { number} strike Strike price\n * @param {LyraOptionType} optionType Call or put\n * @param { LyraTradeType} tradeType By or sell\n * @param {BigNumber | string } optionAmount Option amount\n * @param {string } assetIn Asset to invest\n * @param {BigNumber | string } collateralChangeAmount Collateral amount to add when shorting options and to remove when covering shorts\n * @param {boolean} isCoveredCall Selling covered call options\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async tradeLyraOption(\n market: LyraOptionMarket,\n expiry: number,\n strike: number,\n optionType: LyraOptionType,\n tradeType: LyraTradeType,\n optionAmount: BigNumber | string,\n assetIn: string,\n collateralChangeAmount: BigNumber | string = \"0\",\n isCoveredCall = false,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const swapxData = await getLyraOptionTxData(\n this,\n market,\n optionType,\n expiry,\n strike,\n tradeType,\n optionAmount,\n assetIn,\n BigNumber.from(collateralChangeAmount),\n isCoveredCall\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network][Dapp.LYRA], swapxData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * Gets Lyra option positions\n * @returns {Promise<Position>} Transaction\n */\n async getLyraPositions(market: LyraOptionMarket): Promise<LyraPosition[]> {\n return await getOptionPositions(this, market);\n }\n\n /** Deposit or withdraws (negative amount) asset for Synthetix future margin trading\n *\n * @param {string} market Address of futures market\n * @param {BigNumber | string } changeAmount Amount to increase/decrease margin\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async changeFuturesMargin(\n market: string,\n changeAmount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, getFuturesChangeMarginTxData(changeAmount), options],\n sdkOptions\n );\n return tx;\n }\n\n /** Change position in Synthetix futures market (long/short)\n *\n * @param {string} market Address of futures market\n * @param {BigNumber | string } changeAmount Negative for short, positive for long\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async changeFuturesPosition(\n market: string,\n changeAmount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getFuturesChangePositionTxData(\n changeAmount,\n market,\n this\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** Cancels an open oder on Synthetix futures market\n *\n * @param {string} market Address of futures market\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async cancelFuturesOrder(\n market: string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getFuturesCancelOrderTxData(this);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [market, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /**\n * mintManagerFee\n * @param {any} options Transaction options\n * @param {boolean} estimateGas Simulate/estimate gas\n * @returns {Promise<any>} Transaction\n */\n async mintManagerFee(options: any = null, estimateGas = false): Promise<any> {\n if (estimateGas) {\n return await this.poolLogic.estimateGas.mintManagerFee(options);\n }\n const tx = await this.poolLogic.mintManagerFee(options);\n return tx;\n }\n\n /**\n * getAvailableManagerFee\n * @returns {Promise<BigNumber>} fee\n */\n async getAvailableManagerFee(): Promise<BigNumber> {\n const fee = await this.poolLogic.availableManagerFee();\n return BigNumber.from(fee);\n }\n\n /** Vest tokens (e.g. Ramses xoRAM)\n *\n * @param {string} tokenAddress Address of the token to vest\n * @param {BigNumber | string } changeAmount Negative for short, positive for long\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async vestTokens(\n tokenAddress: string,\n amount: BigNumber | string,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getCreateVestTxData(amount);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [tokenAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** Exit position of vested tokens (e.g. Ramses xoRAM)\n *\n * @param {string} tokenAddress Address of the token to vest\n * @param {number } id position Id of the vested tokens\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async exitVestedToken(\n tokenAddress: string,\n id: number,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getExitVestTxData(id);\n const tx = await getPoolTxOrGasEstimate(\n this,\n [tokenAddress, txData, options],\n sdkOptions\n );\n return tx;\n }\n\n /** deposit rETH to mint UNIT via the Flat Money protocol\n *\n * @param { BigNumber | string } depositAmount Amount of rETH to deposit\n * @param { number } slippage slippage, 0.5 represents 0.5%\n * @param { number | null } maxKeeperFeeInUsd 5 represents $5; null will skip the maxKeeperFee check\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async mintUnitViaFlatMoney(\n depositAmount: ethers.BigNumber | string,\n slippage = 0.5,\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await mintUnitViaFlatMoney(\n this,\n depositAmount,\n slippage,\n maxKeeperFeeInUsd,\n options,\n sdkOptions\n );\n return tx;\n }\n\n /** redeem UNIT via the Flat Money protocol\n *\n * @param { BigNumber | string } depositAmount Amount of UNIT to withdraw\n * @param { number } slippage slippage, 0.5 represents 0.5%\n * @param { number | null } maxKeeperFeeInUsd 5 represents $5; null will skip the maxKeeperFee check\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async redeemUnitViaFlatMoney(\n withdrawAmount: ethers.BigNumber | string,\n slippage = 0.5,\n maxKeeperFeeInUsd: number | null,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const tx = await redeemUnitViaFlatMoney(\n this,\n withdrawAmount,\n slippage,\n maxKeeperFeeInUsd,\n options,\n sdkOptions\n );\n return tx;\n }\n\n async cancelOrderViaFlatMoney(\n options: any = null,\n estimateGas = false\n ): Promise<any> {\n const tx = await cancelOrderViaFlatMoney(this, options, estimateGas);\n return tx;\n }\n\n /**\n * Complete a Toros withdrawal to a single asset\n * @param {string} destinationToken Address of destination asset\n * @param {number} slippage Slippage tolerance in %\n * @param {any} options Transaction options\n * @param {SDKOptions} sdkOptions SDK options including estimateGas\n * @returns {Promise<any>} Transaction\n */\n async completeTorosWithdrawal(\n destinationToken: string,\n slippage = 0.5,\n options: any = null,\n sdkOptions: SDKOptions = {\n estimateGas: false\n }\n ): Promise<any> {\n const txData = await getCompleteWithdrawalTxData(\n this,\n destinationToken,\n slippage * 100,\n false\n );\n const tx = await getPoolTxOrGasEstimate(\n this,\n [routerAddress[this.network].toros, txData, options],\n sdkOptions\n );\n return tx;\n }\n}\n","import { BigNumber, Contract, ethers, Wallet } from \"ethers\";\nimport {\n Token,\n TokenAmount,\n Pair,\n TradeType,\n Route,\n Trade,\n Percent\n} from \"@sushiswap/sdk\";\nimport { SOR, SwapTypes } from \"@balancer-labs/sor\";\nimport { BaseProvider } from \"@ethersproject/providers\";\n\nimport IERC20 from \"../abi/IERC20.json\";\nimport IMiniChefV2 from \"../abi/IMiniChefV2.json\";\nimport UniswapV2Factory from \"../abi/IUniswapV2Factory.json\";\nimport UniswapV2Pair from \"../abi/IUniswapV2Pair.json\";\nimport IBalancerV2Vault from \"../abi/IBalancertV2Vault.json\";\nimport {\n balancerSubgraph,\n dappFactoryAddress,\n networkChainIdMap,\n stakingAddress\n} from \"../config\";\nimport {\n Dapp,\n LyraOptionMarket,\n LyraOptionType,\n LyraTradeType,\n Network,\n Reserves\n} from \"../types\";\nimport { Pool } from \".\";\nimport { getExpiries, getStrike, getStrikes } from \"../services/lyra/markets\";\nimport { Quote, Strike } from \"@lyrafinance/lyra-js\";\nimport { getQuote } from \"../services/lyra/quote\";\n\nexport class Utils {\n network: Network;\n signer: Wallet;\n\n public constructor(network: Network, signer: Wallet) {\n this.network = network;\n this.signer = signer;\n }\n\n /**\n * Return the reserves of the two assets of a liquidity pool\n * This is the price of one token in the other\n * @param {Dapp} dApp DApp like Uniswap or Sushiswap\n * @param {string} tokenA First token of the pool pair\n * @param {string} tokenB Second token of the pool pair\n * @returns {Promise<Reserves>} Reserves of the assets in BigNumber\n * @throws If the dapp is not supported on the network\n */\n async getLpReserves(\n dapp: Dapp,\n assetA: string,\n assetB: string\n ): Promise<Reserves> {\n if (dappFactoryAddress[this.network][dapp]) {\n const uniswapV2Factory = new Contract(\n dappFactoryAddress[this.network][dapp] as string,\n UniswapV2Factory.abi,\n this.signer\n );\n\n const uniswapV2PairAddress = await uniswapV2Factory.getPair(\n assetA,\n assetB\n );\n\n const uniswapV2Pair = new Contract(\n uniswapV2PairAddress,\n UniswapV2Pair.abi,\n this.signer\n );\n\n const result = await uniswapV2Pair.getReserves();\n const [reserve0, reserve1] = result;\n return assetA.toLowerCase() < assetB.toLowerCase()\n ? { assetA: reserve0, assetB: reserve1 }\n : { assetA: reserve1, assetB: reserve0 };\n } else {\n throw new Error(\"Dapp not supported on this network\");\n }\n }\n\n /**\n * Returns the pool id of a liquidity pool\n * @param {Dapp} dApp DApp like uniswap or sushiswap\n * @param {string} lpPoolAddress token address of the pool pair\n * @returns {number} Pool Id\n * @throws if the dapp is not supported on the network\n */\n\n async getLpPoolId(dapp: Dapp, poolAsset: string): Promise<number> {\n if (stakingAddress[this.network][dapp]) {\n const masterChefV2 = new Contract(\n stakingAddress[this.network][dapp] as string,\n IMiniChefV2.abi,\n this.signer\n );\n\n const poolLength = await masterChefV2.poolLength();\n const idArray = Array.from(\n { length: poolLength.toNumber() },\n (_, v) => v\n );\n const lpPoolAddresses = await Promise.all(\n idArray.map(e => masterChefV2.lpToken(e))\n );\n const poolId = lpPoolAddresses\n .map(e => e.toLowerCase())\n .indexOf(poolAsset.toLocaleLowerCase());\n if (poolId === -1) {\n throw new Error(\"Staking not supported for asset\");\n }\n return poolId;\n } else {\n throw new Error(\"Dapp not supported on this network\");\n }\n }\n\n /**\n * Returns the balance of an asset (ERC20) token\n * @param {string} asset string token address\n * @param {string} owner address of the owner\n * @returns { BigNumber } Balance of asset\n */\n\n async getBalance(asset: string, owner: string): Promise<ethers.BigNumber> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n const balance = await iERC20.balanceOf(owner);\n return balance;\n }\n\n /**\n * Returns the decimals of an asset (ERC20) token\n * @param {string} asset string token address\n * @returns { number } Balance of asset\n */\n\n async getDecimals(asset: string): Promise<number> {\n const iERC20 = new ethers.Contract(asset, IERC20.abi, this.signer);\n const decimals = await iERC20.decimals();\n return decimals;\n }\n\n /**\n * Return the minimum amount out for a trade between two assets\n * given the trade amount and slippage\n * @param {Dapp} dApp DApp like Uniswap or Sushiswap\n * @param {string} assetFrom Asset to trade from\n * @param {string} assetTo Asset to trade into\n * @param {string | ethers.BigNumber} amountIn Trade amount\n * @param { number} slippage Maximum slippage allowed\n * @returns {Promise<ethers.BigNumber>} Reserves of the assets in BigNumber\n */\n async getMinAmountOut(\n dapp: Dapp,\n assetFrom: string,\n assetTo: string,\n amountIn: string | ethers.BigNumber,\n slippage: number\n ): Promise<ethers.BigNumber> {\n const assetFromChecked = ethers.utils.getAddress(assetFrom);\n const assetToChecked = ethers.utils.getAddress(assetTo);\n const reserves = await this.getLpReserves(\n dapp,\n assetFromChecked,\n assetToChecked\n );\n const tokenA = new Token(\n networkChainIdMap[this.network],\n assetFromChecked,\n 18\n );\n const tokenB = new Token(\n networkChainIdMap[this.network],\n assetToChecked,\n 18\n );\n const pair = new Pair(\n new TokenAmount(tokenA, reserves.assetA.toString()),\n new TokenAmount(tokenB, reserves.assetB.toString())\n );\n const route = new Route([pair], tokenA, tokenB);\n\n const trade = new Trade(\n route,\n new TokenAmount(tokenA, amountIn.toString()),\n TradeType.EXACT_INPUT\n );\n return ethers.BigNumber.from(\n trade\n .minimumAmountOut(new Percent((slippage * 100).toFixed(), \"10000\"))\n .raw.toString()\n );\n }\n\n async getBalancerSwapTx(\n pool: Pool,\n assetFrom: string,\n assetTo: string,\n amountIn: ethers.BigNumber | string,\n slippage: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const sor = new SOR(\n this.signer.provider as BaseProvider,\n networkChainIdMap[this.network],\n balancerSubgraph[this.network]\n );\n // isFetched will be true on success\n const isFetched = await sor.fetchPools();\n\n if (!isFetched) throw new Error(\"Error fetching balancer pools\");\n\n const swapType = SwapTypes.SwapExactIn;\n const { swaps, tokenAddresses, returnAmount } = await sor.getSwaps(\n assetFrom,\n assetTo,\n swapType,\n ethers.BigNumber.from(amountIn)\n );\n\n const minimumAmountOut = returnAmount\n .mul(10000 - slippage * 100)\n .div(10000);\n\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n\n if (swaps.length === 1) {\n const swap = swaps[0];\n //do single swap\n const swapTx = iBalancerV2Vault.encodeFunctionData(\"swap\", [\n [\n swap.poolId,\n SwapTypes.SwapExactIn,\n tokenAddresses[swap.assetInIndex],\n tokenAddresses[swap.assetOutIndex],\n swap.amount,\n swap.userData\n ],\n [pool.address, false, pool.address, false],\n minimumAmountOut,\n Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix time\n ]);\n return swapTx;\n } else {\n // Limits:\n // +ve means max to send\n // -ve mean min to receive\n // For a multihop the intermediate tokens should be 0\n const limits: string[] = [];\n tokenAddresses.forEach((token, i) => {\n if (token.toLowerCase() === assetFrom.toLowerCase()) {\n limits[i] = amountIn.toString();\n } else if (token.toLowerCase() === assetTo.toLowerCase()) {\n limits[i] = minimumAmountOut.mul(-1).toString();\n } else {\n limits[i] = \"0\";\n }\n });\n const swapTx = iBalancerV2Vault.encodeFunctionData(\"batchSwap\", [\n SwapTypes.SwapExactIn,\n swaps,\n tokenAddresses,\n [pool.address, false, pool.address, false],\n limits,\n Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix time\n ]);\n return swapTx;\n }\n }\n\n async getBalancerJoinPoolTx(\n pool: Pool,\n balancerPoolId: string,\n assets: string[],\n amountsIn: string[] | ethers.BigNumber[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n const bptAddress = ethers.utils.getAddress(balancerPoolId.slice(0, 42));\n const bptIndex = assets.findIndex(\n e => e.toLowerCase() === bptAddress.toLocaleLowerCase()\n );\n const poolAssetsAmounts = amountsIn.slice();\n if (bptIndex >= 0) poolAssetsAmounts.splice(bptIndex, 1);\n const txData = [\n balancerPoolId,\n pool.address,\n pool.address,\n [\n assets,\n amountsIn,\n ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256[]\", \"uint256\"],\n [1, poolAssetsAmounts, 0]\n ),\n false\n ]\n ];\n const joinPoolTx = iBalancerV2Vault.encodeFunctionData(\"joinPool\", txData);\n return joinPoolTx;\n }\n\n async getBalancerExitPoolTx(\n pool: Pool,\n balancerPoolId: string,\n assets: string[],\n singleExitAssetIndex: null | number,\n amount: string | ethers.BigNumber\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any> {\n const minimumAmountOut = new Array(assets.length).fill(0);\n const iBalancerV2Vault = new ethers.utils.Interface(IBalancerV2Vault.abi);\n const userTxData =\n singleExitAssetIndex === null\n ? ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256\"],\n [1, amount]\n )\n : ethers.utils.defaultAbiCoder.encode(\n [\"uint256\", \"uint256\", \"uint256\"],\n [0, amount, singleExitAssetIndex]\n );\n\n const txData = [\n balancerPoolId,\n pool.address,\n pool.address,\n [assets, minimumAmountOut, userTxData, false]\n ];\n const exitPoolTx = iBalancerV2Vault.encodeFunctionData(\"exitPool\", txData);\n return exitPoolTx;\n }\n\n async getLyraOptionExpiries(market: LyraOptionMarket): Promise<number[]> {\n return await getExpiries(this.network, market);\n }\n\n async getLyraOptionStrikes(\n market: LyraOptionMarket,\n expiry: number\n ): Promise<Strike[]> {\n return await getStrikes(this.network, market, expiry);\n }\n\n async getLyraOptionStrike(\n market: LyraOptionMarket,\n expiry: number,\n strike: number\n ): Promise<Strike> {\n return await getStrike(this.network, market, expiry, strike);\n }\n\n async getLyraOptionQuote(\n strike: Strike,\n type: LyraOptionType,\n tradeType: LyraTradeType,\n amount: BigNumber | string\n ): Promise<Quote> {\n return await getQuote(\n strike,\n type,\n tradeType,\n ethers.BigNumber.from(amount)\n );\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Contract, Wallet } from \"ethers\";\n\nimport PoolFactory from \"../abi/PoolFactory.json\";\nimport PoolLogic from \"../abi/PoolLogic.json\";\nimport ManagerLogic from \"../abi/PoolManagerLogic.json\";\nimport { factoryAddress } from \"../config\";\nimport { Network, SupportedAsset } from \"../types\";\n\nimport { Pool } from \"./pool\";\nimport { Utils } from \"./utils\";\n\nexport class Dhedge {\n public network: Network;\n public signer: Wallet;\n public factory: Contract;\n public utils: Utils;\n public constructor(wallet: Wallet, network: Network) {\n this.network = network;\n this.signer = wallet;\n this.factory = new Contract(\n factoryAddress[network],\n PoolFactory.abi,\n this.signer\n );\n this.utils = new Utils(this.network, this.signer);\n }\n\n /**\n * Create a new pool.\n *\n * @param {string} managerName Name of manager\n * @param {string} poolName Pool name\n * @param {string} symbol Token symbol\n * @param {tuple[]} supportedAssets Enabled assets to trade\n * @param {number|BigNumber} performanceFeeNumerator Performance fee in percent\n * @param {number|BigNumber} managerFeeNumerator Manager fee in percent\n * @param {number|BigNumber} entryFeeNumerator Entry fee in percent\n * @param {number|BigNumber} exitFeeNumerator Exit fee in percent\n * @param {any} options Transaction options\n * @returns {Pool} Created Pool\n */\n public async createPool(\n managerName: string,\n poolName: string,\n symbol: string,\n supportedAssets: SupportedAsset[],\n performanceFeeNumerator = 0,\n managerFeeNumerator = 0,\n entryFeeNumerator = 0,\n exitFeeNumerator = 0,\n options: any = null\n ): Promise<Pool> {\n const pool = await this.factory.createFund(\n false,\n this.signer.getAddress(),\n managerName,\n poolName,\n symbol,\n performanceFeeNumerator * 100,\n managerFeeNumerator * 100,\n entryFeeNumerator * 100,\n exitFeeNumerator * 100,\n supportedAssets,\n options\n );\n const receipt = await pool.wait(1);\n\n const creationEvent = receipt.events.find(\n (item: { event: string }) => item.event === \"FundCreated\"\n );\n if (!creationEvent) throw new Error(\"Fund not created\");\n\n const poolAddress = creationEvent.args.fundAddress;\n const poolLogic = new Contract(poolAddress, PoolLogic.abi, this.signer);\n const managerLogicAddress = await poolLogic.poolManagerLogic();\n const managerLogic = new Contract(\n managerLogicAddress,\n ManagerLogic.abi,\n this.signer\n );\n\n return new Pool(\n this.network,\n this.signer,\n poolLogic,\n managerLogic,\n this.utils,\n this.factory\n );\n }\n\n /**\n * Load a pool based on the provided address\n * @param {string} address Pool address\n * @returns {Pool} Loaded Pool\n */\n public async loadPool(address: string, isDhedge = true): Promise<Pool> {\n const poolLogic = new Contract(address, PoolLogic.abi, this.signer);\n let managerLogicAddress = address;\n if (isDhedge) managerLogicAddress = await poolLogic.poolManagerLogic();\n const managerLogic = new Contract(\n managerLogicAddress,\n ManagerLogic.abi,\n this.signer\n );\n\n return new Pool(\n this.network,\n this.signer,\n poolLogic,\n managerLogic,\n this.utils,\n this.factory,\n isDhedge\n );\n }\n\n /**\n * Check if pool address is valid\n * @param {string} address Pool address\n * @returns {boolean} Is valid pool address\n */\n validatePool(address: string): Promise<boolean> {\n return this.factory.isPool(address);\n }\n}\n","// see https://stackoverflow.com/a/41102306\nconst CAN_SET_PROTOTYPE = \"setPrototypeOf\" in Object;\n\nexport class ApiError extends Error {\n public constructor(message?: string) {\n super(message ?? \"Api request failed\");\n this.name = this.constructor.name;\n if (CAN_SET_PROTOTYPE) Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n"],"names":["undefined","Network","Dapp","Transaction","require","config","factoryAddress","POLYGON","process","env","STAGING_CONTRACTS","OPTIMISM","ARBITRUM","BASE","ETHEREUM","PLASMA","routerAddress","SUSHISWAP","AAVE","AAVEV3","ONEINCH","QUICKSWAP","BALANCER","UNISWAPV3","ARRAKIS","TOROS","ODOS","KYBERSWAP","SYNTHETIX","VELODROME","VELODROMEV2","LYRA","PENDLE","RAMSES","AERODROME","dappFactoryAddress","stakingAddress","COMPOUNDV3","PANCAKECL","aaveAddressProvider","nonfungiblePositionManagerAddress","VELODROMECL","RAMSESCL","AERODROMECL","networkChainIdMap","balancerSubgraph","multiCallAddress","lyraNetworkMap","Deployment","Mainnet","MaxUint128","UNISWAPV3_QUOTER_ADDRESS","SYNTHETIX_TRACKING_CODE","flatMoneyContractAddresses","DelayedOrder","FlatcoinVault","StableModule","COLLATERAL","OrderExecution","getDeadline","pool","signer","provider","getBlock","timestamp","tryParsePrice","baseToken","quoteToken","value","split","whole","fraction","decimals","length","withoutDecimals","JSBI","BigInt","Price","multiply","tryParseTick","feeAmount","price","tick","sqrtRatioX96","encodeSqrtRatioX96","numerator","denominator","greaterThanOrEqual","TickMath","MAX_SQRT_RATIO","MAX_TICK","lessThanOrEqual","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","getUniswapV3MintTxData","dapp","assetA","assetB","amountA","amountB","minPrice","maxPrice","minTick","maxTick","feeAmountOrTickSpacing","tickLower","tickUpper","chainId","network","Promise","all","map","asset","utils","getDecimals","tokenA","Token","tokenB","sortsBefore","token0","token1","invertPrice","equals","toString","amount0","amount1","address","mintParams","iNonfungiblePositionManager","ethers","Interface","INonfungiblePositionManager","abi","IVeldodromePositionManager","push","IRamsesPositionManager","encodeFunctionData","MINT","getUniswapV3Liquidity","tokenId","Contract","positions","result","BigNumber","liquidity","getIncreaseLiquidityTxData","INCREASE_LIQUIDITY","txData","IArrakisV1RouterStaking","ADD_LIQUIDITY_STAKE","Error","getDecreaseLiquidityTxData","amount","isStaked","times","div","DECREASE_LIQUIDITY","toFixed","decreaseLiquidityTxData","collectTxData","COLLECT","multicallParams","IPancakeMasterChef","harvestTxData","HARVEST","unshift","burnTxData","BURN","MULTI_CALL","getBalance","REMOVE_LIQUIDITY_UNSTAKE","getUniswapV3SwapTxData","amountIn","slippage","quoterContract","IUniswapV3Quoter","callStatic","quoteExactInputSingle","quotedAmountOut","minAmountOut","mul","iUniswapV3Router","IUniswapV3Router","swapTx","loadPool","poolAddress","dhedge","Dhedge","isPool","validatePool","retry","fn","maxRetries","delayMs","attempt","console","warn","res","setTimeout","odosBaseUrl","getOdosSwapTxData","assetFrom","assetTo","referralCode","ODOS_REFERAL_CODE","Number","quoteParams","inputTokens","tokenAddress","outputTokens","proportion","slippageLimitPercent","userAddr","axios","post","quoteResult","assembleParams","pathId","data","assembleResult","swapTxData","transaction","error","ApiError","SWAPPER_ADDERSS","getSwapDataViaOdos","srcAsset","srcAmount","dstAsset","from","AAVE_WITHDRAW_ONCHAIN_SWAP_SLIPPAGE","getCalculateSwapDataParams","torosAsset","factory","getAssetGuard","aaveAssetGuardAddress","aaveAssetGuard","AaveLendingPoolAssetGuardAbi","calculateSwapDataParams","swapDataParams","offchainSwapNeeded","srcData","getAaveAssetWithdrawData","dstData","srcDataToEncode","routerKey","formatBytes32String","receiver","swapData","coder","defaultAbiCoder","encodedSrcData","encode","withdrawData","createWithdrawTxArguments","useOnChainSwap","torosPool","managerLogic","getSupportedAssets","supportedAssets","assetObj","supportedAsset","slippageTolerance","aaveLendingPoolAddress","toLowerCase","getInitWithdrawalTxData","complexAssetsData","iEasySwapperV2","IEasySwapperV2","LOW_USD_VALUE_FOR_WITHDRAWAL","SLIPPAGE_FOR_LOW_VALUE_SWAP","getPoolDepositAsset","investAsset","getComposition","composition","find","e","isDeposit","getEasySwapperDepositQuote","easySwapper","depositQuote","getEasySwapperTxData","isWithdrawal","depositAsset","getAaveAssetsForUnderlying","assets","iLendingPool","ILendingPoolV3","ILendingPool","lendingPool","getReserveData","reserveData","aTokens","aTokenAddress","debtTokens","variableDebtTokenAddress","concat","getAaveV3ClaimTxData","rewardAsset","iAaveIncentives","IAaveV3Incentives","aaveAsset","claimTxData","constants","MaxUint256","getVelodromeAddLiquidityTxData","isStable","iVelodromeRouter","IVelodromeRouter","ADD_LIQUIDITY","getVelodromeRemoveLiquidityTxData","REMOVE_LIQUIDITY","getClOwner","ownerOf","call","options","contract","params","reject","getGasEstimateData","estimateFunc","txInfoData","txOptions","sdkOptions","gas","gasEstimationError","isDhedge","isSdkOptionsBoolean","useTraderAddressAsFrom","to","getPoolTxOrGasEstimate","args","onlyGetTxData","estimateGas","bind","sendTransaction","poolLogic","execTransaction","iVelodromeGaugeV1","IVelodromeGaugeV1","iVelodromeGaugeV2","IVelodromeGaugeV2","getVelodromeStakeTxData","v2","depositParams","iVelodromeGauge","getVelodromeClaimTxData","gauge","rewardAssetCount","Array","toNumber","keys","rewardAssets","getVelodromeCLClaimTxData","iVelodromeCLGauge","IVelodromeCLGauge","getBoard","market","expiry","lyra","Lyra","optionMarket","filteredBoards","liveBoards","filter","expiryTimestamp","getExpiries","getStrikes","strikes","getStrike","strike","filteredStrike","parseFloat","formatEther","strikePrice","getLyraTradeOptionType","isCall","isLong","isCoveredCall","optionType","includes","getOptionPositions","iOptionToken","__marketData","marketAddresses","optionToken","IOptionToken","getOwnerPositions","getQuote","type","tradeType","quote","getLyraOptionTxData","optionAmount","assetIn","collateralAmount","strikeId","id","filteredPosition","state","positionId","lyraOptionType","netPremiun","premium","add","fee","sub","txFunction","inputAmount","currentCollateral","setCollateral","collateral","iOptionMarketWrapper","IOptionMarketWrapper","tradeTx","contractAddresses","getFuturesChangeMarginTxData","ISynthetixFuturesMarketV2","FUTURES_TRACKING","getFuturesChangePositionTxData","futuresMarket","fillPrice","adjustmentFactor","lt","desiredFillPrice","getFuturesCancelOrderTxData","oneInchBaseUrl","getOneInchSwapTxData","forEasySwapper","ONEINCH_API_KEY","apiUrl","src","dst","toros","disableEstimate","usePermit2","get","headers","Authorization","response","tx","dstAmount","iXRam","IXRam","iRamsesNonfungiblePositionManager","IRamsesNonfungiblePositionManager","getCreateVestTxData","getExitVestTxData","vestId","getRewardsTxDta","rewards","getStableModuleContract","flatMoneyContracts","stableModuleContract","StableModuleAbi","getStableDepositQuote","depositAmount","stableDepositQuote","amountOut","getStableWithdrawQuote","withdrawAmount","stableWithdrawQuote","getKeeperFeeContract","flatcoinVaultContract","IFlatcoinVaultAbi","key","moduleAddress","keeperFeeContractAddress","keeperFeeContract","KeeperFeeAbi","getKeeperFee","maxKeeperFeeInUsd","send","feeHistory","gasPrice","baseFeePerGas","keeperfee","getKeeperFeeInUsd","keeperFeeInUsd","isFinite","gt","keeperFee","fundComposition","filteredFc","fc","toLocaleLowerCase","rateD1","rate","assetDecimal","getAnnounceStableDepositTxData","DelayedOrderAbi","getAnnounceStableWithdrawTxData","getCancelExistingOrderTxData","account","getCancelExistingOrderTxDataForV2","IOrderExecutionModuleAbi","mintUnitViaFlatMoney","adjustedDepositAmount","minus","mintUnitTxData","redeemUnitViaFlatMoney","redeemUnitTxData","cancelOrderViaFlatMoney","toAddress","cancelOrderTxData","getCompoundV3LendTxData","isCompoundV3Market","ICompoundV3Comet","IFToken","getCompoundV3WithdrawTxData","marketContract","getCompoundV3ClaimTxData","iCometRewards","ICometRewards","iMasterChef","IPanncakeMasterChef","getPancakeStakeTxData","getPancakeUnStakeTxData","getPancakeHarvestClaimTxData","pendleBaseUrl","getPendleSwapTxData","tokenIn","tokenOut","checkExitPostExpPT","expiredMarket","getExitExpPTTxData","getMarket","swapResult","checkUnderlying","token","networkId","underlyingAsset","isActive","marketResult","allMarkets","markets","pt","inactiveMarketResult","allInactiveMarkets","actionMiscV3","ActionMiscV3Abi","AddressZero","HashZero","PTcontract","PTAbi","SY","SYAbi","SYcontract","exchangeRate","decimalPlaces","ROUND_DOWN","getSwapWithdrawData","trackedAssets","receiveToken","swapDestMinDestAmount","balance","aggregatorData","destData","destToken","minDestAmount","createCompleteWithdrawalTxArguments","getTrackedAssets","every","isSwapNeeded","estimatedMinReceiveAmount","swapTrackedAssets","getAssetHandler","assetHandlerAddress","assetHandler","AssetHandlerAbi","getUSDPrice","receiveTokenPriceD18","IERC20Abi","receiveTokenErc20","receiveTokenDecimals","swapTAsset","swapTAssetPriceD18","swapTAssetTokenErc20","swapTAssetDecimals","tokenBalanceBN","estimatedValueToSwapD0","adjustedSlippage","lte","tAssetInfos","reduce","acc","plus","withdrawalContracts","withdrawalVaultAddress","balanceOf","balanceOfReceiveToken","getCompleteWithdrawalTxData","completeWithdrawTxArguments","isOffchainSwap","kyberBaseUrl","getKyberSwapTxData","buildParams","routeSummary","sender","recipient","buildResult","Pool","mangerLogic","getFundComposition","item","index","approveDeposit","iERC20","IERC20","approve","deposit","withdraw","fundTokenAmount","approveTxData","approveStaking","approveUniswapV3Liquidity","approveSpender","spender","approveSpenderNFT","iERC721","IERC721","trade","getBalancerSwapTx","iSynthetix","ISynthetix","owner","daoAddress","SWAP_SYNTHS","iUniswapV2Router","IUniswapV2Router","getMinAmountOut","calculatedMinAmountOut","SWAP","addLiquidity","addLiquidityTxData","removeLiquidity","removeLiquidityTxData","stake","iMiniChefV2","IMiniChefV2","getLpPoolId","poolId","stakeTxData","DEPOSIT","stakeInGauge","rewardsGauge","IBalancerRewardsGauge","txTo","unStake","unStakeTxData","WITHDRAW","unstakeFromGauge","unstakeTxData","lend","depositTxData","lendCompoundV3","supplyTxData","withdrawDeposit","withdrawTxData","withdrawCompoundV3","borrow","borrowTxData","BORROW","repay","repayTxData","REPAY","harvestRewards","changeAssets","currentAssetsEnabled","currentAssets","newAssets","removedAssets","changedAssets","setTrader","trader","setPrivate","_private","setPoolPrivate","setMaxCap","_maxSupplyCapD18","setMaxSupplyCap","joinBalancerPool","amountsIn","joinPoolTxData","getBalancerJoinPoolTx","exitBalancerPool","singleExitAssetIndex","exitPoolTxData","getBalancerExitPoolTx","harvestAaveRewards","aaveIncentivesAddress","iAaveIncentivesController","IAaveIncentivesController","aaveIncentivesController","getUserUnclaimedRewards","CLAIM_REWARDS","harvestAaveV3Rewards","harvestCompoundV3Rewards","addLiquidityUniswapV3","mintTxData","decreaseLiquidity","dappAddress","tokenIdOwner","increaseLiquidity","claimFees","contractAddress","ILiquidityGaugeV4","getRewards","tradeUniswapV3","swapxData","addLiquidityVelodrome","removeLiquidityVelodrome","addLiquidityVelodromeV2","removeLiquidityVelodromeV2","addLiquidityV2","removeLiquidityV2","tradeLyraOption","collateralChangeAmount","getLyraPositions","changeFuturesMargin","changeAmount","changeFuturesPosition","cancelFuturesOrder","mintManagerFee","getAvailableManagerFee","availableManagerFee","vestTokens","exitVestedToken","completeTorosWithdrawal","destinationToken","Utils","getLpReserves","uniswapV2Factory","UniswapV2Factory","getPair","uniswapV2PairAddress","uniswapV2Pair","UniswapV2Pair","getReserves","reserve0","reserve1","poolAsset","masterChefV2","poolLength","idArray","_","v","lpToken","lpPoolAddresses","indexOf","assetFromChecked","getAddress","assetToChecked","reserves","pair","Pair","TokenAmount","route","Route","Trade","TradeType","EXACT_INPUT","minimumAmountOut","Percent","raw","sor","SOR","fetchPools","isFetched","swapType","SwapTypes","SwapExactIn","getSwaps","swaps","tokenAddresses","returnAmount","iBalancerV2Vault","IBalancerV2Vault","swap","assetInIndex","assetOutIndex","userData","Math","floor","Date","now","limits","forEach","i","balancerPoolId","bptAddress","slice","bptIndex","findIndex","poolAssetsAmounts","splice","joinPoolTx","fill","userTxData","exitPoolTx","getLyraOptionExpiries","getLyraOptionStrikes","getLyraOptionStrike","getLyraOptionQuote","wallet","PoolFactory","createPool","managerName","poolName","symbol","performanceFeeNumerator","managerFeeNumerator","entryFeeNumerator","exitFeeNumerator","createFund","wait","receipt","creationEvent","events","event","fundAddress","PoolLogic","poolManagerLogic","managerLogicAddress","ManagerLogic","CAN_SET_PROTOTYPE","Object","message","name","constructor","setPrototypeOf","prototype"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}