@mimicry/sdk
Version:
A node SDK designed to simplify interaction with the Mimicry Protocol smart contracts.
3 lines (2 loc) • 40.4 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,e,n,r,a=require("ethers"),i=require("candlestick-convert"),s=require("decimal.js");function u(){u=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",o=a.toStringTag||"@@toStringTag";function p(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{p({},"")}catch(t){p=function(t,e,n){return t[e]=n}}function c(t,e,n,a){var i=Object.create((e&&e.prototype instanceof l?e:l).prototype),s=new O(a||[]);return r(i,"_invoke",{value:g(t,n,s)}),i}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var y={};function l(){}function m(){}function f(){}var h={};p(h,i,(function(){return this}));var v=Object.getPrototypeOf,b=v&&v(v(_([])));b&&b!==e&&n.call(b,i)&&(h=b);var w=f.prototype=l.prototype=Object.create(h);function T(t){["next","throw","return"].forEach((function(e){p(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var a;r(this,"_invoke",{value:function(r,i){function s(){return new e((function(a,s){!function r(a,i,s,u){var o=d(t[a],t,i);if("throw"!==o.type){var p=o.arg,c=p.value;return c&&"object"==typeof c&&n.call(c,"__await")?e.resolve(c.__await).then((function(t){r("next",t,s,u)}),(function(t){r("throw",t,s,u)})):e.resolve(c).then((function(t){p.value=t,s(p)}),(function(t){return r("throw",t,s,u)}))}u(o.arg)}(r,i,a,s)}))}return a=a?a.then(s,s):s()}})}function g(t,e,n){var r="suspendedStart";return function(a,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw i;return{value:void 0,done:!0}}for(n.method=a,n.arg=i;;){var s=n.delegate;if(s){var u=k(s,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var o=d(t,e,n);if("normal"===o.type){if(r=n.done?"completed":"suspendedYield",o.arg===y)continue;return{value:o.arg,done:n.done}}"throw"===o.type&&(r="completed",n.method="throw",n.arg=o.arg)}}}function k(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,k(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=d(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,y;var i=a.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,y):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,y)}function M(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(M,this),this.reset(!0)}function _(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return a.next=a}}return{next:E}}function E(){return{value:void 0,done:!0}}return m.prototype=f,r(w,"constructor",{value:f,configurable:!0}),r(f,"constructor",{value:m,configurable:!0}),m.displayName=p(f,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,p(t,o,"GeneratorFunction")),t.prototype=Object.create(w),t},t.awrap=function(t){return{__await:t}},T(x.prototype),p(x.prototype,s,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var s=new x(c(e,n,r,a),i);return t.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(w),p(w,o,"Generator"),p(w,i,(function(){return this})),p(w,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=_,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return s.type="throw",s.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),o=n.call(i,"finallyLoc");if(u&&o){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!o)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var s=i?i.completion:{};return s.type=t,s.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:_(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),y}},t}function o(t,e,n,r,a,i,s){try{var u=t[i](s),o=u.value}catch(t){return void n(t)}u.done?e(o):Promise.resolve(o).then(r,a)}function p(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var i=t.apply(e,n);function s(t){o(i,r,a,s,u,"next",t)}function u(t){o(i,r,a,s,u,"throw",t)}s(void 0)}))}}function c(t,e){return(c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function y(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return d(t,void 0);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[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.")}function l(t,e){var n=Number(e.decimals);return BigInt(t*Math.pow(10,n))}(t=exports.ChainId||(exports.ChainId={}))[t.POLYGON_POS=137]="POLYGON_POS",t[t.POLYGON_MUMBAI=80001]="POLYGON_MUMBAI",(e=exports.CurrencySymbol||(exports.CurrencySymbol={})).USD="usd",e.WETH="weth",e.USDC="usdc",e.MATIC="matic",(n=exports.Direction||(exports.Direction={}))[n.SHORT=0]="SHORT",n[n.LONG=1]="LONG",(exports.MetricType||(exports.MetricType={})).MARKET_CAP="marketcap",(exports.OracleType||(exports.OracleType={})).OMO="open-markets-oracle",(r=exports.Timeframe||(exports.Timeframe={}))[r.ONE_MINUTE=60]="ONE_MINUTE",r[r.FIVE_MINUTES=300]="FIVE_MINUTES",r[r.FIFTEEN_MINUTES=900]="FIFTEEN_MINUTES",r[r.THIRTY_MINUTES=1800]="THIRTY_MINUTES",r[r.ONE_HOUR=3600]="ONE_HOUR",r[r.FOUR_HOURS=14400]="FOUR_HOURS",r[r.ONE_DAY=86400]="ONE_DAY",r[r.ONE_WEEK=604800]="ONE_WEEK";var m=function(){function t(t){this.contract=t}t.initialize=function(){var e=p(u().mark((function e(n,r){var i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new a.Contract(n,["function name() view returns (string)","function symbol() view returns (string)","function decimals() view returns (uint8)","function approve(address spender, uint256 amount) returns (bool)"],r),e.abrupt("return",new t(i));case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();var e=t.prototype;return e.getInfo=function(){var t=p(u().mark((function t(){var e;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.info){t.next=2;break}return t.abrupt("return",this.info);case 2:return t.next=4,this.contract.name();case 4:return t.t0=t.sent,t.next=7,this.contract.symbol();case 7:return t.t1=t.sent,t.next=10,this.contract.decimals();case 10:return t.t2=t.sent,t.next=13,this.contract.getAddress();case 13:return t.t3=t.sent,this.info=e={name:t.t0,symbol:t.t1,decimals:t.t2,address:t.t3},t.abrupt("return",e);case 17:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.approveSpending=function(){var t=p(u().mark((function t(e,n){var r,a;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=l,t.t1=n,t.next=4,this.getInfo();case 4:return t.t2=t.sent,r=(0,t.t0)(t.t1,t.t2),t.next=8,this.contract.approve(e,r);case 8:return a=t.sent,t.next=11,a.wait();case 11:return t.abrupt("return",t.sent);case 12:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),t}(),f=function(t){var e,n;function r(e,n){var r;return(r=t.call(this,e,n)||this).dataFeedId=n.dataFeedId,r}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,c(e,n),r.initialize=function(){var t=p(u().mark((function t(e,n){var i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=new a.Contract(e.address,["function getValues(uint256 dataFeedId, uint256 limit, uint256 offset) view returns ((uint256, uint256)[])","function getLatestValue(uint256 dataFeedId) view returns (uint256, uint256)"],n),t.abrupt("return",new r(i,e));case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}();var i=r.prototype;return i.getLatestValue=function(){var t=p(u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getContract().getLatestValue(this.dataFeedId);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i.getOHLCV=function(){var t=p(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTicks();case 2:return n=t.sent,t.next=5,this.getOHLCVFromTicks(n,e);case 5:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),i.getTicks=function(){var t=p(u().mark((function t(){var e,n,r,a,i,s=this;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=0,n=1e3,r=[],a=!1;case 4:if(a){t.next=14;break}return t.next=7,this.getContract().getValues(this.dataFeedId,n,e);case 7:((i=t.sent).length<n||0===i.length)&&(a=!0),r=r.concat(i.map((function(t){return s.getTick(t[1],t[0])}))),e+=n,t.next=4;break;case 14:return t.abrupt("return",r);case 15:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i.validate=function(e){if(t.prototype.validate.call(this,e),e.type!==exports.OracleType.OMO)throw new Error('metadata.type must be "open-markets-oracle"');if(e.dataFeedId<1)throw new Error("Must provide a valid dataFeedId for the oracle")},r}(function(){function t(t,e){this.validate(e),this.contract=t,this.metadata=e}var e=t.prototype;return e.getTicks=function(){var t=p(u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:throw new Error("getTicks() method not implemented.");case 1:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),e.getOHLCV=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:throw new Error("getOHLCV() method not implemented.");case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.getOHLCVFromTicks=function(t,e){return i.batchTicksToCandle(t,60,!0)},e.getContract=function(){return this.contract},e.getMetadata=function(){return this.metadata},e.getTick=function(t,e,n){return n||(n=BigInt(0)),{time:Number(t),price:Number(e),quantity:Number(n)}},e.validate=function(t){if(!Object.values(exports.OracleType).includes(t.type))throw new Error("metadata.type must be a valid OracleType");if(!a.isAddress(t.address))throw new Error("metadata.address must be a valid address")},t}());function h(t,e){var n=Number(e.decimals);return{currency:e,amount:{atomic:t,decimal:new s.Decimal(Number(t)/Math.pow(10,n))}}}var v=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InsufficientOpeningValue",type:"error"},{inputs:[],name:"InvalidAdjustmentAmount",type:"error"},{inputs:[],name:"InvalidSender",type:"error"},{inputs:[],name:"InvalidTokenId",type:"error"},{inputs:[],name:"NativeTokenIncorrectAmount",type:"error"},{inputs:[],name:"NativeTokenTransferFailed",type:"error"},{inputs:[],name:"OnlyAccountant",type:"error"},{inputs:[],name:"PositionEditDurationLimit",type:"error"},{inputs:[],name:"PositionIsLiquidated",type:"error"},{inputs:[],name:"UnsupportedCurrency",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"valueProvider",type:"address"},{indexed:!1,internalType:"address",name:"accountantAddress",type:"address"},{indexed:!1,internalType:"string",name:"metadataURI",type:"string"}],name:"MarketInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"newMetadataURI",type:"string"}],name:"MetadataURIUpdated",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:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"enum Direction",name:"direction",type:"uint8"},{indexed:!1,internalType:"uint256",name:"closingUsdValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"closingSpotPrice",type:"uint256"},{indexed:!1,internalType:"bool",name:"isLiquidated",type:"bool"}],name:"PositionClosed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"enum Direction",name:"direction",type:"uint8"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"uint256",name:"openingTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"openingUsdValue",type:"uint256"},{indexed:!1,internalType:"uint256",name:"openingSpotPrice",type:"uint256"},{indexed:!1,internalType:"uint256",name:"multiplier",type:"uint256"}],name:"PositionOpened",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"int256",name:"adjustmentAmountUsd",type:"int256"}],name:"PositionUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[{internalType:"address",name:"_currency",type:"address"},{internalType:"address",name:"_recipient",type:"address"},{internalType:"uint256",name:"_value",type:"uint256"},{internalType:"uint256",name:"_fee",type:"uint256"}],name:"_handlePayout",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"accountant",outputs:[{internalType:"contract Accountant",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"uint256[]",name:"positionIds",type:"uint256[]"}],name:"batchClosePositions",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"calculatePositionValues",outputs:[{internalType:"uint256",name:"longsValue",type:"uint256"},{internalType:"uint256",name:"shortsValue",type:"uint256"},{internalType:"uint256",name:"transferAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"closePosition",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"commitValueTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeDividend",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"enum Direction",name:"_direction",type:"uint8"},{internalType:"address",name:"_tokenAddress",type:"address"}],name:"getCurrencyPoolUSDValue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"enum Direction",name:"_direction",type:"uint8"}],name:"getDirectionUSDValue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getIndexValue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"enum Direction",name:"_direction",type:"uint8"}],name:"getLastLiquidationTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"getPositionValue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"increasePosition",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IValueProvider",name:"_valueProvider",type:"address"},{internalType:"contract IMimicry",name:"_mimicryAddress",type:"address"},{internalType:"contract Accountant",name:"_accountantAddress",type:"address"},{internalType:"contract IERC721Upgradeable",name:"_positionToken",type:"address"},{internalType:"string",name:"_name",type:"string"},{internalType:"string",name:"_metadataURI",type:"string"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"isPositionEditable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"isPositionLiquidated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"metadataURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"mimicry",outputs:[{internalType:"contract IMimicry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"minPositionEditDuration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"enum Direction",name:"_direction",type:"uint8"},{internalType:"address",name:"_tokenAddress",type:"address"},{internalType:"uint256",name:"_openingValue",type:"uint256"}],name:"openPosition",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"positionToken",outputs:[{internalType:"contract IERC721Upgradeable",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"positionsMap",outputs:[{internalType:"enum Direction",name:"direction",type:"uint8"},{internalType:"address",name:"currency",type:"address"},{internalType:"uint256",name:"multiplier",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"createdAt",type:"uint256"},{internalType:"uint256",name:"editedAt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"_metadataURI",type:"string"}],name:"setMetadataURI",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],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"},{inputs:[],name:"valueProvider",outputs:[{internalType:"contract IValueProvider",name:"",type:"address"}],stateMutability:"view",type:"function"}],b=function(){function t(t,e){this.contract=t,this.signer=e}t.initialize=function(){var e=p(u().mark((function e(n,r){var i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new a.Contract(n,v,r),e.abrupt("return",new t(i,r));case 3:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();var e=t.prototype;return e.getInfo=function(){var t=p(u().mark((function t(){var e,n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getMetadata();case 2:return e=t.sent,t.next=5,this.getCurrencyInfo(e.currency);case 5:return n=t.sent,t.t0=e.name,t.next=9,this.getAddress();case 9:return t.t1=t.sent,t.t2=e.description,t.t3=e.image,t.t4=e.metric,t.next=15,this.getReferenceValue(n);case 15:return t.t5=t.sent,t.next=18,this.getSkew();case 18:return t.t6=t.sent,t.abrupt("return",{name:t.t0,address:t.t1,description:t.t2,image:t.t3,metric:t.t4,referenceValue:t.t5,skew:t.t6});case 21:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getMetadata=function(){var t=p(u().mark((function t(e){var n,r,a;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=!1),!this.metadata||e){t.next=3;break}return t.abrupt("return",this.metadata);case 3:return t.next=5,this.contract.metadataURI();case 5:return n=t.sent,t.next=9,fetch(n);case 9:return r=t.sent,t.next=12,r.json();case 12:return this.metadata=a=t.sent,t.abrupt("return",a);case 15:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getAddress=function(){var t=p(u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.getAddress();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getSkew=function(){var t=p(u().mark((function t(){var e,n,r,a;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.calculatePositionValues();case 2:return e=t.sent,t.next=5,this.getCurrencyInfo(exports.CurrencySymbol.USD);case 5:return r=h(e[0],n=t.sent),a=h(e[1],n),t.abrupt("return",{currency:n,long:r.amount,short:a.amount});case 9:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getReferenceValue=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=h,t.next=3,this.contract.getIndexValue();case 3:return t.t1=t.sent,t.t2=e,t.abrupt("return",(0,t.t0)(t.t1,t.t2));case 6:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getOracle=function(){var t=p(u().mark((function t(){var e,n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.oracle){t.next=2;break}return t.abrupt("return",this.oracle);case 2:return t.next=4,this.getMetadata();case 4:if((e=t.sent).oracle.type===exports.OracleType.OMO){t.next=7;break}throw new Error("Only OMO oracles are supported");case 7:return t.next=9,f.initialize(e.oracle,this.signer);case 9:return this.oracle=n=t.sent,t.abrupt("return",n);case 12:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getTicks=function(){var t=p(u().mark((function t(){var e;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getOracle();case 2:return e=t.sent,t.next=5,e.getTicks();case 5:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getOHLCV=function(){var t=p(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getOracle();case 2:return n=t.sent,t.next=5,n.getOHLCV(e);case 5:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getCurrencyInfo=function(){var t=p(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("usd"!==e){t.next=4;break}return t.abrupt("return",{name:"US Dollar",symbol:exports.CurrencySymbol.USD,decimals:BigInt(0)});case 4:if(e!==exports.CurrencySymbol.USD){t.next=6;break}return t.abrupt("return",{name:"US Dollar",symbol:exports.CurrencySymbol.USD,decimals:BigInt(8)});case 6:return t.next=8,m.initialize(e,this.signer);case 8:return n=t.sent,t.next=11,n.getInfo();case 11:return t.abrupt("return",t.sent);case 12:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getPositionValue=function(){var t=p(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getCurrencyInfo(exports.CurrencySymbol.USD);case 2:return n=t.sent,t.t0=h,t.next=6,this.contract.getPositionValue(e);case 6:return t.t1=t.sent,t.t2=n,t.abrupt("return",(0,t.t0)(t.t1,t.t2));case 9:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.closePosition=function(){var t=p(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,!this.contract.isPositionEditable(e);case 2:if(!t.sent){t.next=4;break}throw new Error("Position is not editable.");case 4:return t.next=6,!this.contract.isPositionLiquidated(e);case 6:if(!t.sent){t.next=8;break}throw new Error("Position has been liquidated.");case 8:return t.next=10,this.contract.closePosition(e);case 10:return n=t.sent,t.next=13,n.wait();case 13:return t.abrupt("return",t.sent);case 14:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.openPosition=function(){var t=p(u().mark((function t(e,n,r){var a,i,s,o;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=n,t.next=3,this.getAddress();case 3:return t.t1=t.sent,t.t2=r,t.next=7,t.t0.approveSpending.call(t.t0,t.t1,t.t2);case 7:return a=t.sent,t.next=10,n.getInfo();case 10:return s=l(r,i=t.sent),t.next=14,this.contract.openPosition(e,i.address,s);case 14:return o=t.sent,t.next=17,o.wait();case 17:return t.abrupt("return",[a,t.sent]);case 19:case"end":return t.stop()}}),t,this)})));return function(e,n,r){return t.apply(this,arguments)}}(),e.commitValueTransfer=function(){var t=p(u().mark((function t(){var e;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.commitValueTransfer();case 2:return e=t.sent,t.next=5,e.wait();case 5:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),t}(),w=function(){function t(t,e){this.contract=t,this.address=e}t.initialize=function(){var e=p(u().mark((function e(n,r,i){var s,o;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=i===exports.ChainId.POLYGON_POS?"0x9EC58a07C156eF220306D11148Ec2551E977D8d1":"0xebeb2D5dE6a43043CaA670382C780072F90dFF8d",o=new a.Contract(s,["function balanceOf(address owner) view returns (uint256)","function tokenURI(uint256 tokenId) view returns (string)","function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)"],r),e.abrupt("return",new t(o,n));case 5:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}();var e=t.prototype;return e.getNFTs=function(){var t=p(u().mark((function t(){var e,n,r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.balanceOf(this.address);case 2:e=t.sent,n=[],r=0;case 5:if(!(r<e)){t.next=13;break}return t.next=8,this.contract.tokenOfOwnerByIndex(this.address,r);case 8:n.push(t.sent);case 10:r++,t.next=5;break;case 13:return t.abrupt("return",n);case 14:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getTokenURI=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.tokenURI(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}(),T=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CurrencyAlreadyAdded",type:"error"},{inputs:[],name:"CurrencyLimitReached",type:"error"},{inputs:[],name:"InvalidCurrency",type:"error"},{inputs:[],name:"InvalidMarket",type:"error"},{inputs:[],name:"InvalidSender",type:"error"},{inputs:[],name:"MarketAlreadyAdded",type:"error"},{inputs:[],name:"OnlyAdmin",type:"error"},{inputs:[],name:"OnlyMarket",type:"error"},{inputs:[],name:"PositionTokenExists",type:"error"},{inputs:[],name:"PositionTokenNotSet",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"address",name:"currencyProviderAddress",type:"address"}],name:"CurrencyAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"address",name:"currencyProviderAddress",type:"address"}],name:"CurrencyProviderUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"isActive",type:"bool"}],name:"EmergencyBrakeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"marketAddress",type:"address"},{indexed:!1,internalType:"string",name:"name",type:"string"},{indexed:!1,internalType:"string",name:"metadataURI",type:"string"}],name:"MarketAdded",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:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[{internalType:"address",name:"_admin",type:"address"}],name:"addAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_tokenAddress",type:"address"},{internalType:"address",name:"_currencyProviderAddress",type:"address"}],name:"addCurrency",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMarket",name:"_market",type:"address"}],name:"addMarket",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"admins",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"market",type:"address"},{internalType:"uint256[]",name:"positionIds",type:"uint256[]"}],internalType:"struct IMimicry.BatchPositions[]",name:"batchPositions",type:"tuple[]"}],name:"batchClosePositions",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_sender",type:"address"},{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"burnMimic",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_tokenAddress",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"convertCurrencyToUSD",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_owner",type:"address"}],name:"createMimic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"currencyProvidersMap",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"existingMarketsMap",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMarkets",outputs:[{internalType:"contract IMarket[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getValidCurrenciesList",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isEmergencyBrakeActive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_tokenAddress",type:"address"}],name:"isValidCurrency",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"marketsList",outputs:[{internalType:"contract IMarket",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"positionToken",outputs:[{internalType:"contract PositionToken",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_admin",type:"address"}],name:"removeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_isEmergencyBrakeActive",type:"bool"}],name:"setIsEmergencyBrakeActive",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract PositionToken",name:"_positionToken",type:"address"}],name:"setPositionToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_tokenAddress",type:"address"},{internalType:"address",name:"_newProvider",type:"address"}],name:"updateCurrencyProvider",outputs:[],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"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validCurrenciesList",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}];exports.Mimicry=function(){function t(t,e){var n;this.signer=t,this.network=e,null==(n=t.provider)||n.getBalance(t.getAddress()).then((function(t){console.log("Matic Balance for Gas: ",h(t,{symbol:exports.CurrencySymbol.MATIC,name:"Matic",decimals:BigInt(18)}))}));var r=e===exports.ChainId.POLYGON_POS?"0x5aeDa339237eE646aFbDbc7E9E9eBab15f7660D9":"0x3fF86EEc088ea07464E5329db10f94AC859be633";this.contract=new a.Contract(r,T,t)}var e=t.prototype;return e.getMarkets=function(){var t=p(u().mark((function t(){var e,n,r,a;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.getMarkets();case 2:e=[],n=y(t.sent);case 5:if((r=n()).done){t.next=13;break}return a=r.value,t.next=9,this.getMarket(a);case 9:e.push(t.sent);case 11:t.next=5;break;case 13:return t.abrupt("return",e);case 14:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getMarket=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b.initialize(e,this.signer);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getCurrencies=function(){var t=p(u().mark((function t(){var e,n,r,a;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.contract.getValidCurrenciesList();case 2:e=[],n=y(t.sent);case 5:if((r=n()).done){t.next=13;break}return a=r.value,t.next=9,this.getCurrency(a);case 9:e.push(t.sent);case 11:t.next=5;break;case 13:return t.abrupt("return",e);case 14:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getCurrency=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m.initialize(e,this.signer);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getPlayer=function(){var t=p(u().mark((function t(e){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=4;break}return t.next=3,this.signer.getAddress();case 3:e=t.sent;case 4:return t.next=6,w.initialize(e,this.signer,this.network);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}();
//# sourceMappingURL=sdk.cjs.production.min.js.map