UNPKG

eulith-web3js-core

Version:

Eulith core web3js SDK (code to access Eulith services via web3js)

98 lines 11.2 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 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) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Shorts = void 0; /** * @typedef Eulith.Shorts * * Open or close a levered short position through the Typescript client * * What is a levered short? * * It's a partially collateralized short. Normally, if you take a loan from Aave you have to OVER collateralize the loan. * * For example, let's say you want to short $10 worth of ETH. * A fully collateralized position would require $10 to short $10 worth of ETH. * With a levered short, you can short $10 worth of ETH for more like $2. * * NOTE: This is all FULLY non-custodial (Eulith doesn't manage any of the money) and FULLY on-chain * (money only comes from protocols, no centralized dark pool money). * * Shorts take place in an atomic tx (see Eulith.AtomicTx), and don't take effect until that transaction * is committed. * * Example Usage: * ~~~ * const collateralToken = await Eulith.Tokens.getTokenContract({provider: provider, symbol: Eulith.Tokens.Symbols.USDC,}); * const shortToken = await Eulith.Tokens.getTokenContract({provider: provider,symbol: Eulith.Tokens.Symbols.WETH,}); * const collateralAmount = 1000; * const atomicTx = new Eulith.AtomicTx.Transaction({ signer: acct }); * // Get short quote (leverage) * const eulithShortAPI = new Eulith.Shorts({ atomicTx: atomicTx }); * const leverage = await eulithShortAPI.shortOn({ * collateralToken: collateralToken, * shortToken: shortToken, * collateralAmount: collateralAmount, * }); * // Commit, sign, and send the short on position * const txReceipt = await atomicTx.commitAndSendAndWait({ * extraTXParams2Merge: { gas: 1000000 }, // override gas here * timeoutMS: 10 * 1000, * }); * ~~~ */ class Shorts { /** * Eulith.Shorts constructor */ constructor({ atomicTx }) { this.provider_ = atomicTx.provider; } /** * Eulith.Shorts.prototype.shortOn */ shortOn({ collateralToken, shortToken, collateralAmount }) { return __awaiter(this, void 0, void 0, function* () { const wireFormatParams = { collateral_token: collateralToken.address, short_token: shortToken.address, collateral_amount: collateralAmount }; const res = yield this.provider_.request({ method: "eulith_short_on", params: [wireFormatParams] }); return res === null || res === void 0 ? void 0 : res.leverage; }); } /** * Eulith.Shorts.prototype.shortOff */ shortOff({ collateralToken, shortToken, repayShortAmount, trueForUnwindA }) { return __awaiter(this, void 0, void 0, function* () { const wireFormatParams = { collateral_token: collateralToken.address, short_token: shortToken.address, repay_short_amount: repayShortAmount, true_for_unwind_a: trueForUnwindA }; const res = yield this.provider_.request({ method: "eulith_short_off", params: [wireFormatParams] }); return res === null || res === void 0 ? void 0 : res.released_collateral; }); } /** * Eulith.Shorts.prototype.provider * * Not generally needed, but this is logically associated with a short object, so it can be accesssed. */ get provider() { return this.provider_; } } exports.Shorts = Shorts; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nob3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFhLE1BQU07SUFDZjs7T0FFRztJQUNILFlBQW1CLEVBQUUsUUFBUSxFQUE2QztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ1UsT0FBTyxDQUFDLEVBQ2pCLGVBQWUsRUFDZixVQUFVLEVBQ1YsZ0JBQWdCLEVBS25COztZQUNHLE1BQU0sZ0JBQWdCLEdBQUc7Z0JBQ3JCLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxPQUFPO2dCQUN6QyxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU87Z0JBQy9CLGlCQUFpQixFQUFFLGdCQUFnQjthQUN0QyxDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRyxPQUFPLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxRQUFRLENBQUM7UUFDekIsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDVSxRQUFRLENBQUMsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsY0FBYyxFQU1qQjs7WUFDRyxNQUFNLGdCQUFnQixHQUFHO2dCQUNyQixnQkFBZ0IsRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDekMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMvQixrQkFBa0IsRUFBRSxnQkFBZ0I7Z0JBQ3BDLGlCQUFpQixFQUFFLGNBQWM7YUFDcEMsQ0FBQztZQUNGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckcsT0FBTyxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsbUJBQW1CLENBQUM7UUFDcEMsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBR0o7QUEvREQsd0JBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRXVsaXRoIGZyb20gXCIuLi9zcmMvaW5kZXhcIjtcblxuLyoqXG4gKiBAdHlwZWRlZiBFdWxpdGguU2hvcnRzXG4gKlxuICogIE9wZW4gb3IgY2xvc2UgYSBsZXZlcmVkIHNob3J0IHBvc2l0aW9uIHRocm91Z2ggdGhlIFR5cGVzY3JpcHQgY2xpZW50XG4gKlxuICogIFdoYXQgaXMgYSBsZXZlcmVkIHNob3J0P1xuICpcbiAqICBJdCdzIGEgcGFydGlhbGx5IGNvbGxhdGVyYWxpemVkIHNob3J0LiBOb3JtYWxseSwgaWYgeW91IHRha2UgYSBsb2FuIGZyb20gQWF2ZSB5b3UgaGF2ZSB0byBPVkVSIGNvbGxhdGVyYWxpemUgdGhlIGxvYW4uXG4gKlxuICogIEZvciBleGFtcGxlLCBsZXQncyBzYXkgeW91IHdhbnQgdG8gc2hvcnQgJDEwIHdvcnRoIG9mIEVUSC5cbiAqICBBIGZ1bGx5IGNvbGxhdGVyYWxpemVkIHBvc2l0aW9uIHdvdWxkIHJlcXVpcmUgJDEwIHRvIHNob3J0ICQxMCB3b3J0aCBvZiBFVEguXG4gKiAgV2l0aCBhIGxldmVyZWQgc2hvcnQsIHlvdSBjYW4gc2hvcnQgJDEwIHdvcnRoIG9mIEVUSCBmb3IgbW9yZSBsaWtlICQyLlxuICpcbiAqICBOT1RFOiBUaGlzIGlzIGFsbCBGVUxMWSBub24tY3VzdG9kaWFsIChFdWxpdGggZG9lc24ndCBtYW5hZ2UgYW55IG9mIHRoZSBtb25leSkgYW5kIEZVTExZIG9uLWNoYWluXG4gKiAgKG1vbmV5IG9ubHkgY29tZXMgZnJvbSBwcm90b2NvbHMsIG5vIGNlbnRyYWxpemVkIGRhcmsgcG9vbCBtb25leSkuXG4gKlxuICogIFNob3J0cyB0YWtlIHBsYWNlIGluIGFuIGF0b21pYyB0eCAoc2VlIEV1bGl0aC5BdG9taWNUeCksIGFuZCBkb24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGF0IHRyYW5zYWN0aW9uXG4gKiAgaXMgY29tbWl0dGVkLlxuICpcbiAqICBFeGFtcGxlIFVzYWdlOlxuICogICAgICB+fn5cbiAqICAgICAgICAgIGNvbnN0IGNvbGxhdGVyYWxUb2tlbiA9IGF3YWl0IEV1bGl0aC5Ub2tlbnMuZ2V0VG9rZW5Db250cmFjdCh7cHJvdmlkZXI6IHByb3ZpZGVyLCBzeW1ib2w6IEV1bGl0aC5Ub2tlbnMuU3ltYm9scy5VU0RDLH0pO1xuICogICAgICAgICAgY29uc3Qgc2hvcnRUb2tlbiA9IGF3YWl0IEV1bGl0aC5Ub2tlbnMuZ2V0VG9rZW5Db250cmFjdCh7cHJvdmlkZXI6IHByb3ZpZGVyLHN5bWJvbDogRXVsaXRoLlRva2Vucy5TeW1ib2xzLldFVEgsfSk7XG4gKiAgICAgICAgICBjb25zdCBjb2xsYXRlcmFsQW1vdW50ID0gMTAwMDtcbiAqICAgICAgICAgIGNvbnN0IGF0b21pY1R4ID0gbmV3IEV1bGl0aC5BdG9taWNUeC5UcmFuc2FjdGlvbih7IHNpZ25lcjogYWNjdCB9KTtcbiAqICAgICAgICAgIC8vIEdldCBzaG9ydCBxdW90ZSAobGV2ZXJhZ2UpXG4gKiAgICAgICAgICBjb25zdCBldWxpdGhTaG9ydEFQSSA9IG5ldyBFdWxpdGguU2hvcnRzKHsgYXRvbWljVHg6IGF0b21pY1R4IH0pO1xuICogICAgICAgICAgY29uc3QgbGV2ZXJhZ2UgPSBhd2FpdCBldWxpdGhTaG9ydEFQSS5zaG9ydE9uKHtcbiAqICAgICAgICAgICAgICBjb2xsYXRlcmFsVG9rZW46IGNvbGxhdGVyYWxUb2tlbixcbiAqICAgICAgICAgICAgICBzaG9ydFRva2VuOiBzaG9ydFRva2VuLFxuICogICAgICAgICAgICAgIGNvbGxhdGVyYWxBbW91bnQ6IGNvbGxhdGVyYWxBbW91bnQsXG4gKiAgICAgICAgICB9KTtcbiAqICAgICAgICAgIC8vIENvbW1pdCwgc2lnbiwgYW5kIHNlbmQgdGhlIHNob3J0IG9uIHBvc2l0aW9uXG4gKiAgICAgICAgICBjb25zdCB0eFJlY2VpcHQgPSBhd2FpdCBhdG9taWNUeC5jb21taXRBbmRTZW5kQW5kV2FpdCh7XG4gKiAgICAgICAgICAgICAgZXh0cmFUWFBhcmFtczJNZXJnZTogeyBnYXM6IDEwMDAwMDAgfSwgLy8gb3ZlcnJpZGUgZ2FzIGhlcmVcbiAqICAgICAgICAgICAgICB0aW1lb3V0TVM6IDEwICogMTAwMCxcbiAqICAgICAgICAgIH0pO1xuICogICAgICB+fn5cbiAqL1xuZXhwb3J0IGNsYXNzIFNob3J0cyB7XG4gICAgLyoqXG4gICAgICogRXVsaXRoLlNob3J0cyBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcih7IGF0b21pY1R4IH06IHsgYXRvbWljVHg6IEV1bGl0aC5BdG9taWNUeC5UcmFuc2FjdGlvbiB9KSB7XG4gICAgICAgIHRoaXMucHJvdmlkZXJfID0gYXRvbWljVHgucHJvdmlkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXVsaXRoLlNob3J0cy5wcm90b3R5cGUuc2hvcnRPblxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzaG9ydE9uKHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuLFxuICAgICAgICBzaG9ydFRva2VuLFxuICAgICAgICBjb2xsYXRlcmFsQW1vdW50XG4gICAgfToge1xuICAgICAgICBjb2xsYXRlcmFsVG9rZW46IEV1bGl0aC5Db250cmFjdHMuRVJDMjBUb2tlbkNvbnRyYWN0O1xuICAgICAgICBzaG9ydFRva2VuOiBFdWxpdGguQ29udHJhY3RzLkVSQzIwVG9rZW5Db250cmFjdDtcbiAgICAgICAgY29sbGF0ZXJhbEFtb3VudDogbnVtYmVyO1xuICAgIH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB3aXJlRm9ybWF0UGFyYW1zID0ge1xuICAgICAgICAgICAgY29sbGF0ZXJhbF90b2tlbjogY29sbGF0ZXJhbFRva2VuLmFkZHJlc3MsXG4gICAgICAgICAgICBzaG9ydF90b2tlbjogc2hvcnRUb2tlbi5hZGRyZXNzLFxuICAgICAgICAgICAgY29sbGF0ZXJhbF9hbW91bnQ6IGNvbGxhdGVyYWxBbW91bnRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm92aWRlcl8ucmVxdWVzdCh7IG1ldGhvZDogXCJldWxpdGhfc2hvcnRfb25cIiwgcGFyYW1zOiBbd2lyZUZvcm1hdFBhcmFtc10gfSk7XG4gICAgICAgIHJldHVybiByZXM/LmxldmVyYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV1bGl0aC5TaG9ydHMucHJvdG90eXBlLnNob3J0T2ZmXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNob3J0T2ZmKHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuLFxuICAgICAgICBzaG9ydFRva2VuLFxuICAgICAgICByZXBheVNob3J0QW1vdW50LFxuICAgICAgICB0cnVlRm9yVW53aW5kQVxuICAgIH06IHtcbiAgICAgICAgY29sbGF0ZXJhbFRva2VuOiBFdWxpdGguQ29udHJhY3RzLkVSQzIwVG9rZW5Db250cmFjdDtcbiAgICAgICAgc2hvcnRUb2tlbjogRXVsaXRoLkNvbnRyYWN0cy5FUkMyMFRva2VuQ29udHJhY3Q7XG4gICAgICAgIHJlcGF5U2hvcnRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdHJ1ZUZvclVud2luZEE/OiBib29sZWFuO1xuICAgIH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB3aXJlRm9ybWF0UGFyYW1zID0ge1xuICAgICAgICAgICAgY29sbGF0ZXJhbF90b2tlbjogY29sbGF0ZXJhbFRva2VuLmFkZHJlc3MsXG4gICAgICAgICAgICBzaG9ydF90b2tlbjogc2hvcnRUb2tlbi5hZGRyZXNzLFxuICAgICAgICAgICAgcmVwYXlfc2hvcnRfYW1vdW50OiByZXBheVNob3J0QW1vdW50LFxuICAgICAgICAgICAgdHJ1ZV9mb3JfdW53aW5kX2E6IHRydWVGb3JVbndpbmRBXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvdmlkZXJfLnJlcXVlc3QoeyBtZXRob2Q6IFwiZXVsaXRoX3Nob3J0X29mZlwiLCBwYXJhbXM6IFt3aXJlRm9ybWF0UGFyYW1zXSB9KTtcbiAgICAgICAgcmV0dXJuIHJlcz8ucmVsZWFzZWRfY29sbGF0ZXJhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdWxpdGguU2hvcnRzLnByb3RvdHlwZS5wcm92aWRlclxuICAgICAqXG4gICAgICogIE5vdCBnZW5lcmFsbHkgbmVlZGVkLCBidXQgdGhpcyBpcyBsb2dpY2FsbHkgYXNzb2NpYXRlZCB3aXRoIGEgc2hvcnQgb2JqZWN0LCBzbyBpdCBjYW4gYmUgYWNjZXNzc2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvdmlkZXIoKTogRXVsaXRoLlByb3ZpZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJfO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvdmlkZXJfOiBFdWxpdGguUHJvdmlkZXI7XG59XG4iXX0=