@renex/renex
Version:
The official RenEx Software Development Kit in typescript.
1 lines • 126 kB
JavaScript
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){e.exports=require("bignumber.js")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.NOT_SUBMITTED="NOT_SUBMITTED",e.FAILED_TO_SETTLE="FAILED_TO_SETTLE",e.OPEN="OPEN",e.CONFIRMED="CONFIRMED",e.CANCELED="CANCELED",e.SETTLED="SETTLED",e.SLASHED="SLASHED",e.EXPIRED="EXPIRED"}(t.OrderStatus||(t.OrderStatus={})),function(e){e.RenEx="renex",e.RenExAtomic="atomic"}(t.OrderSettlement||(t.OrderSettlement={})),function(e){e.MIDPOINT="midpoint",e.LIMIT="limit",e.MIDPOINT_IOC="midpoint_ioc",e.LIMIT_IOC="limit_ioc"}(t.OrderType||(t.OrderType={})),t.OrderSide={BUY:"buy",SELL:"sell"},function(e){e.BTC="BTC",e.ETH="ETH",e.DGX="DGX",e.TUSD="TUSD",e.REN="REN",e.ZRX="ZRX",e.OMG="OMG",e.WBTC="WBTC"}(t.Token||(t.Token={})),function(e){e.WBTC_BTC="WBTC/BTC",e.ETH_BTC="ETH/BTC",e.REN_BTC="REN/BTC",e.TUSD_BTC="TUSD/BTC",e.DGX_ETH="DGX/ETH",e.TUSD_ETH="TUSD/ETH",e.REN_ETH="REN/ETH",e.ZRX_ETH="ZRX/ETH",e.OMG_ETH="OMG/ETH"}(t.MarketPair||(t.MarketPair={})),function(e){e.Withdraw="withdraw",e.Deposit="deposit"}(t.BalanceActionType||(t.BalanceActionType={})),function(e){e.Pending="pending",e.Done="done",e.Failed="failed",e.Replaced="replaced"}(t.TransactionStatus||(t.TransactionStatus={})),t.NullConsole={error:e=>null,log:e=>null},function(e){e.InvalidSwapper="invalid_swapper",e.ChangedSwapper="changed_swapper",e.NotConnected="not_connected",e.NotAuthorized="not_authorized",e.AtomNotAuthorized="swapperd_not_authorized",e.ConnectedUnlocked="connected_unlocked",e.ConnectedLocked="connected_locked"}(t.SwapperdConnectionStatus||(t.SwapperdConnectionStatus={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.responseError=((e,t)=>{const n=new Error(e);return n.response=t,n}),t.updateError=((e,t)=>(Array.isArray(t.original_message)||(t.original_message=[]),t.original_message.push(t.message),t.message=e,t)),t.errors={CouldNotFindSwap:"Couldn't find a swap with matching orderID",CouldNotAuthorizeSwapper:"Could not authorize swapper",InvalidBuffer:"invalid buffer",InvalidHex:"invalid hex",UnableToConvertToHexadecimalRepresentation:"Unable to convert to hexadecimal representation",UnableToConvertToBase64Representation:"Unable to convert to base64 representation",UnableToConvertToBuffer:"Unable to convert to buffer",UnableToRetrieveStatus:"Unable to retrieve order status",UnableToRetrieveSwaps:"Unable to retrieve swaps",UnableToFindMatchingSwap:"Unable to find matching swap",UnableToSubmitSwap:"Unable to submit swap",UserRejectedSwap:"User rejected the swap",InvalidPrice:"Invalid price",InvalidVolume:"Invalid volume",InvalidMinimumVolume:"Invalid minimum volume",EthGasStationError:"Cannot retrieve gas price from Eth Gas Station",CouldNotConnectSwapServer:"Could not connect to swap server",Unimplemented:"Method not implemented.",CanceledByUser:"Transaction canceled",SignatureCanceledByUser:"Signature canceled",UnsignedTransaction:"Unable to sign transaction",InvalidOrderDetails:"Something went wrong while encoding order",NumericalPrecision:"Unsupported precision numbers",FailedDeposit:"Unable to deposit funds",FailedBalanceCheck:"Failed to get the current user balance",InsufficientBalance:"Insufficient balance",InsufficientFunds:"Insufficient funds - please ensure you have enough ETH for the transaction fees",UnsupportedFilterStatus:"Unable to filter by specified status",UnknownOrderStatus:"Unknown order status",InvalidStoragePath:"Storage path must start with either: '~/', './', or '/'"}},function(e,t){e.exports=require("bn.js")},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=r(n(3)),s=n(1);t.toSmallestUnit=function(e,t){let n;return n="number"==typeof t?t:t.decimals,new a.default(e).times(new a.default(10).exponentiatedBy(n))},t.fromSmallestUnit=function(e,t){let n;return n="number"==typeof t?t:t.decimals,new a.default(e).div(new a.default(10).exponentiatedBy(n))},t.supportedTokens=function(e){return Promise.resolve([s.Token.ETH,s.Token.DGX,s.Token.TUSD,s.Token.REN,s.Token.ZRX,s.Token.OMG])},t.tokenToID=function(e){switch(e){case s.Token.BTC:return 0;case s.Token.ETH:return 1;case s.Token.DGX:return 256;case s.Token.TUSD:return 257;case s.Token.REN:return 65536;case s.Token.ZRX:return 65537;case s.Token.OMG:return 65538;case s.Token.WBTC:return 65539}throw new Error(`Invalid token: ${e}`)},t.idToToken=function(e){switch(e){case 0:return s.Token.BTC;case 1:return s.Token.ETH;case 256:return s.Token.DGX;case 257:return s.Token.TUSD;case 65536:return s.Token.REN;case 65537:return s.Token.ZRX;case 65538:return s.Token.OMG;case 65539:return s.Token.WBTC}throw new Error(`Invalid token ID: ${e}`)},t.generateTokenPairing=function(e,t){const n=new o.default(e).toArrayLike(Buffer,"be",4),r=new o.default(t).toArrayLike(Buffer,"be",4);return new o.default(Buffer.concat([n,r]))},t.splitTokenPairing=function(e){const t=e.toArrayLike(Buffer,"be",8);return[new o.default(t.slice(0,4)).toNumber(),new o.default(t.slice(4,8)).toNumber()]}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=r(n(3)),s=n(38);t.LATEST_TRADER_ORDER_VERSION=1,t.LATEST_BALANCE_ACTION_VERSION=1,t.serializeTraderOrder=(e=>JSON.stringify(e)),t.deserializeTraderOrder=(e=>{const t=JSON.parse(e);if(void 0===t.version)try{return s.migrateV0TraderOrder(e)}catch(e){console.error(e)}return t.matchDetails&&(t.matchDetails.fee=new a.default(t.matchDetails.fee),t.matchDetails.receivedVolume=new a.default(t.matchDetails.receivedVolume),t.matchDetails.spentVolume=new a.default(t.matchDetails.spentVolume)),t.orderInputs.price=new a.default(t.orderInputs.price),t.orderInputs.volume=new a.default(t.orderInputs.volume),void 0===t.swapServer&&(t.computedOrderDetails.receiveVolume=new a.default(t.computedOrderDetails.receiveVolume),t.computedOrderDetails.spendVolume=new a.default(t.computedOrderDetails.spendVolume),t.computedOrderDetails.feeAmount=new a.default(t.computedOrderDetails.feeAmount),t.computedOrderDetails.nonce=new o.default(t.computedOrderDetails.nonce,"hex"),t.orderInputs.minVolume=new a.default(t.orderInputs.minVolume)),t}),t.serializeBalanceAction=(e=>JSON.stringify(e)),t.deserializeBalanceAction=(e=>{const t=JSON.parse(e);if(void 0===t.version)try{return s.migrateV0BalanceAction(e)}catch(e){console.error(e)}return t.amount=new a.default(t.amount),t})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=n(18),s=n(4),i=n(1),u=n(9);t.getTokenDetails=(async(e,t)=>{let n=await e._cachedTokenDetails.get(t);if(!n){const r=e._contracts.renExTokens.tokens(s.tokenToID(t));e._cachedTokenDetails.set(t,r),n=await r}return{address:n.addr,decimals:new a.default(n.decimals).toNumber(),registered:n.registered}});const c=async(e,n)=>Promise.all(n.map(n=>(async(e,n)=>{const r=await t.getTokenDetails(e,n);let u=new a.default(0);if(n===i.Token.ETH)u=new a.default(await e.getWeb3().eth.getBalance(e.getAddress()));else{let t=e._contracts.erc20.get(n);t||(t=new(o.withProvider(e.getWeb3().currentProvider,o.ERC20))(r.address),e._contracts.erc20.set(n,t)),u=new a.default(await t.balanceOf(e.getAddress()))}return s.fromSmallestUnit(u,r)})(e,n).catch(e=>(console.error(`Failed to get non deposited balance for ${n}: ${e.message||e}`),null)))),d=(e,n)=>Promise.all(n.map(async n=>(async(e,n)=>{const r=await t.getTokenDetails(e,n),o=new a.default(await e._contracts.renExBalances.traderBalances(e.getAddress(),r.address));return s.fromSmallestUnit(o,r)})(e,n).catch(e=>(console.error(`Failed to get balance for ${n}: ${e}`),null)))),l=async(e,t)=>{const n=u.fetchTraderOrders(e).then(e=>{const t=new Map;return e.forEach(e=>{if(!e.swapServer&&e.computedOrderDetails.orderSettlement===i.OrderSettlement.RenEx&&(e.status===i.OrderStatus.NOT_SUBMITTED||e.status===i.OrderStatus.OPEN||e.status===i.OrderStatus.CONFIRMED)){const n=e.computedOrderDetails.spendToken,r=t.get(n);r?t.set(n,r.plus(e.computedOrderDetails.spendVolume)):t.set(n,e.computedOrderDetails.spendVolume)}}),t}),r=u.fetchBalanceActions(e).then(e=>{const t=new Map;return e.forEach(e=>{if(e.action===i.BalanceActionType.Withdraw&&e.status===i.TransactionStatus.Pending){const n=t.get(e.token);n?t.set(e.token,n.plus(e.amount)):t.set(e.token,e.amount)}}),t}),[o,s]=await Promise.all([n,r]);return t.map(e=>{const t=o.get(e)||new a.default(0),n=s.get(e)||new a.default(0);return t.plus(n)})};t.balances=(async(e,t)=>{const n=new Map;try{await Promise.all([d(e,t),l(e,t),c(e,t)]).then(([e,r,o])=>{t.forEach((t,s)=>{const i=e[s],u=r[s];let c=null;null!==i&&(c=a.default.max(i.minus(u),0)),n.set(t,{free:c,used:u,nondeposited:o[s]})})})}catch(e){console.error(e)}return n})},function(e,t){e.exports=require("web3")},function(e,t,n){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(69)),o=n(2),s=n(21);var i;!function(e){e.AUTO="auto",e.HEX="hex",e.BASE64="base64",e.BUFFER="buffer",e.UNKNOWN="unknown"}(i=t.Encodings||(t.Encodings={}));const u={value:"",encoding:i.AUTO},c=(e,t)=>{if(void 0!==t&&("string"==typeof e&&t!==i.BUFFER?e={value:e,encoding:t}:e instanceof Buffer&&t===i.BUFFER&&(e={value:e,encoding:t})),"string"==typeof e&&(e={value:e,encoding:i.AUTO}),e instanceof Buffer&&(e={value:e,encoding:i.BUFFER}),e.encoding===i.AUTO&&("string"==typeof e.value?""===e.value||"0x"===e.value.slice(0,2)||e.value.match("^[A-Fa-f0-9]+$")?e.encoding=i.HEX:e.value.match("^[A-Za-z0-9+/=]+$")&&(e.encoding=i.BASE64):e.value instanceof Buffer&&(e.encoding=i.BUFFER)),e.encoding===i.BUFFER&&!(e.value instanceof Buffer))throw new Error(o.errors.InvalidBuffer);if(e.encoding===i.HEX){if("string"!=typeof e.value)throw new Error(o.errors.InvalidHex);if("0x"===e.value.slice(0,2)&&(e.value=e.value.slice(2)),""===e.value&&(e.value="00"),e.value.length%2==1&&(e.value="0"+e.value),!e.value.match("^[A-Fa-f0-9]+$"))throw new Error(o.errors.InvalidHex)}return e};class d extends(s.Record(u)){constructor(e,t){e instanceof d&&(e={value:e.value,encoding:e.encoding}),super(e=c(e,t))}toHex(e="0x"){switch(this.encoding){case i.HEX:return e+this.value;case i.BASE64:return e+Buffer.from(this.value,"base64").toString("hex");case i.BUFFER:return e+this.value.toString("hex");default:throw new Error(o.errors.UnableToConvertToHexadecimalRepresentation)}}toBase64(){switch(this.encoding){case i.HEX:return Buffer.from(this.value,"hex").toString("base64");case i.BASE64:return this.value;case i.BUFFER:return this.value.toString("base64");default:throw new Error(o.errors.UnableToConvertToBase64Representation)}}toBase58(){const e=this.toBuffer();return a.encode(e)}toBuffer(){switch(this.encoding){case i.HEX:return Buffer.from(this.value,"hex");case i.BASE64:return Buffer.from(this.value,"base64");case i.BUFFER:return this.value;default:throw new Error(o.errors.UnableToConvertToBuffer)}}toString(){return this.toHex()}}t.EncodedData=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(22),a=n(17);t.fetchTraderOrders=(async(e,t={refresh:!0})=>{const n=await e._storage.getOrders();if(t.refresh){const t=await a.updateAllOrderStatuses(e,n);n.map((e,r)=>{const a=t.get(e.id);a&&(n[r].status=a)})}return n.sort((e,t)=>e.computedOrderDetails.date<t.computedOrderDetails.date?-1:1)}),t.fetchBalanceActions=(async(e,t={refresh:!0})=>{const n=await e._storage.getBalanceActions();if(t.refresh){const t=await r.updateAllBalanceActionStatuses(e,n);n.map((e,r)=>{const a=t.get(e.txHash);a&&(n[r].status=a)})}return n.sort((e,t)=>e.time<t.time?-1:1)})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=r(n(7)),s=r(n(3)),i=r(n(36)),u=n(18),c=n(2),d=n(62),l=n(33),p=n(8),m=n(16),f=n(70),y=n(4),h=n(22),w=n(6),b=n(23),g=n(17),v=n(24),E=n(9),k=n(25),T=n(73),_=n(74),S=n(77),O=n(1);!function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(1));var D=n(2);t.errors=D.errors;var x=n(5);t.deserializeBalanceAction=x.deserializeBalanceAction,t.deserializeTraderOrder=x.deserializeTraderOrder,t.serializeBalanceAction=x.serializeBalanceAction,t.serializeTraderOrder=x.serializeTraderOrder;class M{constructor(e,t){switch(this.errors=c.errors,this._swapperdConnectionStatus=O.SwapperdConnectionStatus.NotConnected,this._cachedTokenDetails=new Map,this.swapperd={getStatus:()=>k.currentSwapperdConnectionStatus(this),getID:()=>k.getSwapperID(this),getVersion:()=>k.getSwapperVersion(this),isConnected:()=>k.swapperdConnected(this),refreshStatus:()=>k.refreshSwapperdConnectionStatus(this),resetStatus:()=>k.resetSwapperdConnection(this),authorize:()=>k.authorizeSwapperd(this),fetchBalances:e=>k.swapperdBalances(this,e),fetchAddresses:e=>k.swapperdAddresses(this,e),wrap:(e,t)=>T.wrap(this,e,t),unwrap:(e,t)=>T.unwrap(this,e,t)},this.atom=this.swapperd,this.utils={normalizePrice:(e,t)=>l.toOriginalType(l.normalizePrice(new a.default(e),t),e),normalizeVolume:(e,t)=>l.toOriginalType(l.normalizeVolume(new a.default(e),t),e),normalizeOrder:e=>{const t=Object.assign(e,{});return t.price=this.utils.normalizePrice(e.price,e.side===O.OrderSide.SELL),t.volume=this.utils.normalizeVolume(e.volume),e.minVolume&&(t.minVolume=this.utils.normalizeVolume(e.minVolume)),t}},this._address="",this.fetchBalances=(e=>w.balances(this,e)),this.fetchBalanceActionStatus=(e=>h.updateBalanceActionStatus(this,e)),this.fetchOrderStatus=(e=>v.fetchOrderStatus(this,e)),this.fetchMatchDetails=(e=>v.matchDetails(this,e)),this.fetchOrderbook=(e=>g.getOrders(this,e)),this.fetchOrderBlockNumber=(e=>g.getOrderBlockNumber(this,e)),this.fetchMarkets=(()=>m.fetchMarkets(this)),this.fetchSupportedTokens=(()=>y.supportedTokens(this)),this.fetchSupportedSwapperdTokens=(()=>k.supportedAtomicTokens(this)),this.fetchSupportedAtomicTokens=this.fetchSupportedSwapperdTokens,this.withdraw=((e,t,n)=>h.withdraw(this,e,t,n)),this.openOrder=((e,t)=>g.openOrder(this,e,t)),this.cancelOrder=((e,t)=>g.cancelOrder(this,e,t)),this.fetchDarknodeFeePercent=(()=>v.darknodeFees(this)),this.fetchWrappingFeePercent=(()=>T.wrappingFees(this)),this.fetchUnwrappingFeePercent=(()=>T.unwrappingFees(this)),this.fetchMinEthTradeVolume=(()=>g.getMinEthTradeVolume(this)),this.fetchGasPrice=(()=>b.getGasPrice(this)),this.fetchTraderOrders=((e={refresh:!0})=>E.fetchTraderOrders(this,e)),this.fetchBalanceActions=((e={refresh:!0})=>E.fetchBalanceActions(this,e)),this.refreshBalanceActionStatuses=(async()=>h.updateAllBalanceActionStatuses(this)),this.refreshOrderStatuses=(async()=>g.updateAllOrderStatuses(this)),this.getWeb3=(()=>this._web3),this.getAddress=(()=>this._address),this.getConfig=(()=>this._config),this.setAddress=(e=>{const t=""===e?"":new p.EncodedData(e,p.Encodings.HEX).toHex();this._address=t,this._storage=this.setupStorageProvider()}),this.updateProvider=(e=>{this._web3=new o.default(e),this._contracts={renExSettlement:new(u.withProvider(this.getWeb3().currentProvider,u.RenExSettlement))(this._networkData.contracts[0].renExSettlement),renExBalances:new(u.withProvider(this.getWeb3().currentProvider,u.RenExBalances))(this._networkData.contracts[0].renExBalances),orderbook:new(u.withProvider(this.getWeb3().currentProvider,u.Orderbook))(this._networkData.contracts[0].orderbook),darknodeRegistry:new(u.withProvider(this.getWeb3().currentProvider,u.DarknodeRegistry))(this._networkData.contracts[0].darknodeRegistry),renExTokens:new(u.withProvider(this.getWeb3().currentProvider,u.RenExTokens))(this._networkData.contracts[0].renExTokens),erc20:new Map,wyre:new(u.withProvider(this.getWeb3().currentProvider,u.Wyre))(this._networkData.contracts[0].wyre)}}),this.setupStorageProvider=(()=>{switch(this.getConfig().storageProvider){case"none":return new S.MemoryStorage;case"localStorage":return new i.default(this._address);default:try{return"string"==typeof this.getConfig().storageProvider?new _.FileSystemStorage(this.getConfig().storageProvider,this._address):this.getConfig().storageProvider}catch(e){throw c.updateError(`Unsupported storage option: ${this.getConfig().storageProvider}: ${e.message||e}`,e)}}}),this._web3=new o.default(e),this._config=d.generateConfig(t),this.getConfig().network){case"mainnet":this._networkData=f.networks.mainnet;break;case"testnet":this._networkData=f.networks.testnet;break;default:throw new Error(`Unsupported network field: ${this.getConfig().network}`)}this._web3.eth.net.getId().then(e=>{e!==this._networkData.ethNetworkId&&console.warn(`Incorrect provider network! Your provider should be using the ${this._networkData.ethNetworkLabel} Ethereum network!`)}).catch(console.error),this._cachedTokenDetails=this._cachedTokenDetails.set(O.Token.BTC,Promise.resolve({addr:"0x0000000000000000000000000000000000000000",decimals:new s.default(8),registered:!0})).set(O.Token.ETH,Promise.resolve({addr:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",decimals:new s.default(18),registered:!0})).set(O.Token.DGX,Promise.resolve({addr:this._networkData.tokens.DGX,decimals:new s.default(9),registered:!0})).set(O.Token.TUSD,Promise.resolve({addr:this._networkData.tokens.TUSD,decimals:new s.default(18),registered:!0})).set(O.Token.REN,Promise.resolve({addr:this._networkData.tokens.REN,decimals:new s.default(18),registered:!0})).set(O.Token.ZRX,Promise.resolve({addr:this._networkData.tokens.ZRX,decimals:new s.default(18),registered:!0})).set(O.Token.OMG,Promise.resolve({addr:this._networkData.tokens.OMG,decimals:new s.default(18),registered:!0})).set(O.Token.WBTC,Promise.resolve({addr:this._networkData.tokens.WBTC,decimals:new s.default(8),registered:!0})),this._storage=this.setupStorageProvider(),process.listeners("warning").forEach(e=>process.removeListener("warning",e)),this._contracts={renExSettlement:new(u.withProvider(this.getWeb3().currentProvider,u.RenExSettlement))(this._networkData.contracts[0].renExSettlement),renExBalances:new(u.withProvider(this.getWeb3().currentProvider,u.RenExBalances))(this._networkData.contracts[0].renExBalances),orderbook:new(u.withProvider(this.getWeb3().currentProvider,u.Orderbook))(this._networkData.contracts[0].orderbook),darknodeRegistry:new(u.withProvider(this.getWeb3().currentProvider,u.DarknodeRegistry))(this._networkData.contracts[0].darknodeRegistry),renExTokens:new(u.withProvider(this.getWeb3().currentProvider,u.RenExTokens))(this._networkData.contracts[0].renExTokens),erc20:new Map,wyre:new(u.withProvider(this.getWeb3().currentProvider,u.Wyre))(this._networkData.contracts[0].wyre)}}}t.RenExSDK=M,t.default=M},function(e,t){e.exports=require("debug")},function(e,t,n){n(11)("contract:utils");var r=n(7),a=n(45),o=n(46),s=n(28),i=new r,u={is_object:function(e){return"object"==typeof e&&!Array.isArray(e)},is_big_number:function(e){return"object"==typeof e&&(i.utils.isBN(e)||i.utils.isBigNumber(e))},is_tx_params:function(e){if(!u.is_object(e))return!1;if(u.is_big_number(e))return!1;const t={from:!0,to:!0,gas:!0,gasPrice:!0,value:!0,data:!0,nonce:!0};for(field_name of Object.keys(e))if(t[field_name])return!0;return!1},decodeLogs:function(e,t){var n=this;return u.toTruffleLog(e,t).map(function(e){var t=n.events[e.topics[0]];if(null==t)return null;var r=u.merge({},e);r.event=t.name,r.topics=t.anonymous?r.topics:r.topics.slice(1),"0x"===r.data&&(r.data="");const a=o.decodeLog(t.inputs,r.data,r.topics);return r.args=s.numbers.call(n,a,t.inputs),delete r.data,delete r.topics,r}).filter(function(e){return null!=e})},toTruffleLog:function(e,t){if(t&&"boolean"==typeof t){var n=[];return n.push(e),n.map(function(e){return e.data=e.raw.data,e.topics=e.raw.topics,e})}return e.forEach(e=>{e.raw&&(e.data=e.raw.data,e.topics=e.raw.topics)}),e},merge:function(){for(var e={},t=Array.prototype.slice.call(arguments),n=0;n<t.length;n++)for(var r=t[n],a=Object.keys(r),o=0;o<a.length;o++){var s=a[o],i=r[s];e[s]=i}return e},parallel:function(e,t){if(t=t||function(){},!e.length)return t(null,[]);var n=0,r=new Array(e.length);e.forEach(function(a,o){a(function(a,s){a?(t(a),t=function(){}):(n++,r[o]=s,n>=e.length&&t(null,r))})})},linkBytecode:function(e,t){return Object.keys(t).forEach(function(n){var r=t[n],a=new RegExp("__"+n+"_+","g");e=e.replace(a,r.replace("0x",""))}),e},getTxParams:function(e,t){var n=e?e.inputs.length:0;tx_params={};var r=t[t.length-1];return t.length===n+1&&u.is_tx_params(r)&&(tx_params=t.pop()),u.merge(this.class_defaults,tx_params)},checkLibraries:function(){var e=this.binary.match(/__[^_]+_+/g);if(null!==e){e=e.map(function(e){return e.replace(/_/g,"")}).sort().filter(function(e,t,n){return t+1>=n.length||e!==n[t+1]}).join(", ");var t=this.contractName+" contains unresolved libraries. You must deploy and link the following libraries before you can deploy a new version of "+this.contractName+": "+e;throw new Error(t)}},convertToEthersBN:function(e){const t=[];return e.forEach(e=>{if(Array.isArray(e))t.push(u.convertToEthersBN(e));else if(u.is_big_number(e)){const n=a.utils.bigNumberify(e.toString());t.push(n)}else t.push(e)}),t}};e.exports=u},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(14)),s=n(65),i=r(n(3)),u=n(15),c=a(n(66)),d=n(2),l=n(1),p=n(68),m=n(8),f=n(16),y=n(34),h=n(21),w=n(4),b=12,g=12,v="0x0000000000000000000000000000000000000000";var E,k,T;function _(e){switch(e){case l.OrderSettlement.RenEx:return E.RenEx;case l.OrderSettlement.RenExAtomic:return E.RenExAtomic}}function S(e){switch(e){case l.OrderType.MIDPOINT:return k.MIDPOINT;case l.OrderType.LIMIT:return k.LIMIT;case l.OrderType.MIDPOINT_IOC:return k.MIDPOINT_IOC;case l.OrderType.LIMIT_IOC:return k.LIMIT_IOC}}function O(e){switch(e){case l.OrderSide.BUY:return T.BUY;case l.OrderSide.SELL:return T.SELL;default:throw new Error(`Unknown order side: ${e}`)}}!function(e){e[e.RenEx=1]="RenEx",e[e.RenExAtomic=3]="RenExAtomic"}(E=t.OrderSettlement||(t.OrderSettlement={})),function(e){e[e.MIDPOINT=0]="MIDPOINT",e[e.LIMIT=1]="LIMIT",e[e.MIDPOINT_IOC=2]="MIDPOINT_IOC",e[e.LIMIT_IOC=3]="LIMIT_IOC"}(k=t.OrderType||(t.OrderType={})),function(e){e[e.BUY=0]="BUY",e[e.SELL=1]="SELL"}(T=t.OrderParity||(t.OrderParity={}));t.Tuple=class extends(h.Record({c:0,q:0})){};class D extends(h.Record({signature:"",id:"",type:k.LIMIT,parity:T.BUY,orderSettlement:E.RenEx,expiry:0,tokens:new i.default(0),price:new i.default(0),volume:new i.default(0),minimumVolume:new i.default(0),nonce:new i.default(0)})){}t.Order=D;class x extends(h.Record({address:"",signature:""})){}t.AtomAuthorizationRequest=x;t.OpenOrderRequest=class extends(h.Record({address:"",orderFragmentMappings:Array()})){};class M extends(h.Record({address:"",tokenID:0})){}t.WithdrawRequest=M;class I extends(h.Record({id:"",orderId:"",orderType:k.LIMIT,orderParity:T.BUY,orderSettlement:E.RenEx,orderExpiry:0,tokens:"",price:["",""],volume:["",""],minimumVolume:["",""],nonce:"",index:0})){}t.OrderFragment=I;class B extends(h.Record({id:"",darknodes:u.List(),orderFragments:u.List()})){}async function A(e,t){try{const n=await o.default.post(`${e}/authorize`,t.toJS());if(201===n.status)return!0;throw d.responseError(d.errors.CouldNotAuthorizeSwapper,n)}catch(e){if(e&&e.response){if(401===e.response.status)throw d.updateError(`Could not authorize swapper. Address is not KYC'd. ${e.message||e}`,e);throw d.updateError(`Could not authorize swapper. ${e.message||e}`,e)}throw e}}async function C(e,t,n,r){let a;try{a=await t.getOrders(e.utils.toHex(n),e.utils.toHex(r))}catch(e){throw console.error("Failed to get call getOrders in ordersBatch"),e}const o=a[0],s=a[1],c=a[2];let d=u.List();for(let e=0;e<o.length;e++){const t=y.orderbookStateToOrderStatus(new i.default(c[e]).toNumber());d=d.push([o[e],t,s[e]])}return d}function N(e,t){return Buffer.from(e.utils.keccak256(JSON.stringify(t)).slice(2),"hex").toString("base64")}async function P(e,t,n){const r=await e.getDarknodePublicKey(t);if(null===r||0===r.length)return n.error(`Unable to retrieve public key for ${t}`),null;const a=Buffer.from(r.slice(2),"hex"),o=a.slice(0,8).readUInt32BE(4),i=a.slice(8),u=new s;return u.importKey({n:i,e:o}),u.setOptions({encryptionScheme:{scheme:"pkcs1_oaep",hash:"sha1"}}),u}function R(e,t,n){if(null===e)return new m.EncodedData("",m.Encodings.BASE64);const r=new i.default(t.index).toArrayLike(Buffer,"be",n),a=t.value.toArrayLike(Buffer,"be",n),o=Buffer.concat([r,a]);return new m.EncodedData(e.encrypt(o,"buffer"),m.Encodings.BUFFER)}t.Pod=B,t.randomNonce=function(e){let t=e();for(;t.gte(c.PRIME);)t=e();return t},t.authorizeSwapper=A,t._authorizeSwapperd=async function(e,t,n,r){const a=await async function(e,t,n){const r=e.utils.toChecksumAddress(t),a=e.utils.toHex(`RenEx: authorize: ${r}`);let o;try{o=new m.EncodedData(await e.eth.personal.sign(a,n))}catch(e){return e.message.match(/User denied message signature/)?Promise.reject(d.updateError(d.errors.SignatureCanceledByUser,e)):Promise.reject(d.updateError(`${d.errors.UnsignedTransaction}: ${e.message||e}`,e))}const s=o.toBuffer();return 27!==s[64]&&28!==s[64]||(s[64]=s[64]-27),new x({address:r,signature:s.toString("base64")})}(e,n,r);await A(t,a)},t.createOrder=function(e,t){const n=f.MarketPairs.get(e.symbol);if(!n)throw new Error(`Couldn't find market information for market: ${e.symbol}`);const r=n.base,a=n.quote,o=e.side===l.OrderSide.BUY?a:r,s=e.side===l.OrderSide.BUY?r:a,u=p.adjustDecimals(e.price,0,b),c=p.adjustDecimals(e.volume,0,g),d=p.adjustDecimals(e.minVolume,0,g),m=e.side===l.OrderSide.BUY?w.generateTokenPairing(w.tokenToID(o),w.tokenToID(s)):w.generateTokenPairing(w.tokenToID(s),w.tokenToID(o));return new D({type:S(e.type),orderSettlement:_(n.orderSettlement),nonce:t||new i.default(0),parity:O(e.side),tokens:m,price:u,volume:c,minimumVolume:d})},t.submitOrderFragments=async function(e,t){try{const n=await o.default.post(`${e}/orders`,t.toJS());if(201!==n.status)throw d.responseError("Unexpected status code returned by Ingress",n);return new m.EncodedData(n.data.signature,m.Encodings.BASE64)}catch(e){throw e.response?401===e.response.status?d.updateError("KYC verification failed in Ingress",e):new Error(`Ingress returned status ${e.response.status} with reason: ${e.response.data}`):e}},t.requestWithdrawalSignature=async function(e,t,n){const r=new M({address:t.slice(2),tokenID:w.tokenToID(n)}),a=await o.default.post(`${e}/withdrawals`,r.toJS());if(201!==a.status)throw new Error("Unexpected status code: "+a.status);return new m.EncodedData(a.data.signature,m.Encodings.BASE64)},t.getOrders=async function(e,t,n,r){let a;try{a=new i.default(await t.ordersCount()).toNumber()}catch(e){throw console.error("Failed to call orderCount in getOrders"),e}const o=r||a-(n||0);let s=void 0!==n?n:Math.max(0,a-o),c=Math.min(o,500);const d=o?s+Math.min(a,o):a;let l=u.List();for(;;){if(s>=d)return l;c=Math.min(c,d-s);const n=await C(e,t,s,c);l=l.concat(n).toList(),s+=c}},t.getOrderID=function(e,t){const[n,r]=w.splitTokenPairing(t.tokens),a=t.parity===T.BUY?t.tokens:w.generateTokenPairing(r,n),o=Buffer.concat([new i.default(t.type).toArrayLike(Buffer,"be",1),new i.default(t.expiry).toArrayLike(Buffer,"be",8),t.nonce.toArrayLike(Buffer,"be",8),new i.default(t.orderSettlement).toArrayLike(Buffer,"be",8),a.toArrayLike(Buffer,"be",8),new i.default(t.price).toArrayLike(Buffer,"be",32),new i.default(t.volume).toArrayLike(Buffer,"be",32),new i.default(t.minimumVolume).toArrayLike(Buffer,"be",32)]);return new m.EncodedData(e.utils.keccak256(`0x${o.toString("hex")}`),m.Encodings.HEX)},t.buildOrderMapping=async function(e,t,n,r){const a=await async function(e,t,n){const r=await async function(e,t){const n=e.utils.toHex(10),r=[];let a=v;do{const e=await t.getDarknodes(a,n);r.push(...e.filter(e=>e!==v&&e!==a)),[a]=e.slice(-1)}while(a!==v);return r}(e,t),a=new i.default(await t.minimumPodSize()).toNumber();n.log(`Using minimum pod size ${a}`);const o=await t.currentEpoch();if(!r.length)return Promise.reject(new Error("no darknodes in contract"));if(0===a)return Promise.reject(new Error("invalid minimum pod size (0)"));const s=new i.default(o[0]),c=new i.default(r.length);let d=s.mod(c),l=u.List();for(let e=0;e<r.length;e++)l=l.set(e,-1);n.log("Calculating pods");let p=u.List();const f=Math.floor(r.length/a)||1;for(let e=0;e<f;e++)p=p.push(new B);for(let e=0;e<r.length;e++){for(;-1!==l.get(d.toNumber());)d=(d=d.add(new i.default(1))).mod(c);l=l.set(d.toNumber(),e);const t=e%f,n=new B({darknodes:p.get(t,new B).darknodes.push(r[d.toNumber()])});p=p.set(t,n),d=(d=d.add(s)).mod(c)}for(let t=0;t<p.size;t++){let n=u.List();for(const e of p.get(t,new B).darknodes.toArray())n=n.push(Buffer.from(e.substring(2),"hex"));const r=new m.EncodedData(e.utils.keccak256(`0x${Buffer.concat(n.toArray()).toString("hex")}`),m.Encodings.HEX),a=new B({id:r.toBase64(),darknodes:p.get(t,new B).darknodes});p=p.set(t,a)}return p}(e,t,r),o=y.priceToCoExp(n.price),s=y.volumeToCoExp(n.volume),d=y.volumeToCoExp(n.minimumVolume);return a.map(async a=>{const l=a.darknodes.size,p=Math.floor(2*(l+1)/3);r.log(`Splitting secret shares for pod ${a.id.slice(0,8)}...`);const f=c.split(l,p,new i.default(n.tokens)),y=c.split(l,p,new i.default(o.co)),h=c.split(l,p,new i.default(o.exp)),w=c.split(l,p,new i.default(s.co)),b=c.split(l,p,new i.default(s.exp)),g=c.split(l,p,new i.default(d.co)),v=c.split(l,p,new i.default(d.exp)),E=c.split(l,p,n.nonce);let k=u.List();for(let o=0;o<l;o++){const s=a.darknodes.get(o,void 0);if(void 0===s)throw new Error("invalid darknode access");r.log(`Encrypting for darknode ${new m.EncodedData("0x1b14"+s.slice(2),m.Encodings.HEX).toBase58().slice(0,8)}...`);let i=null;try{i=await P(t,s,r)}catch(e){console.error(e)}const[u,c,d,l,p,T,_,S]=[f.get(o),y.get(o),h.get(o),w.get(o),b.get(o),g.get(o),v.get(o),E.get(o)];if(void 0===u||void 0===c||void 0===d||void 0===l||void 0===p||void 0===T||void 0===_||void 0===S)throw new Error("invalid share access");let O=new I({orderId:n.id,orderType:n.type,orderParity:n.parity,orderSettlement:n.orderSettlement,tokens:R(i,u,8).toBase64(),price:[R(i,c,8).toBase64(),R(i,d,8).toBase64()],volume:[R(i,l,8).toBase64(),R(i,p,8).toBase64()],minimumVolume:[R(i,T,8).toBase64(),R(i,_,8).toBase64()],nonce:R(i,S,8).toBase64(),index:o+1});O=O.set("id",N(e,O)),k=k.push(O)}return a.set("orderFragments",k)}).reduce(async(e,t)=>{const n=await e,r=await t;return n.set(r.id,r.orderFragments)},Promise.resolve(u.Map()))},t.encryptForDarknode=R},function(e,t){e.exports=require("axios")},function(e,t){e.exports=require("immutable")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(15),a=n(1);t.MarketPairs=r.OrderedMap().set(a.MarketPair.ETH_BTC,{symbol:a.MarketPair.ETH_BTC,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.BTC,base:a.Token.ETH}).set(a.MarketPair.REN_BTC,{symbol:a.MarketPair.REN_BTC,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.BTC,base:a.Token.REN}).set(a.MarketPair.TUSD_BTC,{symbol:a.MarketPair.TUSD_BTC,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.BTC,base:a.Token.TUSD}).set(a.MarketPair.DGX_ETH,{symbol:a.MarketPair.DGX_ETH,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.ETH,base:a.Token.DGX}).set(a.MarketPair.TUSD_ETH,{symbol:a.MarketPair.TUSD_ETH,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.ETH,base:a.Token.TUSD}).set(a.MarketPair.REN_ETH,{symbol:a.MarketPair.REN_ETH,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.ETH,base:a.Token.REN}).set(a.MarketPair.ZRX_ETH,{symbol:a.MarketPair.ZRX_ETH,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.ETH,base:a.Token.ZRX}).set(a.MarketPair.OMG_ETH,{symbol:a.MarketPair.OMG_ETH,orderSettlement:a.OrderSettlement.RenExAtomic,quote:a.Token.ETH,base:a.Token.OMG}),t.fetchMarkets=async function(e){return Promise.resolve(t.MarketPairs.valueSeq().toArray())}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const o=n(0),s=r(n(3)),i=a(n(13)),u=n(2),c=n(33),d=n(8),l=n(16),p=n(5),m=n(1),f=n(22),y=n(6),h=n(23),w=n(24),b=n(9),g=n(25);t.getMinEthTradeVolume=(async e=>Promise.resolve(new o.BigNumber(1)));const v=(e,t,n,r)=>n===m.Token.BTC?t===m.Token.ETH?e:c.normalizeVolume(e.dividedBy(r).multipliedBy(.01),!0):c.normalizeVolume(e.dividedBy(r),!0);t.openOrder=(async(e,n,r)=>{const a=l.MarketPairs.get(n.symbol);if(!a)throw new Error(`Unsupported market pair: ${n.symbol}`);const d=await t.getMinEthTradeVolume(e),h=Math.floor((new Date).getTime()/1e3);let b=((e,t,n)=>{const r=new o.BigNumber(e.price),a=v(t,n.base,n.quote,r);return{symbol:e.symbol,side:e.side.toLowerCase(),price:r,volume:new o.BigNumber(e.volume),minVolume:e.minVolume?new o.BigNumber(e.minVolume):a,expiry:0,type:void 0!==e.type?e.type:m.OrderType.LIMIT}})(n,d,a);const E=a.base,k=a.quote,T=await y.getTokenDetails(e,E);if(!((e,t)=>{const n=e.volume.eq(new o.BigNumber(e.volume.toFixed(t))),r=e.minVolume.eq(new o.BigNumber(e.minVolume.toFixed(t)));return n&&r})(b,T.decimals))throw new Error(`Order volumes are invalid. ${E} is limited to ${T.decimals} decimal places.`);if(!(e=>{const t=e.price.eq(c.normalizePrice(e.price,e.side===m.OrderSide.SELL)),n=e.volume.eq(c.normalizeVolume(e.volume)),r=e.minVolume.eq(c.normalizeVolume(e.minVolume));return t&&n&&r})(b)){if(!e.getConfig().autoNormalizeOrders)throw new Error("Order inputs have not been normalized.");b=(e=>{const t=Object.assign(e,{});return t.price=c.normalizePrice(e.price,e.side===m.OrderSide.SELL),t.volume=c.normalizeVolume(e.volume),t.minVolume=c.normalizeVolume(e.minVolume),t})(b)}const _=a.orderSettlement;if(_===m.OrderSettlement.RenEx)throw new Error("RenEx order settlement no longer supported.");const S=b.volume.times(b.price),O=b.side===m.OrderSide.BUY?k:E,D=b.side===m.OrderSide.BUY?E:k,x=b.side===m.OrderSide.BUY?b.volume:S,M=b.side===m.OrderSide.BUY?S:b.volume,I=await w.darknodeFees(e),B=D,A=S.times(I),{simpleConsole:C,awaitConfirmation:N,gasPrice:P}=await t.defaultTransactionOptions(e,r);if(b.price.lte(new o.BigNumber(0)))throw C.error(u.errors.InvalidPrice),new Error(u.errors.InvalidPrice);if(b.volume.lte(new o.BigNumber(0)))throw C.error(u.errors.InvalidVolume),new Error(u.errors.InvalidVolume);if(b.minVolume.lt(new o.BigNumber(0)))throw C.error(u.errors.InvalidMinimumVolume),new Error(u.errors.InvalidMinimumVolume);const R=v(d,E,k,b.price);if(b.volume.lt(R)){let e=`Volume must be at least ${R} ${E}`;throw E!==m.Token.ETH&&(e+=` or ${d} ${m.Token.ETH}`),C.error(e),new Error(e)}if(b.minVolume.lt(R)){let e=`Minimum volume must be at least ${R} ${E}`;throw E!==m.Token.ETH&&(e+=` or ${d} ${m.Token.ETH}`),C.error(e),new Error(e)}if(b.volume.lt(b.minVolume)){const e=`Volume must be greater or equal to minimum volume: (${b.minVolume})`;throw C.error(e),new Error(e)}const L=i.randomNonce(()=>new s.default(e.getWeb3().utils.randomHex(8).slice(2),"hex"));let U=i.createOrder(b,L);const F=i.getOrderID(e.getWeb3(),U);if(U=U.set("id",F.toBase64()),_===m.OrderSettlement.RenExAtomic){C.log("Submitting order to Atomic Swapper");try{await g.submitOrder(e,F,b)}catch(e){throw C.error(e.message||e),u.updateError(`Error sending order to Atomic Swapper: ${e.message||e}`,e)}}let j;C.log("Building order mapping");try{j=await i.buildOrderMapping(e.getWeb3(),e._contracts.darknodeRegistry,U,C)}catch(e){throw C.error(e.message||e),e}const V=new i.OpenOrderRequest({address:e.getAddress().slice(2),orderFragmentMappings:[j]});let H,$,z;C.log("Sending order fragments");try{H=await i.submitOrderFragments(e._networkData.ingress,V)}catch(e){throw C.error(e.message||e),e}C.log("Waiting for transaction signature");try{({txHash:$,promiEvent:z}=await f.onTxHash(e._contracts.orderbook.openOrder(e.getWeb3().utils.toHex(1),H.toString(),F.toHex(),{from:e.getAddress(),gasPrice:P})))}catch(e){throw C.error(e.message||e),e}C.log("Order submitted."),N&&(C.log("Waiting for order confirmation..."),await z,C.log("Order confirmed."));const G={swapServer:void 0,version:p.LATEST_TRADER_ORDER_VERSION,orderInputs:b,status:m.OrderStatus.NOT_SUBMITTED,trader:e.getAddress(),id:F.toBase64(),transactionHash:$,computedOrderDetails:{spendToken:O,receiveToken:D,spendVolume:M,receiveVolume:x,date:h,feeAmount:A,feeToken:B,orderSettlement:_,nonce:L}};return e._storage.setOrder(G).catch(console.error),{traderOrder:G,promiEvent:z}}),t.cancelOrder=(async(e,n,r)=>{const a=new d.EncodedData(n,d.Encodings.BASE64).toHex(),{awaitConfirmation:o,gasPrice:s}=await t.defaultTransactionOptions(e,r),i=e._contracts.orderbook.cancelOrder(a,{from:e.getAddress(),gasPrice:s});return o&&await i,{promiEvent:i}}),t.getOrders=(async(e,t)=>{const n=[m.OrderStatus.NOT_SUBMITTED,m.OrderStatus.OPEN,m.OrderStatus.CONFIRMED];if(t.status&&!n.includes(t.status))throw new Error(u.errors.UnsupportedFilterStatus);let r=await i.getOrders(e.getWeb3(),e._contracts.orderbook,t.start,t.limit);t.status&&(r=r.filter(e=>e[1]===t.status).toList());const a=t.address;return a&&(r=r.filter(e=>e[2].toLowerCase()===a.toLowerCase()).toList()),r.map(e=>{return{id:new d.EncodedData(e[0],d.Encodings.HEX).toBase64(),status:e[1],trader:e[2]}}).toArray()}),t.updateAllOrderStatuses=(async(e,t)=>{const n=new Map;return t||(t=await b.fetchTraderOrders(e)),await Promise.all(t.map(async t=>{if(t.status===m.OrderStatus.NOT_SUBMITTED||t.status===m.OrderStatus.OPEN){const r=await w.fetchOrderStatus(e,t.id,t);r!==t.status&&n.set(t.id,r)}})),n}),t.getOrderBlockNumber=(async(e,t)=>{const n=new d.EncodedData(t,d.Encodings.BASE64).toHex();return new s.default(await e._contracts.orderbook.orderBlockNumber(n)).toNumber()}),t.defaultTransactionOptions=(async(e,t)=>{let n,r=!0,a=m.NullConsole;return t&&(r=void 0!==t.awaitConfirmation?t.awaitConfirmation:r,n=void 0!==t.gasPrice?t.gasPrice:await h.getGasPrice(e),a=void 0!==t.simpleConsole?t.simpleConsole:a),{awaitConfirmation:r,gasPrice:n,simpleConsole:a}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(40),o=r(n(55)),s=r(n(56)),i=r(n(57)),u=r(n(58)),c=r(n(59)),d=r(n(60)),l=r(n(61));t.ETH_CODE=1,t.withProvider=((e,t)=>(t.setProvider(e),t)),t.ERC20=a({abi:s.default}),t.DarknodeRegistry=a({abi:o.default}),t.Orderbook=a({abi:i.default}),t.RenExSettlement=a({abi:c.default}),t.RenExBalances=a({abi:u.default}),t.RenExTokens=a({abi:d.default}),t.Wyre=a({abi:l.default})},function(e,t,n){n(11)("contract:execute");var r=n(27),a=n(44),o=n(12),s=n(29),i=n(20),u=n(30),c=n(50),d=n(28),l={getGasEstimate:function(e,t){var n=this,r=this.web3;return new Promise(function(a){return e.gas?a(e.gas):n.autoGas?void r.eth.estimateGas(e).then(e=>{var r=Math.floor(n.gasMultiplier*e);a(r>=t?t-1:r)}).catch(()=>a()):a()})},prepareCall:function(e,t,n){var r=Array.prototype.slice.call(n),a=o.getTxParams.call(e,t,r);return r=o.convertToEthersBN(r),e.detectNetwork().then(()=>({args:r,params:a}))},hasTxParams:function(e){return o.is_object(e)&&!o.is_big_number(e)},hasDefaultBlock:function(e,t,n){var r=!l.hasTxParams(t)&&e.length>n.length,a=l.hasTxParams(t)&&e.length-1>n.length;return r||a},call:function(e,t,n){var r=this;return function(){var a={},s="latest",i=Array.prototype.slice.call(arguments),u=i[i.length-1];return l.hasDefaultBlock(i,u,t.inputs)&&(s=i.pop()),l.hasTxParams(u)&&(a=i.pop()),a.to=n,a=o.merge(r.class_defaults,a),new Promise(async(n,u)=>{let c;try{await r.detectNetwork(),i=o.convertToEthersBN(i),c=await e(...i).call(a,s),n(c=d.numbers.call(r,c,t.outputs))}catch(e){u(e)}})}},send:function(e,t,n){var a=this,s=a.web3;return function(){var i,d=Array.prototype.slice.call(arguments),p=o.getTxParams.call(a,t,d),m=new r,f={contract:a,promiEvent:m,params:p};return a.detectNetwork().then(t=>{d=o.convertToEthersBN(d),p.to=n,p.data=e?e(...d).encodeABI():void 0,l.getGasEstimate.call(a,p,t.blockLimit).then(e=>{p.gas=e,(i=s.eth.sendTransaction(p)).catch(c.start.bind(a,f)),u.setup(i,f)}).catch(m.reject)}).catch(m.reject),m.eventEmitter}},deploy:function(e,t,n){var r,a=this,d=a.abi,p=a.abi.filter(e=>"constructor"===e.type)[0],m=a.web3,f=o.getTxParams.call(a,p,e),y={data:a.binary,arguments:o.convertToEthersBN(e)},h=new m.eth.Contract(d);f.data=h.deploy(y).encodeABI(),l.getGasEstimate.call(a,f,n).then(e=>{f.gas=e,t.params=f,r=m.eth.sendTransaction(f),u.setup(r,t),r.then(async e=>{if(void 0!==e.status&&!e.status){var n=await i.get(f,m),r=new s(f,t.transactionHash,e,n);return t.promiEvent.reject(r)}var o=new m.eth.Contract(d,e.contractAddress);o.transactionHash=t.transactionHash,t.promiEvent.resolve(new a(o))}).catch(c.start.bind(a,t))}).catch(t.promiEvent.reject)},event:function(e){var t=this,n=o.decodeLogs,r=null;function s(e){return e!==r&&(r=e)}return function(r,o){if("function"==typeof r&&(o=r,r={}),void 0!==o){var i=function(e,r){if(e)return o(e);s(r.id)&&o(null,n.call(t,r,!0)[0])};return t.detectNetwork().then(()=>e.call(t.events,r,i))}var u=new a;return t.detectNetwork().then(()=>{var a=e(r);a.on("data",e=>s(e.id)&&u.emit("data",n.call(t,e,!0)[0])),a.on("changed",e=>s(e.id)&&u.emit("changed",n.call(t,e,!0)[0])),a.on("error",e=>u.emit("error",e))}),u}},allEvents:function(e){var t=this,n=o.decodeLogs,r=null;function s(e){return e!==r&&(r=e)}return function(r){var o=new a;return t.detectNetwork().then(()=>{var a=e.events.allEvents(r);a.on("data",e=>s(e.id)&&o.emit("data",n.call(t,e,!0)[0])),a.on("changed",e=>s(e.id)&&o.emit("changed",n.call(t,e,!0)[0])),a.on("error",e=>o.emit("error",e))}),o}},getPastEvents:function(e){var t=this,n=o.decodeLogs;return function(r,a){return e.getPastEvents(r,a).then(e=>n.call(t,e,!1))}},estimate:function(e,t){var n=this;return function(){return l.prepareCall(n,t,arguments).then(t=>e(...t.args).estimateGas(t.params))}},request:function(e,t){var n=this;return function(){return l.prepareCall(n,t,arguments).then(t=>e(...t.args).request(t.params))}},estimateDeployment:function(){var e=this,t=e.abi.filter(e=>"constructor"===e.type)[0];return l.prepareCall(e,t,arguments).then(t=>{var n={data:e.binary,arguments:t.args};return delete t.params.data,new e.web3.eth.Contract(e.abi,t.params).deploy(n).estimateGas(t.params)})}};e.exports=l},function(e,t){const n={_extract:function(e,t){if(!e||!e.error&&!e.result)return;const n=e&&"object"==typeof e&&e.error&&e.error.data,r=e&&"object"==typeof e&&"string"==typeof e.result;if(n){const n=e.error.data,r=Object.keys(n)[0];if(n[r].return&&n[r].return.includes("0x08c379a0"))return t.eth.abi.decodeParameter("string",n[r].return.slice(10))}else if(r&&e.result.includes("0x08c379a0"))return t.eth.abi.decodeParameter("string",e.result.slice(10))},get:function(e,t){const r={jsonrpc:"2.0",method:"eth_call",params:[e],id:(new Date).getTime()};return new Promise(e=>{t.currentProvider.sendAsync(r,(r,a)=>{const o=n._extract(a,t);e(o)})})}};e.exports=n},function(e,t,n){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(15));t.Record=function(e){return class extends(a.Record(e)){constructor(e){super(a.fromJS(e||{}))}get(e){return super.get(e)}set(e,t){return super.set(e,t)}merge(e){return super.merge(e)}toJS(){return super.toJS()}}}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=r(n(3)),s=n(1),i=n(2),u=n(13),c=n(4),d=n(5),l=n(6),p=n(23),m=n(17),f=n(9);t.updateBalanceActionStatus=(async(e,t)=>{const n=await p.getTransactionStatus(e,t);return e._storage.getBalanceAction(t).then(async t=>{t&&(t.status=n,await e._storage.setBalanceAction(t))}).catch(console.error),n}),t.updateAllBalanceActionStatuses=(async(e,n)=>{const r=new Map;return n||(n=await f.fetchBalanceActions(e)),await Promise.all(n.map(async n=>{if(n.status===s.TransactionStatus.Pending){const a=await t.updateBalanceActionStatus(e,n.txHash);a!==n.status&&r.set(n.txHash,a)}})),r}),t.onTxHash=(e=>new Promise((t,n)=>{e.once("transactionHash",n=>t({txHash:n,promiEvent:e})).catch(n)})),t.withdraw=(async(e,n,r,p)=>{if(n=new a.default(n),p&&!0===p.withoutIngressSignature)throw new Error(i.errors.Unimplemented);const f=await l.balances(e,[r]).then(e=>e.get(r));if(f&&null===f.free)throw new Error(i.errors.FailedBalanceCheck);if(f&&null!==f.free&&n.gt(f.free))throw new Error(i.errors.InsufficientBalance);const y=e.getAddress(),h=await l.getTokenDetails(e,r),{awaitConfirmation:w,gasPrice:b}=await m.defaultTransactionOptions(e,p),g=new o.default(c.toSmallestUnit(n,h).toFixed()),v={version:d.LATEST_BALANCE_ACTION_VERSION,action:s.BalanceActionType.Withdraw,amount:n,time:Math.floor((new Date).getTime()/1e3),status:s.TransactionStatus.Pending,token:r,trader:y,txHash:"",nonce:void 0};try{const n=await u.requestWithdrawalSignature(e._networkData.ingress,y,r),{txHash:a,promiEvent:o}=await t.onTxHash(e._contracts.renExBalances.withdraw(h.address,`0x${g.toString("hex")}`,n.toHex(),{from:y,gasPrice:b}));v.txHash=a;try{v.nonce=await e.getWeb3().eth.getTransactionCount(y,"pending")-1}catch(e){console.error(e)}return e._storage.setBalanceAction(v).catch(console.error),w&&await o,{balanceAction:v,promiEvent:o}}catch(t){if(t.tx)return v.txHash=t.tx,e._storage.setBalanceAction(v).catch(console.error),{balanceAction:v,promiEvent:null};if(t.message.match("Insufficient funds"))throw i.updateError(i.errors.InsufficientFunds,t);if(t.message.match("User denied transaction signature"))throw i.updateError(i.errors.CanceledByUser,t);throw t}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(14)),o=n(10),s=n(18),i=n(2),u=n(4),c=n(1),d=n(6);t.transfer=(async(e,n,r,a)=>{const o=await t.getGasPrice(e),i=await d.getTokenDetails(e,r),l=u.toSmallestUnit(a,i).toFixed();if(r===c.Token.ETH)e.getWeb3().eth.sendTransaction({from:e.getAddress(),to:n,value:l,gasPrice:o});else{let t=e._contracts.erc20.get(r);t||(t=new(s.withProvider(e.getWeb3().currentProvider,s.ERC20))(i.address),e._contracts.erc20.set(r,t)),await t.transfer(n,e.getWeb3().utils.toHex(l))}}),t.getGasPrice=(async e=>{try{const t=await a.default.get("https://ethgasstation.info/json/ethgasAPI.json");if(t.data.fast){const e=t.data.fast*Math.pow(10,8);return e>6e10?6e10:e}throw i.responseError(i.errors.EthGasStationError,t)}catch(t){try{return 1.1*await e.getWeb3().eth.getGasPrice()}catch(e){return void console.error(e)}}}),t.getTransactionStatus=(async(e,t)=>{let n=await e.getWeb3().eth.getTransactionReceipt(t);if(!n){const r=await e.getWeb3().eth.getTransactionCount(e.getAddress());let a;try{a=await e._storage.getBalanceAction(t)}catch(e){return o.TransactionStatus.Pending}if(void 0===a||void 0===a.nonce)return o.TransactionStatus.Pending;if(!(r>a.nonce))return o.TransactionStatus.Pending;if(!(n=await e.getWeb3().eth.getTransactionReceipt(t)))return o.TransactionStatus.Replaced}if(!n.blockHash)return o.TransactionStatus.Pending;const r=n.status;return"0"===r||0===r||!1===r?o.TransactionStatus.Failed:o.TransactionStatus.Done})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),o=r(n(3)),s=n(8),i=n(34),u=n(4),c=n(1),d=n(6),l=n(17),p=n(25);t.fetchOrderStatus=(async(e,n,r)=>{if(!r)try{r=await e._storage.getOrder(n)}catch(e){console.error(e)}const a=new s.EncodedData(n,s.Encodings.BASE64);if(r&&r.swapServer)try{return await p.fetchAtomicOrderStatus(e,a)}catch(e){return c.OrderStatus.CONFIRMED}let u,d;if(r&&r.swapServer)d=c.OrderStatus.CONFIRMED;else try{d=i.orderbookStateToOrderStatus(new o.default(await e._contracts.orderbook.orderState(a.toHex())).toNumber())}catch(e){throw console.error("Unable to call orderState in status"),e}if(r&&d===c.OrderStatus.CONFIRMED){if(u=await(async(e,n,r)=>{let a=c.OrderStatus.CONFIRMED;try{if(a=r.status!==c.OrderStatus.OPEN?r.status:a,r.computedOrderDetails.orderSettlement===c.OrderSettlement.RenExAtomic){if(!p.swapperdConnected(e))return a;try{return await p.fetchAtomicOrderStatus(e,n)}catch(e){return a}}if(void 0!==await t.matchDetails(e,n.toBase64()))return c.OrderStatus.SETTLED}catch(e){return a}return a})(e,a,r),r&&r.computedOrderDetail