Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@bancor/carbon-sdk

Package Overview
Dependencies
Maintainers
2
Versions
104
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bancor/carbon-sdk - npm Package Compare versions

Comparing version 0.0.48-DEV to 0.0.49-DEV

8

dist/encoders.d.ts

@@ -25,9 +25,3 @@ import { BigNumber, Decimal } from './numerics';

}): Promise<Strategy>;
export declare function buildStrategyObject(baseToken: {
address: string;
decimals: number;
}, quoteToken: {
address: string;
decimals: number;
}, buyPriceLow: string, // in quote tkn per 1 base tkn
export declare function buildStrategyObject(baseToken: string, quoteToken: string, baseDecimals: number, quoteDecimals: number, buyPriceLow: string, // in quote tkn per 1 base tkn
buyPriceHigh: string, // in quote tkn per 1 base tkn

@@ -34,0 +28,0 @@ buyBudget: string, // in quote tkn

37

dist/index.d.ts
import { PopulatedTransaction } from '@ethersproject/contracts';
import { DecimalFetcher, EncodedStrategy, Action, Strategy, Rate, TokenPair, Config } from './types';
import { MatchAction, DecimalFetcher, EncodedStrategy, Action, Strategy, Rate, TokenPair, Config } from './types';
import { TradeActionStruct } from './abis/types/CarbonController';

@@ -124,2 +124,3 @@ import { BigNumberish, PayableOverrides } from 'ethers';

* @property {BigNumber} effectiveRate - The rate between totalInput and totalOutput
* @property {MatchAction[]} actionsWei - An array of trade actions in wei.
* @throws {Error} If `startDataSync` has not been called.

@@ -133,4 +134,12 @@ */

effectiveRate: string;
actionsWei: MatchAction[];
}>;
private getTradeDataFromActions;
getTradeDataFromActions(sourceToken: string, targetToken: string, tradeByTargetAmount: boolean, actionsWei: MatchAction[]): Promise<{
tradeActions: TradeActionStruct[];
actionsTokenRes: Action[];
totalSourceAmount: string;
totalTargetAmount: string;
effectiveRate: string;
actionsWei: MatchAction[];
}>;
/**

@@ -235,4 +244,4 @@ * Creates an unsigned transaction to fulfill a trade using an array of trade actions.

*
* @param {Object} baseToken - The base token for the strategy, specified as an object with `address` and `decimals` properties.
* @param {Object} quoteToken - The quote token for the strategy, specified as an object with `address` and `decimals` properties.
* @param {string} baseToken - The address of the base token for the strategy.
* @param {string} quoteToken - The address of the quote token for the strategy.
* @param {string} buyPriceLow - The minimum buy price for the strategy, in in `quoteToken` per 1 `baseToken`, as a string.

@@ -258,4 +267,4 @@ * @param {string} buyPriceHigh - The maximum buy price for the strategy, in `quoteToken` per 1 `baseToken`, as a string.

* const createStrategyTx = sdk.createBuySellStrategy(
* { address: '0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A', decimals: 18 },
* { address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', decimals: 18 },
* '0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A',
* '0x6B175474E89094C44Da98b954EedeAC495271d0F',
* '0.1',

@@ -273,16 +282,4 @@ * '0.2',

*/
createBuySellStrategy(baseToken: {
address: string;
decimals: number;
}, quoteToken: {
address: string;
decimals: number;
}, buyPriceLow: string, buyPriceHigh: string, buyBudget: string, sellPriceLow: string, sellPriceHigh: string, sellBudget: string, overrides?: PayableOverrides): Promise<PopulatedTransaction>;
updateStrategy(strategyId: BigNumberish, encoded: EncodedStrategy, baseToken: {
address: string;
decimals: number;
}, quoteToken: {
address: string;
decimals: number;
}, buyPriceLow: string, buyPriceHigh: string, buyBudget: string, sellPriceLow: string, sellPriceHigh: string, sellBudget: string, overrides?: PayableOverrides): Promise<PopulatedTransaction>;
createBuySellStrategy(baseToken: string, quoteToken: string, buyPriceLow: string, buyPriceHigh: string, buyBudget: string, sellPriceLow: string, sellPriceHigh: string, sellBudget: string, overrides?: PayableOverrides): Promise<PopulatedTransaction>;
updateStrategy(strategyId: BigNumberish, encoded: EncodedStrategy, baseToken: string, quoteToken: string, buyPriceLow: string, buyPriceHigh: string, buyBudget: string, sellPriceLow: string, sellPriceHigh: string, sellBudget: string, overrides?: PayableOverrides): Promise<PopulatedTransaction>;
deleteStrategy(strategyId: BigNumberish): Promise<PopulatedTransaction>;

@@ -289,0 +286,0 @@ /**

@@ -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,r,a){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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,"symbol"==typeof(a=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key))?a:String(a),r)}var a}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 r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}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 r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}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 r,a;0===t?(r=e.order0,a=b(e.token1,e.token0)):(r=e.order1,a=b(e.token0,e.token1));var i,o=n.get(a);o?o[e.id.toString()]=r:(console.warn("Should not be here, modified order is supposed to already be cached"),n.set(a,((i={})[e.id.toString()]=r,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,r=0;r<t.length;r++){var a=t[r],i=e[r],o=f(a[0],a[1]);n.set(o,i)}return n})})}catch(e){return Promise.reject(e)}}(e._fetcher)).then(function(t){e._pairToStrategies=t;for(var n,r=d(e._pairToStrategies.values());!(n=r()).done;){var a=n.value;if(a&&a.length>0)for(var i=0;i<a.length;i++)e._strategyById.set(a[i].id.toString(),a[i])}e._fetcher.onStrategyCreated(function(t){!function(e,t,n,r){if(!n.has(e.id.toString())){n.set(e.id.toString(),e);var a=f(e.token0,e.token1);if(t.has(a)?t.get(a).push(e):t.set(a,[e]),0!==r.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=r.get(p);d?d[e.id.toString()]=y:r.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,r){n.set(e.id.toString(),e);var a=f(e.token0,e.token1);t.has(a)?t.set(a,t.get(a).map(function(t){return t.id===e.id?e:t})):t.set(a,[e]),T(e,0,r),T(e,1,r)}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyDeleted(function(t){!function(e,t,n,r){if(n.has(e.id.toString())){n.delete(e.id.toString());var a=f(e.token0,e.token1);if(t.has(a)&&t.set(a,t.get(a).filter(function(t){return t.id!==e.id})),0===t.get(a).length&&t.delete(a),0!==r.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=r.get(s);p&&(delete p[e.id.toString()],0===Object.keys(p).length&&r.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 r;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,r=d(e.values());!(n=r()).done;){var a=n.value;if(a.length>0){for(var i=a[0].token0,o=a[0].token1,u={},s={},p=0;p<a.length;p++)a[p].token0===i?(u[a[p].id.toString()]=a[p].order0,s[a[p].id.toString()]=a[p].order1):(u[a[p].id.toString()]=a[p].order1,s[a[p].id.toString()]=a[p].order0);t.set(b(i,o),s),t.set(b(o,i),u)}}}(this._pairToStrategies,this._cachedOrders);var a=b(e,t),i=null!=(r=this._cachedOrders.get(a))?r:{};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}(),v=function(e,t){return e.lt(t)?e:t},w=function(e,t){return e.gt(t)?e:t};o.default.set({precision:100,rounding:o.default.ROUND_HALF_DOWN,toExpNeg:-30,toExpPos:30});var k=Math.pow(2,48),_=new o.default(10),P=function(e,t){return _.pow(e-t)},S=function(e){return new o.default(e.toString())},A=function(e){return t.BigNumber.from(e.toFixed())},M="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase(),B=function(e){return e.toLowerCase()===M},x=function(e,n,r){var a=p({},r);return B(e)&&(a.value=n.reduce(function(e,t){return e.add(t.amount)},t.BigNumber.from(0))),a},C=/*#__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}(),I=new C("Composer.ts"),D=/*#__PURE__*/function(){function e(e){this._contracts=void 0,this._contracts=e}var t=e.prototype;return t.tradeByTargetAmount=function(e,t,n,r,a,i){I.debug("tradeByTargetAmount called",arguments);var o=x(e,n,i);return I.debug("tradeByTargetAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeByTargetAmount(e,t,n,r,a,o)},t.tradeBySourceAmount=function(e,t,n,r,a,i){I.debug("tradeBySourceAmount called",arguments);var o=x(e,n,i);return I.debug("tradeBySourceAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeBySourceAmount(e,t,n,r,a,o)},t.createStrategy=function(e,t,n,r,a){I.debug("createStrategy called",arguments);var i=p({},a);return B(e)?i.value=n.y:B(t)&&(i.value=r.y),I.debug("createStrategy overrides",i),this._contracts.carbonController.populateTransaction.createStrategy(e,t,[n,r],i)},t.deleteStrategy=function(e){return this._contracts.carbonController.populateTransaction.deleteStrategy(e)},t.updateStrategy=function(e,t,n,r){return this._contracts.carbonController.populateTransaction.updateStrategy(e,t,n,r)},t.transferVoucherOwnership=function(e,t){return this._contracts.voucher.populateTransaction.transferOwnership(e,t)},e}(),R=[{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:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",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:"AccessDenied",type:"error"},{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:"InvalidAddress",type:"error"},{inputs:[],name:"InvalidFee",type:"error"},{inputs:[],name:"InvalidIndices",type:"error"},{inputs:[],name:"InvalidRate",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:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],O=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(R)},e.connect=function(e,t){return new r.Contract(e,R,t)},e}();O.abi=R;var E=[{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"}],j=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(E)},e.connect=function(e,t){return new r.Contract(e,E,t)},e}();j.abi=E;var F=[{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"}],U=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(F)},e.connect=function(e,t){return new r.Contract(e,F,t)},e}();U.abi=F;var N=[{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:!1,internalType:"string",name:"newBaseExtension",type:"string"}],name:"BaseExtensionUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"newBaseURI",type:"string"}],name:"BaseURIUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"contract CarbonController",name:"carbonController",type:"address"}],name:"CarbonControllerUpdated",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"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"newUseGlobalURI",type:"bool"}],name:"UseGlobalURIUpdated",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"}],q=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(N)},e.connect=function(e,t){return new r.Contract(e,N,t)},e}();q.abi=N;var z={carbonControllerAddress:"0x2FdE9E0cE83769E88eAA9FB7BE27cb26c385d1b2",multiCallAddress:"0x5ba1e12693dc8f9c48aad8770482f4739beed696",voucherAddress:"0x08dA389a1400e3699f58843484B0513AA065461c"},L=/*#__PURE__*/function(){function e(e,t){this._provider=void 0,this._carbonController=void 0,this._multiCall=void 0,this._voucher=void 0,this._config=z,this._provider=e,this._config.carbonControllerAddress=(null==t?void 0:t.carbonControllerAddress)||z.carbonControllerAddress,this._config.multiCallAddress=(null==t?void 0:t.multiCallAddress)||z.multiCallAddress,this._config.voucherAddress=(null==t?void 0:t.voucherAddress)||z.voucherAddress}return e.prototype.token=function(e){return U.connect(e,this._provider)},s(e,[{key:"carbonController",get:function(){return this._carbonController||(this._carbonController=O.connect(this._config.carbonControllerAddress,this._provider)),this._carbonController}},{key:"multicall",get:function(){return this._multiCall||(this._multiCall=j.connect(this._config.multiCallAddress,this._provider)),this._multiCall}},{key:"voucher",get:function(){return this._voucher||(this._voucher=q.connect(this._config.voucherAddress,this._provider)),this._voucher}}]),e}(),H=new C("Reader.ts");function G(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 W(e,t){return function(n,r,a,i,o,u){H.debug(e+" fired with",arguments);var s={id:n,token0:a,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}};H.debug(e+" parsed strategy:",s),t(s)}}var Z=/*#__PURE__*/function(){function e(e){var t=this;this._contracts=void 0,this.getDecimalsByAddress=function(e){try{return B(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(r,a){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(G)}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 G(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 G(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 G(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 r=Array.from(Array(n.toNumber()),function(n,r){return{contractAddress:t._contracts.voucher.address,interface:t._contracts.voucher.interface,methodName:"tokenOfOwnerByIndex",methodParameters:[e,r]}});return Promise.resolve(t.multicall(r)).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){H.debug("TradingFeePPMUpdated fired with",arguments),e(t,n)})},t.onStrategyDeleted=function(e){return this._contracts.carbonController.on("StrategyDeleted",W("StrategyDeleted",e))},t.onStrategyCreated=function(e){return this._contracts.carbonController.on("StrategyCreated",W("StrategyCreated",e))},t.onStrategyUpdated=function(e){return this._contracts.carbonController.on("StrategyUpdated",W("StrategyUpdated",e))},e}(),K=/*#__PURE__*/function(){function e(e,t){this._reader=void 0,this._composer=void 0;var n=new L(e,t);this._reader=new Z(n),this._composer=new D(n)}return s(e,[{key:"reader",get:function(){return this._reader}},{key:"composer",get:function(){return this._composer}}]),e}(),V=function(e,t){var n=e.output.mul(t.input),r=t.output.mul(e.input),a=n.lt(r),i=n.gt(r),o=!a&&!i;return+(a||o&&e.output.lt(t.output))-+(i||o&&e.output.gt(t.output))},J=function(e,t){return V(t,e)},$=/*#__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,r=n._cachedDecimals.get(t);return void 0!==r?Promise.resolve(r):Promise.resolve(e._fetcher(t)).then(function(e){if(void 0===(r=e))throw new Error("Could not fetch decimals for token "+t);return n._cachedDecimals.set(t,r),r})}catch(e){return Promise.reject(e)}},s(e,[{key:"cachedDecimals",get:function(){return this._cachedDecimals}}]),e}();function Q(e,t){var n,r,i,o=(r=t,-1!==(i=(n=e).indexOf("."))?n.slice(0,i+r+1):n);return a.parseUnits(o,t).toString()}function X(e,t){var n=a.formatUnits(e,t);return new o.default(n).toFixed()}$._instance=void 0,$._fetcher=void 0;var Y=1e6;function ee(e,t){return new o.default(e.toString()).mul(Y).div(Y-t).ceil()}function te(e,t){return new o.default(e.toString()).mul(Y-t).div(Y).floor()}function ne(e,t,n){return new o.default(e.toString()).times(P(t,n)).toFixed()}function re(e,t,n){return 0==+e.toString()?"0":new o.default(1).div(e.toString()).times(P(n,t)).toFixed()}var ae=function(e){try{var t=arguments;ie.debug("decodeStrategy called",t);var n=e.id,r=e.token0,a=e.token1,i=e.order0,o=e.order1,u=e.encoded,s=$.getInstance();return Promise.resolve(s.fetchDecimals(r)).then(function(e){return Promise.resolve(s.fetchDecimals(a)).then(function(t){var s=ne(o.lowestRate,e,t),p=ne(o.highestRate,e,t),y=re(i.highestRate,t,e),d=re(i.lowestRate,t,e),l=X(i.liquidity,e),c=X(o.liquidity,t);return ie.debug("decodeStrategy info:",{id:n,token0:r,token1:a,order0:i,order1:o,decimals0:e,decimals1:t,baseToken:r,quoteToken:a,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l}),{id:n,baseToken:r,quoteToken:a,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l,encoded:u}})})}catch(e){return Promise.reject(e)}},ie=new C("encoders.ts");function oe(e){return e.gt(0)?o.default.log2(e.toString()).add(1).floor().toNumber():0}var ue=function(e){var t=A(e.sqrt().mul(k).floor()),n=oe(t.div(k));return S(t.shr(n).shl(n))},se=function(e){return e.div(k).pow(2)},pe=function(e){var n=oe(e.div(k)),r=e.shr(n);return t.BigNumber.from(k).mul(n).or(r)},ye=function(e){return e.mod(k).shl(e.div(k).toNumber())},de=function(e){var t=new o.default(e.liquidity),n=new o.default(e.lowestRate),r=new o.default(e.highestRate),a=new o.default(e.marginalRate);if(!(r.gte(a)&&a.gt(n)||r.eq(a)&&a.eq(n)))throw new Error("Either one of the following must hold:\n- highestRate >= marginalRate > lowestRate\n- highestRate == marginalRate == lowestRate\n(highestRate = "+r+", marginalRate = "+a+", lowestRate = "+n+")");var i=A(t),u=A(ue(n)),s=A(ue(r)),p=A(ue(a));return{y:i,z:s.eq(p)?i:i.mul(s.sub(u)).div(p.sub(u)),A:pe(s.sub(u)),B:pe(u)}},le=function(e){var t=S(e.y),n=S(e.z),r=S(ye(e.A)),a=S(ye(e.B));return{liquidity:t.toString(),lowestRate:se(a).toString(),highestRate:se(a.add(r)).toString(),marginalRate:se(t.eq(n)?a.add(r):a.add(r.mul(t).div(n))).toString()}},ce=function(e){return{token0:e.token0,token1:e.token1,order0:de(e.order0),order1:de(e.order1)}},me=function(e){return{id:e.id,token0:e.token0,token1:e.token1,order0:le(e.order0),order1:le(e.order1),encoded:e}};function fe(e,t,n,r,a,i,u,s){if(ie.debug("buildStrategyObject called",arguments),new o.default(n).isNegative()||new o.default(r).isNegative()||new o.default(i).isNegative()||new o.default(u).isNegative())throw new Error("prices cannot be negative");if(new o.default(n).gt(r)||new o.default(i).gt(u))throw new Error("low price must be lower than or equal to high price");if(new o.default(a).isNegative()||new o.default(s).isNegative())throw new Error("budgets cannot be negative");var p=ge(e.decimals,t.decimals,n,r,a,i,u,s),y=p.order0,d=p.order1;return ie.debug("buildStrategyObject info:",{token0:e.address,token1:t.address,order0:y,order1:d}),{token0:e.address,token1:t.address,order0:y,order1:d}}function ge(e,t,n,r,a,i,o,u){ie.debug("createOrders called",arguments);var s=Q(u,e),p=re(o,t,e),y=re(i,t,e),d=Q(a,t),l=ne(n,t,e),c=ne(r,t,e),m={liquidity:s,lowestRate:p,highestRate:y,marginalRate:y},f={liquidity:d,lowestRate:l,highestRate:c,marginalRate:c};return ie.debug("createOrders info:",{order0:m,order1:f}),{order0:m,order1:f}}var be=t.BigNumber.from(k),Te=t.BigNumber.from(2).pow(128).sub(1),he=t.BigNumber.from(2).pow(256).sub(1);function ve(e,t){if(e.gte(0)&&e.lte(t))return e;throw null}var we=function(e){return ve(e,Te)},ke=function(e,t){return ve(e.add(t),he)},_e=function(e,t){return ve(e.mul(t),he)},Pe=function(e,t,n){return ve(e.mul(t).div(n),he)},Se=function(e,t,n){return ve(e.mul(t).add(n).sub(1).div(n),he)},Ae=function(e,t){var n=e,r=t.y,a=t.z,i=ye(t.A),o=ye(t.B);try{return we(function(e,t,n,r,a){if(r.eq(0))return Se(e,_e(be,be),_e(a,a));var i,o,u=_e(n,be),s=ke(_e(t,r),_e(n,a)),p=(i=s,o=_e(e,r),ve(i.sub(o),he)),y=Se(u,u,he),d=Se(s,p,he),l=w(y,d),c=Se(u,u,l),m=Pe(s,p,l);return Se(e,c,m)}(n,r,a,i,o))}catch(e){return he}},Me=function(e,n){var r=v(function(e,n){var r=e,a=n.y,i=n.z,o=ye(n.A),u=ye(n.B);try{return we(function(e,t,n,r,a){if(r.eq(0))return Pe(e,_e(a,a),_e(be,be));var i=_e(n,be),o=ke(_e(t,r),_e(n,a)),u=_e(o,e),s=Se(i,i,he),p=Se(u,r,he),y=w(s,p),d=Se(i,i,y),l=Se(u,r,y);return Pe(o,u.div(y),ke(d,l))}(r,a,i,o,u))}catch(e){return t.BigNumber.from(0)}}(e,n),n.y);return{input:Ae(r,n),output:r}},Be=function(e,t){var n=v(e,t.y);return{input:n,output:Ae(n,t)}},xe=function(e,n,r,a,i){for(var o,u=[],s=d(Object.keys(n).map(function(t){return{id:t,rate:a(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)){r(l)&&u.push({id:t.BigNumber.from(y),input:l.input,output:l.output});break}var c={input:e,output:a(e,n[y]).output};r(c)&&u.push({id:t.BigNumber.from(y),input:c.input,output:c.output});break}r(l)&&(u.push({id:t.BigNumber.from(y),input:l.input,output:l.output}),e=e.sub(l.input))}return u},Ce=function(e){return e.input.gt(0)&&e.output.gt(0)},Ie=function(e,t,n){return void 0===n&&(n=Ce),xe(e,t,n,Me,V)},De=function(e,t,n){return void 0===n&&(n=Ce),xe(e,t,n,Be,J)};function Re(e){return e.reduce(function(e,t){return o.default.min(e,t.lowestRate)},new o.default(Infinity))}function Oe(e){return e.reduce(function(e,t){return o.default.max(e,t.highestRate)},new o.default(-Infinity))}function Ee(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),r=new o.default(e.lowestRate).sqrt(),a=new o.default(e.marginalRate).sqrt();return n.sub(n.mul(t.sqrt().sub(r)).div(a.sub(r)))}(n,t))},new o.default(0))}var je=new C("index.ts"),Fe=/*#__PURE__*/function(){function n(t,n){var r=this;this._api=void 0,this._cache=void 0,this._tradingFeePPM=void 0,this._onChangeCallbacks=[],je.debug("SDK class constructor called with",arguments);var a=new e.StaticJsonRpcProvider({url:t.rpcUrl,skipFetchSetup:!0},1);this._api=new K(a,t.contractAddresses);var i=function(e){return Promise.resolve(null==n?void 0:n(e)).then(function(t){return void 0!==t?t:r._api.reader.getDecimalsByAddress(e)})};$.init(i)}var r=n.prototype;return r._fireOnChange=function(){je.debug("firing onChange callbacks"),this._onChangeCallbacks.forEach(function(e){return e()})},r.onChange=function(e){var t=this;if(je.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})}},r.startDataSync=function(){try{var e=this;return je.debug("startDataSync called"),e._cache?(je.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){je.debug("tradingFeePPM updated",t),e._tradingFeePPM=t}),je.debug("tradeFeePPM",e._tradingFeePPM)})}))}catch(e){return Promise.reject(e)}},r.hasLiquidityByPair=function(e,t){if(je.debug("hasLiquidityByPair called",arguments),!this._cache)throw je.log("hasLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var n=this._cache.getOrders(e,t);return je.debug("hasLiquidityByPair info:",{orders:n}),Object.keys(n).length>0},r.getLiquidityByPair=function(e,n){try{var r=arguments,a=this;if(je.debug("getLiquidityByPair called",r),!a._cache)throw je.log("getLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=a._cache.getOrders(e,n),o=Object.values(i).reduce(function(e,t){return e.add(t.y)},t.BigNumber.from(0));return Promise.resolve($.getInstance().fetchDecimals(n)).then(function(e){var t=X(o,e);return je.debug("getLiquidityByPair info:",{orders:i,liquidityWei:o,targetToken:n,decimals:e,liquidity:t}),t})}catch(e){return Promise.reject(e)}},r.getUserStrategies=function(e){try{var t=arguments,n=this;return je.debug("getUserStrategies called",t),Promise.resolve(n._api.reader.getUserStrategyIds(e)).then(function(e){function t(){var t=r.map(me);return Promise.resolve(Promise.all(t.map(function(e){try{return Promise.resolve(ae(e))}catch(e){return Promise.reject(e)}}))).then(function(n){return je.debug("getUserStrategies info:",{ids:e,encodedStrategies:r,decodedStrategies:t,strategies:n}),n})}var r,a=function(){if(!n._cache)return je.log("getUserStrategies called before startDataSync - fetching from chain"),Promise.resolve(n._api.reader.getStrategiesByIds(e)).then(function(e){r=e});r=e.map(function(e){var t;return null==(t=n._cache)?void 0:t.getStrategyById(e)}).filter(function(e){return!!e})}();return a&&a.then?a.then(t):t()})}catch(e){return Promise.reject(e)}},r.getTradeData=function(e,n,r,a,i){try{var o=arguments,u=this;if(je.debug("getTradeData called",o),!u._cache)throw je.log("getTradeData called before startDataSync"),new Error("startDataSync must be called prior to this action");var s=$.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(Q(r,a?s:o));(p=a?De(d,y,i):Ie(d,y,i)).length>1&&p.at(-1).output.isZero()&&p.pop();var l=u.getTradeDataFromActions(e,n,a,p);return je.debug("getTradeData info:",{orders:y,amount:r,amountWei:d,res:l}),l})})}catch(e){return Promise.reject(e)}},r.getTradeDataFromActions=function(e,n,r,a){try{var i=arguments,u=this;je.debug("getTradeDataFromActions called",i);var s=$.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(a.forEach(function(t){y.push({strategyId:t.id,amount:t.input}),d.push({id:t.id,sourceAmount:X(r?t.output:t.input,e),targetAmount:X(r?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(r?(i=ee(l,u._tradingFeePPM),s=new o.default(c.toString())):(i=new o.default(c.toString()),s=te(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(P(e,n)).toString();p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:X(i.toFixed(0),e),totalTargetAmount:X(s.toFixed(0),n),effectiveRate:m}}return je.debug("getTradeDataFromActions info:",{sourceDecimals:e,targetDecimals:n,actionsWei:a,totalInput:c,totalOutput:l,tradingFeePPM:u._tradingFeePPM,res:p}),p})})}catch(e){return Promise.reject(e)}},r.composeTradeByTargetTransaction=function(e,t,n,r,a,i){try{var o=arguments,u=this;return je.debug("composeTradeByTargetTransaction called",o),Promise.resolve($.getInstance().fetchDecimals(e)).then(function(o){return u._api.composer.tradeByTargetAmount(e,t,n,r,Q(a,o),i)})}catch(e){return Promise.reject(e)}},r.composeTradeBySourceTransaction=function(e,t,n,r,a,i){try{var o=arguments,u=this;return je.debug("composeTradeBySourceTransaction called",o),Promise.resolve($.getInstance().fetchDecimals(t)).then(function(o){return u._api.composer.tradeBySourceAmount(e,t,n,r,Q(a,o),i)})}catch(e){return Promise.reject(e)}},r.createBuySellStrategy=function(e,t,n,r,a,i,o,u,s){je.debug("createBuySellStrategy called",arguments);var p=fe(e,t,n,r,a,i,o,u),y=ce(p);return je.debug("createBuySellStrategy info:",{strategy:p,encStrategy:y}),this._api.composer.createStrategy(y.token0,y.token1,y.order0,y.order1,s)},r.updateStrategy=function(e,n,r,a,i,o,u,s,p,y,d){try{var l=arguments,c=this;je.debug("updateStrategy called",l);var m=fe(r,a,i,o,u,s,p,y),f=ce(m);return je.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)}},r.deleteStrategy=function(e){return je.debug("deleteStrategy called",arguments),this._api.composer.deleteStrategy(t.BigNumber.from(e))},r.getRateLiquidityDepthByPair=function(e,t,n){try{var r=arguments,a=this;if(je.debug("getRateLiquidityDepthByPair called",r),!a._cache)throw je.log("getRateLiquidityDepthByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=Object.values(a._cache.getOrders(e,t)).map(le),u=$.getInstance();return Promise.resolve(u.fetchDecimals(e)).then(function(e){return Promise.resolve(u.fetchDecimals(t)).then(function(t){var r=ne(n,t,e),a=Ee(i,new o.default(r)).toFixed(0),u=X(a,t);return je.debug("getRateLiquidityDepthByPair info:",{orders:i,depthWei:a,targetDecimals:t,depthInTargetDecimals:u}),u})})}catch(e){return Promise.reject(e)}},r.getMinRateByPair=function(e,t){try{var n=arguments,r=this;if(je.debug("getMinRateByPair called",n),!r._cache)throw je.log("getMinRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var a=Object.values(r._cache.getOrders(e,t)).map(le),i=Re(a).toString(),o=$.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ne(i,e,t);return je.debug("getMinRateByPair info:",{orders:a,minRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},r.getMaxRateByPair=function(e,t){try{var n=arguments,r=this;if(je.debug("getMaxRateByPair called",n),!r._cache)throw je.log("getMaxRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var a=Object.values(r._cache.getOrders(e,t)).map(le),i=Oe(a).toString(),o=$.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ne(i,e,t);return je.debug("getMaxRateByPair info:",{orders:a,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(je.debug("pairs called"),!this._cache)throw je.log("pairs called before startDataSync"),new Error("startDataSync must be called prior to this action");return this._cache.pairs}}]),n}();return Fe});
!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,r,a){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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,"symbol"==typeof(a=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key))?a:String(a),r)}var a}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 r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}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 r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}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 r,a;0===t?(r=e.order0,a=b(e.token1,e.token0)):(r=e.order1,a=b(e.token0,e.token1));var i,o=n.get(a);o?o[e.id.toString()]=r:(console.warn("Should not be here, modified order is supposed to already be cached"),n.set(a,((i={})[e.id.toString()]=r,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,r=0;r<t.length;r++){var a=t[r],i=e[r],o=f(a[0],a[1]);n.set(o,i)}return n})})}catch(e){return Promise.reject(e)}}(e._fetcher)).then(function(t){e._pairToStrategies=t;for(var n,r=d(e._pairToStrategies.values());!(n=r()).done;){var a=n.value;if(a&&a.length>0)for(var i=0;i<a.length;i++)e._strategyById.set(a[i].id.toString(),a[i])}e._fetcher.onStrategyCreated(function(t){!function(e,t,n,r){if(!n.has(e.id.toString())){n.set(e.id.toString(),e);var a=f(e.token0,e.token1);if(t.has(a)?t.get(a).push(e):t.set(a,[e]),0!==r.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=r.get(p);d?d[e.id.toString()]=y:r.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,r){n.set(e.id.toString(),e);var a=f(e.token0,e.token1);t.has(a)?t.set(a,t.get(a).map(function(t){return t.id===e.id?e:t})):t.set(a,[e]),T(e,0,r),T(e,1,r)}(t,e._pairToStrategies,e._strategyById,e._cachedOrders),null==e._onChange||e._onChange()}),e._fetcher.onStrategyDeleted(function(t){!function(e,t,n,r){if(n.has(e.id.toString())){n.delete(e.id.toString());var a=f(e.token0,e.token1);if(t.has(a)&&t.set(a,t.get(a).filter(function(t){return t.id!==e.id})),0===t.get(a).length&&t.delete(a),0!==r.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=r.get(s);p&&(delete p[e.id.toString()],0===Object.keys(p).length&&r.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 r;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,r=d(e.values());!(n=r()).done;){var a=n.value;if(a.length>0){for(var i=a[0].token0,o=a[0].token1,u={},s={},p=0;p<a.length;p++)a[p].token0===i?(u[a[p].id.toString()]=a[p].order0,s[a[p].id.toString()]=a[p].order1):(u[a[p].id.toString()]=a[p].order1,s[a[p].id.toString()]=a[p].order0);t.set(b(i,o),s),t.set(b(o,i),u)}}}(this._pairToStrategies,this._cachedOrders);var a=b(e,t),i=null!=(r=this._cachedOrders.get(a))?r:{};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}(),v=function(e,t){return e.lt(t)?e:t},w=function(e,t){return e.gt(t)?e:t};o.default.set({precision:100,rounding:o.default.ROUND_HALF_DOWN,toExpNeg:-30,toExpPos:30});var k=Math.pow(2,48),_=new o.default(10),P=function(e,t){return _.pow(e-t)},S=function(e){return new o.default(e.toString())},A=function(e){return t.BigNumber.from(e.toFixed())},M="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase(),B=function(e){return e.toLowerCase()===M},x=function(e,n,r){var a=p({},r);return B(e)&&(a.value=n.reduce(function(e,t){return e.add(t.amount)},t.BigNumber.from(0))),a},I=/*#__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}(),C=new I("Composer.ts"),D=/*#__PURE__*/function(){function e(e){this._contracts=void 0,this._contracts=e}var t=e.prototype;return t.tradeByTargetAmount=function(e,t,n,r,a,i){C.debug("tradeByTargetAmount called",arguments);var o=x(e,n,i);return C.debug("tradeByTargetAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeByTargetAmount(e,t,n,r,a,o)},t.tradeBySourceAmount=function(e,t,n,r,a,i){C.debug("tradeBySourceAmount called",arguments);var o=x(e,n,i);return C.debug("tradeBySourceAmount overrides",o),this._contracts.carbonController.populateTransaction.tradeBySourceAmount(e,t,n,r,a,o)},t.createStrategy=function(e,t,n,r,a){C.debug("createStrategy called",arguments);var i=p({},a);return B(e)?i.value=n.y:B(t)&&(i.value=r.y),C.debug("createStrategy overrides",i),this._contracts.carbonController.populateTransaction.createStrategy(e,t,[n,r],i)},t.deleteStrategy=function(e){return this._contracts.carbonController.populateTransaction.deleteStrategy(e)},t.updateStrategy=function(e,t,n,r){return this._contracts.carbonController.populateTransaction.updateStrategy(e,t,n,r)},t.transferVoucherOwnership=function(e,t){return this._contracts.voucher.populateTransaction.transferOwnership(e,t)},e}(),R=[{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:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",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:"AccessDenied",type:"error"},{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:"InvalidAddress",type:"error"},{inputs:[],name:"InvalidFee",type:"error"},{inputs:[],name:"InvalidIndices",type:"error"},{inputs:[],name:"InvalidRate",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:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],O=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(R)},e.connect=function(e,t){return new r.Contract(e,R,t)},e}();O.abi=R;var E=[{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"}],j=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(E)},e.connect=function(e,t){return new r.Contract(e,E,t)},e}();j.abi=E;var F=[{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"}],U=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(F)},e.connect=function(e,t){return new r.Contract(e,F,t)},e}();U.abi=F;var N=[{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:!1,internalType:"string",name:"newBaseExtension",type:"string"}],name:"BaseExtensionUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"newBaseURI",type:"string"}],name:"BaseURIUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"contract CarbonController",name:"carbonController",type:"address"}],name:"CarbonControllerUpdated",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"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"newUseGlobalURI",type:"bool"}],name:"UseGlobalURIUpdated",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"}],q=/*#__PURE__*/function(){function e(){}return e.createInterface=function(){return new r.utils.Interface(N)},e.connect=function(e,t){return new r.Contract(e,N,t)},e}();q.abi=N;var z={carbonControllerAddress:"0x2FdE9E0cE83769E88eAA9FB7BE27cb26c385d1b2",multiCallAddress:"0x5ba1e12693dc8f9c48aad8770482f4739beed696",voucherAddress:"0x08dA389a1400e3699f58843484B0513AA065461c"},L=/*#__PURE__*/function(){function e(e,t){this._provider=void 0,this._carbonController=void 0,this._multiCall=void 0,this._voucher=void 0,this._config=z,this._provider=e,this._config.carbonControllerAddress=(null==t?void 0:t.carbonControllerAddress)||z.carbonControllerAddress,this._config.multiCallAddress=(null==t?void 0:t.multiCallAddress)||z.multiCallAddress,this._config.voucherAddress=(null==t?void 0:t.voucherAddress)||z.voucherAddress}return e.prototype.token=function(e){return U.connect(e,this._provider)},s(e,[{key:"carbonController",get:function(){return this._carbonController||(this._carbonController=O.connect(this._config.carbonControllerAddress,this._provider)),this._carbonController}},{key:"multicall",get:function(){return this._multiCall||(this._multiCall=j.connect(this._config.multiCallAddress,this._provider)),this._multiCall}},{key:"voucher",get:function(){return this._voucher||(this._voucher=q.connect(this._config.voucherAddress,this._provider)),this._voucher}}]),e}(),H=new I("Reader.ts");function G(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 W(e,t){return function(n,r,a,i,o,u){H.debug(e+" fired with",arguments);var s={id:n,token0:a,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}};H.debug(e+" parsed strategy:",s),t(s)}}var Z=/*#__PURE__*/function(){function e(e){var t=this;this._contracts=void 0,this.getDecimalsByAddress=function(e){try{return B(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(r,a){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(G)}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 G(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 G(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 G(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 r=Array.from(Array(n.toNumber()),function(n,r){return{contractAddress:t._contracts.voucher.address,interface:t._contracts.voucher.interface,methodName:"tokenOfOwnerByIndex",methodParameters:[e,r]}});return Promise.resolve(t.multicall(r)).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){H.debug("TradingFeePPMUpdated fired with",arguments),e(t,n)})},t.onStrategyDeleted=function(e){return this._contracts.carbonController.on("StrategyDeleted",W("StrategyDeleted",e))},t.onStrategyCreated=function(e){return this._contracts.carbonController.on("StrategyCreated",W("StrategyCreated",e))},t.onStrategyUpdated=function(e){return this._contracts.carbonController.on("StrategyUpdated",W("StrategyUpdated",e))},e}(),K=/*#__PURE__*/function(){function e(e,t){this._reader=void 0,this._composer=void 0;var n=new L(e,t);this._reader=new Z(n),this._composer=new D(n)}return s(e,[{key:"reader",get:function(){return this._reader}},{key:"composer",get:function(){return this._composer}}]),e}(),V=function(e,t){var n=e.output.mul(t.input),r=t.output.mul(e.input),a=n.lt(r),i=n.gt(r),o=!a&&!i;return+(a||o&&e.output.lt(t.output))-+(i||o&&e.output.gt(t.output))},J=function(e,t){return V(t,e)},$=/*#__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,r=n._cachedDecimals.get(t);return void 0!==r?Promise.resolve(r):Promise.resolve(e._fetcher(t)).then(function(e){if(void 0===(r=e))throw new Error("Could not fetch decimals for token "+t);return n._cachedDecimals.set(t,r),r})}catch(e){return Promise.reject(e)}},s(e,[{key:"cachedDecimals",get:function(){return this._cachedDecimals}}]),e}();function Q(e,t){var n,r,i,o=(r=t,-1!==(i=(n=e).indexOf("."))?n.slice(0,i+r+1):n);return a.parseUnits(o,t).toString()}function X(e,t){var n=a.formatUnits(e,t);return new o.default(n).toFixed()}$._instance=void 0,$._fetcher=void 0;var Y=1e6;function ee(e,t){return new o.default(e.toString()).mul(Y).div(Y-t).ceil()}function te(e,t){return new o.default(e.toString()).mul(Y-t).div(Y).floor()}function ne(e,t,n){return new o.default(e.toString()).times(P(t,n)).toFixed()}function re(e,t,n){return 0==+e.toString()?"0":new o.default(1).div(e.toString()).times(P(n,t)).toFixed()}var ae=function(e){try{var t=arguments;ie.debug("decodeStrategy called",t);var n=e.id,r=e.token0,a=e.token1,i=e.order0,o=e.order1,u=e.encoded,s=$.getInstance();return Promise.resolve(s.fetchDecimals(r)).then(function(e){return Promise.resolve(s.fetchDecimals(a)).then(function(t){var s=ne(o.lowestRate,e,t),p=ne(o.highestRate,e,t),y=re(i.highestRate,t,e),d=re(i.lowestRate,t,e),l=X(i.liquidity,e),c=X(o.liquidity,t);return ie.debug("decodeStrategy info:",{id:n,token0:r,token1:a,order0:i,order1:o,decimals0:e,decimals1:t,baseToken:r,quoteToken:a,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l}),{id:n,baseToken:r,quoteToken:a,buyPriceLow:s,buyPriceHigh:p,buyBudget:c,sellPriceLow:y,sellPriceHigh:d,sellBudget:l,encoded:u}})})}catch(e){return Promise.reject(e)}},ie=new I("encoders.ts");function oe(e){return e.gt(0)?o.default.log2(e.toString()).add(1).floor().toNumber():0}var ue=function(e){var t=A(e.sqrt().mul(k).floor()),n=oe(t.div(k));return S(t.shr(n).shl(n))},se=function(e){return e.div(k).pow(2)},pe=function(e){var n=oe(e.div(k)),r=e.shr(n);return t.BigNumber.from(k).mul(n).or(r)},ye=function(e){return e.mod(k).shl(e.div(k).toNumber())},de=function(e){var t=new o.default(e.liquidity),n=new o.default(e.lowestRate),r=new o.default(e.highestRate),a=new o.default(e.marginalRate);if(!(r.gte(a)&&a.gt(n)||r.eq(a)&&a.eq(n)))throw new Error("Either one of the following must hold:\n- highestRate >= marginalRate > lowestRate\n- highestRate == marginalRate == lowestRate\n(highestRate = "+r+", marginalRate = "+a+", lowestRate = "+n+")");var i=A(t),u=A(ue(n)),s=A(ue(r)),p=A(ue(a));return{y:i,z:s.eq(p)?i:i.mul(s.sub(u)).div(p.sub(u)),A:pe(s.sub(u)),B:pe(u)}},le=function(e){var t=S(e.y),n=S(e.z),r=S(ye(e.A)),a=S(ye(e.B));return{liquidity:t.toString(),lowestRate:se(a).toString(),highestRate:se(a.add(r)).toString(),marginalRate:se(t.eq(n)?a.add(r):a.add(r.mul(t).div(n))).toString()}},ce=function(e){return{token0:e.token0,token1:e.token1,order0:de(e.order0),order1:de(e.order1)}},me=function(e){return{id:e.id,token0:e.token0,token1:e.token1,order0:le(e.order0),order1:le(e.order1),encoded:e}};function fe(e,t,n,r,a,i,u,s,p,y){if(ie.debug("buildStrategyObject called",arguments),new o.default(a).isNegative()||new o.default(i).isNegative()||new o.default(s).isNegative()||new o.default(p).isNegative())throw new Error("prices cannot be negative");if(new o.default(a).gt(i)||new o.default(s).gt(p))throw new Error("low price must be lower than or equal to high price");if(new o.default(u).isNegative()||new o.default(y).isNegative())throw new Error("budgets cannot be negative");var d=ge(n,r,a,i,u,s,p,y),l=d.order0,c=d.order1;return ie.debug("buildStrategyObject info:",{token0:e,token1:t,order0:l,order1:c}),{token0:e,token1:t,order0:l,order1:c}}function ge(e,t,n,r,a,i,o,u){ie.debug("createOrders called",arguments);var s=Q(u,e),p=re(o,t,e),y=re(i,t,e),d=Q(a,t),l=ne(n,t,e),c=ne(r,t,e),m={liquidity:s,lowestRate:p,highestRate:y,marginalRate:y},f={liquidity:d,lowestRate:l,highestRate:c,marginalRate:c};return ie.debug("createOrders info:",{order0:m,order1:f}),{order0:m,order1:f}}var be=t.BigNumber.from(k),Te=t.BigNumber.from(2).pow(128).sub(1),he=t.BigNumber.from(2).pow(256).sub(1);function ve(e,t){if(e.gte(0)&&e.lte(t))return e;throw null}var we=function(e){return ve(e,Te)},ke=function(e,t){return ve(e.add(t),he)},_e=function(e,t){return ve(e.mul(t),he)},Pe=function(e,t,n){return ve(e.mul(t).div(n),he)},Se=function(e,t,n){return ve(e.mul(t).add(n).sub(1).div(n),he)},Ae=function(e,t){var n=e,r=t.y,a=t.z,i=ye(t.A),o=ye(t.B);try{return we(function(e,t,n,r,a){if(r.eq(0))return Se(e,_e(be,be),_e(a,a));var i,o,u=_e(n,be),s=ke(_e(t,r),_e(n,a)),p=(i=s,o=_e(e,r),ve(i.sub(o),he)),y=Se(u,u,he),d=Se(s,p,he),l=w(y,d),c=Se(u,u,l),m=Pe(s,p,l);return Se(e,c,m)}(n,r,a,i,o))}catch(e){return he}},Me=function(e,n){var r=v(function(e,n){var r=e,a=n.y,i=n.z,o=ye(n.A),u=ye(n.B);try{return we(function(e,t,n,r,a){if(r.eq(0))return Pe(e,_e(a,a),_e(be,be));var i=_e(n,be),o=ke(_e(t,r),_e(n,a)),u=_e(o,e),s=Se(i,i,he),p=Se(u,r,he),y=w(s,p),d=Se(i,i,y),l=Se(u,r,y);return Pe(o,u.div(y),ke(d,l))}(r,a,i,o,u))}catch(e){return t.BigNumber.from(0)}}(e,n),n.y);return{input:Ae(r,n),output:r}},Be=function(e,t){var n=v(e,t.y);return{input:n,output:Ae(n,t)}},xe=function(e,n,r,a,i){for(var o,u=[],s=d(Object.keys(n).map(function(t){return{id:t,rate:a(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)){r(l)&&u.push({id:t.BigNumber.from(y),input:l.input,output:l.output});break}var c={input:e,output:a(e,n[y]).output};r(c)&&u.push({id:t.BigNumber.from(y),input:c.input,output:c.output});break}r(l)&&(u.push({id:t.BigNumber.from(y),input:l.input,output:l.output}),e=e.sub(l.input))}return u},Ie=function(e){return e.input.gt(0)&&e.output.gt(0)},Ce=function(e,t,n){return void 0===n&&(n=Ie),xe(e,t,n,Me,V)},De=function(e,t,n){return void 0===n&&(n=Ie),xe(e,t,n,Be,J)};function Re(e){return e.reduce(function(e,t){return o.default.min(e,t.lowestRate)},new o.default(Infinity))}function Oe(e){return e.reduce(function(e,t){return o.default.max(e,t.highestRate)},new o.default(-Infinity))}function Ee(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),r=new o.default(e.lowestRate).sqrt(),a=new o.default(e.marginalRate).sqrt();return n.sub(n.mul(t.sqrt().sub(r)).div(a.sub(r)))}(n,t))},new o.default(0))}var je=new I("index.ts"),Fe=/*#__PURE__*/function(){function n(t,n){var r=this;this._api=void 0,this._cache=void 0,this._tradingFeePPM=void 0,this._onChangeCallbacks=[],je.debug("SDK class constructor called with",arguments);var a=new e.StaticJsonRpcProvider({url:t.rpcUrl,skipFetchSetup:!0},1);this._api=new K(a,t.contractAddresses);var i=function(e){return Promise.resolve(null==n?void 0:n(e)).then(function(t){return void 0!==t?t:r._api.reader.getDecimalsByAddress(e)})};$.init(i)}var r=n.prototype;return r._fireOnChange=function(){je.debug("firing onChange callbacks"),this._onChangeCallbacks.forEach(function(e){return e()})},r.onChange=function(e){var t=this;if(je.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})}},r.startDataSync=function(){try{var e=this;return je.debug("startDataSync called"),e._cache?(je.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){je.debug("tradingFeePPM updated",t),e._tradingFeePPM=t}),je.debug("tradeFeePPM",e._tradingFeePPM)})}))}catch(e){return Promise.reject(e)}},r.hasLiquidityByPair=function(e,t){if(je.debug("hasLiquidityByPair called",arguments),!this._cache)throw je.log("hasLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var n=this._cache.getOrders(e,t);return je.debug("hasLiquidityByPair info:",{orders:n}),Object.keys(n).length>0},r.getLiquidityByPair=function(e,n){try{var r=arguments,a=this;if(je.debug("getLiquidityByPair called",r),!a._cache)throw je.log("getLiquidityByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=a._cache.getOrders(e,n),o=Object.values(i).reduce(function(e,t){return e.add(t.y)},t.BigNumber.from(0));return Promise.resolve($.getInstance().fetchDecimals(n)).then(function(e){var t=X(o,e);return je.debug("getLiquidityByPair info:",{orders:i,liquidityWei:o,targetToken:n,decimals:e,liquidity:t}),t})}catch(e){return Promise.reject(e)}},r.getUserStrategies=function(e){try{var t=arguments,n=this;return je.debug("getUserStrategies called",t),Promise.resolve(n._api.reader.getUserStrategyIds(e)).then(function(e){function t(){var t=r.map(me);return Promise.resolve(Promise.all(t.map(function(e){try{return Promise.resolve(ae(e))}catch(e){return Promise.reject(e)}}))).then(function(n){return je.debug("getUserStrategies info:",{ids:e,encodedStrategies:r,decodedStrategies:t,strategies:n}),n})}var r,a=function(){if(!n._cache)return je.log("getUserStrategies called before startDataSync - fetching from chain"),Promise.resolve(n._api.reader.getStrategiesByIds(e)).then(function(e){r=e});r=e.map(function(e){var t;return null==(t=n._cache)?void 0:t.getStrategyById(e)}).filter(function(e){return!!e})}();return a&&a.then?a.then(t):t()})}catch(e){return Promise.reject(e)}},r.getTradeData=function(e,n,r,a,i){try{var o=arguments,u=this;if(je.debug("getTradeData called",o),!u._cache)throw je.log("getTradeData called before startDataSync"),new Error("startDataSync must be called prior to this action");var s=$.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(Q(r,a?s:o));p=a?De(d,y,i):Ce(d,y,i);var l=u.getTradeDataFromActions(e,n,a,p);return je.debug("getTradeData info:",{orders:y,amount:r,amountWei:d,res:l}),l})})}catch(e){return Promise.reject(e)}},r.getTradeDataFromActions=function(e,n,r,a){try{var i=arguments,u=this;je.debug("getTradeDataFromActions called",i);var s=$.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(a.forEach(function(t){y.push({strategyId:t.id,amount:t.input}),d.push({id:t.id,sourceAmount:X(r?t.output:t.input,e),targetAmount:X(r?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(r?(i=ee(l,u._tradingFeePPM),s=new o.default(c.toString())):(i=new o.default(c.toString()),s=te(l,u._tradingFeePPM)),i.isZero()||s.isZero())p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:"0",totalTargetAmount:"0",effectiveRate:"0",actionsWei:a};else{var m=new o.default(s.toString()).div(i.toString()).times(P(e,n)).toString();p={tradeActions:y,actionsTokenRes:d,totalSourceAmount:X(i.toFixed(0),e),totalTargetAmount:X(s.toFixed(0),n),effectiveRate:m,actionsWei:a}}return je.debug("getTradeDataFromActions info:",{sourceDecimals:e,targetDecimals:n,actionsWei:a,totalInput:c,totalOutput:l,tradingFeePPM:u._tradingFeePPM,res:p}),p})})}catch(e){return Promise.reject(e)}},r.composeTradeByTargetTransaction=function(e,t,n,r,a,i){try{var o=arguments,u=this;return je.debug("composeTradeByTargetTransaction called",o),Promise.resolve($.getInstance().fetchDecimals(e)).then(function(o){return u._api.composer.tradeByTargetAmount(e,t,n,r,Q(a,o),i)})}catch(e){return Promise.reject(e)}},r.composeTradeBySourceTransaction=function(e,t,n,r,a,i){try{var o=arguments,u=this;return je.debug("composeTradeBySourceTransaction called",o),Promise.resolve($.getInstance().fetchDecimals(t)).then(function(o){return u._api.composer.tradeBySourceAmount(e,t,n,r,Q(a,o),i)})}catch(e){return Promise.reject(e)}},r.createBuySellStrategy=function(e,t,n,r,a,i,o,u,s){try{var p=arguments,y=this;je.debug("createBuySellStrategy called",p);var d=$.getInstance();return Promise.resolve(d.fetchDecimals(e)).then(function(p){return Promise.resolve(d.fetchDecimals(t)).then(function(d){var l=fe(e,t,p,d,n,r,a,i,o,u),c=ce(l);return je.debug("createBuySellStrategy info:",{strategy:l,encStrategy:c}),y._api.composer.createStrategy(c.token0,c.token1,c.order0,c.order1,s)})})}catch(e){return Promise.reject(e)}},r.updateStrategy=function(e,n,r,a,i,o,u,s,p,y,d){try{var l=arguments,c=this;je.debug("updateStrategy called",l);var m=$.getInstance();return Promise.resolve(m.fetchDecimals(r)).then(function(l){return Promise.resolve(m.fetchDecimals(a)).then(function(m){var f=fe(r,a,l,m,i,o,u,s,p,y),g=ce(f);return je.debug("updateStrategy info:",{strategy:f,encStrategy:g}),c._api.composer.updateStrategy(t.BigNumber.from(e),[n.order0,n.order1],[g.order0,g.order1],d)})})}catch(e){return Promise.reject(e)}},r.deleteStrategy=function(e){return je.debug("deleteStrategy called",arguments),this._api.composer.deleteStrategy(t.BigNumber.from(e))},r.getRateLiquidityDepthByPair=function(e,t,n){try{var r=arguments,a=this;if(je.debug("getRateLiquidityDepthByPair called",r),!a._cache)throw je.log("getRateLiquidityDepthByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var i=Object.values(a._cache.getOrders(e,t)).map(le),u=$.getInstance();return Promise.resolve(u.fetchDecimals(e)).then(function(e){return Promise.resolve(u.fetchDecimals(t)).then(function(t){var r=ne(n,t,e),a=Ee(i,new o.default(r)).toFixed(0),u=X(a,t);return je.debug("getRateLiquidityDepthByPair info:",{orders:i,depthWei:a,targetDecimals:t,depthInTargetDecimals:u}),u})})}catch(e){return Promise.reject(e)}},r.getMinRateByPair=function(e,t){try{var n=arguments,r=this;if(je.debug("getMinRateByPair called",n),!r._cache)throw je.log("getMinRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var a=Object.values(r._cache.getOrders(e,t)).map(le),i=Re(a).toString(),o=$.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ne(i,e,t);return je.debug("getMinRateByPair info:",{orders:a,minRate:i,sourceDecimals:e,targetDecimals:t,normalizedRate:n}),n})})}catch(e){return Promise.reject(e)}},r.getMaxRateByPair=function(e,t){try{var n=arguments,r=this;if(je.debug("getMaxRateByPair called",n),!r._cache)throw je.log("getMaxRateByPair called before startDataSync"),new Error("startDataSync must be called prior to this action");var a=Object.values(r._cache.getOrders(e,t)).map(le),i=Oe(a).toString(),o=$.getInstance();return Promise.resolve(o.fetchDecimals(e)).then(function(e){return Promise.resolve(o.fetchDecimals(t)).then(function(t){var n=ne(i,e,t);return je.debug("getMaxRateByPair info:",{orders:a,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(je.debug("pairs called"),!this._cache)throw je.log("pairs called before startDataSync"),new Error("startDataSync must be called prior to this action");return this._cache.pairs}}]),n}();return Fe});
//# sourceMappingURL=sdk.umd.js.map

@@ -5,3 +5,3 @@ {

"source": "src/index.ts",
"version": "0.0.48-DEV",
"version": "0.0.49-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",

@@ -47,3 +47,3 @@ "main": "dist/sdk.umd.js",

"@types/mocha": "^10.0.0",
"@types/node": "^18.11.18",
"@types/node": "^18.14.2",
"@types/proxyquire": "^1.3.28",

@@ -50,0 +50,0 @@ "@types/sinon": "^10.0.13",

@@ -178,4 +178,6 @@ import { BigNumber, Decimal, BnToDec, DecToBn, ONE } from './numerics';

export function buildStrategyObject(
baseToken: { address: string; decimals: number },
quoteToken: { address: string; decimals: number },
baseToken: string,
quoteToken: string,
baseDecimals: number,
quoteDecimals: number,
buyPriceLow: string, // in quote tkn per 1 base tkn

@@ -211,4 +213,4 @@ buyPriceHigh: string, // in quote tkn per 1 base tkn

const { order0, order1 } = createOrders(
baseToken.decimals,
quoteToken.decimals,
baseDecimals,
quoteDecimals,
buyPriceLow,

@@ -223,4 +225,4 @@ buyPriceHigh,

logger.debug('buildStrategyObject info:', {
token0: baseToken.address,
token1: quoteToken.address,
token0: baseToken,
token1: quoteToken,
order0,

@@ -231,4 +233,4 @@ order1,

return {
token0: baseToken.address,
token1: quoteToken.address,
token0: baseToken,
token1: quoteToken,
order0,

@@ -235,0 +237,0 @@ order1,

@@ -300,2 +300,3 @@ import { PopulatedTransaction } from '@ethersproject/contracts';

* @property {BigNumber} effectiveRate - The rate between totalInput and totalOutput
* @property {MatchAction[]} actionsWei - An array of trade actions in wei.
* @throws {Error} If `startDataSync` has not been called.

@@ -315,2 +316,3 @@ */

effectiveRate: string;
actionsWei: MatchAction[];
}> {

@@ -338,7 +340,2 @@ logger.debug('getTradeData called', arguments);

// TODO: PATCH! Until Barak fixes match. Remove the last action if it is a zero output
if (actionsWei.length > 1 && actionsWei.at(-1)!.output.isZero()) {
actionsWei.pop();
}
const res = this.getTradeDataFromActions(

@@ -361,3 +358,3 @@ sourceToken,

private async getTradeDataFromActions(
public async getTradeDataFromActions(
sourceToken: string,

@@ -367,3 +364,10 @@ targetToken: string,

actionsWei: MatchAction[]
) {
): Promise<{
tradeActions: TradeActionStruct[];
actionsTokenRes: Action[];
totalSourceAmount: string;
totalTargetAmount: string;
effectiveRate: string;
actionsWei: MatchAction[];
}> {
logger.debug('getTradeDataFromActions called', arguments);

@@ -422,2 +426,3 @@

effectiveRate: '0',
actionsWei,
};

@@ -442,2 +447,3 @@ } else {

effectiveRate,
actionsWei,
};

@@ -601,4 +607,4 @@ }

*
* @param {Object} baseToken - The base token for the strategy, specified as an object with `address` and `decimals` properties.
* @param {Object} quoteToken - The quote token for the strategy, specified as an object with `address` and `decimals` properties.
* @param {string} baseToken - The address of the base token for the strategy.
* @param {string} quoteToken - The address of the quote token for the strategy.
* @param {string} buyPriceLow - The minimum buy price for the strategy, in in `quoteToken` per 1 `baseToken`, as a string.

@@ -624,4 +630,4 @@ * @param {string} buyPriceHigh - The maximum buy price for the strategy, in `quoteToken` per 1 `baseToken`, as a string.

* const createStrategyTx = sdk.createBuySellStrategy(
* { address: '0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A', decimals: 18 },
* { address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', decimals: 18 },
* '0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A',
* '0x6B175474E89094C44Da98b954EedeAC495271d0F',
* '0.1',

@@ -640,5 +646,5 @@ * '0.2',

public createBuySellStrategy(
baseToken: { address: string; decimals: number },
quoteToken: { address: string; decimals: number },
public async createBuySellStrategy(
baseToken: string,
quoteToken: string,
buyPriceLow: string,

@@ -653,5 +659,10 @@ buyPriceHigh: string,

logger.debug('createBuySellStrategy called', arguments);
const decimals = Decimals.getInstance();
const baseDecimals = await decimals.fetchDecimals(baseToken);
const quoteDecimals = await decimals.fetchDecimals(quoteToken);
const strategy: DecodedStrategy = buildStrategyObject(
baseToken,
quoteToken,
baseDecimals,
quoteDecimals,
buyPriceLow,

@@ -680,4 +691,4 @@ buyPriceHigh,

encoded: EncodedStrategy,
baseToken: { address: string; decimals: number },
quoteToken: { address: string; decimals: number },
baseToken: string,
quoteToken: string,
buyPriceLow: string,

@@ -692,5 +703,10 @@ buyPriceHigh: string,

logger.debug('updateStrategy called', arguments);
const decimals = Decimals.getInstance();
const baseDecimals = await decimals.fetchDecimals(baseToken);
const quoteDecimals = await decimals.fetchDecimals(quoteToken);
const strategy: DecodedStrategy = buildStrategyObject(
baseToken,
quoteToken,
baseDecimals,
quoteDecimals,
buyPriceLow,

@@ -697,0 +713,0 @@ buyPriceHigh,

@@ -234,4 +234,6 @@ import { expect } from 'chai';

const strategy = buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -281,4 +283,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -312,4 +316,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -343,4 +349,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -374,4 +382,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -405,4 +415,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -436,4 +448,6 @@ buyPriceHigh,

buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -466,4 +480,6 @@ buyPriceHigh,

const strategy = buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -506,4 +522,6 @@ buyPriceHigh,

const strategy = buildStrategyObject(
baseToken,
quoteToken,
baseToken.address,
quoteToken.address,
baseToken.decimals,
quoteToken.decimals,
buyPriceLow,

@@ -510,0 +528,0 @@ buyPriceHigh,

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc