UNPKG

olympus-protocol-connector

Version:

Module made by Olympus Labs for easier access to the Olympus protocol through Javascript/Typescript

241 lines 12.4 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var Derivative_1 = require("./Derivative"); var IndexBuyTokens_1 = require("./partials/index/IndexBuyTokens"); var IndexRebalance_1 = require("./partials/index/IndexRebalance"); var config_1 = require("../config"); var FutureMVP_1 = require("./partials/futures/FutureMVP"); var FundTrade_1 = require("./partials/fund/FundTrade"); var HandleTokenBrokens_1 = require("./partials/fund/HandleTokenBrokens"); var OlympusFund_partial_1 = require("./partials/fund/OlympusFund.partial"); var OlympusIndex_partial_1 = require("./partials/index/OlympusIndex.partial"); var lodash = require("lodash"); var futures_1 = require("./partials/futures"); var _1 = require("."); /** * use lodash.assignIn can merge the property of inherit; */ var extend = lodash.assignIn; var DerivativeFactory = /** @class */ (function () { function DerivativeFactory(web3Url, walletAddress, privateKey) { config_1.updateDefaultOptions({ web3Url: web3Url, privateKey: privateKey, walletAddress: walletAddress, }); } DerivativeFactory.get = function (web3Url, walletAddress, privateKey) { if (!this.instance) { this.instance = new DerivativeFactory(web3Url, walletAddress, privateKey); } return this.instance; }; /** * getOlympusIndex * after refactor, make it easy to override methods. * Object.assign will check type less then 4 items. * @param address */ DerivativeFactory.prototype.getOlympusIndex = function (address) { return __awaiter(this, void 0, void 0, function () { var olympusIndex, _a, _b, _c, _d, _e, _f, _g, _h; var _this = this; return __generator(this, function (_j) { switch (_j.label) { case 0: _a = extend; _b = extend; _c = [new Derivative_1.DerivativeService(address)]; return [4 /*yield*/, _1.ERC20DerivativeService.create(address)]; case 1: _c = _c.concat([_j.sent()]); return [4 /*yield*/, IndexBuyTokens_1.IndexBuyTokenService.create(address)]; case 2: _d = [_b.apply(void 0, _c.concat([_j.sent()]))]; _e = extend; return [4 /*yield*/, IndexRebalance_1.IndexRebalanceService.create(address)]; case 3: _f = [_j.sent()]; return [4 /*yield*/, _1.SellTokensOnCloseService.create(address)]; case 4: _f = _f.concat([_j.sent()]); return [4 /*yield*/, _1.DerivativeWithdrawService.create(address)]; case 5: _d = _d.concat([_e.apply(void 0, _f.concat([_j.sent()]))]); _g = extend; return [4 /*yield*/, _1.DerivativeWhitelistedService.create(address)]; case 6: _h = [_j.sent()]; return [4 /*yield*/, _1.ManagedDerivativeService.create(address)]; case 7: _h = _h.concat([_j.sent()]); return [4 /*yield*/, OlympusIndex_partial_1.OlympusIndexPartial.create(address)]; case 8: olympusIndex = _a.apply(void 0, _d.concat([_g.apply(void 0, _h.concat([_j.sent()]))])); return [2 /*return*/, extend(olympusIndex, { getTemplate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { // return ExtendDerivativeService.getTemplate( // TemplateContractName.OlympusFastFund, // TemplateType.Fund); // TODO implement this later; return [2 /*return*/, {}]; }); }); }, })]; } }); }); }; /** * getOlympusIndex * after refactor, make it easy to override methods. * @param address */ DerivativeFactory.prototype.getOlympusFund = function (address) { return __awaiter(this, void 0, void 0, function () { var olympusFund, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; var _this = this; return __generator(this, function (_l) { switch (_l.label) { case 0: _a = extend; _b = extend; _c = [new Derivative_1.DerivativeService(address)]; return [4 /*yield*/, _1.ERC20DerivativeService.create(address)]; case 1: _c = _c.concat([_l.sent()]); return [4 /*yield*/, _1.SellTokensOnCloseService.create(address)]; case 2: _d = [_b.apply(void 0, _c.concat([_l.sent()]))]; _e = extend; return [4 /*yield*/, _1.DerivativeWithdrawService.create(address)]; case 3: _f = [_l.sent()]; return [4 /*yield*/, _1.DerivativeWhitelistedService.create(address)]; case 4: _f = _f.concat([_l.sent()]); return [4 /*yield*/, _1.DerivativeWhitelistedService.create(address)]; case 5: _d = _d.concat([_e.apply(void 0, _f.concat([_l.sent()]))]); _g = extend; return [4 /*yield*/, _1.ManagedDerivativeService.create(address)]; case 6: _h = [_l.sent()]; return [4 /*yield*/, FundTrade_1.FundTradeService.create(address)]; case 7: _h = _h.concat([_l.sent()]); return [4 /*yield*/, HandleTokenBrokens_1.HandleTokenBrokensService.create(address)]; case 8: olympusFund = _a.apply(void 0, _d.concat([_g.apply(void 0, _h.concat([_l.sent()]))])); _j = extend; _k = [olympusFund]; return [4 /*yield*/, OlympusFund_partial_1.OlympusFundPartial.create(address)]; case 9: return [2 /*return*/, _j.apply(void 0, _k.concat([_l.sent(), { getTemplate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { // TODO implement this later; return [2 /*return*/, {}]; }); }); }, }]))]; } }); }); }; /** * getOlympusIndex * after refactor, make it easy to override methods. * @param address */ DerivativeFactory.prototype.getOlympusFuture = function (address) { return __awaiter(this, void 0, void 0, function () { var olympusFuture, _a, _b; var _this = this; return __generator(this, function (_c) { switch (_c.label) { case 0: _a = extend; _b = [new Derivative_1.DerivativeService(address)]; return [4 /*yield*/, FutureMVP_1.FutureMVPService.create(address)]; case 1: _b = _b.concat([_c.sent()]); return [4 /*yield*/, futures_1.FutureManagementService.create(address)]; case 2: olympusFuture = _a.apply(void 0, _b.concat([_c.sent()])); return [2 /*return*/, extend(olympusFuture, { getTemplate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, {}]; }); }); }, })]; } }); }); }; DerivativeFactory.prototype.futureMVP = function (address) { return __awaiter(this, void 0, void 0, function () { var _a, _b; return __generator(this, function (_c) { switch (_c.label) { case 0: _a = extend; _b = [new Derivative_1.DerivativeService(address)]; return [4 /*yield*/, FutureMVP_1.FutureMVPService.create(address)]; case 1: return [2 /*return*/, _a.apply(void 0, _b.concat([_c.sent()]))]; } }); }); }; DerivativeFactory.prototype.getOrExtendCustomDerivative = function (customBuildingBlocks) { return __awaiter(this, void 0, void 0, function () { var full, i; return __generator(this, function (_a) { full = extend({}, customBuildingBlocks[0]); for (i = 1; i < customBuildingBlocks.length; i++) { full = extend(full, customBuildingBlocks[i]); } return [2 /*return*/, full]; }); }); }; return DerivativeFactory; }()); exports.DerivativeFactory = DerivativeFactory; //# sourceMappingURL=DerivativeFactory.js.map