@bancor/carbon-sdk
Advanced tools
Comparing version 0.0.46-DEV to 0.0.47-DEV
@@ -99,3 +99,2 @@ import { PopulatedTransaction } from '@ethersproject/contracts'; | ||
* | ||
* @throws {Error} If `startDataSync` has not been called. | ||
*/ | ||
@@ -102,0 +101,0 @@ getUserStrategies(user: string): Promise<Strategy[]>; |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@ethersproject/providers"),require("@ethersproject/bignumber"),require("decimal.js"),require("ethers"),require("@ethersproject/units")):"function"==typeof define&&define.amd?define(["@ethersproject/providers","@ethersproject/bignumber","decimal.js","ethers","@ethersproject/units"],t):(e||self).carbonSdk=t(e.providers,e.bignumber,e.Decimal,e.ethers,e.units)}(this,function(e,t,n,a,r){function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/i(n);function u(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,"symbol"==typeof(r=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a.key))?r:String(r),a)}var r}function s(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},p.apply(this,arguments)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l=function(e,t){return e.localeCompare(t)},c="->-<-",m=function(e){if(2!==e.length)throw new Error("Invalid number of tokens: expected 2, got "+e.length);if(e[0]===e[1])throw new Error("Cannot create key for identical tokens: "+e[0]);return e.join(c)},f=function(e,t){return m([e,t].sort(l))},g=function(e){var t=e.split(c);return[t[0],t[1]]},b=function(e,t){return m([e,t])},T=function(e,t,n){if(0!==n.size){var a,r;0===t?(a=e.order0,r=b(e.token1,e.token0)):(a=e.order1,r=b(e.token0,e.token1));var i,o=n.get(r);o?o[e.id.toString()]=a:(console.warn("Should not be here, modified order is supposed to already be cached"),n.set(r,((i={})[e.id.toString()]=a,i)))}},h=/*#__PURE__*/function(){function e(e,t){this._pairToStrategies=void 0,this._strategyById=void 0,this._fetcher=void 0,this._cachedOrders=void 0,this._onChange=void 0,this._fetcher=e,this._pairToStrategies=new Map,this._strategyById=new Map,this._cachedOrders=new Map,this._onChange=t}var t=e.prototype;return t.init=function(){try{var e=this;return Promise.resolve(function(e){try{return Promise.resolve(e.getAllTokenPairs()).then(function(t){return Promise.resolve(e.getStrategiesByTokenPairs(t)).then(function(e){for(var n=new Map,a=0;a<t.length;a++){var r=t[a],i=e[a],o=f(r[0],r[1]);n.set(o,i)}return n})})}catch(e){return Promise.reject(e)}}(e._fetcher)).then(function(t){e._pairToStrategies=t;for(var n,a=d(e._pairToStrategies.values());!(n=a()).done;){var r=n.value;if(r&&r.length>0)for(var i=0;i<r.length;i++)e._strategyById.set(r[i].id.toString(),r[i])}e._fetcher.onStrategyCreated(function(t){!function(e,t,n,a){if(!n.has(e.id.toString())){n.set(e.id.toString(),e);var r=f(e.token0,e.token1);if(t.has(r)?t.get(r).push(e):t.set(r,[e]),0!==a.size)for(var i=0,o=[[e.token0,e.token1],[e.token1,e.token0]];i<o.length;i++){var u,s=o[i],p=b(s[0],s[1]),y=s[0]===e.token0?e.order1:e.order0,d=a.get(p);d?d[e.id.toString()]=y:a.set(p,((u={})[e.id.toString()]=y,u))}}}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyUpdated(function(t){!function(e,t,n,a){n.set(e.id.toString(),e);var r=f(e.token0,e.token1);t.has(r)?t.set(r,t.get(r).map(function(t){return t.id===e.id?e:t})):t.set(r,[e]),T(e,0,a),T(e,1,a)}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyDeleted(function(t){!function(e,t,n,a){if(n.has(e.id.toString())){n.delete(e.id.toString());var r=f(e.token0,e.token1);if(t.has(r)&&t.set(r,t.get(r).filter(function(t){return t.id!==e.id})),0===t.get(r).length&&t.delete(r),0!==a.size)for(var i=0,o=[[e.token0,e.token1],[e.token1,e.token0]];i<o.length;i++){var u=o[i],s=b(u[0],u[1]),p=a.get(s);p&&(delete p[e.id.toString()],0===Object.keys(p).length&&a.delete(s))}}}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()})})}catch(e){return Promise.reject(e)}},t.getOrders=function(e,t,n){var a;if(void 0===n&&(n=!1),0===this._pairToStrategies.size)return console.warn("getOrders was called when no strategies are cached, did you call init?"),{};0===this._cachedOrders.size&&function(e,t){t.clear();for(var n,a=d(e.values());!(n=a()).done;){var r=n.value;if(r.length>0){for(var i=r[0].token0,o=r[0].token1,u={},s={},p=0;p<r.length;p++)r[p].token0===i?(u[r[p].id.toString()]=r[p].order0,s[r[p].id.toString()]=r[p].order1):(u[r[p].id.toString()]=r[p].order1,s[r[p].id.toString()]=r[p].order0);t.set(b(i,o),s),t.set(b(o,i),u)}}}(this._pairToStrategies,this._cachedOrders);var r=b(e,t),i=null!=(a=this._cachedOrders.get(r))?a:{};if(n)return i;var o=Object.entries(i).filter(function(e){return e[1].y.gt(0)&&(e[1].A.gt(0)||e[1].B.gt(0))});return Object.fromEntries(o)},t.getStrategyById=function(e){return this._strategyById.get(e.toString())},s(e,[{key:"pairs",get:function(){return Array.from(this._pairToStrategies.keys()).map(g)}}]),e}();o.default.set({precision:50,rounding:o.default.ROUND_HALF_DOWN,toExpNeg:-30,toExpPos:30});var v=Math.pow(2,32),w=new o.default(10),k=function(e,t){return w.pow(e-t)},_="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase(),P=function(e){return e.toLowerCase()===_},S=function(e,n,a){var r=p({},a);return P(e)&&(r.value=n.reduce(function(e,t){return e.add(t.amount)},t.BigNumber.from(0))),r},M=/*#__PURE__*/function(){function e(e){this._prefix=void 0,this._prefix="[SDK]["+e+"]:"}var t=e.prototype;return t.log=function(){var e;(e=console).log.apply(e,[this._prefix].concat([].slice.call(arguments)))},t.debug=function(){var e;(e=console).log.apply(e,[this._prefix].concat([].slice.call(arguments)))},e}(),A=new M("Composer.ts"),B=/*#__PURE__*/function(){function e(e){this._contracts=void 0,this._contracts=e}var t=e.prototype;return t.tradeByTargetAmount=function(e,t,n,a,r,i){A.debug("tradeByTargetAmount called",arguments);var o=S(e,n,i);return A.debug("tradeByTargetAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeByTargetAmount(e,t,n,a,r,o)},t.tradeBySourceAmount=function(e,t,n,a,r,i){A.debug("tradeBySourceAmount called",arguments);var o=S(e,n,i);return A.debug("tradeBySourceAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeBySourceAmount(e,t,n,a,r,o)},t.createStrategy=function(e,t,n,a,r){A.debug("createStrategy called",arguments);var i=p({},r);return P(e)?i.value=n.y:P(t)&&(i.value=a.y),A.debug("createStrategy overrides",i),this._contracts.carbonController.populateTransaction.createStrategy(e,t,[n,a],i)},t.deleteStrategy=function(e){return this._contracts.carbonController.populateTransaction.deleteStrategy(e)},t.updateStrategy=function(e,t,n,a){return this._contracts.carbonController.populateTransaction.updateStrategy(e,t,n,a)},t.transferVoucherOwnership=function(e,t){return this._contracts.voucher.populateTransaction.transferOwnership(e,t)},e}(),x=[{inputs:[],name:"AccessDenied",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"DeadlineExpired",type:"error"},{inputs:[],name:"GreaterThanMaxInput",type:"error"},{inputs:[],name:"IdenticalAddresses",type:"error"},{inputs:[],name:"InsufficientCapacity",type:"error"},{inputs:[],name:"InvalidFee",type:"error"},{inputs:[],name:"InvalidIndices",type:"error"},{inputs:[],name:"InvalidStrategyId",type:"error"},{inputs:[],name:"InvalidTradeActionAmount",type:"error"},{inputs:[],name:"LowerThanMinReturn",type:"error"},{inputs:[],name:"NativeAmountMismatch",type:"error"},{inputs:[],name:"NoIdsProvided",type:"error"},{inputs:[],name:"OutDated",type:"error"},{inputs:[],name:"Overflow",type:"error"},{inputs:[],name:"PoolAlreadyExists",type:"error"},{inputs:[],name:"PoolDoesNotExists",type:"error"},{inputs:[],name:"StrategyDoesNotExist",type:"error"},{inputs:[],name:"TokensMismatch",type:"error"},{inputs:[],name:"UnknownDelegator",type:"error"},{inputs:[],name:"UnnecessaryNativeTokenReceived",type:"error"},{inputs:[],name:"UnsetDelegator",type:"error"},{inputs:[],name:"ZeroLiquidityProvided",type:"error"},{inputs:[],name:"ZeroValue",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"poolId",type:"uint256"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"}],name:"PoolCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"trader",type:"address"},{indexed:!0,internalType:"address",name:"sourceToken",type:"address"},{indexed:!0,internalType:"address",name:"targetToken",type:"address"},{indexed:!1,internalType:"uint256",name:"sourceAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"targetAmount",type:"uint256"},{indexed:!1,internalType:"uint128",name:"tradingFeeAmount",type:"uint128"},{indexed:!1,internalType:"bool",name:"byTargetAmount",type:"bool"}],name:"TokensTraded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"prevFeePPM",type:"uint32"},{indexed:!1,internalType:"uint32",name:"newFeePPM",type:"uint32"}],name:"TradingFeePPMUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"accumulatedFees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"controllerType",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"createPool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pool",name:"",type:"tuple"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],name:"createStrategy",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"deleteStrategy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getRoleMember",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleMemberCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pairs",outputs:[{internalType:"address[2][]",name:"",type:"address[2][]"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"pool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pool",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data",type:"bytes"}],name:"postUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"roleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[],name:"roleEmergencyStopper",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"newTradingFeePPM",type:"uint32"}],name:"setTradingFeePPM",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"ids",type:"uint256[]"}],name:"strategiesByIds",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"},{internalType:"uint256",name:"startIndex",type:"uint256"},{internalType:"uint256",name:"endIndex",type:"uint256"}],name:"strategiesByPool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"strategiesByPoolCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"strategy",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint128",name:"minReturn",type:"uint128"}],name:"tradeBySourceAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint128",name:"maxInput",type:"uint128"}],name:"tradeByTargetAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"}],name:"tradeSourceAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"}],name:"tradeTargetAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"tradingFeePPM",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"currentOrders",type:"tuple[2]"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"newOrders",type:"tuple[2]"}],name:"updateStrategy",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"address",name:"newOwner",type:"address"}],name:"updateStrategyOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"logic",type:"address"},{internalType:"address",name:"initAdmin",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],D=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(x)},e.connect=function(e,t){return new a.Contract(e,x,t)},e}();D.abi=x;var C=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"}],I=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(C)},e.connect=function(e,t){return new a.Contract(e,C,t)},e}();I.abi=C;var O=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_disable",type:"bool"}],name:"disableTransfers",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"version",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_token",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"withdrawTokens",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[],name:"acceptOwnership",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"issue",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_amount",type:"uint256"}],name:"destroy",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"transfersEnabled",outputs:[{name:"",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"newOwner",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,type:"function"},{inputs:[{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_decimals",type:"uint8"}],payable:!1,type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,name:"_token",type:"address"}],name:"NewSmartToken",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_amount",type:"uint256"}],name:"Issuance",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_amount",type:"uint256"}],name:"Destruction",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_prevOwner",type:"address"},{indexed:!1,name:"_newOwner",type:"address"}],name:"OwnerUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_spender",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Approval",type:"event"}],R=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(O)},e.connect=function(e,t){return new a.Contract(e,O,t)},e}();R.abi=O;var j=[{inputs:[{internalType:"bool",name:"newUseGlobalURI",type:"bool"},{internalType:"string",name:"newBaseURI",type:"string"},{internalType:"string",name:"newBaseExtension",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessDenied",type:"error"},{inputs:[],name:"CarbonControllerNotSet",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"provider",type:"address"},{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newBaseExtension",type:"string"}],name:"setBaseExtension",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newBaseURI",type:"string"}],name:"setBaseURI",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract CarbonController",name:"carbonController",type:"address"}],name:"setCarbonController",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"tokenByIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"tokenOfOwnerByIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"newUseGlobalURI",type:"bool"}],name:"useGlobalURI",outputs:[],stateMutability:"nonpayable",type:"function"}],F=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(j)},e.connect=function(e,t){return new a.Contract(e,j,t)},e}();F.abi=j;var E={carbonControllerAddress:"0x8b604f9d7f96fa5b9f635f27bfabdcb152015742",multiCallAddress:"0x5ba1e12693dc8f9c48aad8770482f4739beed696",voucherAddress:"0x78d59e4e207572b506788e57bd0823be21a3a373"},N=/*#__PURE__*/function(){function e(e,t){this._provider=void 0,this._carbonController=void 0,this._multiCall=void 0,this._voucher=void 0,this._config=E,this._provider=e,this._config.carbonControllerAddress=(null==t?void 0:t.carbonControllerAddress)||E.carbonControllerAddress,this._config.multiCallAddress=(null==t?void 0:t.multiCallAddress)||E.multiCallAddress,this._config.voucherAddress=(null==t?void 0:t.voucherAddress)||E.voucherAddress}return e.prototype.token=function(e){return R.connect(e,this._provider)},s(e,[{key:"carbonController",get:function(){return this._carbonController||(this._carbonController=D.connect(this._config.carbonControllerAddress,this._provider)),this._carbonController}},{key:"multicall",get:function(){return this._multiCall||(this._multiCall=I.connect(this._config.multiCallAddress,this._provider)),this._multiCall}},{key:"voucher",get:function(){return this._voucher||(this._voucher=F.connect(this._config.voucherAddress,this._provider)),this._voucher}}]),e}(),q=new M("Reader.ts");function U(e){return{id:e[0],token0:e[2][0],token1:e[2][1],order0:{y:e[3][0][0],z:e[3][0][1],A:e[3][0][2],B:e[3][0][3]},order1:{y:e[3][1][0],z:e[3][1][1],A:e[3][1][2],B:e[3][1][3]}}}function z(e,t){return function(n,a,r,i,o,u){q.debug(e+" fired with",arguments);var s={id:n,token0:r,token1:i,order0:{y:o.y,z:o.z,A:o.A,B:o.B},order1:{y:u.y,z:u.z,A:u.A,B:u.B}};q.debug(e+" parsed strategy:",s),t(s)}}var L=/*#__PURE__*/function(){function e(e){var t=this;this._contracts=void 0,this.getDecimalsByAddress=function(e){try{return P(e)?Promise.resolve(18):Promise.resolve(t._contracts.token(e).decimals())}catch(e){return Promise.reject(e)}},this._contracts=e}var t=e.prototype;return t.multicall=function(e,t){return function(e,t,n){return Promise.resolve(function(a,r){try{var i=(o=e.map(function(e){return{target:e.contractAddress.toLocaleLowerCase(),callData:e.interface.encodeFunctionData(e.methodName,e.methodParameters)}}),Promise.resolve(t.tryAggregate(!1,o,{blockTag:n})).then(function(t){return t.map(function(t,n){return t.success?e[n].interface.decodeFunctionResult(e[n].methodName,t.returnData):[]})}))}catch(e){return}var o;return i&&i.then?i.then(void 0,function(){}):i}())}(e,this._contracts.multicall,t)},t.getStrategyById=function(e){try{return Promise.resolve(this._contracts.carbonController.strategy(e)).then(U)}catch(e){return Promise.reject(e)}},t.getStrategiesByIds=function(e){try{return Promise.resolve(this._contracts.carbonController.strategiesByIds(e)).then(function(e){return e.map(function(e){return U(e)})})}catch(e){return Promise.reject(e)}},t.getAllTokenPairs=function(){return this._contracts.carbonController.pairs()},t.getStrategiesByTokenPair=function(e,t){try{return Promise.resolve(this._contracts.carbonController.strategiesByPool(e,t,0,0)).then(function(e){return e.map(function(e){return U(e)})})}catch(e){return Promise.reject(e)}},t.getStrategiesByTokenPairs=function(e){try{var t=this;return Promise.resolve(t.multicall(e.map(function(e){return{contractAddress:t._contracts.carbonController.address,interface:t._contracts.carbonController.interface,methodName:"strategiesByPool",methodParameters:[e[0],e[1],0,0]}}))).then(function(e){return e&&0!==e.length?e.map(function(e){return e[0].map(function(e){return U(e)})}):[]})}catch(e){return Promise.reject(e)}},t.getUserStrategyIds=function(e){try{var t=this;return e?Promise.resolve(t._contracts.voucher.balanceOf(e)).then(function(n){var a=Array.from(Array(n.toNumber()),function(n,a){return{contractAddress:t._contracts.voucher.address,interface:t._contracts.voucher.interface,methodName:"tokenOfOwnerByIndex",methodParameters:[e,a]}});return Promise.resolve(t.multicall(a)).then(function(e){return e?e.map(function(e){return e[0]}):[]})}):Promise.resolve([])}catch(e){return Promise.reject(e)}},t.tradingFeePPM=function(){return this._contracts.carbonController.tradingFeePPM()},t.onTradingFeePPMUpdated=function(e){return this._contracts.carbonController.on("TradingFeePPMUpdated",function(t,n){q.debug("TradingFeePPMUpdated fired with",arguments),e(t,n)})},t.onStrategyDeleted=function(e){return this._contracts.carbonController.on("StrategyDeleted",z("StrategyDeleted",e))},t.onStrategyCreated=function(e){return this._contracts.carbonController.on("StrategyCreated",z("StrategyCreated",e))},t.onStrategyUpdated=function(e){return this._contracts.carbonController.on("StrategyUpdated",z("StrategyUpdated",e))},e}(),H=/*#__PURE__*/function(){function e(e,t){this._reader=void 0,this._composer=void 0;var n=new N(e,t);this._reader=new L(n),this._composer=new B(n)}return s(e,[{key:"reader",get:function(){return this._reader}},{key:"composer",get:function(){return this._composer}}]),e}(),G=function(e,t){var n=e.output.mul(t.input),a=t.output.mul(e.input),r=n.lt(a),i=n.gt(a),o=!r&&!i;return+(r||o&&e.output.lt(t.output))-+(i||o&&e.output.gt(t.output))},Z=function(e,t){return G(t,e)},W=t.BigNumber.from(0),K=t.BigNumber.from(2).pow(128).sub(1),V=function(e,t){var n=e,a=t.y,r=t.z,i=t.A,o=t.B,u=r.mul(v),s=a.mul(i).add(r.mul(o)),p=s.sub(n.mul(i)),y=function(e,t,n){return e.mul(t).add(n).sub(1).div(n)}(n.mul(u),u,s.mul(p));return y.lt(W)?K:y},J=function(e,t){var n=function(e,t){var n=e,a=t.z,r=t.A,i=t.B,o=t.y.mul(r).add(a.mul(i)),u=o.mul(n).div(v),s=u.mul(r).add(a.mul(a).mul(v)),p=function(e,t,n){return e.mul(t).div(n)}(o,u,s);return p.gt(K)?W:p}(e,t),a=n.lt(t.y)?n:t.y;return{input:V(a,t),output:a}},$=function(e,t){var n=e.lt(t.y)?e:t.y;return{input:n,output:V(n,t)}},Q=function(e,n,a,r,i){for(var o,u=[],s=d(Object.keys(n).map(function(t){return{id:t,rate:r(e,n[t])}}).sort(function(e,t){return i(e.rate,t.rate)}));!(o=s()).done;){var p=o.value,y=p.id,l=p.rate;if(!e.gt(l.input)){if(e.eq(l.input)){a(l)&&u.push({id:t.BigNumber.from(y),input:l.input,output:l.output});break}var c={input:e,output:r(e,n[y]).output};a(c)&&u.push({id:t.BigNumber.from(y),input:c.input,output:c.output});break}a(l)&&(u.push({id:t.BigNumber.from(y),input:l.input,output:l.output}),e=e.sub(l.input))}return u},X=function(e,t,n){return void 0===n&&(n=function(e){return!0}),Q(e,t,n,J,G)},Y=function(e,t,n){return void 0===n&&(n=function(e){return!0}),Q(e,t,n,$,Z)};function ee(e,t){var n,a,i,o=(a=t,-1!==(i=(n=e).indexOf("."))?n.slice(0,i+a+1):n);return r.parseUnits(o,t).toString()}function te(e,t){var n=r.formatUnits(e,t);return new o.default(n).toFixed()}var ne=1e6;function ae(e,t){return new o.default(e.toString()).mul(ne).div(ne-t).ceil()}function re(e,t){return new o.default(e.toString()).mul(ne-t).div(ne).floor()}function ie(e,t,n){return new o.default(e.toString()).times(k(t,n)).toFixed()}function oe(e,t,n){return 0==+e.toString()?"0":new o.default(1).div(e.toString()).times(k(n,t)).toFixed()}var ue=/*#__PURE__*/function(){function e(){this._cachedDecimals=void 0,this._cachedDecimals=new Map}return e.init=function(t){e._fetcher=t,e.getInstance().cachedDecimals.clear()},e.getInstance=function(){if(!e._instance){if(!e._fetcher)throw new Error("Decimals has not been initialized with a fetcher function");e._instance=new e}return e._instance},e.prototype.fetchDecimals=function(t){try{var n=this,a=n._cachedDecimals.get(t);return void 0!==a?Promise.resolve(a):Promise.resolve(e._fetcher(t)).then(function(e){if(void 0===(a=e))throw new Error("Could not fetch decimals for token "+t);return n._cachedDecimals.set(t,a),a})}catch(e){return Promise.reject(e)}},s(e,[{key:"cachedDecimals",get:function(){return this._cachedDecimals}}]),e}();ue._instance=void 0,ue._fetcher=void 0;var se=function(e){try{var t=arguments;pe.debug("decodeStrategy called",t);var n=e.id,a=e.token0,r=e.token1,i=e.order0,o=e.order1,u=e.encoded,s=ue.getInstance();return Promise.resolve(s.fetchDecimals(a)).then(function(e){return Promise.resolve(s.fetchDecimals(r)).then(function(t){var s=ie(o.lowestRate,e,t),p=ie(o.highestRate,e,t),y=oe(i.highestRate,t,e),d=oe(i.lowestRate,t,e),l=te(i.liquidity,e),c=te(o.liquidity,t);return pe.debug("decodeStrategy info:",{id:n,token0:a,token1:r,order0:i,order1:o,decimals0:e,decimals1:t,baseToken:a,quoteToken:r,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l}),{id:n,baseToken:a,quoteToken:r,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l,encoded:u}})})}catch(e){return Promise.reject(e)}},pe=new M("encoders.ts"),ye=function(e){return e.sqrt().mul(v)},de=function(e){return e.div(v).pow(2)},le=function(e){var n=t.BigNumber.from(new o.default(e.liquidity).toFixed()),a=t.BigNumber.from(ye(new o.default(e.lowestRate)).floor().toFixed()),r=t.BigNumber.from(ye(new o.default(e.highestRate)).floor().toFixed()),i=t.BigNumber.from(ye(new o.default(e.marginalRate)).floor().toFixed());if(!(r.gte(i)&&i.gt(a)||r.eq(i)&&i.eq(a)))throw new Error("Invalid order: max must be greater than or equal to mid, and mid must be greater than min \n - or the three should be equal (highestRate: "+e.highestRate+", \n marginalRate: "+e.marginalRate+", lowestRate: "+e.lowestRate+")");var u=r.sub(a);return{y:n,z:u.isZero()?n:n.mul(u).div(i.sub(a)),A:u,B:a}},ce=function(e){var t=new o.default(e.y.toString()),n=new o.default(e.z.toString()),a=new o.default(e.A.toString()),r=new o.default(e.B.toString()),i=t.eq(n)?new o.default(1):t.div(n);return{liquidity:t.toString(),lowestRate:de(r).toString(),highestRate:de(r.add(a)).toString(),marginalRate:de(r.add(a.mul(i))).toString()}},me=function(e){return{token0:e.token0,token1:e.token1,order0:le(e.order0),order1:le(e.order1)}},fe=function(e){return{id:e.id,token0:e.token0,token1:e.token1,order0:ce(e.order0),order1:ce(e.order1),encoded:e}};function ge(e,t,n,a,r,i,u,s){if(pe.debug("buildStrategyObject called",arguments),new o.default(n).isNegative()||new o.default(a).isNegative()||new o.default(i).isNegative()||new o.default(u).isNegative())throw new Error("prices cannot be negative");if(new o.default(n).gt(a)||new o.default(i).gt(u))throw new Error("low price must be lower than or equal to high price");if(new o.default(r).isNegative()||new o.default(s).isNegative())throw new Error("budgets cannot be negative");var p=be(e.decimals,t.decimals,n,a,r,i,u,s),y=p.order0,d=p.order1;return pe.debug("buildStrategyObject info:",{token0:e.address,token1:t.address,order0:y,order1:d}),{token0:e.address,token1:t.address,order0:y,order1:d}}function be(e,t,n,a,r,i,o,u){pe.debug("createOrders called",arguments);var s=ee(u,e),p=oe(o,t,e),y=oe(i,t,e),d=ee(r,t),l=ie(n,t,e),c=ie(a,t,e),m={liquidity:s,lowestRate:p,highestRate:y,marginalRate:y},f={liquidity:d,lowestRate:l,highestRate:c,marginalRate:c};return pe.debug("createOrders info:",{order0:m,order1:f}),{order0:m,order1:f}}function Te(e){return e.reduce(function(e,t){return o.default.min(e,t.lowestRate)},new o.default(Infinity))}function he(e){return e.reduce(function(e,t){return o.default.max(e,t.highestRate)},new o.default(-Infinity))}function ve(e,t){return e.reduce(function(e,n){return e.add(function(e,t){if(t.lte(e.lowestRate))return new o.default(e.liquidity);if(t.gte(e.marginalRate))return new o.default(0);var n=new o.default(e.liquidity),a=new o.default(e.lowestRate).sqrt(),r=new o.default(e.marginalRate).sqrt();return n.sub(n.mul(t.sqrt().sub(a)).div(r.sub(a)))}(n,t))},new o.default(0))}var we=new M("index.ts"),ke=/*#__PURE__*/function(){function n(t,n){var a=this;this._api=void 0,this._cache=void 0,this._tradingFeePPM=void 0,this._onChangeCallbacks=[],we.debug("SDK class constructor called with",arguments);var r=new e.StaticJsonRpcProvider({url:t.rpcUrl,skipFetchSetup:!0},1);this._api=new H(r,t.contractAddresses);var i=function(e){return Promise.resolve(null==n?void 0:n(e)).then(function(t){return void 0!==t?t:a._api.reader.getDecimalsByAddress(e)})};ue.init(i)}var a=n.prototype;return a._fireOnChange=function(){we.debug("firing onChange callbacks"),this._onChangeCallbacks.forEach(function(e){return e()})},a.onChange=function(e){var t=this;if(we.debug("onChange called with",arguments),"function"!=typeof e)throw new Error("onChange callback must be a function");return this._onChangeCallbacks.push(e),function(){t._onChangeCallbacks=t._onChangeCallbacks.filter(function(t){return t!==e})}},a.startDataSync=function(){try{var e=this;return we.debug("startDataSync called"),e._cache?(we.debug("startDataSync was already called before"),Promise.resolve()):(e._cache=new h(e._api.reader,e._fireOnChange.bind(e)),Promise.resolve(e._cache.init()).then(function(){return Promise.resolve(e._api.reader.tradingFeePPM()).then(function(t){e._tradingFeePPM=t,e._api.reader.onTradingFeePPMUpdated(function(t){we.debug("tradingFeePPM updated",t),e._tradingFeePPM=t}),we.debug("tradeFeePPM",e._tradingFeePPM)})}))}catch(e){return Promise.reject(e)}},a.hasLiquidityByPair=function(e,t){if(we.debug("hasLiquidityByPair called",arguments),!this._cache)throw we.log("hasLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var n=this._cache.getOrders(e,t);return we.debug("hasLiquidityByPair info:",{orders:n}),Object.keys(n).length>0},a.getLiquidityByPair=function(e,n){try{var a=arguments,r=this;if(we.debug("getLiquidityByPair called",a),!r._cache)throw we.log("getLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=r._cache.getOrders(e,n),o=Object.values(i).reduce(function(e,t){return e.add(t.y)},t.BigNumber.from(0));return Promise.resolve(ue.getInstance().fetchDecimals(n)).then(function(e){var t=te(o,e);return we.debug("getLiquidityByPair info:",{orders:i,liquidityWei:o,targetToken:n,decimals:e,liquidity:t}),t})}catch(e){return Promise.reject(e)}},a.getUserStrategies=function(e){try{var t=arguments,n=this;if(we.debug("getUserStrategies called",t),!n._cache)throw we.log("getUserStrategies called before startDataSync"),new Error("startDataSync must be called prior to this action");return Promise.resolve(n._api.reader.getUserStrategyIds(e)).then(function(e){var t=e.map(function(e){var t;return null==(t=n._cache)?void 0:t.getStrategyById(e)}).filter(function(e){return!!e}),a=t.map(fe);return Promise.resolve(Promise.all(a.map(function(e){try{return Promise.resolve(se(e))}catch(e){return Promise.reject(e)}}))).then(function(n){return we.debug("getUserStrategies info:",{ids:e,encodedStrategies:t,decodedStrategies:a,strategies:n}),n})})}catch(e){return Promise.reject(e)}},a.getTradeData=function(e,n,a,r,i){try{var o=arguments,u=this;if(we.debug("getTradeData called",o),!u._cache)throw we.log("getTradeData called before startDataSync"),new Error("startDataSync must be called prior to this action");var s=ue.getInstance();return Promise.resolve(s.fetchDecimals(e)).then(function(o){return Promise.resolve(s.fetchDecimals(n)).then(function(s){var p,y=u._cache.getOrders(e,n),d=t.BigNumber.from(ee(a,r?s:o));(p=r?Y(d,y,i):X(d,y,i)).length>1&&p.at(-1).output.isZero()&&p.pop();var l=u.getTradeDataFromActions(e,n,r,p);return we.debug("getTradeData info:",{orders:y,amount:a,amountWei:d,res:l}),l})})}catch(e){return Promise.reject(e)}},a.getTradeDataFromActions=function(e,n,a,r){try{var i=arguments,u=this;we.debug("getTradeDataFromActions called",i);var s=ue.getInstance();return Promise.resolve(s.fetchDecimals(e)).then(function(e){return Promise.resolve(s.fetchDecimals(n)).then(function(n){var i,s,p,y=[],d=[],l=t.BigNumber.from(0),c=t.BigNumber.from(0);if(r.forEach(function(t){y.push({strategyId:t.id,amount:t.input}),d.push({id:t.id,sourceAmount:te(a?t.output:t.input,e),targetAmount:te(a?t.input:t.output,n)}),c=c.add(t.input),l=l.add(t.output)}),null==u._tradingFeePPM)throw new Error("tradingFeePPM is undefined");if(a?(i=ae(l,u._tradingFeePPM),s=new o.default(c.toString())):(i=new o.default(c.toString()),s=re(l,u._tradingFeePPM)),i.isZero()||s.isZero())p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:"0",totalTargetAmount:"0",effectiveRate:"0"};else{var m=new o.default(s.toString()).div(i.toString()).times(k(e,n)).toString();p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:te(i.toFixed(0),e),totalTargetAmount:te(s.toFixed(0),n),effectiveRate:m}}return we.debug("getTradeDataFromActions info:",{sourceDecimals:e,targetDecimals:n,actionsWei:r,totalInput:c,totalOutput:l,tradingFeePPM:u._tradingFeePPM,res:p}),p})})}catch(e){return Promise.reject(e)}},a.composeTradeByTargetTransaction=function(e,t,n,a,r,i){try{var o=arguments,u=this;return we.debug("composeTradeByTargetTransaction called",o),Promise.resolve(ue.getInstance().fetchDecimals(e)).then(function(o){return u._api.composer.tradeByTargetAmount(e,t,n,a,ee(r,o),i)})}catch(e){return Promise.reject(e)}},a.composeTradeBySourceTransaction=function(e,t,n,a,r,i){try{var o=arguments,u=this;return we.debug("composeTradeBySourceTransaction called",o),Promise.resolve(ue.getInstance().fetchDecimals(t)).then(function(o){return u._api.composer.tradeBySourceAmount(e,t,n,a,ee(r,o),i)})}catch(e){return Promise.reject(e)}},a.createBuySellStrategy=function(e,t,n,a,r,i,o,u,s){we.debug("createBuySellStrategy called",arguments);var p=ge(e,t,n,a,r,i,o,u),y=me(p);return we.debug("createBuySellStrategy info:",{strategy:p,encStrategy:y}),this._api.composer.createStrategy(y.token0,y.token1,y.order0,y.order1,s)},a.updateStrategy=function(e,n,a,r,i,o,u,s,p,y,d){try{var l=arguments,c=this;we.debug("updateStrategy called",l);var m=ge(a,r,i,o,u,s,p,y),f=me(m);return we.debug("updateStrategy info:",{strategy:m,encStrategy:f}),Promise.resolve(c._api.composer.updateStrategy(t.BigNumber.from(e),[n.order0,n.order1],[f.order0,f.order1],d))}catch(e){return Promise.reject(e)}},a.deleteStrategy=function(e){return we.debug("deleteStrategy called",arguments),this._api.composer.deleteStrategy(t.BigNumber.from(e))},a.getRateLiquidityDepthByPair=function(e,t,n){try{var a=arguments,r=this;if(we.debug("getRateLiquidityDepthByPair called",a),!r._cache)throw we.log("getRateLiquidityDepthByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=Object.values(r._cache.getOrders(e,t)).map(ce),u=ue.getInstance();return Promise.resolve(u.fetchDecimals(e)).then(function(e){return Promise.resolve(u.fetchDecimals(t)).then(function(t){var a=ie(n,t,e),r=ve(i,new o.default(a)).toFixed(0),u=te(r,t);return we.debug("getRateLiquidityDepthByPair info:",{orders:i,depthWei:r,targetDecimals:t,depthInTargetDecimals:u}),u})})}catch(e){return Promise.reject(e)}},a.getMinRateByPair=function(e,t){try{var n=arguments,a=this;if(we.debug("getMinRateByPair called",n),!a._cache)throw we.log("getMinRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var r=Object.values(a._cache.getOrders(e,t)).map(ce),i=Te(r).toString(),o=ue.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ie(i,e,t);return we.debug("getMinRateByPair info:",{orders:r,minRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},a.getMaxRateByPair=function(e,t){try{var n=arguments,a=this;if(we.debug("getMaxRateByPair called",n),!a._cache)throw we.log("getMaxRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var r=Object.values(a._cache.getOrders(e,t)).map(ce),i=he(r).toString(),o=ue.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ie(i,e,t);return we.debug("getMaxRateByPair info:",{orders:r,maxRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},s(n,[{key:"isInitialized",get:function(){return void 0!==this._cache}},{key:"pairs",get:function(){if(we.debug("pairs called"),!this._cache)throw we.log("pairs called before startDataSync"),new Error("startDataSync must be called prior to this action");return this._cache.pairs}}]),n}();return ke}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@ethersproject/providers"),require("@ethersproject/bignumber"),require("decimal.js"),require("ethers"),require("@ethersproject/units")):"function"==typeof define&&define.amd?define(["@ethersproject/providers","@ethersproject/bignumber","decimal.js","ethers","@ethersproject/units"],t):(e||self).carbonSdk=t(e.providers,e.bignumber,e.Decimal,e.ethers,e.units)}(this,function(e,t,n,a,r){function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/i(n);function u(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,"symbol"==typeof(r=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a.key))?r:String(r),a)}var r}function s(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},p.apply(this,arguments)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l=function(e,t){return e.localeCompare(t)},c="->-<-",m=function(e){if(2!==e.length)throw new Error("Invalid number of tokens: expected 2, got "+e.length);if(e[0]===e[1])throw new Error("Cannot create key for identical tokens: "+e[0]);return e.join(c)},f=function(e,t){return m([e,t].sort(l))},g=function(e){var t=e.split(c);return[t[0],t[1]]},b=function(e,t){return m([e,t])},T=function(e,t,n){if(0!==n.size){var a,r;0===t?(a=e.order0,r=b(e.token1,e.token0)):(a=e.order1,r=b(e.token0,e.token1));var i,o=n.get(r);o?o[e.id.toString()]=a:(console.warn("Should not be here, modified order is supposed to already be cached"),n.set(r,((i={})[e.id.toString()]=a,i)))}},h=/*#__PURE__*/function(){function e(e,t){this._pairToStrategies=void 0,this._strategyById=void 0,this._fetcher=void 0,this._cachedOrders=void 0,this._onChange=void 0,this._fetcher=e,this._pairToStrategies=new Map,this._strategyById=new Map,this._cachedOrders=new Map,this._onChange=t}var t=e.prototype;return t.init=function(){try{var e=this;return Promise.resolve(function(e){try{return Promise.resolve(e.getAllTokenPairs()).then(function(t){return Promise.resolve(e.getStrategiesByTokenPairs(t)).then(function(e){for(var n=new Map,a=0;a<t.length;a++){var r=t[a],i=e[a],o=f(r[0],r[1]);n.set(o,i)}return n})})}catch(e){return Promise.reject(e)}}(e._fetcher)).then(function(t){e._pairToStrategies=t;for(var n,a=d(e._pairToStrategies.values());!(n=a()).done;){var r=n.value;if(r&&r.length>0)for(var i=0;i<r.length;i++)e._strategyById.set(r[i].id.toString(),r[i])}e._fetcher.onStrategyCreated(function(t){!function(e,t,n,a){if(!n.has(e.id.toString())){n.set(e.id.toString(),e);var r=f(e.token0,e.token1);if(t.has(r)?t.get(r).push(e):t.set(r,[e]),0!==a.size)for(var i=0,o=[[e.token0,e.token1],[e.token1,e.token0]];i<o.length;i++){var u,s=o[i],p=b(s[0],s[1]),y=s[0]===e.token0?e.order1:e.order0,d=a.get(p);d?d[e.id.toString()]=y:a.set(p,((u={})[e.id.toString()]=y,u))}}}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyUpdated(function(t){!function(e,t,n,a){n.set(e.id.toString(),e);var r=f(e.token0,e.token1);t.has(r)?t.set(r,t.get(r).map(function(t){return t.id===e.id?e:t})):t.set(r,[e]),T(e,0,a),T(e,1,a)}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyDeleted(function(t){!function(e,t,n,a){if(n.has(e.id.toString())){n.delete(e.id.toString());var r=f(e.token0,e.token1);if(t.has(r)&&t.set(r,t.get(r).filter(function(t){return t.id!==e.id})),0===t.get(r).length&&t.delete(r),0!==a.size)for(var i=0,o=[[e.token0,e.token1],[e.token1,e.token0]];i<o.length;i++){var u=o[i],s=b(u[0],u[1]),p=a.get(s);p&&(delete p[e.id.toString()],0===Object.keys(p).length&&a.delete(s))}}}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()})})}catch(e){return Promise.reject(e)}},t.getOrders=function(e,t,n){var a;if(void 0===n&&(n=!1),0===this._pairToStrategies.size)return console.warn("getOrders was called when no strategies are cached, did you call init?"),{};0===this._cachedOrders.size&&function(e,t){t.clear();for(var n,a=d(e.values());!(n=a()).done;){var r=n.value;if(r.length>0){for(var i=r[0].token0,o=r[0].token1,u={},s={},p=0;p<r.length;p++)r[p].token0===i?(u[r[p].id.toString()]=r[p].order0,s[r[p].id.toString()]=r[p].order1):(u[r[p].id.toString()]=r[p].order1,s[r[p].id.toString()]=r[p].order0);t.set(b(i,o),s),t.set(b(o,i),u)}}}(this._pairToStrategies,this._cachedOrders);var r=b(e,t),i=null!=(a=this._cachedOrders.get(r))?a:{};if(n)return i;var o=Object.entries(i).filter(function(e){return e[1].y.gt(0)&&(e[1].A.gt(0)||e[1].B.gt(0))});return Object.fromEntries(o)},t.getStrategyById=function(e){return this._strategyById.get(e.toString())},s(e,[{key:"pairs",get:function(){return Array.from(this._pairToStrategies.keys()).map(g)}}]),e}();o.default.set({precision:50,rounding:o.default.ROUND_HALF_DOWN,toExpNeg:-30,toExpPos:30});var v=Math.pow(2,32),w=new o.default(10),k=function(e,t){return w.pow(e-t)},_="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase(),P=function(e){return e.toLowerCase()===_},S=function(e,n,a){var r=p({},a);return P(e)&&(r.value=n.reduce(function(e,t){return e.add(t.amount)},t.BigNumber.from(0))),r},M=/*#__PURE__*/function(){function e(e){this._prefix=void 0,this._prefix="[SDK]["+e+"]:"}var t=e.prototype;return t.log=function(){var e;(e=console).log.apply(e,[this._prefix].concat([].slice.call(arguments)))},t.debug=function(){var e;(e=console).log.apply(e,[this._prefix].concat([].slice.call(arguments)))},e}(),A=new M("Composer.ts"),B=/*#__PURE__*/function(){function e(e){this._contracts=void 0,this._contracts=e}var t=e.prototype;return t.tradeByTargetAmount=function(e,t,n,a,r,i){A.debug("tradeByTargetAmount called",arguments);var o=S(e,n,i);return A.debug("tradeByTargetAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeByTargetAmount(e,t,n,a,r,o)},t.tradeBySourceAmount=function(e,t,n,a,r,i){A.debug("tradeBySourceAmount called",arguments);var o=S(e,n,i);return A.debug("tradeBySourceAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeBySourceAmount(e,t,n,a,r,o)},t.createStrategy=function(e,t,n,a,r){A.debug("createStrategy called",arguments);var i=p({},r);return P(e)?i.value=n.y:P(t)&&(i.value=a.y),A.debug("createStrategy overrides",i),this._contracts.carbonController.populateTransaction.createStrategy(e,t,[n,a],i)},t.deleteStrategy=function(e){return this._contracts.carbonController.populateTransaction.deleteStrategy(e)},t.updateStrategy=function(e,t,n,a){return this._contracts.carbonController.populateTransaction.updateStrategy(e,t,n,a)},t.transferVoucherOwnership=function(e,t){return this._contracts.voucher.populateTransaction.transferOwnership(e,t)},e}(),x=[{inputs:[],name:"AccessDenied",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"DeadlineExpired",type:"error"},{inputs:[],name:"GreaterThanMaxInput",type:"error"},{inputs:[],name:"IdenticalAddresses",type:"error"},{inputs:[],name:"InsufficientCapacity",type:"error"},{inputs:[],name:"InvalidFee",type:"error"},{inputs:[],name:"InvalidIndices",type:"error"},{inputs:[],name:"InvalidStrategyId",type:"error"},{inputs:[],name:"InvalidTradeActionAmount",type:"error"},{inputs:[],name:"LowerThanMinReturn",type:"error"},{inputs:[],name:"NativeAmountMismatch",type:"error"},{inputs:[],name:"NoIdsProvided",type:"error"},{inputs:[],name:"OutDated",type:"error"},{inputs:[],name:"Overflow",type:"error"},{inputs:[],name:"PoolAlreadyExists",type:"error"},{inputs:[],name:"PoolDoesNotExists",type:"error"},{inputs:[],name:"StrategyDoesNotExist",type:"error"},{inputs:[],name:"TokensMismatch",type:"error"},{inputs:[],name:"UnknownDelegator",type:"error"},{inputs:[],name:"UnnecessaryNativeTokenReceived",type:"error"},{inputs:[],name:"UnsetDelegator",type:"error"},{inputs:[],name:"ZeroLiquidityProvided",type:"error"},{inputs:[],name:"ZeroValue",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"poolId",type:"uint256"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"}],name:"PoolCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"contract Token",name:"token0",type:"address"},{indexed:!0,internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order0",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],indexed:!1,internalType:"struct Order",name:"order1",type:"tuple"}],name:"StrategyUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"trader",type:"address"},{indexed:!0,internalType:"address",name:"sourceToken",type:"address"},{indexed:!0,internalType:"address",name:"targetToken",type:"address"},{indexed:!1,internalType:"uint256",name:"sourceAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"targetAmount",type:"uint256"},{indexed:!1,internalType:"uint128",name:"tradingFeeAmount",type:"uint128"},{indexed:!1,internalType:"bool",name:"byTargetAmount",type:"bool"}],name:"TokensTraded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"prevFeePPM",type:"uint32"},{indexed:!1,internalType:"uint32",name:"newFeePPM",type:"uint32"}],name:"TradingFeePPMUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"accumulatedFees",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"controllerType",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"createPool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pool",name:"",type:"tuple"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],name:"createStrategy",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"deleteStrategy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getRoleMember",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleMemberCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pairs",outputs:[{internalType:"address[2][]",name:"",type:"address[2][]"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"pool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pool",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data",type:"bytes"}],name:"postUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"roleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[],name:"roleEmergencyStopper",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"newTradingFeePPM",type:"uint32"}],name:"setTradingFeePPM",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"ids",type:"uint256[]"}],name:"strategiesByIds",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"},{internalType:"uint256",name:"startIndex",type:"uint256"},{internalType:"uint256",name:"endIndex",type:"uint256"}],name:"strategiesByPool",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],name:"strategiesByPoolCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"strategy",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract Token",name:"token0",type:"address"},{internalType:"contract Token",name:"token1",type:"address"}],internalType:"struct Pair",name:"pair",type:"tuple"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"orders",type:"tuple[2]"}],internalType:"struct Strategy",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint128",name:"minReturn",type:"uint128"}],name:"tradeBySourceAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint128",name:"maxInput",type:"uint128"}],name:"tradeByTargetAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"}],name:"tradeSourceAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Token",name:"sourceToken",type:"address"},{internalType:"contract Token",name:"targetToken",type:"address"},{components:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"uint128",name:"amount",type:"uint128"}],internalType:"struct TradeAction[]",name:"tradeActions",type:"tuple[]"}],name:"tradeTargetAmount",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"tradingFeePPM",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"currentOrders",type:"tuple[2]"},{components:[{internalType:"uint128",name:"y",type:"uint128"},{internalType:"uint128",name:"z",type:"uint128"},{internalType:"uint64",name:"A",type:"uint64"},{internalType:"uint64",name:"B",type:"uint64"}],internalType:"struct Order[2]",name:"newOrders",type:"tuple[2]"}],name:"updateStrategy",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"},{internalType:"address",name:"newOwner",type:"address"}],name:"updateStrategyOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"logic",type:"address"},{internalType:"address",name:"initAdmin",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],D=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(x)},e.connect=function(e,t){return new a.Contract(e,x,t)},e}();D.abi=x;var I=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"}],C=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(I)},e.connect=function(e,t){return new a.Contract(e,I,t)},e}();C.abi=I;var O=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_disable",type:"bool"}],name:"disableTransfers",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"version",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_token",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"withdrawTokens",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[],name:"acceptOwnership",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"issue",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_amount",type:"uint256"}],name:"destroy",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"transfersEnabled",outputs:[{name:"",type:"bool"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"newOwner",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"_newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,type:"function"},{inputs:[{name:"_name",type:"string"},{name:"_symbol",type:"string"},{name:"_decimals",type:"uint8"}],payable:!1,type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,name:"_token",type:"address"}],name:"NewSmartToken",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_amount",type:"uint256"}],name:"Issuance",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_amount",type:"uint256"}],name:"Destruction",type:"event"},{anonymous:!1,inputs:[{indexed:!1,name:"_prevOwner",type:"address"},{indexed:!1,name:"_newOwner",type:"address"}],name:"OwnerUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_spender",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Approval",type:"event"}],R=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(O)},e.connect=function(e,t){return new a.Contract(e,O,t)},e}();R.abi=O;var j=[{inputs:[{internalType:"bool",name:"newUseGlobalURI",type:"bool"},{internalType:"string",name:"newBaseURI",type:"string"},{internalType:"string",name:"newBaseExtension",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessDenied",type:"error"},{inputs:[],name:"CarbonControllerNotSet",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"provider",type:"address"},{internalType:"uint256",name:"strategyId",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newBaseExtension",type:"string"}],name:"setBaseExtension",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"newBaseURI",type:"string"}],name:"setBaseURI",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract CarbonController",name:"carbonController",type:"address"}],name:"setCarbonController",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"tokenByIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"tokenOfOwnerByIndex",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"newUseGlobalURI",type:"bool"}],name:"useGlobalURI",outputs:[],stateMutability:"nonpayable",type:"function"}],F=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new a.utils.Interface(j)},e.connect=function(e,t){return new a.Contract(e,j,t)},e}();F.abi=j;var E={carbonControllerAddress:"0x8b604f9d7f96fa5b9f635f27bfabdcb152015742",multiCallAddress:"0x5ba1e12693dc8f9c48aad8770482f4739beed696",voucherAddress:"0x78d59e4e207572b506788e57bd0823be21a3a373"},N=/*#__PURE__*/function(){function e(e,t){this._provider=void 0,this._carbonController=void 0,this._multiCall=void 0,this._voucher=void 0,this._config=E,this._provider=e,this._config.carbonControllerAddress=(null==t?void 0:t.carbonControllerAddress)||E.carbonControllerAddress,this._config.multiCallAddress=(null==t?void 0:t.multiCallAddress)||E.multiCallAddress,this._config.voucherAddress=(null==t?void 0:t.voucherAddress)||E.voucherAddress}return e.prototype.token=function(e){return R.connect(e,this._provider)},s(e,[{key:"carbonController",get:function(){return this._carbonController||(this._carbonController=D.connect(this._config.carbonControllerAddress,this._provider)),this._carbonController}},{key:"multicall",get:function(){return this._multiCall||(this._multiCall=C.connect(this._config.multiCallAddress,this._provider)),this._multiCall}},{key:"voucher",get:function(){return this._voucher||(this._voucher=F.connect(this._config.voucherAddress,this._provider)),this._voucher}}]),e}(),q=new M("Reader.ts");function U(e){return{id:e[0],token0:e[2][0],token1:e[2][1],order0:{y:e[3][0][0],z:e[3][0][1],A:e[3][0][2],B:e[3][0][3]},order1:{y:e[3][1][0],z:e[3][1][1],A:e[3][1][2],B:e[3][1][3]}}}function z(e,t){return function(n,a,r,i,o,u){q.debug(e+" fired with",arguments);var s={id:n,token0:r,token1:i,order0:{y:o.y,z:o.z,A:o.A,B:o.B},order1:{y:u.y,z:u.z,A:u.A,B:u.B}};q.debug(e+" parsed strategy:",s),t(s)}}var L=/*#__PURE__*/function(){function e(e){var t=this;this._contracts=void 0,this.getDecimalsByAddress=function(e){try{return P(e)?Promise.resolve(18):Promise.resolve(t._contracts.token(e).decimals())}catch(e){return Promise.reject(e)}},this._contracts=e}var t=e.prototype;return t.multicall=function(e,t){return function(e,t,n){return Promise.resolve(function(a,r){try{var i=(o=e.map(function(e){return{target:e.contractAddress.toLocaleLowerCase(),callData:e.interface.encodeFunctionData(e.methodName,e.methodParameters)}}),Promise.resolve(t.tryAggregate(!1,o,{blockTag:n})).then(function(t){return t.map(function(t,n){return t.success?e[n].interface.decodeFunctionResult(e[n].methodName,t.returnData):[]})}))}catch(e){return}var o;return i&&i.then?i.then(void 0,function(){}):i}())}(e,this._contracts.multicall,t)},t.getStrategyById=function(e){try{return Promise.resolve(this._contracts.carbonController.strategy(e)).then(U)}catch(e){return Promise.reject(e)}},t.getStrategiesByIds=function(e){try{return Promise.resolve(this._contracts.carbonController.strategiesByIds(e)).then(function(e){return e.map(function(e){return U(e)})})}catch(e){return Promise.reject(e)}},t.getAllTokenPairs=function(){return this._contracts.carbonController.pairs()},t.getStrategiesByTokenPair=function(e,t){try{return Promise.resolve(this._contracts.carbonController.strategiesByPool(e,t,0,0)).then(function(e){return e.map(function(e){return U(e)})})}catch(e){return Promise.reject(e)}},t.getStrategiesByTokenPairs=function(e){try{var t=this;return Promise.resolve(t.multicall(e.map(function(e){return{contractAddress:t._contracts.carbonController.address,interface:t._contracts.carbonController.interface,methodName:"strategiesByPool",methodParameters:[e[0],e[1],0,0]}}))).then(function(e){return e&&0!==e.length?e.map(function(e){return e[0].map(function(e){return U(e)})}):[]})}catch(e){return Promise.reject(e)}},t.getUserStrategyIds=function(e){try{var t=this;return e?Promise.resolve(t._contracts.voucher.balanceOf(e)).then(function(n){var a=Array.from(Array(n.toNumber()),function(n,a){return{contractAddress:t._contracts.voucher.address,interface:t._contracts.voucher.interface,methodName:"tokenOfOwnerByIndex",methodParameters:[e,a]}});return Promise.resolve(t.multicall(a)).then(function(e){return e?e.map(function(e){return e[0]}):[]})}):Promise.resolve([])}catch(e){return Promise.reject(e)}},t.tradingFeePPM=function(){return this._contracts.carbonController.tradingFeePPM()},t.onTradingFeePPMUpdated=function(e){return this._contracts.carbonController.on("TradingFeePPMUpdated",function(t,n){q.debug("TradingFeePPMUpdated fired with",arguments),e(t,n)})},t.onStrategyDeleted=function(e){return this._contracts.carbonController.on("StrategyDeleted",z("StrategyDeleted",e))},t.onStrategyCreated=function(e){return this._contracts.carbonController.on("StrategyCreated",z("StrategyCreated",e))},t.onStrategyUpdated=function(e){return this._contracts.carbonController.on("StrategyUpdated",z("StrategyUpdated",e))},e}(),H=/*#__PURE__*/function(){function e(e,t){this._reader=void 0,this._composer=void 0;var n=new N(e,t);this._reader=new L(n),this._composer=new B(n)}return s(e,[{key:"reader",get:function(){return this._reader}},{key:"composer",get:function(){return this._composer}}]),e}(),G=function(e,t){var n=e.output.mul(t.input),a=t.output.mul(e.input),r=n.lt(a),i=n.gt(a),o=!r&&!i;return+(r||o&&e.output.lt(t.output))-+(i||o&&e.output.gt(t.output))},Z=function(e,t){return G(t,e)},W=t.BigNumber.from(0),K=t.BigNumber.from(2).pow(128).sub(1),V=function(e,t){var n=e,a=t.y,r=t.z,i=t.A,o=t.B,u=r.mul(v),s=a.mul(i).add(r.mul(o)),p=s.sub(n.mul(i)),y=function(e,t,n){return e.mul(t).add(n).sub(1).div(n)}(n.mul(u),u,s.mul(p));return y.lt(W)?K:y},J=function(e,t){var n=function(e,t){var n=e,a=t.z,r=t.A,i=t.B,o=t.y.mul(r).add(a.mul(i)),u=o.mul(n).div(v),s=u.mul(r).add(a.mul(a).mul(v)),p=function(e,t,n){return e.mul(t).div(n)}(o,u,s);return p.gt(K)?W:p}(e,t),a=n.lt(t.y)?n:t.y;return{input:V(a,t),output:a}},$=function(e,t){var n=e.lt(t.y)?e:t.y;return{input:n,output:V(n,t)}},Q=function(e,n,a,r,i){for(var o,u=[],s=d(Object.keys(n).map(function(t){return{id:t,rate:r(e,n[t])}}).sort(function(e,t){return i(e.rate,t.rate)}));!(o=s()).done;){var p=o.value,y=p.id,l=p.rate;if(!e.gt(l.input)){if(e.eq(l.input)){a(l)&&u.push({id:t.BigNumber.from(y),input:l.input,output:l.output});break}var c={input:e,output:r(e,n[y]).output};a(c)&&u.push({id:t.BigNumber.from(y),input:c.input,output:c.output});break}a(l)&&(u.push({id:t.BigNumber.from(y),input:l.input,output:l.output}),e=e.sub(l.input))}return u},X=function(e,t,n){return void 0===n&&(n=function(e){return!0}),Q(e,t,n,J,G)},Y=function(e,t,n){return void 0===n&&(n=function(e){return!0}),Q(e,t,n,$,Z)};function ee(e,t){var n,a,i,o=(a=t,-1!==(i=(n=e).indexOf("."))?n.slice(0,i+a+1):n);return r.parseUnits(o,t).toString()}function te(e,t){var n=r.formatUnits(e,t);return new o.default(n).toFixed()}var ne=1e6;function ae(e,t){return new o.default(e.toString()).mul(ne).div(ne-t).ceil()}function re(e,t){return new o.default(e.toString()).mul(ne-t).div(ne).floor()}function ie(e,t,n){return new o.default(e.toString()).times(k(t,n)).toFixed()}function oe(e,t,n){return 0==+e.toString()?"0":new o.default(1).div(e.toString()).times(k(n,t)).toFixed()}var ue=/*#__PURE__*/function(){function e(){this._cachedDecimals=void 0,this._cachedDecimals=new Map}return e.init=function(t){e._fetcher=t,e.getInstance().cachedDecimals.clear()},e.getInstance=function(){if(!e._instance){if(!e._fetcher)throw new Error("Decimals has not been initialized with a fetcher function");e._instance=new e}return e._instance},e.prototype.fetchDecimals=function(t){try{var n=this,a=n._cachedDecimals.get(t);return void 0!==a?Promise.resolve(a):Promise.resolve(e._fetcher(t)).then(function(e){if(void 0===(a=e))throw new Error("Could not fetch decimals for token "+t);return n._cachedDecimals.set(t,a),a})}catch(e){return Promise.reject(e)}},s(e,[{key:"cachedDecimals",get:function(){return this._cachedDecimals}}]),e}();ue._instance=void 0,ue._fetcher=void 0;var se=function(e){try{var t=arguments;pe.debug("decodeStrategy called",t);var n=e.id,a=e.token0,r=e.token1,i=e.order0,o=e.order1,u=e.encoded,s=ue.getInstance();return Promise.resolve(s.fetchDecimals(a)).then(function(e){return Promise.resolve(s.fetchDecimals(r)).then(function(t){var s=ie(o.lowestRate,e,t),p=ie(o.highestRate,e,t),y=oe(i.highestRate,t,e),d=oe(i.lowestRate,t,e),l=te(i.liquidity,e),c=te(o.liquidity,t);return pe.debug("decodeStrategy info:",{id:n,token0:a,token1:r,order0:i,order1:o,decimals0:e,decimals1:t,baseToken:a,quoteToken:r,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l}),{id:n,baseToken:a,quoteToken:r,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l,encoded:u}})})}catch(e){return Promise.reject(e)}},pe=new M("encoders.ts"),ye=function(e){return e.sqrt().mul(v)},de=function(e){return e.div(v).pow(2)},le=function(e){var n=t.BigNumber.from(new o.default(e.liquidity).toFixed()),a=t.BigNumber.from(ye(new o.default(e.lowestRate)).floor().toFixed()),r=t.BigNumber.from(ye(new o.default(e.highestRate)).floor().toFixed()),i=t.BigNumber.from(ye(new o.default(e.marginalRate)).floor().toFixed());if(!(r.gte(i)&&i.gt(a)||r.eq(i)&&i.eq(a)))throw new Error("Invalid order: max must be greater than or equal to mid, and mid must be greater than min \n - or the three should be equal (highestRate: "+e.highestRate+", \n marginalRate: "+e.marginalRate+", lowestRate: "+e.lowestRate+")");var u=r.sub(a);return{y:n,z:u.isZero()?n:n.mul(u).div(i.sub(a)),A:u,B:a}},ce=function(e){var t=new o.default(e.y.toString()),n=new o.default(e.z.toString()),a=new o.default(e.A.toString()),r=new o.default(e.B.toString()),i=t.eq(n)?new o.default(1):t.div(n);return{liquidity:t.toString(),lowestRate:de(r).toString(),highestRate:de(r.add(a)).toString(),marginalRate:de(r.add(a.mul(i))).toString()}},me=function(e){return{token0:e.token0,token1:e.token1,order0:le(e.order0),order1:le(e.order1)}},fe=function(e){return{id:e.id,token0:e.token0,token1:e.token1,order0:ce(e.order0),order1:ce(e.order1),encoded:e}};function ge(e,t,n,a,r,i,u,s){if(pe.debug("buildStrategyObject called",arguments),new o.default(n).isNegative()||new o.default(a).isNegative()||new o.default(i).isNegative()||new o.default(u).isNegative())throw new Error("prices cannot be negative");if(new o.default(n).gt(a)||new o.default(i).gt(u))throw new Error("low price must be lower than or equal to high price");if(new o.default(r).isNegative()||new o.default(s).isNegative())throw new Error("budgets cannot be negative");var p=be(e.decimals,t.decimals,n,a,r,i,u,s),y=p.order0,d=p.order1;return pe.debug("buildStrategyObject info:",{token0:e.address,token1:t.address,order0:y,order1:d}),{token0:e.address,token1:t.address,order0:y,order1:d}}function be(e,t,n,a,r,i,o,u){pe.debug("createOrders called",arguments);var s=ee(u,e),p=oe(o,t,e),y=oe(i,t,e),d=ee(r,t),l=ie(n,t,e),c=ie(a,t,e),m={liquidity:s,lowestRate:p,highestRate:y,marginalRate:y},f={liquidity:d,lowestRate:l,highestRate:c,marginalRate:c};return pe.debug("createOrders info:",{order0:m,order1:f}),{order0:m,order1:f}}function Te(e){return e.reduce(function(e,t){return o.default.min(e,t.lowestRate)},new o.default(Infinity))}function he(e){return e.reduce(function(e,t){return o.default.max(e,t.highestRate)},new o.default(-Infinity))}function ve(e,t){return e.reduce(function(e,n){return e.add(function(e,t){if(t.lte(e.lowestRate))return new o.default(e.liquidity);if(t.gte(e.marginalRate))return new o.default(0);var n=new o.default(e.liquidity),a=new o.default(e.lowestRate).sqrt(),r=new o.default(e.marginalRate).sqrt();return n.sub(n.mul(t.sqrt().sub(a)).div(r.sub(a)))}(n,t))},new o.default(0))}var we=new M("index.ts"),ke=/*#__PURE__*/function(){function n(t,n){var a=this;this._api=void 0,this._cache=void 0,this._tradingFeePPM=void 0,this._onChangeCallbacks=[],we.debug("SDK class constructor called with",arguments);var r=new e.StaticJsonRpcProvider({url:t.rpcUrl,skipFetchSetup:!0},1);this._api=new H(r,t.contractAddresses);var i=function(e){return Promise.resolve(null==n?void 0:n(e)).then(function(t){return void 0!==t?t:a._api.reader.getDecimalsByAddress(e)})};ue.init(i)}var a=n.prototype;return a._fireOnChange=function(){we.debug("firing onChange callbacks"),this._onChangeCallbacks.forEach(function(e){return e()})},a.onChange=function(e){var t=this;if(we.debug("onChange called with",arguments),"function"!=typeof e)throw new Error("onChange callback must be a function");return this._onChangeCallbacks.push(e),function(){t._onChangeCallbacks=t._onChangeCallbacks.filter(function(t){return t!==e})}},a.startDataSync=function(){try{var e=this;return we.debug("startDataSync called"),e._cache?(we.debug("startDataSync was already called before"),Promise.resolve()):(e._cache=new h(e._api.reader,e._fireOnChange.bind(e)),Promise.resolve(e._cache.init()).then(function(){return Promise.resolve(e._api.reader.tradingFeePPM()).then(function(t){e._tradingFeePPM=t,e._api.reader.onTradingFeePPMUpdated(function(t){we.debug("tradingFeePPM updated",t),e._tradingFeePPM=t}),we.debug("tradeFeePPM",e._tradingFeePPM)})}))}catch(e){return Promise.reject(e)}},a.hasLiquidityByPair=function(e,t){if(we.debug("hasLiquidityByPair called",arguments),!this._cache)throw we.log("hasLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var n=this._cache.getOrders(e,t);return we.debug("hasLiquidityByPair info:",{orders:n}),Object.keys(n).length>0},a.getLiquidityByPair=function(e,n){try{var a=arguments,r=this;if(we.debug("getLiquidityByPair called",a),!r._cache)throw we.log("getLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=r._cache.getOrders(e,n),o=Object.values(i).reduce(function(e,t){return e.add(t.y)},t.BigNumber.from(0));return Promise.resolve(ue.getInstance().fetchDecimals(n)).then(function(e){var t=te(o,e);return we.debug("getLiquidityByPair info:",{orders:i,liquidityWei:o,targetToken:n,decimals:e,liquidity:t}),t})}catch(e){return Promise.reject(e)}},a.getUserStrategies=function(e){try{var t=arguments,n=this;return we.debug("getUserStrategies called",t),Promise.resolve(n._api.reader.getUserStrategyIds(e)).then(function(e){function t(){var t=a.map(fe);return Promise.resolve(Promise.all(t.map(function(e){try{return Promise.resolve(se(e))}catch(e){return Promise.reject(e)}}))).then(function(n){return we.debug("getUserStrategies info:",{ids:e,encodedStrategies:a,decodedStrategies:t,strategies:n}),n})}var a,r=function(){if(!n._cache)return we.log("getUserStrategies called before startDataSync - fetching from chain"),Promise.resolve(n._api.reader.getStrategiesByIds(e)).then(function(e){a=e});a=e.map(function(e){var t;return null==(t=n._cache)?void 0:t.getStrategyById(e)}).filter(function(e){return!!e})}();return r&&r.then?r.then(t):t()})}catch(e){return Promise.reject(e)}},a.getTradeData=function(e,n,a,r,i){try{var o=arguments,u=this;if(we.debug("getTradeData called",o),!u._cache)throw we.log("getTradeData called before startDataSync"),new Error("startDataSync must be called prior to this action");var s=ue.getInstance();return Promise.resolve(s.fetchDecimals(e)).then(function(o){return Promise.resolve(s.fetchDecimals(n)).then(function(s){var p,y=u._cache.getOrders(e,n),d=t.BigNumber.from(ee(a,r?s:o));(p=r?Y(d,y,i):X(d,y,i)).length>1&&p.at(-1).output.isZero()&&p.pop();var l=u.getTradeDataFromActions(e,n,r,p);return we.debug("getTradeData info:",{orders:y,amount:a,amountWei:d,res:l}),l})})}catch(e){return Promise.reject(e)}},a.getTradeDataFromActions=function(e,n,a,r){try{var i=arguments,u=this;we.debug("getTradeDataFromActions called",i);var s=ue.getInstance();return Promise.resolve(s.fetchDecimals(e)).then(function(e){return Promise.resolve(s.fetchDecimals(n)).then(function(n){var i,s,p,y=[],d=[],l=t.BigNumber.from(0),c=t.BigNumber.from(0);if(r.forEach(function(t){y.push({strategyId:t.id,amount:t.input}),d.push({id:t.id,sourceAmount:te(a?t.output:t.input,e),targetAmount:te(a?t.input:t.output,n)}),c=c.add(t.input),l=l.add(t.output)}),null==u._tradingFeePPM)throw new Error("tradingFeePPM is undefined");if(a?(i=ae(l,u._tradingFeePPM),s=new o.default(c.toString())):(i=new o.default(c.toString()),s=re(l,u._tradingFeePPM)),i.isZero()||s.isZero())p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:"0",totalTargetAmount:"0",effectiveRate:"0"};else{var m=new o.default(s.toString()).div(i.toString()).times(k(e,n)).toString();p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:te(i.toFixed(0),e),totalTargetAmount:te(s.toFixed(0),n),effectiveRate:m}}return we.debug("getTradeDataFromActions info:",{sourceDecimals:e,targetDecimals:n,actionsWei:r,totalInput:c,totalOutput:l,tradingFeePPM:u._tradingFeePPM,res:p}),p})})}catch(e){return Promise.reject(e)}},a.composeTradeByTargetTransaction=function(e,t,n,a,r,i){try{var o=arguments,u=this;return we.debug("composeTradeByTargetTransaction called",o),Promise.resolve(ue.getInstance().fetchDecimals(e)).then(function(o){return u._api.composer.tradeByTargetAmount(e,t,n,a,ee(r,o),i)})}catch(e){return Promise.reject(e)}},a.composeTradeBySourceTransaction=function(e,t,n,a,r,i){try{var o=arguments,u=this;return we.debug("composeTradeBySourceTransaction called",o),Promise.resolve(ue.getInstance().fetchDecimals(t)).then(function(o){return u._api.composer.tradeBySourceAmount(e,t,n,a,ee(r,o),i)})}catch(e){return Promise.reject(e)}},a.createBuySellStrategy=function(e,t,n,a,r,i,o,u,s){we.debug("createBuySellStrategy called",arguments);var p=ge(e,t,n,a,r,i,o,u),y=me(p);return we.debug("createBuySellStrategy info:",{strategy:p,encStrategy:y}),this._api.composer.createStrategy(y.token0,y.token1,y.order0,y.order1,s)},a.updateStrategy=function(e,n,a,r,i,o,u,s,p,y,d){try{var l=arguments,c=this;we.debug("updateStrategy called",l);var m=ge(a,r,i,o,u,s,p,y),f=me(m);return we.debug("updateStrategy info:",{strategy:m,encStrategy:f}),Promise.resolve(c._api.composer.updateStrategy(t.BigNumber.from(e),[n.order0,n.order1],[f.order0,f.order1],d))}catch(e){return Promise.reject(e)}},a.deleteStrategy=function(e){return we.debug("deleteStrategy called",arguments),this._api.composer.deleteStrategy(t.BigNumber.from(e))},a.getRateLiquidityDepthByPair=function(e,t,n){try{var a=arguments,r=this;if(we.debug("getRateLiquidityDepthByPair called",a),!r._cache)throw we.log("getRateLiquidityDepthByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=Object.values(r._cache.getOrders(e,t)).map(ce),u=ue.getInstance();return Promise.resolve(u.fetchDecimals(e)).then(function(e){return Promise.resolve(u.fetchDecimals(t)).then(function(t){var a=ie(n,t,e),r=ve(i,new o.default(a)).toFixed(0),u=te(r,t);return we.debug("getRateLiquidityDepthByPair info:",{orders:i,depthWei:r,targetDecimals:t,depthInTargetDecimals:u}),u})})}catch(e){return Promise.reject(e)}},a.getMinRateByPair=function(e,t){try{var n=arguments,a=this;if(we.debug("getMinRateByPair called",n),!a._cache)throw we.log("getMinRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var r=Object.values(a._cache.getOrders(e,t)).map(ce),i=Te(r).toString(),o=ue.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ie(i,e,t);return we.debug("getMinRateByPair info:",{orders:r,minRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},a.getMaxRateByPair=function(e,t){try{var n=arguments,a=this;if(we.debug("getMaxRateByPair called",n),!a._cache)throw we.log("getMaxRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var r=Object.values(a._cache.getOrders(e,t)).map(ce),i=he(r).toString(),o=ue.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ie(i,e,t);return we.debug("getMaxRateByPair info:",{orders:r,maxRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},s(n,[{key:"isInitialized",get:function(){return void 0!==this._cache}},{key:"pairs",get:function(){if(we.debug("pairs called"),!this._cache)throw we.log("pairs called before startDataSync"),new Error("startDataSync must be called prior to this action");return this._cache.pairs}}]),n}();return ke}); | ||
//# sourceMappingURL=sdk.umd.js.map |
@@ -5,3 +5,3 @@ { | ||
"source": "src/index.ts", | ||
"version": "0.0.46-DEV", | ||
"version": "0.0.47-DEV", | ||
"description": "The SDK is a READ-ONLY tool, intended to facilitate working with Carbon contracts. It's a convenient wrapper around our matching algorithm, allowing programs and users get a ready to use transaction data that will allow them to manage strategies and fulfill trades", | ||
@@ -8,0 +8,0 @@ "main": "dist/sdk.umd.js", |
@@ -244,16 +244,19 @@ import { PopulatedTransaction } from '@ethersproject/contracts'; | ||
* | ||
* @throws {Error} If `startDataSync` has not been called. | ||
*/ | ||
public async getUserStrategies(user: string): Promise<Strategy[]> { | ||
logger.debug('getUserStrategies called', arguments); | ||
const ids = await this._api.reader.getUserStrategyIds(user); | ||
let encodedStrategies: EncodedStrategy[]; | ||
if (!this._cache) { | ||
logger.log('getUserStrategies called before startDataSync'); | ||
throw new Error(`startDataSync must be called prior to this action`); | ||
logger.log( | ||
'getUserStrategies called before startDataSync - fetching from chain' | ||
); | ||
encodedStrategies = await this._api.reader.getStrategiesByIds(ids); | ||
} else { | ||
encodedStrategies = ids | ||
.map((id) => this._cache?.getStrategyById(id)) | ||
.filter((strategy) => !!strategy) as EncodedStrategy[]; | ||
} | ||
const ids = await this._api.reader.getUserStrategyIds(user); | ||
const encodedStrategies = ids | ||
.map((id) => this._cache?.getStrategyById(id)) | ||
.filter((strategy) => !!strategy) as EncodedStrategy[]; | ||
const decodedStrategies = encodedStrategies.map(decodeStrategy); | ||
@@ -260,0 +263,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2125945
36663